REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 40.48 KB
Close
/proc/self/root/opt/hc_python/lib/python3.12/site-packages/sqlalchemy/dialects/oracle/__pycache__/oracledb.cpython-312.pyc
Text
Base64
yw0NCgAAAAD5ke9n64MAAOMAAAAAAAAAAAAAAAAGAAAAAAAAAfPUAQAAlwBkAFoAZAFkAmwBbQJaAgEAZAFkA2wDWgNkAWQDbARaBGQBZARsBW0GWgYBAGQBZAVsBW0HWgcBAGQGZAdsCG0JWgoBAGQIZAlsCG0LWgsBAGQIZApsCG0MWgwBAGQIZAtsDW0OWg4BAGQIZAxsDW0PWg8BAGQIZA1sDW0QWhABAGQIZA5sDW0RWhEBAGQIZA9sEm0TWhMBAGQIZBBsFG0VWhUBAGQIZBFsFG0WWhYBAGQIZBJsFG0XWhcBAGUHcgxkAWQTbBhtGVoZAQBkAWQUbBhtGloaAQACAEcAZBWEAGQWZQpqNgAAAAAAAAAAAAAAAAAAAAAAAKsDAAAAAAAAWhwCAEcAZBeEAGQYZQpqOgAAAAAAAAAAAAAAAAAAAAAAAKsDAAAAAAAAWh4CAEcAZBmEAGQaZQ+rAwAAAAAAAFofAgBHAGQbhABkHGUQZR+rBAAAAAAAAFogAgBHAGQdhABkHmUOqwMAAAAAAABaIQIARwBkH4QAZCBlEWUhqwQAAAAAAABaIgIARwBkIYQAZCKrAgAAAAAAAFojAgBHAGQjhABkJGUcqwMAAAAAAABaJAIARwBkJYQAZCZlHqsDAAAAAAAAWiVlHlomZSVaJ3kDKSdhxlkAAC4uIGRpYWxlY3Q6OiBvcmFjbGUrb3JhY2xlZGIKICAgIDpuYW1lOiBweXRob24tb3JhY2xlZGIKICAgIDpkYmFwaTogb3JhY2xlZGIKICAgIDpjb25uZWN0c3RyaW5nOiBvcmFjbGUrb3JhY2xlZGI6Ly91c2VyOnBhc3NAaG9zdG5hbWU6cG9ydFsvZGJuYW1lXVs/c2VydmljZV9uYW1lPTxzZXJ2aWNlPlsma2V5PXZhbHVlJmtleT12YWx1ZS4uLl1dCiAgICA6dXJsOiBodHRwczovL29yYWNsZS5naXRodWIuaW8vcHl0aG9uLW9yYWNsZWRiLwoKRGVzY3JpcHRpb24KLS0tLS0tLS0tLS0KClB5dGhvbi1vcmFjbGVkYiBpcyB0aGUgT3JhY2xlIERhdGFiYXNlIGRyaXZlciBmb3IgUHl0aG9uLiBJdCBmZWF0dXJlcyBhIGRlZmF1bHQKInRoaW4iIGNsaWVudCBtb2RlIHRoYXQgcmVxdWlyZXMgbm8gZGVwZW5kZW5jaWVzLCBhbmQgYW4gb3B0aW9uYWwgInRoaWNrIiBtb2RlCnRoYXQgdXNlcyBPcmFjbGUgQ2xpZW50IGxpYnJhcmllcy4gIEl0IHN1cHBvcnRzIFNRTEFsY2hlbXkgZmVhdHVyZXMgaW5jbHVkaW5nCnR3byBwaGFzZSB0cmFuc2FjdGlvbnMgYW5kIEFzeW5jaW8uCgpQeXRob24tb3JhY2xlIGlzIHRoZSByZW5hbWVkLCB1cGRhdGVkIGN4X09yYWNsZSBkcml2ZXIuIE9yYWNsZSBpcyBubyBsb25nZXIKZG9pbmcgYW55IHJlbGVhc2VzIGluIHRoZSBjeF9PcmFjbGUgbmFtZXNwYWNlLgoKVGhlIFNRTEFsY2hlbXkgYGBvcmFjbGVkYmBgIGRpYWxlY3QgcHJvdmlkZXMgYm90aCBhIHN5bmMgYW5kIGFuIGFzeW5jCmltcGxlbWVudGF0aW9uIHVuZGVyIHRoZSBzYW1lIGRpYWxlY3QgbmFtZS4gVGhlIHByb3BlciB2ZXJzaW9uIGlzCnNlbGVjdGVkIGRlcGVuZGluZyBvbiBob3cgdGhlIGVuZ2luZSBpcyBjcmVhdGVkOgoKKiBjYWxsaW5nIDpmdW5jOmBfc2EuY3JlYXRlX2VuZ2luZWAgd2l0aCBgYG9yYWNsZStvcmFjbGVkYjovLy4uLmBgIHdpbGwKICBhdXRvbWF0aWNhbGx5IHNlbGVjdCB0aGUgc3luYyB2ZXJzaW9uOjoKCiAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IGNyZWF0ZV9lbmdpbmUKCiAgICBzeW5jX2VuZ2luZSA9IGNyZWF0ZV9lbmdpbmUoCiAgICAgICAgIm9yYWNsZStvcmFjbGVkYjovL3Njb3R0OnRpZ2VyQGxvY2FsaG9zdD9zZXJ2aWNlX25hbWU9RlJFRVBEQjEiCiAgICApCgoqIGNhbGxpbmcgOmZ1bmM6YF9hc3luY2lvLmNyZWF0ZV9hc3luY19lbmdpbmVgIHdpdGggYGBvcmFjbGUrb3JhY2xlZGI6Ly8uLi5gYAogIHdpbGwgYXV0b21hdGljYWxseSBzZWxlY3QgdGhlIGFzeW5jIHZlcnNpb246OgoKICAgIGZyb20gc3FsYWxjaGVteS5leHQuYXN5bmNpbyBpbXBvcnQgY3JlYXRlX2FzeW5jX2VuZ2luZQoKICAgIGFzeW5jaW9fZW5naW5lID0gY3JlYXRlX2FzeW5jX2VuZ2luZSgKICAgICAgICAib3JhY2xlK29yYWNsZWRiOi8vc2NvdHQ6dGlnZXJAbG9jYWxob3N0P3NlcnZpY2VfbmFtZT1GUkVFUERCMSIKICAgICkKCiAgVGhlIGFzeW5jaW8gdmVyc2lvbiBvZiB0aGUgZGlhbGVjdCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgZXhwbGljaXRseSB1c2luZyB0aGUKICBgYG9yYWNsZWRiX2FzeW5jYGAgc3VmZml4OjoKCiAgICAgIGZyb20gc3FsYWxjaGVteS5leHQuYXN5bmNpbyBpbXBvcnQgY3JlYXRlX2FzeW5jX2VuZ2luZQoKICAgICAgYXN5bmNpb19lbmdpbmUgPSBjcmVhdGVfYXN5bmNfZW5naW5lKAogICAgICAgICAgIm9yYWNsZStvcmFjbGVkYl9hc3luYzovL3Njb3R0OnRpZ2VyQGxvY2FsaG9zdD9zZXJ2aWNlX25hbWU9RlJFRVBEQjEiCiAgICAgICkKCi4uIHZlcnNpb25hZGRlZDo6IDIuMC4yNSBhZGRlZCBzdXBwb3J0IGZvciB0aGUgYXN5bmMgdmVyc2lvbiBvZiBvcmFjbGVkYi4KClRoaWNrIG1vZGUgc3VwcG9ydAotLS0tLS0tLS0tLS0tLS0tLS0KCkJ5IGRlZmF1bHQsIHRoZSBweXRob24tb3JhY2xlZGIgZHJpdmVyIHJ1bnMgaW4gYSAidGhpbiIgbW9kZSB0aGF0IGRvZXMgbm90CnJlcXVpcmUgT3JhY2xlIENsaWVudCBsaWJyYXJpZXMgdG8gYmUgaW5zdGFsbGVkLiBUaGUgZHJpdmVyIGFsc28gc3VwcG9ydHMgYQoidGhpY2siIG1vZGUgdGhhdCB1c2VzIE9yYWNsZSBDbGllbnQgbGlicmFyaWVzIHRvIGdldCBmdW5jdGlvbmFsaXR5IHN1Y2ggYXMKT3JhY2xlIEFwcGxpY2F0aW9uIENvbnRpbnVpdHkuCgpUbyBlbmFibGUgdGhpY2sgbW9kZSwgY2FsbCBgb3JhY2xlZGIuaW5pdF9vcmFjbGVfY2xpZW50KCkKPGh0dHBzOi8vcHl0aG9uLW9yYWNsZWRiLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9hcGlfbWFudWFsL21vZHVsZS5odG1sI29yYWNsZWRiLmluaXRfb3JhY2xlX2NsaWVudD5gXwpleHBsaWNpdGx5LCBvciBwYXNzIHRoZSBwYXJhbWV0ZXIgYGB0aGlja19tb2RlPVRydWVgYCB0bwo6ZnVuYzpgX3NhLmNyZWF0ZV9lbmdpbmVgLiBUbyBwYXNzIGN1c3RvbSBhcmd1bWVudHMgdG8KYGBpbml0X29yYWNsZV9jbGllbnQoKWBgLCBsaWtlIHRoZSBgYGxpYl9kaXJgYCBwYXRoLCBhIGRpY3QgbWF5IGJlIHBhc3NlZCwgZm9yCmV4YW1wbGU6OgoKICAgIGVuZ2luZSA9IHNhLmNyZWF0ZV9lbmdpbmUoCiAgICAgICAgIm9yYWNsZStvcmFjbGVkYjovLy4uLiIsCiAgICAgICAgdGhpY2tfbW9kZT17CiAgICAgICAgICAgICJsaWJfZGlyIjogIi9wYXRoL3RvL29yYWNsZS9jbGllbnQvbGliIiwKICAgICAgICAgICAgImNvbmZpZ19kaXIiOiAiL3BhdGgvdG8vbmV0d29ya19jb25maWdfZmlsZV9kaXJlY3RvcnkiLAogICAgICAgICAgICAiZHJpdmVyX25hbWUiOiAibXktYXBwIDogMS4wLjAiLAogICAgICAgIH0sCiAgICApCgpOb3RlIHRoYXQgcGFzc2luZyBhIGBgbGliX2RpcmBgIHBhdGggc2hvdWxkIG9ubHkgYmUgZG9uZSBvbiBtYWNPUyBvcgpXaW5kb3dzLiBPbiBMaW51eCBpdCBkb2VzIG5vdCBiZWhhdmUgYXMgeW91IG1pZ2h0IGV4cGVjdC4KCi4uIHNlZWFsc286OgoKICAgIHB5dGhvbi1vcmFjbGVkYiBkb2N1bWVudGF0aW9uIGBFbmFibGluZyBweXRob24tb3JhY2xlZGIgVGhpY2sgbW9kZQogICAgPGh0dHBzOi8vcHl0aG9uLW9yYWNsZWRiLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC91c2VyX2d1aWRlL2luaXRpYWxpemF0aW9uLmh0bWwjZW5hYmxpbmctcHl0aG9uLW9yYWNsZWRiLXRoaWNrLW1vZGU+YF8KCkNvbm5lY3RpbmcgdG8gT3JhY2xlIERhdGFiYXNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpweXRob24tb3JhY2xlZGIgcHJvdmlkZXMgc2V2ZXJhbCBtZXRob2RzIG9mIGluZGljYXRpbmcgdGhlIHRhcmdldCBkYXRhYmFzZS4KVGhlIGRpYWxlY3QgdHJhbnNsYXRlcyBmcm9tIGEgc2VyaWVzIG9mIGRpZmZlcmVudCBVUkwgZm9ybXMuCgpHaXZlbiB0aGUgaG9zdG5hbWUsIHBvcnQgYW5kIHNlcnZpY2UgbmFtZSBvZiB0aGUgdGFyZ2V0IGRhdGFiYXNlLCB5b3UgY2FuCmNvbm5lY3QgaW4gU1FMQWxjaGVteSB1c2luZyB0aGUgYGBzZXJ2aWNlX25hbWVgYCBxdWVyeSBzdHJpbmcgcGFyYW1ldGVyOjoKCiAgICBlbmdpbmUgPSBjcmVhdGVfZW5naW5lKAogICAgICAgICJvcmFjbGUrb3JhY2xlZGI6Ly9zY290dDp0aWdlckBob3N0bmFtZTpwb3J0P3NlcnZpY2VfbmFtZT1teXNlcnZpY2UiCiAgICApCgpDb25uZWN0aW5nIHdpdGggRWFzeSBDb25uZWN0IHN0cmluZ3MKXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCgpZb3UgY2FuIHBhc3MgYW55IHZhbGlkIHB5dGhvbi1vcmFjbGVkYiBjb25uZWN0aW9uIHN0cmluZyBhcyB0aGUgYGBkc25gYCBrZXkKdmFsdWUgaW4gYSA6cGFyYW1yZWY6YF9zYS5jcmVhdGVfZW5naW5lLmNvbm5lY3RfYXJnc2AgZGljdGlvbmFyeS4gIFNlZQpweXRob24tb3JhY2xlZGIgZG9jdW1lbnRhdGlvbiBgT3JhY2xlIE5ldCBTZXJ2aWNlcyBDb25uZWN0aW9uIFN0cmluZ3MKPGh0dHBzOi8vcHl0aG9uLW9yYWNsZWRiLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC91c2VyX2d1aWRlL2Nvbm5lY3Rpb25faGFuZGxpbmcuaHRtbCNvcmFjbGUtbmV0LXNlcnZpY2VzLWNvbm5lY3Rpb24tc3RyaW5ncz5gXy4KCkZvciBleGFtcGxlIHRvIHVzZSBhbiBgRWFzeSBDb25uZWN0IHN0cmluZwo8aHR0cHM6Ly9kb3dubG9hZC5vcmFjbGUuY29tL29jb21kb2NzL2dsb2JhbC9PcmFjbGUtTmV0LUVhc3ktQ29ubmVjdC1QbHVzLnBkZj5gXwp3aXRoIGEgdGltZW91dCB0byBwcmV2ZW50IGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBmcm9tIGhhbmdpbmcgaWYgdGhlIG5ldHdvcmsKdHJhbnNwb3J0IHRvIHRoZSBkYXRhYmFzZSBjYW5ub3QgYmUgZXN0YWJsaXNoZCBpbiAzMCBzZWNvbmRzLCBhbmQgYWxzbyBzZXR0aW5nCmEga2VlcC1hbGl2ZSB0aW1lIG9mIDYwIHNlY29uZHMgdG8gc3RvcCBpZGxlIG5ldHdvcmsgY29ubmVjdGlvbnMgZnJvbSBiZWluZwp0ZXJtaW5hdGVkIGJ5IGEgZmlyZXdhbGw6OgoKICAgIGUgPSBjcmVhdGVfZW5naW5lKAogICAgICAgICJvcmFjbGUrb3JhY2xlZGI6Ly9AIiwKICAgICAgICBjb25uZWN0X2FyZ3M9ewogICAgICAgICAgICAidXNlciI6ICJzY290dCIsCiAgICAgICAgICAgICJwYXNzd29yZCI6ICJ0aWdlciIsCiAgICAgICAgICAgICJkc24iOiAiaG9zdG5hbWU6cG9ydC9teXNlcnZpY2U/dHJhbnNwb3J0X2Nvbm5lY3RfdGltZW91dD0zMCZleHBpcmVfdGltZT02MCIsCiAgICAgICAgfSwKICAgICkKClRoZSBFYXN5IENvbm5lY3Qgc3ludGF4IGhhcyBiZWVuIGVuaGFuY2VkIGR1cmluZyB0aGUgbGlmZSBvZiBPcmFjbGUgRGF0YWJhc2UuClJldmlldyB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgeW91ciBkYXRhYmFzZSB2ZXJzaW9uLiAgVGhlIGN1cnJlbnQgZG9jdW1lbnRhdGlvbgppcyBhdCBgVW5kZXJzdGFuZGluZyB0aGUgRWFzeSBDb25uZWN0IE5hbWluZyBNZXRob2QKPGh0dHBzOi8vd3d3Lm9yYWNsZS5jb20vcGxzL3RvcGljL2xvb2t1cD9jdHg9ZGJsYXRlc3QmaWQ9R1VJRC1CMDQzNzgyNi00M0MxLTQ5RUMtQTk0RC1CNjUwQjZBNEE2RUU+YF8uCgpUaGUgZ2VuZXJhbCBzeW50YXggaXMgc2ltaWxhciB0bzoKCi4uIHNvdXJjZWNvZGU6OiB0ZXh0CgogICAgW1twcm90b2NvbDpdLy9daG9zdFs6cG9ydF1bL1tzZXJ2aWNlX25hbWVdXVs/cGFyYW1ldGVyX25hbWU9dmFsdWV7JnBhcmFtZXRlcl9uYW1lPXZhbHVlfV0KCk5vdGUgdGhhdCBhbHRob3VnaCB0aGUgU1FMQWxjaGVteSBVUkwgc3ludGF4IGBgaG9zdG5hbWU6cG9ydC9kYm5hbWVgYCBsb29rcwpsaWtlIE9yYWNsZSdzIEVhc3kgQ29ubmVjdCBzeW50YXgsIGl0IGlzIGRpZmZlcmVudC4gU1FMQWxjaGVteSdzIFVSTCByZXF1aXJlcyBhCnN5c3RlbSBpZGVudGlmaWVyIChTSUQpIGZvciB0aGUgYGBkYm5hbWVgYCBjb21wb25lbnQ6OgoKICAgIGVuZ2luZSA9IGNyZWF0ZV9lbmdpbmUoIm9yYWNsZStvcmFjbGVkYjovL3Njb3R0OnRpZ2VyQGhvc3RuYW1lOnBvcnQvc2lkIikKCkVhc3kgQ29ubmVjdCBzeW50YXggZG9lcyBub3Qgc3VwcG9ydCBTSURzLiBJdCB1c2VzIHNlcnZpY2VzIG5hbWVzLCB3aGljaCBhcmUKdGhlIHByZWZlcnJlZCBjaG9pY2UgZm9yIGNvbm5lY3RpbmcgdG8gT3JhY2xlIERhdGFiYXNlLgoKUGFzc2luZyBweXRob24tb3JhY2xlZGIgY29ubmVjdCBhcmd1bWVudHMKXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KCk90aGVyIHB5dGhvbi1vcmFjbGVkYiBkcml2ZXIgYGNvbm5lY3Rpb24gb3B0aW9ucwo8aHR0cHM6Ly9weXRob24tb3JhY2xlZGIucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2FwaV9tYW51YWwvbW9kdWxlLmh0bWwjb3JhY2xlZGIuY29ubmVjdD5gXwpjYW4gYmUgcGFzc2VkIGluIGBgY29ubmVjdF9hcmdzYGAuICBGb3IgZXhhbXBsZTo6CgogICAgZSA9IGNyZWF0ZV9lbmdpbmUoCiAgICAgICAgIm9yYWNsZStvcmFjbGVkYjovL0AiLAogICAgICAgIGNvbm5lY3RfYXJncz17CiAgICAgICAgICAgICJ1c2VyIjogInNjb3R0IiwKICAgICAgICAgICAgInBhc3N3b3JkIjogInRpZ2VyIiwKICAgICAgICAgICAgImRzbiI6ICJob3N0bmFtZTpwb3J0L215c2VydmljZSIsCiAgICAgICAgICAgICJldmVudHMiOiBUcnVlLAogICAgICAgICAgICAibW9kZSI6IG9yYWNsZWRiLkFVVEhfTU9ERV9TWVNEQkEsCiAgICAgICAgfSwKICAgICkKCkNvbm5lY3Rpbmcgd2l0aCB0bnNuYW1lcy5vcmEgVE5TIGFsaWFzZXMKXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgoKSWYgbm8gcG9ydCwgZGF0YWJhc2UgbmFtZSwgb3Igc2VydmljZSBuYW1lIGlzIHByb3ZpZGVkLCB0aGUgZGlhbGVjdCB3aWxsIHVzZSBhbgpPcmFjbGUgRGF0YWJhc2UgRFNOICJjb25uZWN0aW9uIHN0cmluZyIuICBUaGlzIHRha2VzIHRoZSAiaG9zdG5hbWUiIHBvcnRpb24gb2YKdGhlIFVSTCBhcyB0aGUgZGF0YSBzb3VyY2UgbmFtZS4gIEZvciBleGFtcGxlLCBpZiB0aGUgYGB0bnNuYW1lcy5vcmFgYCBmaWxlCmNvbnRhaW5zIGEgYFROUyBBbGlhcwo8aHR0cHM6Ly9weXRob24tb3JhY2xlZGIucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L3VzZXJfZ3VpZGUvY29ubmVjdGlvbl9oYW5kbGluZy5odG1sI3Rucy1hbGlhc2VzLWZvci1jb25uZWN0aW9uLXN0cmluZ3M+YF8Kb2YgYGBteWFsaWFzYGAgYXMgYmVsb3c6CgouLiBzb3VyY2Vjb2RlOjogdGV4dAoKICAgIG15YWxpYXMgPQogICAgICAoREVTQ1JJUFRJT04gPQogICAgICAgIChBRERSRVNTID0gKFBST1RPQ09MID0gVENQKShIT1NUID0gbXltYWNoaW5lLmV4YW1wbGUuY29tKShQT1JUID0gMTUyMSkpCiAgICAgICAgKENPTk5FQ1RfREFUQSA9CiAgICAgICAgICAoU0VSVkVSID0gREVESUNBVEVEKQogICAgICAgICAgKFNFUlZJQ0VfTkFNRSA9IG9yY2xwZGIxKQogICAgICAgICkKICAgICAgKQoKVGhlIHB5dGhvbi1vcmFjbGVkYiBkaWFsZWN0IGNvbm5lY3RzIHRvIHRoaXMgZGF0YWJhc2Ugc2VydmljZSB3aGVuIGBgbXlhbGlhc2BgIGlzIHRoZQpob3N0bmFtZSBwb3J0aW9uIG9mIHRoZSBVUkwsIHdpdGhvdXQgc3BlY2lmeWluZyBhIHBvcnQsIGRhdGFiYXNlIG5hbWUgb3IKYGBzZXJ2aWNlX25hbWVgYDo6CgogICAgZW5naW5lID0gY3JlYXRlX2VuZ2luZSgib3JhY2xlK29yYWNsZWRiOi8vc2NvdHQ6dGlnZXJAbXlhbGlhcyIpCgpDb25uZWN0aW5nIHRvIE9yYWNsZSBBdXRvbm9tb3VzIERhdGFiYXNlCl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KClVzZXJzIG9mIE9yYWNsZSBBdXRvbm9tb3VzIERhdGFiYXNlIHNob3VsZCB1c2UgZWl0aGVyIHVzZSB0aGUgVE5TIEFsaWFzIFVSTApzaG93biBhYm92ZSwgb3IgcGFzcyB0aGUgVE5TIEFsaWFzIGFzIHRoZSBgYGRzbmBgIGtleSB2YWx1ZSBpbiBhCjpwYXJhbXJlZjpgX3NhLmNyZWF0ZV9lbmdpbmUuY29ubmVjdF9hcmdzYCBkaWN0aW9uYXJ5LgoKSWYgT3JhY2xlIEF1dG9ub21vdXMgRGF0YWJhc2UgaXMgY29uZmlndXJlZCBmb3IgbXV0dWFsIFRMUyAoIm1UTFMiKQpjb25uZWN0aW9ucywgdGhlbiBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQgYXMgc2hvd24gaW4gYENvbm5lY3RpbmcKdG8gT3JhY2xlIENsb3VkIEF1dG9ub21vdXMgRGF0YWJhc2VzCjxodHRwczovL3B5dGhvbi1vcmFjbGVkYi5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvdXNlcl9ndWlkZS9jb25uZWN0aW9uX2hhbmRsaW5nLmh0bWwjY29ubmVjdGluZy10by1vcmFjbGUtY2xvdWQtYXV0b25vbW91cy1kYXRhYmFzZXM+YF8uIEluCnN1bW1hcnksIFRoaWNrIG1vZGUgdXNlcnMgc2hvdWxkIGNvbmZpZ3VyZSBmaWxlIGxvY2F0aW9ucyBhbmQgc2V0IHRoZSB3YWxsZXQKcGF0aCBpbiBgYHNxbG5ldC5vcmFgYCBhcHByb3ByaWF0ZWx5OjoKCiAgICBlID0gY3JlYXRlX2VuZ2luZSgKICAgICAgICAib3JhY2xlK29yYWNsZWRiOi8vQCIsCiAgICAgICAgdGhpY2tfbW9kZT17CiAgICAgICAgICAgICMgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdG5zbmFtZXMub3JhIGFuZCBjd2FsbGV0LnNvCiAgICAgICAgICAgICJjb25maWdfZGlyIjogIi9vcHQvb3JhY2xlL3dhbGxldF9kaXIiLAogICAgICAgIH0sCiAgICAgICAgY29ubmVjdF9hcmdzPXsKICAgICAgICAgICAgInVzZXIiOiAic2NvdHQiLAogICAgICAgICAgICAicGFzc3dvcmQiOiAidGlnZXIiLAogICAgICAgICAgICAiZHNuIjogIm15ZGJfaGlnaCIsCiAgICAgICAgfSwKICAgICkKClRoaW4gbW9kZSB1c2VycyBvZiBtVExTIHNob3VsZCBwYXNzIHRoZSBhcHByb3ByaWF0ZSBkaXJlY3RvcmllcyBhbmQgUEVNIHdhbGxldApwYXNzd29yZCB3aGVuIGNyZWF0aW5nIHRoZSBlbmdpbmUsIHNpbWlsYXIgdG86OgoKICAgIGUgPSBjcmVhdGVfZW5naW5lKAogICAgICAgICJvcmFjbGUrb3JhY2xlZGI6Ly9AIiwKICAgICAgICBjb25uZWN0X2FyZ3M9ewogICAgICAgICAgICAidXNlciI6ICJzY290dCIsCiAgICAgICAgICAgICJwYXNzd29yZCI6ICJ0aWdlciIsCiAgICAgICAgICAgICJkc24iOiAibXlkYl9oaWdoIiwKICAgICAgICAgICAgImNvbmZpZ19kaXIiOiAiL29wdC9vcmFjbGUvd2FsbGV0X2RpciIsICAjIGRpcmVjdG9yeSBjb250YWluaW5nIHRuc25hbWVzLm9yYQogICAgICAgICAgICAid2FsbGV0X2xvY2F0aW9uIjogIi9vcHQvb3JhY2xlL3dhbGxldF9kaXIiLCAgIyBkaXJlY3RvcnkgY29udGFpbmluZyBld2FsbGV0LnBlbQogICAgICAgICAgICAid2FsbGV0X3Bhc3N3b3JkIjogInRvcCBzZWNyZXQiLCAgIyBwYXNzd29yZCBmb3IgdGhlIFBFTSBmaWxlCiAgICAgICAgfSwKICAgICkKClR5cGljYWxseSBgYGNvbmZpZ19kaXJgYCBhbmQgYGB3YWxsZXRfbG9jYXRpb25gYCBhcmUgdGhlIHNhbWUgZGlyZWN0b3J5LCB3aGljaAppcyB3aGVyZSB0aGUgT3JhY2xlIEF1dG9ub21vdXMgRGF0YWJhc2Ugd2FsbGV0IHppcCBmaWxlIHdhcyBleHRyYWN0ZWQuICBOb3RlCnRoaXMgZGlyZWN0b3J5IHNob3VsZCBiZSBwcm90ZWN0ZWQuCgpDb25uZWN0aW9uIFBvb2xpbmcKLS0tLS0tLS0tLS0tLS0tLS0tCgpBcHBsaWNhdGlvbnMgd2l0aCBtdWx0aXBsZSBjb25jdXJyZW50IHVzZXJzIHNob3VsZCB1c2UgY29ubmVjdGlvbiBwb29saW5nLiBBCm1pbmltYWwgc2l6ZWQgY29ubmVjdGlvbiBwb29sIGlzIGFsc28gYmVuZWZpY2lhbCBmb3IgbG9uZy1ydW5uaW5nLCBzaW5nbGUtdXNlcgphcHBsaWNhdGlvbnMgdGhhdCBkbyBub3QgZnJlcXVlbnRseSB1c2UgYSBjb25uZWN0aW9uLgoKVGhlIHB5dGhvbi1vcmFjbGVkYiBkcml2ZXIgcHJvdmlkZXMgaXRzIG93biBjb25uZWN0aW9uIHBvb2wgaW1wbGVtZW50YXRpb24gdGhhdAptYXkgYmUgdXNlZCBpbiBwbGFjZSBvZiBTUUxBbGNoZW15J3MgcG9vbGluZyBmdW5jdGlvbmFsaXR5LiAgVGhlIGRyaXZlciBwb29sCmdpdmVzIHN1cHBvcnQgZm9yIGhpZ2ggYXZhaWxhYmlsaXR5IGZlYXR1cmVzIHN1Y2ggYXMgZGVhZCBjb25uZWN0aW9uIGRldGVjdGlvbiwKY29ubmVjdGlvbiBkcmFpbmluZyBmb3IgcGxhbm5lZCBkYXRhYmFzZSBkb3dudGltZSwgc3VwcG9ydCBmb3IgT3JhY2xlCkFwcGxpY2F0aW9uIENvbnRpbnVpdHkgYW5kIFRyYW5zcGFyZW50IEFwcGxpY2F0aW9uIENvbnRpbnVpdHksIGFuZCBnaXZlcwpzdXBwb3J0IGZvciBgRGF0YWJhc2UgUmVzaWRlbnQgQ29ubmVjdGlvbiBQb29saW5nIChEUkNQKQo8aHR0cHM6Ly9weXRob24tb3JhY2xlZGIucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L3VzZXJfZ3VpZGUvY29ubmVjdGlvbl9oYW5kbGluZy5odG1sI2RhdGFiYXNlLXJlc2lkZW50LWNvbm5lY3Rpb24tcG9vbGluZy1kcmNwPmBfLgoKVG8gdGFrZSBhZHZhbnRhZ2Ugb2YgcHl0aG9uLW9yYWNsZWRiJ3MgcG9vbCwgdXNlIHRoZQo6cGFyYW1yZWY6YF9zYS5jcmVhdGVfZW5naW5lLmNyZWF0b3JgIHBhcmFtZXRlciB0byBwcm92aWRlIGEgZnVuY3Rpb24gdGhhdApyZXR1cm5zIGEgbmV3IGNvbm5lY3Rpb24sIGFsb25nIHdpdGggc2V0dGluZwo6cGFyYW1yZWY6YF9zYS5jcmVhdGVfZW5naW5lLnBvb2xfY2xhc3NgIHRvIGBgTnVsbFBvb2xgYCB0byBkaXNhYmxlClNRTEFsY2hlbXkncyBwb29saW5nOjoKCiAgICBpbXBvcnQgb3JhY2xlZGIKICAgIGZyb20gc3FsYWxjaGVteSBpbXBvcnQgY3JlYXRlX2VuZ2luZQogICAgZnJvbSBzcWxhbGNoZW15IGltcG9ydCB0ZXh0CiAgICBmcm9tIHNxbGFsY2hlbXkucG9vbCBpbXBvcnQgTnVsbFBvb2wKCiAgICAjIFVuY29tbWVudCB0byB1c2UgdGhlIG9wdGlvbmFsIHB5dGhvbi1vcmFjbGVkYiBUaGljayBtb2RlLgogICAgIyBSZXZpZXcgdGhlIHB5dGhvbi1vcmFjbGVkYiBkb2MgZm9yIHRoZSBhcHByb3ByaWF0ZSBwYXJhbWV0ZXJzCiAgICAjIG9yYWNsZWRiLmluaXRfb3JhY2xlX2NsaWVudCg8eW91ciBwYXJhbWV0ZXJzPikKCiAgICBwb29sID0gb3JhY2xlZGIuY3JlYXRlX3Bvb2woCiAgICAgICAgdXNlcj0ic2NvdHQiLAogICAgICAgIHBhc3N3b3JkPSJ0aWdlciIsCiAgICAgICAgZHNuPSJsb2NhbGhvc3Q6MTUyMS9mcmVlcGRiMSIsCiAgICAgICAgbWluPTEsCiAgICAgICAgbWF4PTQsCiAgICAgICAgaW5jcmVtZW50PTEsCiAgICApCiAgICBlbmdpbmUgPSBjcmVhdGVfZW5naW5lKAogICAgICAgICJvcmFjbGUrb3JhY2xlZGI6Ly8iLCBjcmVhdG9yPXBvb2wuYWNxdWlyZSwgcG9vbGNsYXNzPU51bGxQb29sCiAgICApCgpUaGUgYWJvdmUgZW5naW5lIG1heSB0aGVuIGJlIHVzZWQgbm9ybWFsbHkuIEludGVybmFsbHksIHB5dGhvbi1vcmFjbGVkYiBoYW5kbGVzCmNvbm5lY3Rpb24gcG9vbGluZzo6CgogICAgd2l0aCBlbmdpbmUuY29ubmVjdCgpIGFzIGNvbm46CiAgICAgICAgcHJpbnQoY29ubi5zY2FsYXIodGV4dCgic2VsZWN0IDEgZnJvbSBkdWFsIikpKQoKUmVmZXIgdG8gdGhlIHB5dGhvbi1vcmFjbGVkYiBkb2N1bWVudGF0aW9uIGZvciBgb3JhY2xlZGIuY3JlYXRlX3Bvb2woKQo8aHR0cHM6Ly9weXRob24tb3JhY2xlZGIucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2FwaV9tYW51YWwvbW9kdWxlLmh0bWwjb3JhY2xlZGIuY3JlYXRlX3Bvb2w+YF8KZm9yIHRoZSBhcmd1bWVudHMgdGhhdCBjYW4gYmUgdXNlZCB3aGVuIGNyZWF0aW5nIGEgY29ubmVjdGlvbiBwb29sLgoKLi4gX2RyY3A6CgpVc2luZyBPcmFjbGUgRGF0YWJhc2UgUmVzaWRlbnQgQ29ubmVjdGlvbiBQb29saW5nIChEUkNQKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKV2hlbiB1c2luZyBPcmFjbGUgRGF0YWJhc2UncyBEYXRhYmFzZSBSZXNpZGVudCBDb25uZWN0aW9uIFBvb2xpbmcgKERSQ1ApLCB0aGUKYmVzdCBwcmFjdGljZSBpcyB0byBzcGVjaWZ5IGEgY29ubmVjdGlvbiBjbGFzcyBhbmQgInB1cml0eSIuIFJlZmVyIHRvIHRoZQpgcHl0aG9uLW9yYWNsZWRiIGRvY3VtZW50YXRpb24gb24gRFJDUAo8aHR0cHM6Ly9weXRob24tb3JhY2xlZGIucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L3VzZXJfZ3VpZGUvY29ubmVjdGlvbl9oYW5kbGluZy5odG1sI2RhdGFiYXNlLXJlc2lkZW50LWNvbm5lY3Rpb24tcG9vbGluZy1kcmNwPmBfLgpGb3IgZXhhbXBsZTo6CgogICAgaW1wb3J0IG9yYWNsZWRiCiAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IGNyZWF0ZV9lbmdpbmUKICAgIGZyb20gc3FsYWxjaGVteSBpbXBvcnQgdGV4dAogICAgZnJvbSBzcWxhbGNoZW15LnBvb2wgaW1wb3J0IE51bGxQb29sCgogICAgIyBVbmNvbW1lbnQgdG8gdXNlIHRoZSBvcHRpb25hbCBweXRob24tb3JhY2xlZGIgVGhpY2sgbW9kZS4KICAgICMgUmV2aWV3IHRoZSBweXRob24tb3JhY2xlZGIgZG9jIGZvciB0aGUgYXBwcm9wcmlhdGUgcGFyYW1ldGVycwogICAgIyBvcmFjbGVkYi5pbml0X29yYWNsZV9jbGllbnQoPHlvdXIgcGFyYW1ldGVycz4pCgogICAgcG9vbCA9IG9yYWNsZWRiLmNyZWF0ZV9wb29sKAogICAgICAgIHVzZXI9InNjb3R0IiwKICAgICAgICBwYXNzd29yZD0idGlnZXIiLAogICAgICAgIGRzbj0ibG9jYWxob3N0OjE1MjEvZnJlZXBkYjEiLAogICAgICAgIG1pbj0xLAogICAgICAgIG1heD00LAogICAgICAgIGluY3JlbWVudD0xLAogICAgICAgIGNjbGFzcz0iTVlDTEFTUyIsCiAgICAgICAgcHVyaXR5PW9yYWNsZWRiLlBVUklUWV9TRUxGLAogICAgKQogICAgZW5naW5lID0gY3JlYXRlX2VuZ2luZSgKICAgICAgICAib3JhY2xlK29yYWNsZWRiOi8vIiwgY3JlYXRvcj1wb29sLmFjcXVpcmUsIHBvb2xjbGFzcz1OdWxsUG9vbAogICAgKQoKVGhlIGFib3ZlIGVuZ2luZSBtYXkgdGhlbiBiZSB1c2VkIG5vcm1hbGx5IHdoZXJlIHB5dGhvbi1vcmFjbGVkYiBoYW5kbGVzCmFwcGxpY2F0aW9uIGNvbm5lY3Rpb24gcG9vbGluZyBhbmQgT3JhY2xlIERhdGFiYXNlIGFkZGl0aW9uYWxseSB1c2VzIERSQ1A6OgoKICAgIHdpdGggZW5naW5lLmNvbm5lY3QoKSBhcyBjb25uOgogICAgICAgIHByaW50KGNvbm4uc2NhbGFyKHRleHQoInNlbGVjdCAxIGZyb20gZHVhbCIpKSkKCklmIHlvdSB3aXNoIHRvIHVzZSBkaWZmZXJlbnQgY29ubmVjdGlvbiBjbGFzc2VzIG9yIHB1cml0aWVzIGZvciBkaWZmZXJlbnQKY29ubmVjdGlvbnMsIHRoZW4gd3JhcCBgYHBvb2wuYWNxdWlyZSgpYGA6OgoKICAgIGltcG9ydCBvcmFjbGVkYgogICAgZnJvbSBzcWxhbGNoZW15IGltcG9ydCBjcmVhdGVfZW5naW5lCiAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IHRleHQKICAgIGZyb20gc3FsYWxjaGVteS5wb29sIGltcG9ydCBOdWxsUG9vbAoKICAgICMgVW5jb21tZW50IHRvIHVzZSBweXRob24tb3JhY2xlZGIgVGhpY2sgbW9kZS4KICAgICMgUmV2aWV3IHRoZSBweXRob24tb3JhY2xlZGIgZG9jIGZvciB0aGUgYXBwcm9wcmlhdGUgcGFyYW1ldGVycwogICAgIyBvcmFjbGVkYi5pbml0X29yYWNsZV9jbGllbnQoPHlvdXIgcGFyYW1ldGVycz4pCgogICAgcG9vbCA9IG9yYWNsZWRiLmNyZWF0ZV9wb29sKAogICAgICAgIHVzZXI9InNjb3R0IiwKICAgICAgICBwYXNzd29yZD0idGlnZXIiLAogICAgICAgIGRzbj0ibG9jYWxob3N0OjE1MjEvZnJlZXBkYjEiLAogICAgICAgIG1pbj0xLAogICAgICAgIG1heD00LAogICAgICAgIGluY3JlbWVudD0xLAogICAgICAgIGNjbGFzcz0iTVlDTEFTUyIsCiAgICAgICAgcHVyaXR5PW9yYWNsZWRiLlBVUklUWV9TRUxGLAogICAgKQoKCiAgICBkZWYgY3JlYXRvcigpOgogICAgICAgIHJldHVybiBwb29sLmFjcXVpcmUoY2NsYXNzPSJNWU9USEVSQ0xBU1MiLCBwdXJpdHk9b3JhY2xlZGIuUFVSSVRZX05FVykKCgogICAgZW5naW5lID0gY3JlYXRlX2VuZ2luZSgKICAgICAgICAib3JhY2xlK29yYWNsZWRiOi8vIiwgY3JlYXRvcj1jcmVhdG9yLCBwb29sY2xhc3M9TnVsbFBvb2wKICAgICkKCkVuZ2luZSBPcHRpb25zIGNvbnN1bWVkIGJ5IHRoZSBTUUxBbGNoZW15IG9yYWNsZWRiIGRpYWxlY3Qgb3V0c2lkZSBvZiB0aGUgZHJpdmVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGVyZSBhcmUgYWxzbyBvcHRpb25zIHRoYXQgYXJlIGNvbnN1bWVkIGJ5IHRoZSBTUUxBbGNoZW15IG9yYWNsZWRiIGRpYWxlY3QKaXRzZWxmLiAgVGhlc2Ugb3B0aW9ucyBhcmUgYWx3YXlzIHBhc3NlZCBkaXJlY3RseSB0byA6ZnVuYzpgX3NhLmNyZWF0ZV9lbmdpbmVgLApzdWNoIGFzOjoKCiAgICBlID0gY3JlYXRlX2VuZ2luZSgib3JhY2xlK29yYWNsZWRiOi8vdXNlcjpwYXNzQHRuc2FsaWFzIiwgYXJyYXlzaXplPTUwMCkKClRoZSBwYXJhbWV0ZXJzIGFjY2VwdGVkIGJ5IHRoZSBvcmFjbGVkYiBkaWFsZWN0IGFyZSBhcyBmb2xsb3dzOgoKKiBgYGFycmF5c2l6ZWBgIC0gc2V0IHRoZSBkcml2ZXIgY3Vyc29yLmFycmF5c2l6ZSB2YWx1ZS4gSXQgZGVmYXVsdHMgdG8KICBgYE5vbmVgYCwgaW5kaWNhdGluZyB0aGF0IHRoZSBkcml2ZXIgZGVmYXVsdCB2YWx1ZSBvZiAxMDAgc2hvdWxkIGJlIHVzZWQuCiAgVGhpcyBzZXR0aW5nIGNvbnRyb2xzIGhvdyBtYW55IHJvd3MgYXJlIGJ1ZmZlcmVkIHdoZW4gZmV0Y2hpbmcgcm93cywgYW5kIGNhbgogIGhhdmUgYSBzaWduaWZpY2FudCBlZmZlY3Qgb24gcGVyZm9ybWFuY2UgaWYgaW5jcmVhc2VkIGZvciBxdWVyaWVzIHRoYXQgcmV0dXJuCiAgbGFyZ2UgbnVtYmVycyBvZiByb3dzLgoKICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuMC4yNiAtIGNoYW5nZWQgdGhlIGRlZmF1bHQgdmFsdWUgZnJvbSA1MCB0byBOb25lLAogICAgdG8gdXNlIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBkcml2ZXIgaXRzZWxmLgoKKiBgYGF1dG9fY29udmVydF9sb2JzYGAgLSBkZWZhdWx0cyB0byBUcnVlOyBTZWUgOnJlZjpgb3JhY2xlZGJfbG9iYC4KCiogYGBjb2VyY2VfdG9fZGVjaW1hbGBgIC0gc2VlIDpyZWY6YG9yYWNsZWRiX251bWVyaWNgIGZvciBkZXRhaWwuCgoqIGBgZW5jb2RpbmdfZXJyb3JzYGAgLSBzZWUgOnJlZjpgb3JhY2xlZGJfdW5pY29kZV9lbmNvZGluZ19lcnJvcnNgIGZvciBkZXRhaWwuCgouLiBfb3JhY2xlZGJfdW5pY29kZToKClVuaWNvZGUKLS0tLS0tLQoKQXMgaXMgdGhlIGNhc2UgZm9yIGFsbCBEQkFQSXMgdW5kZXIgUHl0aG9uIDMsIGFsbCBzdHJpbmdzIGFyZSBpbmhlcmVudGx5ClVuaWNvZGUgc3RyaW5ncy4KCkVuc3VyaW5nIHRoZSBDb3JyZWN0IENsaWVudCBFbmNvZGluZwpeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KCkluIHB5dGhvbi1vcmFjbGVkYiwgdGhlIGVuY29kaW5nIHVzZWQgZm9yIGFsbCBjaGFyYWN0ZXIgZGF0YSBpcyAiVVRGLTgiLgoKVW5pY29kZS1zcGVjaWZpYyBDb2x1bW4gZGF0YXR5cGVzCl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgoKVGhlIENvcmUgZXhwcmVzc2lvbiBsYW5ndWFnZSBoYW5kbGVzIHVuaWNvZGUgZGF0YSBieSB1c2Ugb2YgdGhlCjpjbGFzczpgLlVuaWNvZGVgIGFuZCA6Y2xhc3M6YC5Vbmljb2RlVGV4dGAgZGF0YXR5cGVzLiAgVGhlc2UgdHlwZXMgY29ycmVzcG9uZAp0byB0aGUgVkFSQ0hBUjIgYW5kIENMT0IgT3JhY2xlIERhdGFiYXNlIGRhdGF0eXBlcyBieSBkZWZhdWx0LiAgV2hlbiB1c2luZwp0aGVzZSBkYXRhdHlwZXMgd2l0aCBVbmljb2RlIGRhdGEsIGl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIGRhdGFiYXNlIGlzCmNvbmZpZ3VyZWQgd2l0aCBhIFVuaWNvZGUtYXdhcmUgY2hhcmFjdGVyIHNldCBzbyB0aGF0IHRoZSBWQVJDSEFSMiBhbmQgQ0xPQgpkYXRhdHlwZXMgY2FuIGFjY29tbW9kYXRlIHRoZSBkYXRhLgoKSW4gdGhlIGNhc2UgdGhhdCBPcmFjbGUgRGF0YWJhc2UgaXMgbm90IGNvbmZpZ3VyZWQgd2l0aCBhIFVuaWNvZGUgY2hhcmFjdGVyCnNldCwgdGhlIHR3byBvcHRpb25zIGFyZSB0byB1c2UgdGhlIDpjbGFzczpgX3R5cGVzLk5DSEFSYCBhbmQKOmNsYXNzOmBfb3JhY2xlLk5DTE9CYCBkYXRhdHlwZXMgZXhwbGljaXRseSwgb3IgdG8gcGFzcyB0aGUgZmxhZwpgYHVzZV9uY2hhcl9mb3JfdW5pY29kZT1UcnVlYGAgdG8gOmZ1bmM6YF9zYS5jcmVhdGVfZW5naW5lYCwgd2hpY2ggd2lsbCBjYXVzZQp0aGUgU1FMQWxjaGVteSBkaWFsZWN0IHRvIHVzZSBOQ0hBUi9OQ0xPQiBmb3IgdGhlIDpjbGFzczpgLlVuaWNvZGVgIC8KOmNsYXNzOmAuVW5pY29kZVRleHRgIGRhdGF0eXBlcyBpbnN0ZWFkIG9mIFZBUkNIQVIvQ0xPQi4KCi4uIHZlcnNpb25jaGFuZ2VkOjogMS4zIFRoZSA6Y2xhc3M6YC5Vbmljb2RlYCBhbmQgOmNsYXNzOmAuVW5pY29kZVRleHRgCiAgIGRhdGF0eXBlcyBub3cgY29ycmVzcG9uZCB0byB0aGUgYGBWQVJDSEFSMmBgIGFuZCBgYENMT0JgYCBPcmFjbGUgRGF0YWJhc2UKICAgZGF0YXR5cGVzIHVubGVzcyB0aGUgYGB1c2VfbmNoYXJfZm9yX3VuaWNvZGU9VHJ1ZWBgIGlzIHBhc3NlZCB0byB0aGUgZGlhbGVjdAogICB3aGVuIDpmdW5jOmBfc2EuY3JlYXRlX2VuZ2luZWAgaXMgY2FsbGVkLgoKCi4uIF9vcmFjbGVkYl91bmljb2RlX2VuY29kaW5nX2Vycm9yczoKCkVuY29kaW5nIEVycm9ycwpeXl5eXl5eXl5eXl5eXl4KCkZvciB0aGUgdW51c3VhbCBjYXNlIHRoYXQgZGF0YSBpbiBPcmFjbGUgRGF0YWJhc2UgaXMgcHJlc2VudCB3aXRoIGEgYnJva2VuCmVuY29kaW5nLCB0aGUgZGlhbGVjdCBhY2NlcHRzIGEgcGFyYW1ldGVyIGBgZW5jb2RpbmdfZXJyb3JzYGAgd2hpY2ggd2lsbCBiZQpwYXNzZWQgdG8gVW5pY29kZSBkZWNvZGluZyBmdW5jdGlvbnMgaW4gb3JkZXIgdG8gYWZmZWN0IGhvdyBkZWNvZGluZyBlcnJvcnMgYXJlCmhhbmRsZWQuICBUaGUgdmFsdWUgaXMgdWx0aW1hdGVseSBjb25zdW1lZCBieSB0aGUgUHl0aG9uIGBkZWNvZGUKPGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9zdGR0eXBlcy5odG1sI2J5dGVzLmRlY29kZT5gXyBmdW5jdGlvbiwgYW5kCmlzIHBhc3NlZCBib3RoIHZpYSBweXRob24tb3JhY2xlZGIncyBgYGVuY29kaW5nRXJyb3JzYGAgcGFyYW1ldGVyIGNvbnN1bWVkIGJ5CmBgQ3Vyc29yLnZhcigpYGAsIGFzIHdlbGwgYXMgU1FMQWxjaGVteSdzIG93biBkZWNvZGluZyBmdW5jdGlvbiwgYXMgdGhlCnB5dGhvbi1vcmFjbGVkYiBkaWFsZWN0IG1ha2VzIHVzZSBvZiBib3RoIHVuZGVyIGRpZmZlcmVudCBjaXJjdW1zdGFuY2VzLgoKLi4gdmVyc2lvbmFkZGVkOjogMS4zLjExCgoKLi4gX29yYWNsZWRiX3NldGlucHV0c2l6ZXM6CgpGaW5lIGdyYWluZWQgY29udHJvbCBvdmVyIHB5dGhvbi1vcmFjbGVkYiBkYXRhIGJpbmRpbmcgd2l0aCBzZXRpbnB1dHNpemVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoZSBweXRob24tb3JhY2xlIERCQVBJIGhhcyBhIGRlZXAgYW5kIGZ1bmRhbWVudGFsIHJlbGlhbmNlIHVwb24gdGhlIHVzYWdlIG9mCnRoZSBEQkFQSSBgYHNldGlucHV0c2l6ZXMoKWBgIGNhbGwuICBUaGUgcHVycG9zZSBvZiB0aGlzIGNhbGwgaXMgdG8gZXN0YWJsaXNoCnRoZSBkYXRhdHlwZXMgdGhhdCBhcmUgYm91bmQgdG8gYSBTUUwgc3RhdGVtZW50IGZvciBQeXRob24gdmFsdWVzIGJlaW5nIHBhc3NlZAphcyBwYXJhbWV0ZXJzLiAgV2hpbGUgdmlydHVhbGx5IG5vIG90aGVyIERCQVBJIGFzc2lnbnMgYW55IHVzZSB0byB0aGUKYGBzZXRpbnB1dHNpemVzKClgYCBjYWxsLCB0aGUgcHl0aG9uLW9yYWNsZWRiIERCQVBJIHJlbGllcyB1cG9uIGl0IGhlYXZpbHkgaW4KaXRzIGludGVyYWN0aW9ucyB3aXRoIHRoZSBPcmFjbGUgRGF0YWJhc2UsIGFuZCBpbiBzb21lIHNjZW5hcmlvcyBpdCBpcyBub3QKcG9zc2libGUgZm9yIFNRTEFsY2hlbXkgdG8ga25vdyBleGFjdGx5IGhvdyBkYXRhIHNob3VsZCBiZSBib3VuZCwgYXMgc29tZQpzZXR0aW5ncyBjYW4gY2F1c2UgcHJvZm91bmRseSBkaWZmZXJlbnQgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLCB3aGlsZQphbHRlcmluZyB0aGUgdHlwZSBjb2VyY2lvbiBiZWhhdmlvciBhdCB0aGUgc2FtZSB0aW1lLgoKVXNlcnMgb2YgdGhlIG9yYWNsZWRiIGRpYWxlY3QgYXJlICoqc3Ryb25nbHkgZW5jb3VyYWdlZCoqIHRvIHJlYWQgdGhyb3VnaApweXRob24tb3JhY2xlZGIncyBsaXN0IG9mIGJ1aWx0LWluIGRhdGF0eXBlIHN5bWJvbHMgYXQgYERhdGFiYXNlIFR5cGVzCjxodHRwczovL3B5dGhvbi1vcmFjbGVkYi5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvYXBpX21hbnVhbC9tb2R1bGUuaHRtbCNkYXRhYmFzZS10eXBlcz5gXwpOb3RlIHRoYXQgaW4gc29tZSBjYXNlcywgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgZGVncmFkYXRpb24gY2FuIG9jY3VyIHdoZW4KdXNpbmcgdGhlc2UgdHlwZXMgdnMuIG5vdC4KCk9uIHRoZSBTUUxBbGNoZW15IHNpZGUsIHRoZSA6bWV0aDpgLkRpYWxlY3RFdmVudHMuZG9fc2V0aW5wdXRzaXplc2AgZXZlbnQgY2FuCmJlIHVzZWQgYm90aCBmb3IgcnVudGltZSB2aXNpYmlsaXR5IChlLmcuIGxvZ2dpbmcpIG9mIHRoZSBzZXRpbnB1dHNpemVzIHN0ZXAgYXMKd2VsbCBhcyB0byBmdWxseSBjb250cm9sIGhvdyBgYHNldGlucHV0c2l6ZXMoKWBgIGlzIHVzZWQgb24gYSBwZXItc3RhdGVtZW50CmJhc2lzLgoKLi4gdmVyc2lvbmFkZGVkOjogMS4yLjkgQWRkZWQgOm1ldGg6YC5EaWFsZWN0RXZlbnRzLnNldGlucHV0c2l6ZXNgCgoKRXhhbXBsZSAxIC0gbG9nZ2luZyBhbGwgc2V0aW5wdXRzaXplcyBjYWxscwpeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCgpUaGUgZm9sbG93aW5nIGV4YW1wbGUgaWxsdXN0cmF0ZXMgaG93IHRvIGxvZyB0aGUgaW50ZXJtZWRpYXJ5IHZhbHVlcyBmcm9tIGEKU1FMQWxjaGVteSBwZXJzcGVjdGl2ZSBiZWZvcmUgdGhleSBhcmUgY29udmVydGVkIHRvIHRoZSByYXcgYGBzZXRpbnB1dHNpemVzKClgYApwYXJhbWV0ZXIgZGljdGlvbmFyeS4gIFRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5IGFyZSA6Y2xhc3M6YC5CaW5kUGFyYW1ldGVyYApvYmplY3RzIHdoaWNoIGhhdmUgYSBgYC5rZXlgYCBhbmQgYSBgYC50eXBlYGAgYXR0cmlidXRlOjoKCiAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IGNyZWF0ZV9lbmdpbmUsIGV2ZW50CgogICAgZW5naW5lID0gY3JlYXRlX2VuZ2luZSgKICAgICAgICAib3JhY2xlK29yYWNsZWRiOi8vc2NvdHQ6dGlnZXJAbG9jYWxob3N0OjE1MjE/c2VydmljZV9uYW1lPWZyZWVwZGIxIgogICAgKQoKCiAgICBAZXZlbnQubGlzdGVuc19mb3IoZW5naW5lLCAiZG9fc2V0aW5wdXRzaXplcyIpCiAgICBkZWYgX2xvZ19zZXRpbnB1dHNpemVzKGlucHV0c2l6ZXMsIGN1cnNvciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzLCBjb250ZXh0KToKICAgICAgICBmb3IgYmluZHBhcmFtLCBkYmFwaXR5cGUgaW4gaW5wdXRzaXplcy5pdGVtcygpOgogICAgICAgICAgICBsb2cuaW5mbygKICAgICAgICAgICAgICAgICJCb3VuZCBwYXJhbWV0ZXIgbmFtZTogJXMgIFNRTEFsY2hlbXkgdHlwZTogJXIgREJBUEkgb2JqZWN0OiAlcyIsCiAgICAgICAgICAgICAgICBiaW5kcGFyYW0ua2V5LAogICAgICAgICAgICAgICAgYmluZHBhcmFtLnR5cGUsCiAgICAgICAgICAgICAgICBkYmFwaXR5cGUsCiAgICAgICAgICAgICkKCkV4YW1wbGUgMiAtIHJlbW92ZSBhbGwgYmluZGluZ3MgdG8gQ0xPQgpeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCgpGb3IgcGVyZm9ybWFuY2UsIGZldGNoaW5nIExPQiBkYXRhdHlwZXMgZnJvbSBPcmFjbGUgRGF0YWJhc2UgaXMgc2V0IGJ5IGRlZmF1bHQKZm9yIHRoZSBgYFRleHRgYCB0eXBlIHdpdGhpbiBTUUxBbGNoZW15LiAgVGhpcyBzZXR0aW5nIGNhbiBiZSBtb2RpZmllZCBhcwpmb2xsb3dzOjoKCgogICAgZnJvbSBzcWxhbGNoZW15IGltcG9ydCBjcmVhdGVfZW5naW5lLCBldmVudAogICAgZnJvbSBvcmFjbGVkYiBpbXBvcnQgQ0xPQgoKICAgIGVuZ2luZSA9IGNyZWF0ZV9lbmdpbmUoCiAgICAgICAgIm9yYWNsZStvcmFjbGVkYjovL3Njb3R0OnRpZ2VyQGxvY2FsaG9zdDoxNTIxP3NlcnZpY2VfbmFtZT1mcmVlcGRiMSIKICAgICkKCgogICAgQGV2ZW50Lmxpc3RlbnNfZm9yKGVuZ2luZSwgImRvX3NldGlucHV0c2l6ZXMiKQogICAgZGVmIF9yZW1vdmVfY2xvYihpbnB1dHNpemVzLCBjdXJzb3IsIHN0YXRlbWVudCwgcGFyYW1ldGVycywgY29udGV4dCk6CiAgICAgICAgZm9yIGJpbmRwYXJhbSwgZGJhcGl0eXBlIGluIGxpc3QoaW5wdXRzaXplcy5pdGVtcygpKToKICAgICAgICAgICAgaWYgZGJhcGl0eXBlIGlzIENMT0I6CiAgICAgICAgICAgICAgICBkZWwgaW5wdXRzaXplc1tiaW5kcGFyYW1dCgouLiBfb3JhY2xlZGJfbG9iOgoKTE9CIERhdGF0eXBlcwotLS0tLS0tLS0tLS0tLQoKTE9CIGRhdGF0eXBlcyByZWZlciB0byB0aGUgImxhcmdlIG9iamVjdCIgZGF0YXR5cGVzIHN1Y2ggYXMgQ0xPQiwgTkNMT0IgYW5kCkJMT0IuIE9yYWNsZSBEYXRhYmFzZSBjYW4gZWZmaWNpZW50bHkgcmV0dXJuIHRoZXNlIGRhdGF0eXBlcyBhcyBhIHNpbmdsZQpidWZmZXIuIFNRTEFsY2hlbXkgbWFrZXMgdXNlIG9mIHR5cGUgaGFuZGxlcnMgdG8gZG8gdGhpcyBieSBkZWZhdWx0LgoKVG8gZGlzYWJsZSB0aGUgdXNlIG9mIHRoZSB0eXBlIGhhbmRsZXJzIGFuZCBkZWxpdmVyIExPQiBvYmplY3RzIGFzIGNsYXNzaWMKYnVmZmVyZWQgb2JqZWN0cyB3aXRoIGEgYGByZWFkKClgYCBtZXRob2QsIHRoZSBwYXJhbWV0ZXIKYGBhdXRvX2NvbnZlcnRfbG9icz1GYWxzZWBgIG1heSBiZSBwYXNzZWQgdG8gOmZ1bmM6YF9zYS5jcmVhdGVfZW5naW5lYC4KCi4uIF9vcmFjbGVkYl9yZXR1cm5pbmc6CgpSRVRVUk5JTkcgU3VwcG9ydAotLS0tLS0tLS0tLS0tLS0tLQoKVGhlIG9yYWNsZWRiIGRpYWxlY3QgaW1wbGVtZW50cyBSRVRVUk5JTkcgdXNpbmcgT1VUIHBhcmFtZXRlcnMuICBUaGUgZGlhbGVjdApzdXBwb3J0cyBSRVRVUk5JTkcgZnVsbHkuCgpUd28gUGhhc2UgVHJhbnNhY3Rpb24gU3VwcG9ydAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVHdvIHBoYXNlIHRyYW5zYWN0aW9ucyBhcmUgZnVsbHkgc3VwcG9ydGVkIHdpdGggcHl0aG9uLW9yYWNsZWRiLiAoVGhpbiBtb2RlCnJlcXVpcmVzIHB5dGhvbi1vcmFjbGVkYiAyLjMpLiAgQVBJcyBmb3IgdHdvIHBoYXNlIHRyYW5zYWN0aW9ucyBhcmUgcHJvdmlkZWQgYXQKdGhlIENvcmUgbGV2ZWwgdmlhIDptZXRoOmBfZW5naW5lLkNvbm5lY3Rpb24uYmVnaW5fdHdvcGhhc2VgIGFuZAo6cGFyYW1yZWY6YF9vcm0uU2Vzc2lvbi50d29waGFzZWAgZm9yIHRyYW5zcGFyZW50IE9STSB1c2UuCgouLiB2ZXJzaW9uY2hhbmdlZDo6IDIuMC4zMiBhZGRlZCBzdXBwb3J0IGZvciB0d28gcGhhc2UgdHJhbnNhY3Rpb25zCgouLiBfb3JhY2xlZGJfbnVtZXJpYzoKClByZWNpc2lvbiBOdW1lcmljcwotLS0tLS0tLS0tLS0tLS0tLS0KClNRTEFsY2hlbXkncyBudW1lcmljIHR5cGVzIGNhbiBoYW5kbGUgcmVjZWl2aW5nIGFuZCByZXR1cm5pbmcgdmFsdWVzIGFzIFB5dGhvbgpgYERlY2ltYWxgYCBvYmplY3RzIG9yIGZsb2F0IG9iamVjdHMuICBXaGVuIGEgOmNsYXNzOmAuTnVtZXJpY2Agb2JqZWN0LCBvciBhCnN1YmNsYXNzIHN1Y2ggYXMgOmNsYXNzOmAuRmxvYXRgLCA6Y2xhc3M6YF9vcmFjbGUuRE9VQkxFX1BSRUNJU0lPTmAgZXRjLiBpcyBpbgp1c2UsIHRoZSA6cGFyYW1yZWY6YC5OdW1lcmljLmFzZGVjaW1hbGAgZmxhZyBkZXRlcm1pbmVzIGlmIHZhbHVlcyBzaG91bGQgYmUKY29lcmNlZCB0byBgYERlY2ltYWxgYCB1cG9uIHJldHVybiwgb3IgcmV0dXJuZWQgYXMgZmxvYXQgb2JqZWN0cy4gIFRvIG1ha2UKbWF0dGVycyBtb3JlIGNvbXBsaWNhdGVkIHVuZGVyIE9yYWNsZSBEYXRhYmFzZSwgdGhlIGBgTlVNQkVSYGAgdHlwZSBjYW4gYWxzbwpyZXByZXNlbnQgaW50ZWdlciB2YWx1ZXMgaWYgdGhlICJzY2FsZSIgaXMgemVybywgc28gdGhlIE9yYWNsZQpEYXRhYmFzZS1zcGVjaWZpYyA6Y2xhc3M6YF9vcmFjbGUuTlVNQkVSYCB0eXBlIHRha2VzIHRoaXMgaW50byBhY2NvdW50IGFzIHdlbGwuCgpUaGUgb3JhY2xlZGIgZGlhbGVjdCBtYWtlcyBleHRlbnNpdmUgdXNlIG9mIGNvbm5lY3Rpb24tIGFuZCBjdXJzb3ItbGV2ZWwKIm91dHB1dHR5cGVoYW5kbGVyIiBjYWxsYWJsZXMgaW4gb3JkZXIgdG8gY29lcmNlIG51bWVyaWMgdmFsdWVzIGFzIHJlcXVlc3RlZC4KVGhlc2UgY2FsbGFibGVzIGFyZSBzcGVjaWZpYyB0byB0aGUgc3BlY2lmaWMgZmxhdm9yIG9mIDpjbGFzczpgLk51bWVyaWNgIGluCnVzZSwgYXMgd2VsbCBhcyBpZiBubyBTUUxBbGNoZW15IHR5cGluZyBvYmplY3RzIGFyZSBwcmVzZW50LiAgVGhlcmUgYXJlCm9ic2VydmVkIHNjZW5hcmlvcyB3aGVyZSBPcmFjbGUgRGF0YWJhc2UgbWF5IHNlbmQgaW5jb21wbGV0ZSBvciBhbWJpZ3VvdXMKaW5mb3JtYXRpb24gYWJvdXQgdGhlIG51bWVyaWMgdHlwZXMgYmVpbmcgcmV0dXJuZWQsIHN1Y2ggYXMgYSBxdWVyeSB3aGVyZSB0aGUKbnVtZXJpYyB0eXBlcyBhcmUgYnVyaWVkIHVuZGVyIG11bHRpcGxlIGxldmVscyBvZiBzdWJxdWVyeS4gIFRoZSB0eXBlIGhhbmRsZXJzCmRvIHRoZWlyIGJlc3QgdG8gbWFrZSB0aGUgcmlnaHQgZGVjaXNpb24gaW4gYWxsIGNhc2VzLCBkZWZlcnJpbmcgdG8gdGhlCnVuZGVybHlpbmcgcHl0aG9uLW9yYWNsZWRiIERCQVBJIGZvciBhbGwgdGhvc2UgY2FzZXMgd2hlcmUgdGhlIGRyaXZlciBjYW4gbWFrZQp0aGUgYmVzdCBkZWNpc2lvbi4KCldoZW4gbm8gdHlwaW5nIG9iamVjdHMgYXJlIHByZXNlbnQsIGFzIHdoZW4gZXhlY3V0aW5nIHBsYWluIFNRTCBzdHJpbmdzLCBhCmRlZmF1bHQgIm91dHB1dHR5cGVoYW5kbGVyIiBpcyBwcmVzZW50IHdoaWNoIHdpbGwgZ2VuZXJhbGx5IHJldHVybiBudW1lcmljCnZhbHVlcyB3aGljaCBzcGVjaWZ5IHByZWNpc2lvbiBhbmQgc2NhbGUgYXMgUHl0aG9uIGBgRGVjaW1hbGBgIG9iamVjdHMuICBUbwpkaXNhYmxlIHRoaXMgY29lcmNpb24gdG8gZGVjaW1hbCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgcGFzcyB0aGUgZmxhZwpgYGNvZXJjZV90b19kZWNpbWFsPUZhbHNlYGAgdG8gOmZ1bmM6YF9zYS5jcmVhdGVfZW5naW5lYDo6CgogICAgZW5naW5lID0gY3JlYXRlX2VuZ2luZSgKICAgICAgICAib3JhY2xlK29yYWNsZWRiOi8vc2NvdHQ6dGlnZXJAdG5zYWxpYXMiLCBjb2VyY2VfdG9fZGVjaW1hbD1GYWxzZQogICAgKQoKVGhlIGBgY29lcmNlX3RvX2RlY2ltYWxgYCBmbGFnIG9ubHkgaW1wYWN0cyB0aGUgcmVzdWx0cyBvZiBwbGFpbiBzdHJpbmcKU1FMIHN0YXRlbWVudHMgdGhhdCBhcmUgbm90IG90aGVyd2lzZSBhc3NvY2lhdGVkIHdpdGggYSA6Y2xhc3M6YC5OdW1lcmljYApTUUxBbGNoZW15IHR5cGUgKG9yIGEgc3ViY2xhc3Mgb2Ygc3VjaCkuCgouLiB2ZXJzaW9uY2hhbmdlZDo6IDEuMiBUaGUgbnVtZXJpYyBoYW5kbGluZyBzeXN0ZW0gZm9yIHRoZSBvcmFjbGUgZGlhbGVjdHMgaGFzCiAgIGJlZW4gcmV3b3JrZWQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgbmV3ZXIgZHJpdmVyIGZlYXR1cmVzIGFzIHdlbGwgYXMgYmV0dGVyCiAgIGludGVncmF0aW9uIG9mIG91dHB1dHR5cGVoYW5kbGVycy4KCi4uIHZlcnNpb25hZGRlZDo6IDIuMC4wIGFkZGVkIHN1cHBvcnQgZm9yIHRoZSBweXRob24tb3JhY2xlZGIgZHJpdmVyLgoK6QAAAAApAdoLYW5ub3RhdGlvbnNOKQHaA0FueSkB2g1UWVBFX0NIRUNLSU5H6QEAAAApAdoJY3hfb3JhY2xl6QMAAAApAdoDZXhjKQHaBHBvb2wpAdobQXN5bmNBZGFwdF9kYmFwaV9jb25uZWN0aW9uKQHaF0FzeW5jQWRhcHRfZGJhcGlfY3Vyc29yKQHaGkFzeW5jQWRhcHRfZGJhcGlfc3NfY3Vyc29yKQHaI0FzeW5jQWRhcHRGYWxsYmFja19kYmFwaV9jb25uZWN0aW9uKQHaB2RlZmF1bHQpAdoGYXNib29sKQHaDmF3YWl0X2ZhbGxiYWNrKQHaCmF3YWl0X29ubHkpAdoPQXN5bmNDb25uZWN0aW9uKQHaC0FzeW5jQ3Vyc29yYwAAAAAAAAAAAAAAAAEAAAAAAAAB8wwAAACXAGUAWgFkAFoCeQEpAtofT3JhY2xlRXhlY3V0aW9uQ29udGV4dF9vcmFjbGVkYk4pA9oIX19uYW1lX1/aCl9fbW9kdWxlX1/aDF9fcXVhbG5hbWVfX6kA8wAAAAD6VC9vcHQvaGNfcHl0aG9uL2xpYjY0L3B5dGhvbjMuMTIvc2l0ZS1wYWNrYWdlcy9zcWxhbGNoZW15L2RpYWxlY3RzL29yYWNsZS9vcmFjbGVkYi5weXIWAAAAchYAAABrAgAAcwcAAACEAPAGAAUJchsAAAByFgAAAGMAAAAAAAAAAAAAAAADAAAAAAAAAfOgAAAAhwCXAGUAWgFkAFoCZAFaA2UEWgVkAloGZANaBwkACQAJAAkACQBkD4gAZgFkBIQJWghlCWQFhACrAAAAAAAAAFoKZQlkBoQAqwAAAAAAAABaC2UJZAeEAKsAAAAAAAAAWgxkCIQAWg1kCYQAWg5kCoQAWg8JAGQQZAuEAVoQCQBkEGQMhAFaEWQNhABaEogAZgFkDoQIWhOIAHgBWhRTACkR2hZPcmFjbGVEaWFsZWN0X29yYWNsZWRiVNoIb3JhY2xlZGIpAXIGAAAAYwYAAAAAAAAAAAAAAAYAAAALAAAB88wAAACVAZcAdAEA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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 7
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
base.cpython-312.pyc
139.57 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
cx_oracle.cpython-312.pyc
59.28 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dictionary.cpython-312.pyc
24.00 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
oracledb.cpython-312.pyc
40.48 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
provision.cpython-312.pyc
10.50 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
types.cpython-312.pyc
12.89 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-312.pyc
1.30 KB
lrw-r--r--
2025-04-04 08:02:01
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).