REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 58.98 KB
Close
//lib64/python3.6/logging/__pycache__/__init__.cpython-36.pyc
Text
Base64
Mw0NCgoAIFxlFgEA4wAAAAAAAAAAAAAAACoAAABAAAAAcwIEAABkAFoAZAFkAmwBWgFkAWQCbAJaAmQBZAJsA1oDZAFkAmwEWgRkAWQCbAVaBWQBZAJsBloGZAFkAmwHWgdkAWQCbAhaCGQBZANsCW0KWgoBAGQEZAVkBmQHZAhkCWQKZAtkDGQNZA5kD2QQZBFkEmQTZBRkFWQWZBdkGGQZZBpkG2QcZB1kHmQfZCBkIWQiZCNkJGQlZCZkJ2QoZClkKmQrZCxkLWcqWgt5DGQBZAJsDFoMVwBuGAQAZQ1rCnLMAQABAAEAZAJaDFkAbgJYAGQuWg5kL1oPZDBaEGQxWhFlA2oDgwBaEmQyWhNkMloUZDJaFWQyWhZkM1oXZRdaGGQ0WhlkNVoaZRpaG2Q2WhxkN1odZAFaHmUXZAZlGWQIZRpkFmUcZA5lHWQHZR5kEmkGWh9lF2UYZRllGmUaZRxlHWUeZDicCFogZDlkIIQAWiFkOmQXhABaImUjZQFkO4MCkAFybmQ8ZD2EAFokbghkPmQ/hABaJGUCaiVqJmUiaidqKIMBWilkQGRBhABaKmUMkAFynmUMaiuDAFosbgRkAlosZEJkQ4QAWi1kRGRFhABaLkcAZEZkD4QAZA9lL4MDWjBlMGExZEdkK4QAWjJkSGQqhABaM2RJZCWEAFo0RwBkSmRLhABkS2UvgwNaNUcAZExkTYQAZE1lNYMDWjZHAGROZE+EAGRPZTWDA1o3ZFBaOGU1ZThmAmU2ZFFmAmU3ZFJmAmRTnANaOUcAZFRkDIQAZAxlL4MDWjplOoMAWjtHAGRVZAWEAGQFZS+DA1o8RwBkVmQLhABkC2UvgwNaPUcAZFdkWIQAZFhlL4MDWj5lB2o/gwBaQGcAWkFkWWRahABaQmRbZFyEAFpDRwBkXWQNhABkDWU+gwNaREcAZF5kFIQAZBRlRIMDWkVHAGRfZAqEAGQKZUWDA1pGRwBkYGRhhABkYWVFgwNaR2VHZRqDAVpIZUhaSUcAZGJkY4QAZGNlL4MDWkpkZGQmhABaS2RlZCKEAFpMRwBkZmRnhABkZ2UvgwNaTUcAZGhkEIQAZBBlPoMDWk5HAGRpZGqEAGRqZU6DA1pPZU5hUEcAZGtkEYQAZBFlL4MDWlFlT2UagwFaUmVSZU5fUmVNZU5qUoMBZU5fU2RsZBiEAFpUZH1kbWQhhAFaVWRuZBqEAFpWZVZaV2RvZB2EAFpYZDJkcJwBZHFkHoQCWllkcmQphABaWmRzZCiEAFpbZHRkI4QAWlxkdWQbhABaXWR2ZCSEAFpeZHdkHIQAWl9lQWYBZHhkJ4QBWmBkAWQCbGFaYWVhamJlYIMBAQBHAGR5ZBOEAGQTZUSDA1pjZAJhZGR+ZHpke4QBWmVkfGQZhABaZmQCUwApf3rCCkxvZ2dpbmcgcGFja2FnZSBmb3IgUHl0aG9uLiBCYXNlZCBvbiBQRVAgMjgyIGFuZCBjb21tZW50cyB0aGVyZXRvIGluCmNvbXAubGFuZy5weXRob24uCgpDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBWaW5heSBTYWppcC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KClRvIHVzZSwgc2ltcGx5ICdpbXBvcnQgbG9nZ2luZycgYW5kIGxvZyBhd2F5IQrpAAAAAE4pAdoIVGVtcGxhdGXaDEJBU0lDX0ZPUk1BVNoSQnVmZmVyaW5nRm9ybWF0dGVy2ghDUklUSUNBTNoFREVCVUfaBUVSUk9S2gVGQVRBTNoLRmlsZUhhbmRsZXLaBkZpbHRlctoJRm9ybWF0dGVy2gdIYW5kbGVy2gRJTkZP2glMb2dSZWNvcmTaBkxvZ2dlctoNTG9nZ2VyQWRhcHRlctoGTk9UU0VU2gtOdWxsSGFuZGxlctoNU3RyZWFtSGFuZGxlctoEV0FSTtoHV0FSTklOR9oMYWRkTGV2ZWxOYW1l2gtiYXNpY0NvbmZpZ9oPY2FwdHVyZVdhcm5pbmdz2ghjcml0aWNhbNoFZGVidWfaB2Rpc2FibGXaBWVycm9y2glleGNlcHRpb27aBWZhdGFs2gxnZXRMZXZlbE5hbWXaCWdldExvZ2dlctoOZ2V0TG9nZ2VyQ2xhc3PaBGluZm/aA2xvZ9oNbWFrZUxvZ1JlY29yZNoOc2V0TG9nZ2VyQ2xhc3PaCHNodXRkb3du2gR3YXJu2gd3YXJuaW5n2hNnZXRMb2dSZWNvcmRGYWN0b3J52hNzZXRMb2dSZWNvcmRGYWN0b3J52gpsYXN0UmVzb3J02g9yYWlzZUV4Y2VwdGlvbnN6JlZpbmF5IFNhamlwIDx2aW5heV9zYWppcEByZWQtZG92ZS5jb20+Wgpwcm9kdWN0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ICAgdGhlIHNvdXJjZSBsaW5lIHdoZXJlIHRoZSBsb2dnaW5nIGNhbGwgd2FzIG1hZGUsIGFuZCBhbnkgZXhjZXB0aW9uCiAgICBpbmZvcm1hdGlvbiB0byBiZSBsb2dnZWQuCiAgICBOYwoAAAAAAAAADQAAABMAAABLAAAAc5wBAAB0AGoAgwB9C3wBfABfAXwFfABfAnwGckR0A3wGgwFkAWsCckR0BHwGZAIZAHQFagaDAnJEfAZkAhkAckR8BmQCGQB9BnwGfABfB3QIfAKDAXwAXwl8AnwAXwp8A3wAXwt5JnQMag1qDnwDgwF8AF8PdAxqDWoQfABqD4MBZAIZAHwAXxFXAG4mBAB0EnQTdBRmA2sKcqwBAAEAAQB8A3wAXw9kA3wAXxFZAG4CWAB8B3wAXxVkBHwAXxZ8CXwAXxd8BHwAXxh8CHwAXxl8C3wAXxp8C3QbfAuDARgAZAUUAHwAXxx8AGoadB0YAGQFFAB8AF8edB9v+nQgkAFyFnQgaiGDAHwAXyJ0IGojgwBqAXwAXyRuDGQEfABfImQEfABfJHQlkAFzMGQEfABfJm5EZAZ8AF8mdCdqKGopZAeDAX0MfAxkBGsJkAFydHkQfAxqKoMAagF8AF8mVwBuFgQAdCtrCpABcnIBAAEAAQBZAG4CWAB0LJABcpJ0LXQMZAiDApABcpJ0DGougwB8AF8vbgZkBHwAXy9kBFMAKQl6SwogICAgICAgIEluaXRpYWxpemUgYSBsb2dnaW5nIHJlY29yZCB3aXRoIGludGVyZXN0aW5nIGluZm9ybWF0aW9uLgogICAgICAgIOkBAAAAcgEAAAB6DlVua25vd24gbW9kdWxlTmnoAwAAWgtNYWluUHJvY2Vzc1oPbXVsdGlwcm9jZXNzaW5n2gZnZXRwaWQpMNoEdGltZdoEbmFtZdoDbXNn2gNsZW5yRQAAANoLY29sbGVjdGlvbnPaB01hcHBpbmfaBGFyZ3NyHwAAAFoJbGV2ZWxuYW1l2gdsZXZlbG5v2ghwYXRobmFtZdoCb3PaBHBhdGjaCGJhc2VuYW1l2ghmaWxlbmFtZdoIc3BsaXRleHTaBm1vZHVsZXJJAAAAckgAAADaDkF0dHJpYnV0ZUVycm9yckEAAADaCGV4Y190ZXh02gpzdGFja19pbmZv2gZsaW5lbm9aCGZ1bmNO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OiR7bmFtZX06JHttZXNzYWdlfSkD+gEl+gF7+gEkYwAAAAAAAAAAAAAAAAMAAABAAAAAc1oAAABlAFoBZABaAmQBWgNlBGoFWgZkFGQEZAWEAVoHZAZaCGQHWglkFWQIZAmEAVoKZApkC4QAWgtkDGQNhABaDGQOZA+EAFoNZBBkEYQAWg5kEmQThABaD2QCUwApFnILAAAAYdwIAAAKICAgIEZvcm1hdHRlciBpbnN0YW5jZXMgYXJlIHVzZWQgdG8gY29udmVydCBhIExvZ1JlY29yZCB0byB0ZXh0LgoKICAgIEZvcm1hdHRlcnMgbmVlZCB0byBrbm93IGhvdyBhIExvZ1JlY29yZCBpcyBjb25zdHJ1Y3RlZC4gVGhleSBhcmUKICAgIHJlc3BvbnNpYmxlIGZvciBjb252ZXJ0aW5nIGEgTG9nUmVjb3JkIHRvICh1c3VhbGx5KSBhIHN0cmluZyB3aGljaCBjYW4KICAgIGJlIGludGVycHJldGVkIGJ5IGVpdGhlciBhIGh1bWFuIG9yIGFuIGV4dGVybmFsIHN5c3RlbS4gVGhlIGJhc2UgRm9ybWF0dGVyCiAgICBhbGxvd3MgYSBmb3JtYXR0aW5nIHN0cmluZyB0byBiZSBzcGVjaWZpZWQuIElmIG5vbmUgaXMgc3VwcGxpZWQsIHRoZQogICAgdGhlIHN0eWxlLWRlcGVuZGVudCBkZWZhdWx0IHZhbHVlLCAiJShtZXNzYWdlKXMiLCAie21lc3NhZ2V9Iiwgb3IKICAgICIke21lc3NhZ2V9IiwgaXMgdXNlZC4KCiAgICBUaGUgRm9ybWF0dGVyIGNhbiBiZSBpbml0aWFsaXplZCB3aXRoIGEgZm9ybWF0IHN0cmluZyB3aGljaCBtYWtlcyB1c2Ugb2YKICAgIGtub3dsZWRnZSBvZiB0aGUgTG9nUmVjb3JkIGF0dHJpYnV0ZXMgLSBlLmcuIHRoZSBkZWZhdWx0IHZhbHVlIG1lbnRpb25lZAogICAgYWJvdmUgbWFrZXMgdXNlIG9mIHRoZSBmYWN0IHRoYXQgdGhlIHVzZXIncyBtZXNzYWdlIGFuZCBhcmd1bWVudHMgYXJlIHByZS0KICAgIGZvcm1hdHRlZCBpbnRvIGEgTG9nUmVjb3JkJ3MgbWVzc2FnZSBhdHRyaWJ1dGUuIEN1cnJlbnRseSwgdGhlIHVzZWZ1bAogICAgYXR0cmlidXRlcyBpbiBhIExvZ1JlY29yZCBhcmUgZGVzY3JpYmVkIGJ5OgoKICAgICUobmFtZSlzICAgICAgICAgICAgTmFtZSBvZiB0aGUgbG9nZ2VyIChsb2dnaW5nIGNoYW5uZWwpCiAgICAlKGxldmVsbm8pcyAgICAgICAgIE51bWVyaWMgbG9nZ2luZyBsZXZlbCBmb3IgdGhlIG1lc3NhZ2UgKERFQlVHLCBJTkZPLAogICAgICAgICAgICAgICAgICAgICAgICBXQVJOSU5HLCBFUlJPUiwgQ1JJVElDQUwpCiAgICAlKGxldmVsbmFtZSlzICAgICAgIFRleHQgbG9nZ2luZyBsZXZlbCBmb3IgdGhlIG1lc3NhZ2UgKCJERUJVRyIsICJJTkZPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIldBUk5JTkciLCAiRVJST1IiLCAiQ1JJVElDQUwiKQogICAgJShwYXRobmFtZSlzICAgICAgICBGdWxsIHBhdGhuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB3aGVyZSB0aGUgbG9nZ2luZwogICAgICAgICAgICAgICAgICAgICAgICBjYWxsIHdhcyBpc3N1ZWQgKGlmIGF2YWlsYWJsZSkKICAgICUoZmlsZW5hbWUpcyAgICAgICAgRmlsZW5hbWUgcG9ydGlvbiBvZiBwYXRobmFtZQogICAgJShtb2R1bGUpcyAgICAgICAgICBNb2R1bGUgKG5hbWUgcG9ydGlvbiBvZiBmaWxlbmFtZSkKICAgICUobGluZW5vKWQgICAgICAgICAgU291cmNlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSBsb2dnaW5nIGNhbGwgd2FzIGlzc3VlZAogICAgICAgICAgICAgICAgICAgICAgICAoaWYgYXZhaWxhYmxlKQogICAgJShmdW5jTmFtZSlzICAgICAgICBGdW5jdGlvbiBuYW1lCiAgICAlKGNyZWF0ZWQpZiAgICAgICAgIFRpbWUgd2hlbiB0aGUgTG9nUmVjb3JkIHdhcyBjcmVhdGVkICh0aW1lLnRpbWUoKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUp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b3JtYXQoKSBieSBhIGZvcm1hdHRlciB3aGljaAogICAgICAgIHdhbnRzIHRvIG1ha2UgdXNlIG9mIGEgZm9ybWF0dGVkIHRpbWUuIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuCiAgICAgICAgaW4gZm9ybWF0dGVycyB0byBwcm92aWRlIGZvciBhbnkgc3BlY2lmaWMgcmVxdWlyZW1lbnQsIGJ1dCB0aGUKICAgICAgICBiYXNpYyBiZWhhdmlvdXIgaXMgYXMgZm9sbG93czogaWYgZGF0ZWZtdCAoYSBzdHJpbmcpIGlzIHNwZWNpZmllZCwKICAgICAgICBpdCBpcyB1c2VkIHdpdGggdGltZS5zdHJmdGltZSgpIHRvIGZvcm1hdCB0aGUgY3JlYXRpb24gdGltZSBvZiB0aGUKICAgICAgICByZWNvcmQuIE90aGVyd2lzZSwgYW4gSVNPODYwMS1saWtlIChvciBSRkMgMzMzOS1saWtlKSBmb3JtYXQgaXMgdXNlZC4KICAgICAgICBUaGUgcmVzdWx0aW5nIHN0cmluZyBpcyByZXR1cm5lZC4gVGhpcyBmdW5jdGlvbiB1c2VzIGEgdXNlci1jb25maWd1cmFibGUKICAgICAgICBmdW5jdGlvbiB0byBjb252ZXJ0IHRoZSBjcmVhdGlvbiB0aW1lIHRvIGEgdHVwbGUuIEJ5IGRlZmF1bHQsCiAgICAgICAgdGltZS5sb2NhbHRpbWUoKSBpcyB1c2VkOyB0byBjaGFuZ2UgdGhpcyBmb3IgYSBwYXJ0aWN1bGFyIGZvcm1hdHRlcgogICAgICAgIGluc3RhbmNlLCBzZXQgdGhlICdjb252ZXJ0ZXInIGF0dHJpYnV0ZSB0byBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUKICAgICAgICBzaWduYXR1cmUgYXMgdGltZS5sb2NhbHRpbWUoKSBvciB0aW1lLmdtdGltZSgpLiBUbyBjaGFuZ2UgaXQgZm9yIGFsbAogICAgICAgIGZvcm1hdHRlcnMsIGZvciBleGFtcGxlIGlmIHlvdSB3YW50IGFsbCBsb2dnaW5nIHRpbWVzIHRvIGJlIHNob3duIGluIEdNVCwKICAgICAgICBzZXQgdGhlICdjb252ZXJ0ZXInIGF0dHJpYnV0ZSBpbiB0aGUgRm9ybWF0dGVyIGNsYXNzLgogICAgICAgICkH2gljb252ZXJ0ZXJyZAAAAHJRAAAAWghzdHJmdGltZdoTZGVmYXVsdF90aW1lX2Zvcm1hdNoTZGVmYXVsdF9tc2VjX2Zvcm1hdHJlAAAAKQZybwAAAHKJAAAAcpcAAABycwAAANoBc9oBdHI3AAAAcjcAAAByOAAAANoKZm9ybWF0VGltZfEBAABzDAAAAAASDAEEAQ4CDgEQAXoURm9ybWF0dGVyLmZvcm1hdFRpbWVjAgAAAAAAAAAFAAAABgAAAEMAAABzWgAAAHQAagGDAH0CfAFkARkAfQN0AmoDfAFkAhkAfAFkAxkAfANkBHwCgwUBAHwCagSDAH0EfAJqBYMAAQB8BGQGZASFAhkAZAVrAnJWfARkBGQHhQIZAH0EfARTACkIeqcKICAgICAgICBGb3JtYXQgYW5kIHJldHVybiB0aGUgc3BlY2lmaWVkIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBhcyBhIHN0cmluZy4KCiAgICAgICAgVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGp1c3QgdXNlcwogICAgICAgIHRyYWNlYmFjay5wcmludF9leGNlcHRpb24oKQogICAgICAgIHI/AAAAcgEAAAByTwAAAE7aAQrp/////3KgAAAAKQbaAmlv2ghTdHJpbmdJT9oJdHJhY2ViYWNr2g9wcmludF9leGNlcHRpb27aCGdldHZhbHVl2gVjbG9zZSkFcm8AAABaAmVp2gNzaW/aAnRicpwAAAByNwAAAHI3AAAAcjgAAADaD2Zvcm1hdEV4Y2VwdGlvbgsCAABzEAAAAAAHCAEIBBoBCAEIARABDAF6GUZvcm1hdHRlci5mb3JtYXRFeGNlcHRpb25jAQAAAAAAAAABAAAAAQAAAEMAAABzCgAAAHwAagBqAYMAUwApAXpLCiAgICAgICAgQ2hlY2sgaWYgdGhlIGZvcm1hdCB1c2VzIHRoZSBjcmVhdGlvbiB0aW1lIG9mIHRoZSByZWNvcmQuCiAgICAgICAgKQJylgAAAHKIAAAAKQFybwAAAHI3AAAAcjcAAAByOAAAAHKIAAAAHgIAAHMCAAAAAAR6EkZvcm1hdHRlci51c2VzVGltZWMCAAAAAAAAAAIAAAACAAAAQwAAAHMMAAAAfABqAGoBfAGDAVMAKQFOKQJylgAAAHKKAAAAKQJybwAAAHKJAAAAcjcAAAByNwAAAHI4AAAA2g1mb3JtYXRNZXNzYWdlJAIAAHMCAAAAAAF6F0Zvcm1hdHRlci5mb3JtYXRNZXNzYWdlYwIAAAAAAAAAAgAAAAEAAABDAAAAcwQAAAB8AVMAKQFhVQEAAAogICAgICAgIFRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGFuIGV4dGVuc2lvbiBwb2ludCBmb3Igc3BlY2lhbGl6ZWQKICAgICAgICBmb3JtYXR0aW5nIG9mIHN0YWNrIGluZm9ybWF0aW9uLgoKICAgICAgICBUaGUgaW5wdXQgZGF0YSBpcyBhIHN0cmluZyBhcyByZXR1cm5lZCBmcm9tIGEgY2FsbCB0bwogICAgICAgIDpmdW5jOmB0cmFjZWJhY2sucHJpbnRfc3RhY2tgLCBidXQgd2l0aCB0aGUgbGFzdCB0cmFpbGluZyBuZXdsaW5lCiAgICAgICAgcmVtb3ZlZC4KCiAgICAgICAgVGhlIGJhc2UgaW1wbGVtZW50YXRpb24ganVzdCByZXR1cm5zIHRoZSB2YWx1ZSBwYXNzZWQgaW4uCiAgICAgICAgcjcAAAApAnJvAAAAcmIAAAByNwAAAHI3AAAAcjgAAADaC2Zvcm1hdFN0YWNrJwIAAHMCAAAAAAt6FUZvcm1hdHRlci5mb3JtYXRTdGFja2MCAAAAAAAAAAMAAAADAAAAQwAAAHOgAAAAfAFqAIMAfAFfAXwAagKDAHIifABqA3wBfABqBIMCfAFfBXwAagZ8AYMBfQJ8AWoHckZ8AWoIc0Z8AGoJfAFqB4MBfAFfCHwBaghybnwCZARkAoUCGQBkA2sDcmR8AmQDFwB9AnwCfAFqCBcAfQJ8AWoKcpx8AmQFZAKFAhkAZANrA3KMfAJkAxcAfQJ8AnwAagt8AWoKgwEXAH0CfAJTACkGYXoCAAAKICAgICAgICBGb3JtYXQgdGhlIHNwZWNpZmllZCByZWNvcmQgYXMgdGV4dC4KCiAgICAgICAgVGhlIHJlY29yZCdzIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IGlzIHVzZWQgYXMgdGhlIG9wZXJhbmQgdG8gYQogICAgICAgIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbiB3aGljaCB5aWVsZHMgdGhlIHJldHVybmVkIHN0cmluZy4KICAgICAgICBCZWZvcmUgZm9ybWF0dGluZyB0aGUgZGljdGlvbmFyeSwgYSBjb3VwbGUgb2YgcHJlcGFyYXRvcnkgc3RlcHMKICAgICAgICBhcmUgY2FycmllZCBvdXQuIFRoZSBtZXNzYWdlIGF0dHJpYnV0ZSBvZiB0aGUgcmVjb3JkIGlzIGNvbXB1dGVkCiAgICAgICAgdXNpbmcgTG9nUmVjb3JkLmdldE1lc3NhZ2UoKS4gSWYgdGhlIGZvcm1hdHRpbmcgc3RyaW5nIHVzZXMgdGhlCiAgICAgICAgdGltZSAoYXMgZGV0ZXJtaW5lZCBieSBhIGNhbGwgdG8gdXNlc1RpbWUoKSwgZm9ybWF0VGltZSgpIGlzCiAgICAgICAgY2FsbGVkIHRvIGZvcm1hdCB0aGUgZXZlbnQgdGltZS4gSWYgdGhlcmUgaXMgZXhjZXB0aW9uIGluZm9ybWF0aW9uLAogICAgICAgIGl0IGlzIGZvcm1hdHRlZCB1c2luZyBmb3JtYXRFeGNlcHRpb24oKSBhbmQgYXBwZW5kZWQgdG8gdGhlIG1lc3NhZ2UuCiAgICAgICAgck8AAABOcp8AAAByoAAAAHKgAAAAKQxydgAAANoHbWVzc2FnZXKIAAAAcp4AAABylwAAANoHYXNjdGltZXKqAAAAckEAAAByYQAAAHKpAAAAcmIAAAByqwAAACkDcm8AAAByiQAAAHKcAAAAcjcAAAByNwAAAHI4AAAAcooAAAA0AgAAcyAAAAAADQoBCAEQAQoBBgMGAQ4BBgEQAQgBCgEGARABCAEQAXoQRm9ybWF0dGVyLmZvcm1hdCkDTk5yjwAAACkBTikQcncAAAByeAAAAHJ5AAAAcnoAAAByUQAAAFoJbG9jYWx0aW1lcpkAAABydAAAAHKaAAAAcpsAAAByngAAAHKpAAAAcogAAAByqgAAAHKrAAAAcooAAAByNwAAAHI3AAAAcjcAAAByOAAAAHILAAAAqgEAAHMWAAAACCkEAgYCChcEAQQCChoIEwgGCAMIDWMAAAAAAAAAAAAAAAADAAAAQAAAAHMyAAAAZQBaAWQAWgJkAVoDZAtkA2QEhAFaBGQFZAaEAFoFZAdkCIQAWgZkCWQKhABaB2QCUwApDHIEAAAAekIKICAgIEEgZm9ybWF0dGVyIHN1aXRhYmxlIGZvciBmb3JtYXR0aW5nIGEgbnVtYmVyIG9mIHJlY29yZHMuCiAgICBOYwIAAAAAAAAAAgAAAAIAAABDAAAAcxYAAAB8AXIMfAF8AF8AbgZ0AXwAXwBkAVMAKQJ6bQogICAgICAgIE9wdGlvbmFsbHkgc3BlY2lmeSBhIGZvcm1hdHRlciB3aGljaCB3aWxsIGJlIHVzZWQgdG8gZm9ybWF0IGVhY2gKICAgICAgICBpbmRpdmlkdWFsIHJlY29yZC4KICAgICAgICBOKQLaB2xpbmVmbXTaEV9kZWZhdWx0Rm9ybWF0dGVyKQJybwAAAHKuAAAAcjcAAAByNwAAAHI4AAAAcnQAAABdAgAAcwYAAAAABQQBCAJ6G0J1ZmZlcmluZ0Zvcm1hdHRlci5fX2luaXRfX2MCAAAAAAAAAAIAAAABAAAAQwAAAHMEAAAAZAFTACkCekUKICAgICAgICBSZXR1cm4gdGhlIGhlYWRlciBzdHJpbmcgZm9yIHRoZSBzcGVjaWZpZWQgcmVjb3Jkcy4KICAgICAgICByfgAAAHI3AAAAKQJybwAAANoHcmVjb3Jkc3I3AAAAcjcAAAByOAAAANoMZm9ybWF0SGVhZGVyZwIAAHMCAAAAAAR6H0J1ZmZlcmluZ0Zvcm1hdHRlci5mb3JtYXRIZWFkZXJjAgAAAAAAAAACAAAAAQAAAEMAAABzBAAAAGQBUwApAnpFCiAgICAgICAgUmV0dXJuIHRoZSBmb290ZXIgc3RyaW5nIGZvciB0aGUgc3BlY2lmaWVkIHJlY29yZHMuCiAgICAgICAgcn4AAAByNwAAACkCcm8AAABysAAAAHI3AAAAcjcAAAByOAAAANoMZm9ybWF0Rm9vdGVybQIAAHMCAAAAAAR6H0J1ZmZlcmluZ0Zvcm1hdHRlci5mb3JtYXRGb290ZXJjAgAAAAAAAAAEAAAABAAAAEMAAABzTgAAAGQBfQJ0AHwBgwFkAmsEckp8AnwAagF8AYMBFwB9AngcfAFEAF0UfQN8AnwAagJqA3wDgwEXAH0CcSRXAHwCfABqBHwBgwEXAH0CfAJTACkDelEKICAgICAgICBGb3JtYXQgdGhlIHNwZWNpZmllZCByZWNvcmRzIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBhIHN0cmluZy4KICAgICAgICByfgAAAHIBAAAAKQVyVAAAAHKxAAAAcq4AAAByigAAAHKyAAAAKQRybwAAAHKwAAAAckoAAAByiQAAAHI3AAAAcjcAAAByOAAAAHKKAAAAcwIAAHMOAAAAAAQEAQwBDgEKARQBDgF6GUJ1ZmZlcmluZ0Zvcm1hdHRlci5mb3JtYXQpAU4pCHJ3AAAAcngAAAByeQAAAHJ6AAAAcnQAAABysQAAAHKyAAAAcooAAAByNwAAAHI3AAAAcjcAAAByOAAAAHIEAAAAWQIAAHMKAAAACAMEAQoKCAYIBmMAAAAAAAAAAAAAAAADAAAAQAAAAHMiAAAAZQBaAWQAWgJkAVoDZAhkA2QEhAFaBGQFZAaEAFoFZAdTACkJcgoAAABh9gEAAAogICAgRmlsdGVyIGluc3RhbmNlcyBhcmUgdXNlZCB0byBwZXJmb3JtIGFyYml0cmFyeSBmaWx0ZXJpbmcgb2YgTG9nUmVjb3Jkcy4KCiAgICBMb2dnZXJzIGFuZCBIYW5kbGVycyBjYW4gb3B0aW9uYWxseSB1c2UgRmlsdGVyIGluc3RhbmNlcyB0byBmaWx0ZXIKICAgIHJlY29yZHMgYXMgZGVzaXJlZC4gVGhlIGJhc2UgZmlsdGVyIGNsYXNzIG9ubHkgYWxsb3dzIGV2ZW50cyB3aGljaCBhcmUKICAgIGJlbG93IGEgY2VydGFpbiBwb2ludCBpbiB0aGUgbG9nZ2VyIGhpZXJhcmNoeS4gRm9yIGV4YW1wbGUsIGEgZmlsdGVyCiAgICBpbml0aWFsaXplZCB3aXRoICJBLkIiIHdpbGwgYWxsb3cgZXZlbnRzIGxvZ2dlZCBieSBsb2dnZXJzICJBLkIiLAogICAgIkEuQi5DIiwgIkEuQi5DLkQiLCAiQS5CLkQiIGV0Yy4gYnV0IG5vdCAiQS5CQiIsICJCLkEuQiIgZXRjLiBJZgogICAgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgZW1wdHkgc3RyaW5nLCBhbGwgZXZlbnRzIGFyZSBwYXNzZWQuCiAgICByfgAAAGMCAAAAAAAAAAIAAAACAAAAQwAAAHMUAAAAfAF8AF8AdAF8AYMBfABfAmQBUwApAnrmCiAgICAgICAgSW5pdGlhbGl6ZSBhIGZpbHRlci4KCiAgICAgICAgSW5pdGlhbGl6ZSB3aXRoIHRoZSBuYW1lIG9mIHRoZSBsb2dnZXIgd2hpY2gsIHRvZ2V0aGVyIHdpdGggaXRzCiAgICAgICAgY2hpbGRyZW4sIHdpbGwgaGF2ZSBpdHMgZXZlbnRzIGFsbG93ZWQgdGhyb3VnaCB0aGUgZmlsdGVyLiBJZiBubwogICAgICAgIG5hbWUgaXMgc3BlY2lmaWVkLCBhbGxvdyBldmVyeSBldmVudC4KICAgICAgICBOKQNyUgAAAHJUAAAA2gRubGVuKQJybwAAAHJSAAAAcjcAAAByNwAAAHI4AAAAcnQAAACOAgAAcwQAAAAACAYBeg9GaWx0ZXIuX19pbml0X19jAgAAAAAAAAACAAAABAAAAEMAAABzSgAAAHwAagBkAWsCcg5kAlMAfABqAXwBagFrAnIeZAJTAHwBagFqAnwAagFkAXwAagCDA2QBawNyOmQDUwB8AWoBfABqABkAZARrAlMAKQV62gogICAgICAgIERldGVybWluZSBpZiB0aGUgc3BlY2lmaWVkIHJlY29yZCBpcyB0byBiZSBsb2dnZWQuCgogICAgICAgIElzIHRoZSBzcGVjaWZpZWQgcmVjb3JkIHRvIGJlIGxvZ2dlZD8gUmV0dXJucyAwIGZvciBubywgbm9uemVybyBmb3IKICAgICAgICB5ZXMuIElmIGRlZW1lZCBhcHByb3ByaWF0ZSwgdGhlIHJlY29yZCBtYXkgYmUgbW9kaWZpZWQgaW4tcGxhY2UuCiAgICAgICAgcgEAAABURtoBLikDcrMAAAByUgAAAHKGAAAAKQJybwAAAHKJAAAAcjcAAAByNwAAAHI4AAAA2gZmaWx0ZXKZAgAAcw4AAAAABwoBBAEMAQQBGAEEAXoNRmlsdGVyLmZpbHRlck4pAXJ+AAAAKQZydwAAAHJ4AAAAcnkAAAByegAAAHJ0AAAAcrUAAAByNwAAAHI3AAAAcjcAAAByOAAAAHIKAAAAgwIAAHMGAAAACAoEAQoLYwAAAAAAAAAAAAAAAAIAAABAAAAAczAAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEZAWEAFoFZAZkB4QAWgZkCGQJhABaB2QKUwApC9oIRmlsdGVyZXJ6WwogICAgQSBiYXNlIGNsYXNzIGZvciBsb2dnZXJzIGFuZCBoYW5kbGVycyB3aGljaCBhbGxvd3MgdGhlbSB0byBzaGFyZQogICAgY29tbW9uIGNvZGUuCiAgICBjAQAAAAAAAAABAAAAAgAAAEMAAABzCgAAAGcAfABfAGQBUwApAnpFCiAgICAgICAgSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBmaWx0ZXJzIHRvIGJlIGFuIGVtcHR5IGxpc3QuCiAgICAgICAgTikB2gdmaWx0ZXJzKQFybwAAAHI3AAAAcjcAAAByOAAAAHJ0AAAArQIAAHMCAAAAAAR6EUZpbHRlcmVyLl9faW5pdF9fYwIAAAAAAAAAAgAAAAIAAABDAAAAcxoAAAB8AXwAagBrB3IWfABqAGoBfAGDAQEAZAFTACkCejsKICAgICAgICBBZGQgdGhlIHNwZWNpZmllZCBmaWx0ZXIgdG8gdGhpcyBoYW5kbGVyLgogICAgICAgIE4pAnK3AAAA2gZhcHBlbmQpAnJvAAAAcrUAAAByNwAAAHI3AAAAcjgAAADaCWFkZEZpbHRlcrMCAABzBAAAAAAECgF6EkZpbHRlcmVyLmFkZEZpbHRlcmMCAAAAAAAAAAIAAAACAAAAQwAAAHMaAAAAfAF8AGoAawZyFnwAagBqAXwBgwEBAGQBUwApAnpACiAgICAgICAgUmVtb3ZlIHRoZSBzcGVjaWZpZWQgZmlsdGVyIGZyb20gdGhpcyBoYW5kbGVyLgogICAgICAgIE4pAnK3AAAA2gZyZW1vdmUpAnJvAAAAcrUAAAByNwAAAHI3AAAAcjgAAADaDHJlbW92ZUZpbHRlcroCAABzBAAAAAAECgF6FUZpbHRlcmVyLnJlbW92ZUZpbHRlcmMCAAAAAAAAAAUAAAAEAAAAQwAAAHNAAAAAZAF9Ang2fABqAEQAXSx9A3QBfANkAoMCciZ8A2oCfAGDAX0Ebgh8A3wBgwF9BHwEcwxkA30CUABxDFcAfAJTACkEYWgBAAAKICAgICAgICBEZXRlcm1pbmUgaWYgYSByZWNvcmQgaXMgbG9nZ2FibGUgYnkgY29uc3VsdGluZyBhbGwgdGhlIGZpbHRlcnMuCgogICAgICAgIFRoZSBkZWZhdWx0IGlzIHRvIGFsbG93IHRoZSByZWNvcmQgdG8gYmUgbG9nZ2VkOyBhbnkgZmlsdGVyIGNhbiB2ZXRvCiAgICAgICAgdGhpcyBhbmQgdGhlIHJlY29yZCBpcyB0aGVuIGRyb3BwZWQuIFJldHVybnMgYSB6ZXJvIHZhbHVlIGlmIGEgcmVjb3JkCiAgICAgICAgaXMgdG8gYmUgZHJvcHBlZCwgZWxzZSBub24temVyby4KCiAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKCiAgICAgICAgICAgQWxsb3cgZmlsdGVycyB0byBiZSBqdXN0IGNhbGxhYmxlcy4KICAgICAgICBUcrUAAABGKQNytwAAAHJtAAAAcrUAAAApBXJvAAAAcokAAABySgAAANoBZnI2AAAAcjcAAAByNwAAAHI4AAAAcrUAAADBAgAAcxIAAAAADAQBDAEKAQwCCAEEAQQBBgF6D0ZpbHRlcmVyLmZpbHRlck4pCHJ3AAAAcngAAAByeQAAAHJ6AAAAcnQAAAByuQAAAHK7AAAAcrUAAAByNwAAAHI3AAAAcjcAAAByOAAAAHK2AAAAqAIAAHMKAAAACAQEAQgGCAcIB3K2AAAAYwEAAAAAAAAABAAAAAoAAABDAAAAc0YAAAB0AHQBdAIDAAIAfQF9An0DfAFyQnwCckJ8A3JCfAGDAAEAehZ8AHwDawZyNnwDagN8AIMBAQBXAGQBfAKDAAEAWABkAVMAKQJ6RAogICAgUmVtb3ZlIGEgaGFuZGxlciByZWZlcmVuY2UgZnJvbSB0aGUgaW50ZXJuYWwgY2xlYW51cCBsaXN0LgogICAgTikEcjkAAAByOgAAANoMX2hhbmRsZXJMaXN0croAAAApBNoCd3JyTQAAAHJOAAAA2ghoYW5kbGVyc3I3AAAAcjcAAAByOAAAANoRX3JlbW92ZUhhbmRsZXJSZWbfAgAAcw4AAAAACBABDAEGAQIBCAEOAnLAAAAAYwEAAAAAAAAAAQAAAAoAAABDAAAAcyoAAAB0AIMAAQB6FnQBagJ0A2oEfAB0BYMCgwEBAFcAZAF0BoMAAQBYAGQBUwApAnpMCiAgICBBZGQgYSBoYW5kbGVyIHRvIHRoZSBpbnRlcm5hbCBjbGVhbnVwIGxpc3QgdXNpbmcgYSB3ZWFrIHJlZmVyZW5jZS4KICAgIE4pB3I5AAAAcr0AAAByuAAAANoHd2Vha3JlZtoDcmVmcsAAAAByOgAAACkBWgdoYW5kbGVycjcAAAByNwAAAHI4AAAA2g5fYWRkSGFuZGxlclJlZvACAABzCAAAAAAEBgECARYCcsMAAABjAAAAAAAAAAAAAAAAAwAAAEAAAABzlgAAAGUAWgFkAFoCZAFaA2UEZgFkAmQDhAFaBWQEZAWEAFoGZAZkB4QAWgdlCGUGZQeDAloJZAhkCYQAWgpkCmQLhABaC2QMZA2EAFoMZA5kD4QAWg1kEGQRhABaDmQSZBOEAFoPZBRkFYQAWhBkFmQXhABaEWQYZBmEAFoSZBpkG4QAWhNkHGQdhABaFGQeZB+EAFoVZCBTACkhcgwAAABhcQEAAAogICAgSGFuZGxlciBpbnN0YW5jZXMgZGlzcGF0Y2ggbG9nZ2luZyBldmVudHMgdG8gc3BlY2lmaWMgZGVzdGluYXRpb25zLgoKICAgIFRoZSBiYXNlIGhhbmRsZXIgY2xhc3MuIEFjdHMgYXMgYSBwbGFjZWhvbGRlciB3aGljaCBkZWZpbmVzIHRoZSBIYW5kbGVyCiAgICBpbnRlcmZhY2UuIEhhbmRsZXJzIGNhbiBvcHRpb25hbGx5IHVzZSBGb3JtYXR0ZXIgaW5zdGFuY2VzIHRvIGZvcm1hdAogICAgcmVjb3JkcyBhcyBkZXNpcmVkLiBCeSBkZWZhdWx0LCBubyBmb3JtYXR0ZXIgaXMgc3BlY2lmaWVkOyBpbiB0aGlzIGNhc2UsCiAgICB0aGUgJ3JhdycgbWVzc2FnZSBhcyBkZXRlcm1pbmVkIGJ5IHJlY29yZC5tZXNzYWdlIGlzIGxvZ2dlZC4KICAgIGMCAAAAAAAAAAIAAAACAAAAQwAAAHM0AAAAdABqAXwAgwEBAGQBfABfAnQDfAGDAXwAXwRkAXwAXwV0BnwAgwEBAHwAageDAAEAZAFTACkCenoKICAgICAgICBJbml0aWFsaXplcyB0aGUgaW5zdGFuY2UgLSBiYXNpY2FsbHkgc2V0dGluZyB0aGUgZm9ybWF0dGVyIHRvIE5vbmUKICAgICAgICBhbmQgdGhlIGZpbHRlciBsaXN0IHRvIGVtcHR5LgogICAgICAgIE4pCHK2AAAAcnQAAADaBV9uYW1lcksAAAByNQAAANoJZm9ybWF0dGVycsMAAADaCmNyZWF0ZUxvY2spAnJvAAAAcjUAAAByNwAAAHI3AAAAcjgAAABydAAAAAMDAABzDAAAAAAFCgEGAQoBBgIIAXoQSGFuZGxlci5fX2luaXRfX2MBAAAAAAAAAAEAAAABAAAAQwAAAHMGAAAAfABqAFMAKQFOKQFyxAAAACkBcm8AAAByNwAAAHI3AAAAcjgAAADaCGdldF9uYW1lEAMAAHMCAAAAAAF6EEhhbmRsZXIuZ2V0X25hbWVjAgAAAAAAAAACAAAACgAAAEMAAABzPAAAAHQAgwABAHoofABqAXQCawZyGnQCfABqAT0AfAF8AF8BfAFyLHwAdAJ8ATwAVwBkAHQDgwABAFgAZABTACkBTikEcjkAAAByxAAAANoJX2hhbmRsZXJzcjoAAAApAnJvAAAAclIAAAByNwAAAHI3AAAAcjgAAADaCHNldF9uYW1lEwMAAHMQAAAAAAEGAQIBCgEIAQYBBAEMAnoQSGFuZGxlci5zZXRfbmFtZWMBAAAAAAAAAAEAAAACAAAAQwAAAHMaAAAAdAByEHQAagGDAHwAXwJuBmQBfABfAmQBUwApAnpVCiAgICAgICAgQWNxdWlyZSBhIHRocmVhZCBsb2NrIGZvciBzZXJpYWxpemluZyBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgSS9PLgogICAgICAgIE4pA3JoAAAA2gVSTG9ja9oEbG9jaykBcm8AAAByNwAAAHI3AAAAcjgAAAByxgAAACADAABzBgAAAAAEBAEMAnoSSGFuZGxlci5jcmVhdGVMb2NrYwEAAAAAAAAAAQAAAAEAAABDAAAAcxQAAAB8AGoAchB8AGoAagGDAAEAZAFTACkCei4KICAgICAgICBBY3F1aXJlIHRoZSBJL08gdGhyZWFkIGxvY2suCiAgICAgICAgTikCcssAAAByTQAAACkBcm8AAAByNwAAAHI3AAAAcjgAAAByTQAAACkDAABzBAAAAAAEBgF6D0hhbmRsZXIuYWNxdWlyZWMBAAAAAAAAAAEAAAABAAAAQwAAAHMUAAAAfABqAHIQfABqAGoBgwABAGQBUwApAnouCiAgICAgICAgUmVsZWFzZSB0aGUgSS9PIHRocmVhZCBsb2NrLgogICAgICAgIE4pAnLLAAAAck4AAAApAXJvAAAAcjcAAAByNwAAAHI4AAAAck4AAAAwAwAAcwQAAAAABAYBeg9IYW5kbGVyLnJlbGVhc2VjAgAAAAAAAAACAAAAAgAAAEMAAABzDgAAAHQAfAGDAXwAXwFkAVMAKQJ6WAogICAgICAgIFNldCB0aGUgbG9nZ2luZyBsZXZlbCBvZiB0aGlzIGhhbmRsZXIuICBsZXZlbCBtdXN0IGJlIGFuIGludCBvciBhIHN0ci4KICAgICAgICBOKQJySwAAAHI1AAAAKQJybwAAAHI1AAAAcjcAAAByNwAAAHI4AAAA2ghzZXRMZXZlbDcDAABzAgAAAAAEehBIYW5kbGVyLnNldExldmVsYwIAAAAAAAAAAwAAAAIAAABDAAAAcxwAAAB8AGoAcg58AGoAfQJuBHQBfQJ8AmoCfAGDAVMAKQF6kwogICAgICAgIEZvcm1hdCB0aGUgc3BlY2lmaWVkIHJlY29yZC4KCiAgICAgICAgSWYgYSBmb3JtYXR0ZXIgaXMgc2V0LCB1c2UgaXQuIE90aGVyd2lzZSwgdXNlIHRoZSBkZWZhdWx0IGZvcm1hdHRlcgogICAgICAgIGZvciB0aGUgbW9kdWxlLgogICAgICAgICkDcsUAAAByrwAAAHKKAAAAKQNybwAAAHKJAAAAcoUAAAByNwAAAHI3AAAAcjgAAAByigAAAD0DAABzCAAAAAAHBgEIAgQBeg5IYW5kbGVyLmZvcm1hdGMCAAAAAAAAAAIAAAACAAAAQwAAAHMMAAAAdABkAYMBggFkAlMAKQN6wwogICAgICAgIERvIHdoYXRldmVyIGl0IHRha2VzIHRvIGFjdHVhbGx5IGxvZyB0aGUgc3BlY2lmaWVkIGxvZ2dpbmcgcmVjb3JkLgoKICAgICAgICBUaGlzIHZlcnNpb24gaXMgaW50ZW5kZWQgdG8gYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3NlcyBhbmQgc28KICAgICAgICByYWlzZXMgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgogICAgICAgIHouZW1pdCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IEhhbmRsZXIgc3ViY2xhc3Nlc04pAdoTTm90SW1wbGVtZW50ZWRFcnJvcikCcm8AAAByiQAAAHI3AAAAcjcAAAByOAAAANoEZW1pdEoDAABzAgAAAAAHegxIYW5kbGVyLmVtaXRjAgAAAAAAAAADAAAACgAAAEMAAABzNAAAAHwAagB8AYMBfQJ8AnIwfABqAYMAAQB6DnwAagJ8AYMBAQBXAGQBfABqA4MAAQBYAHwCUwApAmE8AQAACiAgICAgICAgQ29uZGl0aW9uYWxseSBlbWl0IHRoZSBzcGVjaWZpZWQgbG9nZ2luZyByZWNvcmQuCgogICAgICAgIEVtaXNzaW9uIGRlcGVuZHMgb24gZmlsdGVycyB3aGljaCBtYXkgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBoYW5kbGVyLgogICAgICAgIFdyYXAgdGhlIGFjdHVhbCBlbWlzc2lvbiBvZiB0aGUgcmVjb3JkIHdpdGggYWNxdWlzaXRpb24vcmVsZWFzZSBvZgogICAgICAgIHRoZSBJL08gdGhyZWFkIGxvY2suIFJldHVybnMgd2hldGhlciB0aGUgZmlsdGVyIHBhc3NlZCB0aGUgcmVjb3JkIGZvcgogICAgICAgIGVtaXNzaW9uLgogICAgICAgIE4pBHK1AAAAck0AAAByzgAAAHJOAAAAKQNybwAAAHKJAAAAckoAAAByNwAAAHI3AAAAcjgAAADaBmhhbmRsZVQDAABzDgAAAAAJCgEEAQgBAgEOAgoBeg5IYW5kbGVyLmhhbmRsZWMCAAAAAAAAAAIAAAACAAAAQwAAAHMKAAAAfAF8AF8AZAFTACkCejUKICAgICAgICBTZXQgdGhlIGZvcm1hdHRlciBmb3IgdGhpcyBoYW5kbGVyLgogICAgICAgIE4pAXLFAAAAKQJybwAAAHKFAAAAcjcAAAByNwAAAHI4AAAA2gxzZXRGb3JtYXR0ZXJmAwAAcwIAAAAABHoUSGFuZGxlci5zZXRGb3JtYXR0ZXJjAQAAAAAAAAABAAAAAQAAAEMAAABzBAAAAGQBUwApAnqZCiAgICAgICAgRW5zdXJlIGFsbCBsb2dnaW5nIG91dHB1dCBoYXMgYmVlbiBmbHVzaGVkLgoKICAgICAgICBUaGlzIHZlcnNpb24gZG9lcyBub3RoaW5nIGFuZCBpcyBpbnRlbmRlZCB0byBiZSBpbXBsZW1lbnRlZCBieQogICAgICAgIHN1YmNsYXNzZXMuCiAgICAgICAgTnI3AAAAKQFybwAAAHI3AAAAcjcAAAByOAAAANoFZmx1c2hsAwAAcwIAAAAAB3oNSGFuZGxlci5mbHVzaGMBAAAAAAAAAAEAAAAKAAAAQwAAAHMwAAAAdACDAAEAehx8AGoBciB8AGoBdAJrBnIgdAJ8AGoBPQBXAGQBdAODAAEAWABkAVMAKQJhJQEAAAogICAgICAgIFRpZHkgdXAgYW55IHJlc291cmNlcyB1c2VkIGJ5IHRoZSBoYW5kbGVyLgoKICAgICAgICBUaGlzIHZlcnNpb24gcmVtb3ZlcyB0aGUgaGFuZGxlciBmcm9tIGFuIGludGVybmFsIG1hcCBvZiBoYW5kbGVycywKICAgICAgICBfaGFuZGxlcnMsIHdoaWNoIGlzIHVzZWQgZm9yIGhhbmRsZXIgbG9va3VwIGJ5IG5hbWUuIFN1YmNsYXNzZXMKICAgICAgICBzaG91bGQgZW5zdXJlIHRoYXQgdGhpcyBnZXRzIGNhbGxlZCBmcm9tIG92ZXJyaWRkZW4gY2xvc2UoKQogICAgICAgIG1ldGhvZHMuCiAgICAgICAgTikEcjkAAAByxAAAAHLIAAAAcjoAAAApAXJvAAAAcjcAAAByNwAAAHI4AAAAcqYAAAB1AwAAcwoAAAAACgYBAgEQAQwCeg1IYW5kbGVyLmNsb3NlYwIAAAAAAAAABgAAABcAAABDAAAAcwwBAAB0AG8IdAFqApABcgh0AWoDgwBcA30CfQN9BHrkecp0AWoCagRkAYMBAQB0BWoGfAJ8A3wEZAJ0AWoCgwUBAHQBagJqBGQDgwEBAHwEagd9BXgmfAVydnQIaglqCnwFagtqDIMBdA1kBBkAawJydnwFag59BXFSVwB8BXKOdAVqD3wFdAFqAmQFjQIBAG4YdAFqAmoEZAZ8AWoQfAFqEWYCFgCDAQEAeRx0AWoCagRkB3wBahJ8AWoTZgIWAIMBAQBXAG4gBAB0FGsKcuIBAAEAAQB0AWoCagRkCIMBAQBZAG4CWABXAG4UBAB0FWsKcvoBAAEAAQBZAG4CWABXAGQCfgJ+A34EWABkAlMAKQlhRAIAAAogICAgICAgIEhhbmRsZSBlcnJvcnMgd2hpY2ggb2NjdXIgZHVyaW5nIGFuIGVtaXQoKSBjYWxsLgoKICAgICAgICBUaGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIGZyb20gaGFuZGxlcnMgd2hlbiBhbiBleGNlcHRpb24gaXMKICAgICAgICBlbmNvdW50ZXJlZCBkdXJpbmcgYW4gZW1pdCgpIGNhbGwuIElmIHJhaXNlRXhjZXB0aW9ucyBpcyBmYWxzZSwKICAgICAgICBleGNlcHRpb25zIGdldCBzaWxlbnRseSBpZ25vcmVkLiBUaGlzIGlzIHdoYXQgaXMgbW9zdGx5IHdhbnRlZAogICAgICAgIGZvciBhIGxvZ2dpbmcgc3lzdGVtIC0gbW9zdCB1c2VycyB3aWxsIG5vdCBjYXJlIGFib3V0IGVycm9ycyBpbgogICAgICAgIHRoZSBsb2dnaW5nIHN5c3RlbSwgdGhleSBhcmUgbW9yZSBpbnRlcmVzdGVkIGluIGFwcGxpY2F0aW9uIGVycm9ycy4KICAgICAgICBZb3UgY291bGQsIGhvd2V2ZXIsIHJlcGxhY2UgdGhpcyB3aXRoIGEgY3VzdG9tIGhhbmRsZXIgaWYgeW91IHdpc2guCiAgICAgICAgVGhlIHJlY29yZCB3aGljaCB3YXMgYmVpbmcgcHJvY2Vzc2VkIGlzIHBhc3NlZCBpbiB0byB0aGlzIG1ldGhvZC4KICAgICAgICB6Fi0tLSBMb2dnaW5nIGVycm9yIC0tLQpOegxDYWxsIHN0YWNrOgpyAQAAACkB2gRmaWxleh1Mb2dnZWQgZnJvbSBmaWxlICVzLCBsaW5lICVzCnoaTWVzc2FnZTogJXIKQXJndW1lbnRzOiAlcwp6d1VuYWJsZSB0byBwcmludCB0aGUgbWVzc2FnZSBhbmQgYXJndW1lbnRzIC0gcG9zc2libGUgZm9ybWF0dGluZyBlcnJvci4KVXNlIHRoZSB0cmFjZWJhY2sgYWJvdmUgdG8gaGVscCBmaW5kIHRoZSBlcnJvci4KKRZyLAAAAHI9AAAA2gZzdGRlcnJyQQAAANoFd3JpdGVyowAAAHKkAAAAckIAAAByWgAAAHJbAAAA2gdkaXJuYW1l2gZmX2NvZGXaC2NvX2ZpbGVuYW1l2ghfX3BhdGhfX3JDAAAA2gtwcmludF9zdGFja3JdAAAAcmMAAAByUwAAAHJXAAAAckAAAADaB09TRXJyb3IpBnJvAAAAcokAAABynQAAANoBdnKoAAAA2gVmcmFtZXI3AAAAcjcAAAByOAAAANoL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F4QAWg9kMmQZZBqEAVoQZDNkHGQdhAFaEWQ0ZB5kH4QBWhJkIGQhhABaE2QiZCOEAFoUZCRkJYQAWhVkJmQnhABaFmQoZCmEAFoXZCpkK4QAWhhkLGQthABaGWQuZC+EAFoaZDBkMYQAWhtkG1MAKTVyDwAAAGFyAwAACiAgICBJbnN0YW5jZXMgb2YgdGhlIExvZ2dlciBjbGFzcyByZXByZXNlbnQgYSBzaW5nbGUgbG9nZ2luZyBjaGFubmVsLiBBCiAgICAibG9nZ2luZyBjaGFubmVsIiBpbmRpY2F0ZXMgYW4gYXJlYSBvZiBhbiBhcHBsaWNhdGlvbi4gRXhhY3RseSBob3cgYW4KICAgICJhcmVhIiBpcyBkZWZpbmVkIGlzIHVwIHRvIHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wZXIuIFNpbmNlIGFuCiAgICBhcHBsaWNhdGlvbiBjYW4gaGF2ZSBhbnkgbnVtYmVyIG9mIGFyZWFzLCBsb2dnaW5nIGNoYW5uZWxzIGFyZSBpZGVudGlmaWVkCiAgICBieSBhIHVuaXF1ZSBzdHJpbmcuIEFwcGxpY2F0aW9uIGFyZWFzIGNhbiBiZSBuZXN0ZWQgKGUuZy4gYW4gYXJlYQogICAgb2YgImlucHV0IHByb2Nlc3NpbmciIG1pZ2h0IGluY2x1ZGUgc3ViLWFyZWFzICJyZWFkIENTViBmaWxlcyIsICJyZWFkCiAgICBYTFMgZmlsZXMiIGFuZCAicmVhZCBHbnVtZXJpYyBmaWxlcyIpLiBUbyBjYXRlciBmb3IgdGhpcyBuYXR1cmFsIG5lc3RpbmcsCiAgICBjaGFubmVsIG5hbWVzIGFyZSBvcmdhbml6ZWQgaW50byBhIG5hbWVzcGFjZSBoaWVyYXJjaHkgd2hlcmUgbGV2ZWxzIGFyZQogICAgc2VwYXJhdGVkIGJ5IHBlcmlvZHMsIG11Y2ggbGlrZSB0aGUgSmF2YSBvciBQeXRob24gcGFja2FnZSBuYW1lc3BhY2UuIFNvCiAgICBpbiB0aGUgaW5zdGFuY2UgZ2l2ZW4gYWJvdmUsIGNoYW5uZWwgbmFtZXMgbWlnaHQgYmUgImlucHV0IiBmb3IgdGhlIHVwcGVyCiAgICBsZXZlbCwgYW5kICJpbnB1dC5jc3YiLCAiaW5w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CiAgICB0byBkbyBvbmUtc2hvdCBjb25maWd1cmF0aW9uIG9mIHRoZSBsb2dnaW5nIHBhY2thZ2UuCgogICAgVGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGNyZWF0ZSBhIFN0cmVhbUhhbmRsZXIgd2hpY2ggd3JpdGVzIHRvCiAgICBzeXMuc3RkZXJyLCBzZXQgYSBmb3JtYXR0ZXIgdXNpbmcgdGhlIEJBU0lDX0ZPUk1BVCBmb3JtYXQgc3RyaW5nLCBhbmQKICAgIGFkZCB0aGUgaGFuZGxlciB0byB0aGUgcm9vdCBsb2dnZXIuCgogICAgQSBudW1iZXIgb2Ygb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudHMgbWF5IGJlIHNwZWNpZmllZCwgd2hpY2ggY2FuIGFsdGVyCiAgICB0aGUgZGVmYXVsdCBiZWhhdmlvdXIuCgogICAgZmlsZW5hbWUgIFNwZWNpZmllcyB0aGF0IGEgRmlsZUhhbmRsZXIgYmUgY3JlYXRlZCwgdXNpbmcgdGhlIHNwZWNpZmllZAogICAgICAgICAgICAgIGZpbGVuYW1lLCByYXRoZXIgdGhhbiBhIFN0cmVhbUhhbmRsZXIuCiAgICBmaWxlbW9kZSAgU3BlY2lmaWVzIHRoZSBtb2RlIHRvIG9wZW4gdGhlIGZpbGUsIGlmIGZpbGVuYW1lIGlzIHNwZWNpZmllZAogICAgICAgICAgICAgIChpZiBmaWxlbW9kZSBpcyB1bnNwZWNpZmllZCwgaXQgZGVmYXVsdHMgdG8gJ2EnKS4KICAgIGZvcm1hdCAgICBVc2UgdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nIGZvciB0aGUgaGFuZGxlci4KICAgIGRhdGVmbXQgICBVc2UgdGhlIHNwZWNpZmllZCBkYXRlL3RpbWUgZm9ybWF0LgogICAgc3R5bGUgICAgIElmIGEgZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQsIHVzZSB0aGlzIHRvIHNwZWNpZnkgdGhlCiAgICAgICAgICAgICAgdHlwZSBvZiBmb3JtYXQgc3RyaW5nIChwb3NzaWJsZSB2YWx1ZXMgJyUnLCAneycsICckJywgZm9yCiAgICAgICAgICAgICAgJS1mb3JtYXR0aW5nLCA6bWV0aDpgc3RyLmZvcm1hdGAgYW5kIDpjbGFzczpgc3RyaW5nLlRlbXBsYXRlYAogICAgICAgICAgICAgIC0gZGVmYXVsdHMgdG8gJyUnKS4KICAgIGxldmVsICAgICBTZXQgdGhlIHJvb3QgbG9nZ2VyIGxldmVsIHRvIHRoZSBzcGVjaWZpZWQgbGV2ZWwuCiAgICBzdHJlYW0gICAgVXNlIHRoZSBzcGVjaWZpZWQgc3RyZWFtIHRvIGluaXRpYWxpemUgdGhlIFN0cmVhbUhhbmRsZXIuIE5vdGUKICAgICAgICAgICAgICB0aGF0IHRoaXMgYXJndW1lbnQgaXMgaW5jb21wYXRpYmxlIHdpdGggJ2ZpbGVuYW1lJyAtIGlmIGJvdGgKICAgICAgICAgICAgICBhcmUgcHJlc2VudCwgJ3N0cmVhbScgaXMgaWdub3JlZC4KICAgIGhhbmRsZXJzICBJZiBzcGVjaWZpZWQsIHRoaXMgc2hvdWxkIGJlIGFuIGl0ZXJhYmxlIG9mIGFscmVhZHkgY3JlYXRlZAogICAgICAgICAgICAgIGhhbmRsZXJzLCB3aGljaCB3aWxsIGJlIGFkZGVkIHRvIHRoZSByb290IGhhbmRsZXIuIEFueSBoYW5kbGVyCiAgICAgICAgICAgICAgaW4gdGhlIGxpc3Qgd2hpY2ggZG9lcyBub3QgaGF2ZSBhIGZvcm1hdHRlciBhc3NpZ25lZCB3aWxsIGJlCiAgICAgICAgICAgICAgYXNzaWduZWQgdGhlIGZvcm1hdHRlciBjcmVhdGVkIGluIHRoaXMgZnVuY3Rpb24uCgogICAgTm90ZSB0aGF0IHlvdSBjb3VsZCBzcGVjaWZ5IGEgc3RyZWFtIGNyZWF0ZWQgdXNpbmcgb3BlbihmaWxlbmFtZSwgbW9kZSkKICAgIHJhdGhlciB0aGFuIHBhc3NpbmcgdGhlIGZpbGVuYW1lIGFuZCBtb2RlIGluLiBIb3dldmVyLCBpdCBzaG91bGQgYmUKICAgIHJlbWVtYmVyZWQgdGhhdCBTdHJlYW1IYW5kbGVyIGRvZXMgbm90IGNsb3NlIGl0cyBzdHJlYW0gKHNpbmNlIGl0IG1heSBiZQogICAgdXNpbmcgc3lzLnN0ZG91dCBvciBzeXMuc3RkZXJyKSwg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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 9
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
config.cpython-36.opt-1.pyc
22.79 KB
lrw-r--r--
2026-03-24 13:15:23
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
config.cpython-36.opt-2.pyc
18.77 KB
lrw-r--r--
2026-03-24 13:15:24
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
config.cpython-36.pyc
22.84 KB
lrw-r--r--
2026-03-24 13:15:21
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-36.opt-1.pyc
42.36 KB
lrw-r--r--
2026-03-24 13:15:21
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-36.opt-2.pyc
23.82 KB
lrw-r--r--
2026-03-24 13:15:24
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-36.pyc
42.36 KB
lrw-r--r--
2026-03-24 13:15:21
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.opt-1.pyc
58.95 KB
lrw-r--r--
2026-03-24 13:15:23
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.opt-2.pyc
31.76 KB
lrw-r--r--
2026-03-24 13:15:24
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.pyc
58.98 KB
lrw-r--r--
2026-03-24 13:15:21
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).