Mw0NCn2EhGP/pgEA4wAAAAAAAAAAAAAAAGcAAABAAAAAc6IIAABkAFoAZAFkAmwBbQJaAgEAZAFkA2wDWgNkAWQDbARaBGQBZANsBVoFZAFkA2wGWgZkAWQDbAdaB2QBZANsCFoIZAFkA2wJWglkAWQDbApaCmQBZANsC1oLZAFkA2wMWgxkAWQDbA1aDWQBZANsDloOZAFkA2wPWg9kAWQDbBBaEGQBZANsEVoRZAFkA2wSWhJkAWQDbBNaFGQBZANsFVoVZAFkA2wWWhZkAWQDbBdaF2QBZANsGFoYZAFkA2wZWhlkAWQDbBpaGmQBZANsG1obZAFkBGwObRxaHAEAeQxkAWQDbB1aHVcAbh4EAGUeawqQAXIGAQABAAEAZAFkA2wfWh1ZAG4CWAB5CGUgAQBXAG4aBABlIWsKkAFyKgEAAQABAGUiWiBZAG4CWABkAWQFbCNtJFokAQBkAWQGbCVtJlombSdaJ20oWigBAGQBZAdsBG0pWikBAHkcZAFkCGwEbSpaKm0rWittLFosAQBkCVotVwBuGgQAZR5rCpABco4BAAEAAQBkClotWQBuAlgAZAFkC2wEbS5aLwEAZAFkDGwwbTFaMW0yWjIBAHkUZAFkA2wzajRaNWU1ajYBAFcAbhoEAGUeawqQAXLaAQABAAEAZANaNVkAbgJYAGQNZA5sN204WjgBAGQBZA9sI205WjkBAGQBZBBsI206WjoBAGU7ZBGDAQEAZTtkEoMBAQBlO2QTgwEBAGU7ZBSDAQEAZTxaPWT+ZQNqPgQAAwBrAJACbzpk/2sAbgQCAAEAkAJySmU/ZBeDAYIBZSRqQJACclpkA1pBZANaQmQDWkNkA1pEZANaRWQDWkZkA1pHZANaSGQDWklkA1pKZANaS2QDWkxkA1pNZANaTmQDWk9kA1pQZANaUWQDWlJkA1pTRwBkGGQZhABkGWVUgwNaVWQaZBuEAFpWaQBaV2QcZB2EAFpYZB5kH4QAWllkIGQhhABaWmQiZCOEAFpbZCRkJYQAWlxkJmQnhABaXWQoZCmEAFpeZCpkK4QABABaX1pgZCxkLYQAWmFkLmQvZDBkMWQyZDNkNGQ1ZDZkN2Q4ZDlkOmQ7ZDxkPWQ+ZD9kQGRBZEJkQ2REZEVkRmRHZEhkSWRKZEtkTGRNZBlkTmQbZE9kUGRRZFJkU2RUZFVkVmRXZFhkWWRaZFtkXGRdZF5kX2RgZGFkYmRjZGRkZWRmZGdkaGRpZGpka2RsZG1kbmRvZHBkcWRyZ0daYkcAZHNkSYQAZEllY4MDWmRHAGR0ZEqEAGRKZWSDA1plRwBkdWR2hABkdmVlgwNaZkcAZHdkS4QAZEtlZIMDWmdHAGR4ZEyEAGRMZWSDA1poaQBaaWR5amplA2o+jgBaa2QVWmxkelptZA1abmQBWm+QAWQAWnBke2RthABacWR8ZDCEAFpyZwBmAWR9ZH6EAVpzZH9kgIQAWnRkgWSChABadWUHanZkg4MBWndlB2p2ZISDAVp4ZXVaeWSFZFKEAFp6ZIZkL4QAWntle1p8ZIdkMYQAWn1kiGQyhABafpABZAFkiWQzhAFaf2SKZDSEAFqARwBki2RghABkYIMCWoFHAGSMZGGEAGRhZYGDA1qCRwBkjWREhABkRIMCWoNHAGSOZI+EAGSPZYSDA1qFRwBkkGRDhABkQ4MCWoZlhlqHRwBkkWRNhABkTWU/gwNaiEcAZJJkRYQAZEWDAlqJZJNkQoQAWopklGRPhABai2SVZFCEAFqMZJZkVYQAWo1kl2RWhABajmSYZFeEAFqPkAFkAmSZZFiEAVqQRwBkmmRnhABkZ4MCWpFlcWWSZZGDAgEARwBkm2RohABkaGWRgwNak0cAZJxkaYQAZGllk4MDWpRllGqVgwABAEcAZJ1kZYQAZGVlkYMDWpZlloMAWpdHAGSeZJ+EAGSfZYSDA1qYRwBkoGShhABkoWWYgwNamUcAZKJkaoQAZGplk4MDWpplcWUKaptlmoMCAQBHAGSjZGKEAGRiZZaDA1qcRwBkpGRjhABkY2WUgwNanUcAZKVkZIQAZGRlmoMDWp5lWGSmaQBkp40CAQBkqGRrhABan5ABZANkqWQ/hAFaoJABZARkqmSrhAFaoWWfZQpqm2WhgwIBAJABZAVkrGSthAFaomWfZZJlooMCAQBkrmSvhABao5ABZAZksGSxhAFapGSyZLOEAFqlRwBktGS1hABktYMCWqZktmS3hABap2S4ZLmEAFqoZLpku4QAWqlkvGS9hABaqmWfZQ5qq2WkgwIBAGWsZTVkvoMCkAZysGWfZTVqrWWkgwIBAGVYZKZpAGS/jQIBAGVYZKZpAGTAjQIBAGTBZGyEAFquZMJkw4QAWq9kxGTFhABasGTGZDyEAFqxkAFkB2THZG6EAVqyZMhkyYQAWrNlrmUOaqtls4MCAQBlrmUKaptls4MCAQBlrGU1ZL6DApAHcixlrmU1aq1ls4MCAQBkymTLhABatGWuZZJltIMCAQBkzGRahABatWTNZM6EAFq2aQBmAWTPZNCEAVq3ZNFk0oQAWrhk02TUhABauWTVZNaEAFq6ZNdkU4QAWrtlB2p2ZNiDAWq8Wr1lB2p2ZNllB2q+ZQdqv0IAgwJqvFrARwBk2mRIhABkSIMCWsFk22TchABawmTdZN6EAFrDRwBk32RGhABkRoMCWsRHAGTgZOGEAGThZcSDA1rFRwBk4mTjhABk42XEgwNaxmXEZcVlxmTknANax2TlZOaEAFrIRwBk52TohABk6GXJgwNaymTpZE6EAFrLRwBk6mRHhABkR2U6asxqzYMDWs1k62TshABazmTtZO6EAFrPZO9kWYQAWtBk8GTxhABa0WTyZFSEAFrSZPNk9IQAWtNlC2rUZPVlVWQJZPaNAwEAZPdk+IQAWtVl1WXWgwBmAWT5ZPqEAYMBWtdl1WT7ZPyEAIMBWthHAGT9ZHCEAGRwZdmDA1raZANTACgIAQAAYVoCAAAKUGFja2FnZSByZXNvdXJjZSBBUEkKLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkEgcmVzb3VyY2UgaXMgYSBsb2dpY2FsIGZpbGUgY29udGFpbmVkIHdpdGhpbiBhIHBhY2thZ2UsIG9yIGEgbG9naWNhbApzdWJkaXJlY3RvcnkgdGhlcmVvZi4gIFRoZSBwYWNrYWdlIHJlc291cmNlIEFQSSBleHBlY3RzIHJlc291cmNlIG5hbWVzCnRvIGhhdmUgdGhlaXIgcGF0aCBwYXJ0cyBzZXBhcmF0ZWQgd2l0aCBgYC9gYCwgKm5vdCogd2hhdGV2ZXIgdGhlIGxvY2FsCnBhdGggc2VwYXJhdG9yIGlzLiAgRG8gbm90IHVzZSBvcy5wYXRoIG9wZXJhdGlvbnMgdG8gbWFuaXB1bGF0ZSByZXNvdXJjZQpuYW1lcyBiZWluZyBwYXNzZWQgaW50byB0aGUgQVBJLgoKVGhlIHBhY2thZ2UgcmVzb3VyY2UgQVBJIGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBub3JtYWwgZmlsZXN5c3RlbSBwYWNrYWdlcywKLmVnZyBmaWxlcywgYW5kIHVucGFja2VkIC5lZ2cgZmlsZXMuICBJdCBjYW4gYWxzbyB3b3JrIGluIGEgbGltaXRlZCB3YXkgd2l0aAouemlwIGZpbGVzIGFuZCB3aXRoIGN1c3RvbSBQRVAgMzAyIGxvYWRlcnMgdGhhdCBzdXBwb3J0IHRoZSBgYGdldF9kYXRhKClgYAptZXRob2QuCukAAAAAKQHaD2Fic29sdXRlX2ltcG9ydE4pAdoMZ2V0X2ltcG9ydGVyKQHaA3NpeCkD2gZ1cmxsaWLaA21hcNoGZmlsdGVyKQHaBXV0aW1lKQPaBW1rZGly2gZyZW5hbWXaBnVubGlua1RGKQHaBG9wZW4pAtoFaXNkaXLaBXNwbGl06QEAAAApAdoKcHkzMWNvbXBhdCkB2gxwbGF0Zm9ybWRpcnMpAdoJcGFja2FnaW5neh1waXAuX3ZlbmRvci5wYWNrYWdpbmcudmVyc2lvbnogcGlwLl92ZW5kb3IucGFja2FnaW5nLnNwZWNpZmllcnN6InBpcC5fdmVuZG9yLnBhY2thZ2luZy5yZXF1aXJlbWVudHN6HXBpcC5fdmVuZG9yLnBhY2thZ2luZy5tYXJrZXJz6QMAAADpBQAAAHofUHl0aG9uIDMuNSBvciBsYXRlciBpcyByZXF1aXJlZGMAAAAAAAAAAAAAAAABAAAAQAAAAHMQAAAAZQBaAWQAWgJkAVoDZAJTACkD2g1QRVA0NDBXYXJuaW5nemEKICAgIFVzZWQgd2hlbiB0aGVyZSBpcyBhbiBpc3N1ZSB3aXRoIGEgdmVyc2lvbiBvciBzcGVjaWZpZXIgbm90IGNvbXBseWluZyB3aXRoCiAgICBQRVAgNDQwLgogICAgTikE2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9f2gdfX2RvY19fqQByGgAAAHIaAAAA+pMvaG9tZS91ZXRsaHIvRG9jdW1lbnRzL1Nlcm1vUGxvdF9iYWNrZW5kL2RyYWZ0X1NSQU1fYmxhY2tib3gvVUVUUlZfRVNvQ192Mi92ZW52L2xpYjY0L3B5dGhvbjMuNi9zaXRlLXBhY2thZ2VzL3BpcC9fdmVuZG9yL3BrZ19yZXNvdXJjZXMvX19pbml0X18ucHlyFQAAAHgAAABzAgAAAAgEchUA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YWxzbyBrbm93IHRoZQogICAgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBPUy4KCiAgICBJZiB0aGlzIGNvbmRpdGlvbiBvY2N1cnMgZm9yIGFueSBvdGhlciBwbGF0Zm9ybSB3aXRoIGEgdmVyc2lvbiBpbiBpdHMKICAgIHBsYXRmb3JtIHN0cmluZ3MsIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGV4dGVuZGVkIGFjY29yZGluZ2x5LgogICAgTtoGZGFyd2luegxtYWNvc3gtJXMtJXPaAS7pAgAAAHITAAAAKQnaEmdldF9idWlsZF9wbGF0Zm9ybdoSbWFjb3NWZXJzaW9uU3RyaW5n2gVtYXRjaNoDc3lz2ghwbGF0Zm9ybdoEam9pbtoMX21hY29zeF92ZXJz2gVncm91cNoKVmFsdWVFcnJvcikC2gRwbGF02gFtchoAAAByGgAAAHIbAAAA2hZnZXRfc3VwcG9ydGVkX3BsYXRmb3JtsQAAAHMQAAAAAA0GAQoBEgECASYBDgIGAXJIAAAA2gdyZXF1aXJl2gpydW5fc2NyaXB02gxnZXRfcHJvdmlkZXLaEGdldF9kaXN0cmlidXRpb27aEGxvYWRfZW50cnlfcG9pbnTaDWdldF9lbnRyeV9tYXDaDmdldF9lbnRyeV9pbmZv2hFpdGVyX2VudHJ5X3BvaW50c9oPcmVzb3VyY2Vfc3RyaW5n2g9yZXNvdXJjZV9zdHJlYW3aEXJlc291cmNlX2ZpbGVuYW1l2hByZXNvdXJjZV9saXN0ZGly2g9yZXNvdXJjZV9leGlzdHPaDnJlc291cmNlX2lzZGly2hFkZWNsYXJlX25hbWVzcGFjZdoLd29ya2luZ19zZXTaF2FkZF9hY3RpdmF0aW9uX2xpc3RlbmVy2hJmaW5kX2Rpc3RyaWJ1dGlvbnPaE3NldF9leHRyYWN0aW9uX3BhdGjaEWNsZWFudXBfcmVzb3VyY2Vz2hFnZXRfZGVmYXVsdF9jYWNoZdoLRW52aXJvbm1lbnTaCldvcmtpbmdTZXTaD1Jlc291cmNlTWFuYWdlctoMRGlzdHJpYnV0aW9u2gtSZXF1aXJlbWVudNoKRW50cnlQb2ludNoPUmVzb2x1dGlvbkVycm9y2g9WZXJzaW9uQ29uZmxpY3TaFERpc3RyaWJ1dGlvbk5vdEZvdW5k2gxVbmtub3duRXh0cmHaD0V4dHJhY3Rpb25FcnJvctoScGFyc2VfcmVxdWlyZW1lbnRz2glzYWZlX25hbWXaDHNhZmVfdmVyc2lvbtoMZ2V0X3BsYXRmb3Jt2hRjb21wYXRpYmxlX3BsYXRmb3Jtc9oLeWllbGRfbGluZXPaDnNwbGl0X3NlY3Rpb25z2gpzYWZlX2V4dHJh2gt0b19maWxlbmFtZdoOaW52YWxpZF9tYXJrZXLaD2V2YWx1YXRlX21hcmtlctoQZW5zdXJlX2RpcmVjdG9yedoObm9ybWFsaXplX3BhdGjaCEVHR19ESVNU2gtCSU5BUllfRElTVNoLU09VUkNFX0RJU1TaDUNIRUNLT1VUX0RJU1TaDERFVkVMT1BfRElTVNoRSU1ldGFkYXRhUHJvdmlkZXLaEUlSZXNvdXJjZVByb3ZpZGVy2gxGaWxlTWV0YWRhdGHaDFBhdGhNZXRhZGF0YdoLRWdnTWV0YWRhdGHaDUVtcHR5UHJvdmlkZXLaDmVtcHR5X3Byb3ZpZGVy2gxOdWxsUHJvdmlkZXLaC0VnZ1Byb3ZpZGVy2g9EZWZhdWx0UHJvdmlkZXLaC1ppcFByb3ZpZGVy2g9yZWdpc3Rlcl9maW5kZXLaGnJlZ2lzdGVyX25hbWVzcGFjZV9oYW5kbGVy2hRyZWdpc3Rlcl9sb2FkZXJfdHlwZdoYZml4dXBfbmFtZXNwYWNlX3BhY2thZ2VzcgMAAADaHlBrZ1Jlc291cmNlc0RlcHJlY2F0aW9uV2FybmluZ9oIcnVuX21haW7aFkF2YWlsYWJsZURpc3RyaWJ1dGlvbnNjAAAAAAAAAAAAAAAAAgAAAEAAAABzGAAAAGUAWgFkAFoCZAFaA2QCZAOEAFoEZARTACkFcmQAAAB6LkFic3RyYWN0IGJhc2UgZm9yIGRlcGVuZGVuY3kgcmVzb2x1dGlvbiBlcnJvcnNjAQAAAAAAAAABAAAAAwAAAEMAAABzEgAAAHwAagBqAXQCfABqA4MBFwBTACkBTikE2glfX2NsYXNzX19yFgAAANoEcmVwcnI4AAAAKQHaBHNlbGZyGgAAAHIaAAAAchsAAADaCF9fcmVwcl9f/gAAAHMCAAAAAAF6GFJlc29sdXRpb25FcnJvci5fX3JlcHJfX04pBXIWAAAAchcA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byBwYWNrYWdlIHJlc291cmNlc2MCAAAAAAAAAAIAAAABAAAAQwAAAHMEAAAAZAFTACkCemRSZXR1cm4gYSB0cnVlIGZpbGVzeXN0ZW0gcGF0aCBmb3IgYHJlc291cmNlX25hbWVgCgogICAgICAgIGBtYW5hZ2VyYCBtdXN0IGJlIGFuIGBgSVJlc291cmNlTWFuYWdlcmBgTnIaAAAAKQLaB21hbmFnZXLaDXJlc291cmNlX25hbWVyGgAAAHIaAAAAchsAAADaFWdldF9yZXNvdXJjZV9maWxlbmFtZRACAABzAAAAAHonSVJlc291cmNlUHJvdmlkZXIuZ2V0X3Jlc291cmNlX2ZpbGVuYW1lYwIAAAAAAAAAAgAAAAEAAABDAAAAcwQAAABkAVMAKQJ6aVJldHVybiBhIHJlYWRhYmxlIGZpbGUtbGlrZSBvYmplY3QgZm9yIGByZXNvdXJjZV9uYW1lYAoKICAgICAgICBgbWFuYWdlcmAgbXVzdCBiZSBhbiBgYElSZXNvdXJjZU1hbmFnZXJgYE5yGgAAACkCctMAAABy1AAAAHIaAAAAchoAAAByGwAAANoTZ2V0X3Jlc291cmNlX3N0cmVhbRUCAABzAAAAAHolSVJlc291cmNlUHJvdmlkZXIuZ2V0X3Jlc291cmNlX3N0cmVhbWMCAAAAAAAAAAIAAAABAAAAQwAAAHMEAAAAZAFTACkCem1SZXR1cm4gYSBzdHJpbmcgY29udGFpbmluZyB0aGUgY29udGVudHMgb2YgYHJlc291cmNlX25hbWVgCgogICAgICAgIGBtYW5hZ2VyYCBtdXN0IGJlIGFuIGBgSVJlc291cmNlTWFuYWdlcmBgTnIaAAAAKQJy0wAAAHLUAAAAchoAAAByGgAAAHIbAAAA2hNnZXRfcmVzb3VyY2Vfc3RyaW5nGgIAAHMAAAAAeiVJUmVzb3VyY2VQcm92aWRlci5nZXRfcmVzb3VyY2Vfc3RyaW5nYwEAAAAAAAAAAQAAAAEAAABDAAAAcwQAAABkAVMAKQJ6LERvZXMgdGhlIHBhY2thZ2UgY29udGFpbiB0aGUgbmFtZWQgcmVzb3VyY2U/TnIaAAAAKQFy1AAAAHIaAAAAchoAAAByGwAAANoMaGFzX3Jlc291cmNlHwIAAHMAAAAAeh5JUmVzb3VyY2VQcm92aWRlci5oYXNfcmVzb3VyY2VjAQAAAAAAAAABAAAAAQAAAEMAAABzBAAAAGQBUwApAno+SXMgdGhlIG5hbWVkIHJlc291cmNlIGEgZGlyZWN0b3J5PyAgKGxpa2UgYGBvcy5wYXRoLmlzZGlyKClgYClOchoAAAApAXLUAAAAchoAAAByGgAAAHIbAAAAclYAAAAiAgAAcwAAAAB6IElSZXNvdXJjZVByb3ZpZGVyLnJlc291cmNlX2lzZGlyYwEAAAAAAAAAAQAAAAEAAABDAAAAcwQAAABkAVMAKQJ6P0xpc3Qgb2YgcmVzb3VyY2UgbmFtZXMgaW4gdGhlIGRpcmVjdG9yeSAobGlrZSBgYG9zLmxpc3RkaXIoKWBgKU5yGgAAACkBctQAAAByGgAAAHIaAAAAchsAAAByVAAAACUCAABzAAAAAHoiSVJlc291cmNlUHJvdmlkZXIucmVzb3VyY2VfbGlzdGRpck4pCnIWAAAAchcAAAByGAAAAHIZAAAActUAAABy1gAAAHLXAAAActgAAAByVgAAAHJUAAAAchoAAAByGgAAAHIaAAAAchsAAAByfAAAAA0CAABzDgAAAAgBBAIIBQgFCAUIAwgDYwAAAAAAAAAAAAAAAAQAAABAAAAAc6wAAABlAFoBZABaAmQBWgNkJ2QDZASEAVoEZQVkBWQGhACDAVoGZQVkB2QIhACDAVoHZAlkCoQAWghkC2QMhABaCWQNZA6EAFoKZChkD2QQhAFaC2QRZBKEAFoMZBNkFIQAWg1kKWQXZBiEAVoOZCpkGWQahAFaD2QrZBtkHIQBWhBkHWQehABaEWQsZB9kIIQBWhJkIWQihABaE2QjZCSEAFoUZCVkJoQAWhVkAlMAKS1yXwAAAHpEQSBjb2xsZWN0aW9uIG9mIGFjdGl2ZSBkaXN0cmlidXRpb25zIG9uIHN5cy5wYXRoIChvciBhIHNpbWlsYXIgbGlzdClOYwIAAAAAAAAAAwAAAAMAAABDAAAAc0IAAABnAHwAXwBpAHwAXwFpAHwAXwJnAHwAXwN8AWQBawhyJnQEagV9AXgWfAFEAF0OfQJ8AGoGfAKDAQEAcSxXAGQBUwApAno/Q3JlYXRlIHdvcmtpbmcgc2V0IGZyb20gbGlzdCBvZiBwYXRoIGVudHJpZXMgKGRlZmF1bHQ9c3lzLnBhdGgpTikH2gdlbnRyaWVz2gplbnRyeV9rZXlz2gZieV9rZXnaCWNhbGxiYWNrc3JAAAAAcq8AAADaCWFkZF9lbnRyeSkDco8AAABy2QAAANoFZW50cnlyGgAAAHIaAAAAchsAAADaCF9faW5pdF9fLAIAAHMQAAAAAAIGAQYBBgEGAggBBgIKAXoTV29ya2luZ1NldC5fX2luaXRfX2MBAAAAAAAAAAMAAAATAAAAQwAAAHNaAAAAfACDAH0BeRBkAWQCbABtAX0CAQBXAG4UBAB0AmsKcioBAAEAAQB8AVMAWAB5DnwBagN8AoMBAQBXAG4aBAB0BGsKclQBAAEAAQB8AGoFfAKDAVMAWAB8AVMAKQN6MQogICAgICAgIFByZXBhcmUgdGhlIG1hc3RlciB3b3JraW5nIHNldC4KICAgICAgICByAQAAACkB2gxfX3JlcXVpcmVzX18pBtoIX19tYWluX19y4AAAANoLSW1wb3J0RXJyb3JySQAAAHJlAAAA2hhfYnVpbGRfZnJvbV9yZXF1aXJlbWVudHMpA9oDY2xz2gJ3c3LgAAAAchoAAAByGgAAAHIbAAAA2g1fYnVpbGRfbWFzdGVyOQIAAHMUAAAAAAUGAQIBEAEOAgYDAgEOAQ4BDAJ6GFdvcmtpbmdTZXQuX2J1aWxkX21hc3RlcmMCAAAAAAAAAAcAAAAEAAAAQwAAAHNuAAAAfABnAIMBfQJ0AHwBgwF9A3wCagF8A3QCgwCDAn0EeBZ8BEQAXQ59BXwCagN8BYMBAQBxJFcAeCJ0BGoFRABdGH0GfAZ8AmoGawdyPnwCagd8BoMBAQBxPlcAfAJqBnQEagVkAWQBhQI8AHwCUwApAnpRCiAgICAgICAgQnVpbGQgYSB3b3JraW5nIHNldCBmcm9tIGEgcmVxdWlyZW1lbnQgc3BlYy4gUmV3cml0ZXMgc3lzLnBhdGguCiAgICAgICAgTikIcmkAAADaB3Jlc29sdmVyXgAAANoDYWRkckAAAAByrwAAAHLZAAAAct0AAAApB3LkAAAAWghyZXFfc3BlY3LlAAAA2gRyZXFz2gVkaXN0c3KRAAAAct4AAAByGgAAAHIaAAAAchsAAABy4wAAAE0CAABzFAAAAAAHCAEIAQ4BCgEOAwwBCgEOAxABeiNXb3JraW5nU2V0Ll9idWlsZF9mcm9tX3JlcXVpcmVtZW50c2MCAAAAAAAAAAMAAAAFAAAAQwAAAHNAAAAAfABqAGoBfAFnAIMCAQB8AGoCagN8AYMBAQB4IHQEfAFkAYMCRABdEn0CfABqBXwCfAFkAoMDAQBxJlcAZANTACkEYd0BAABBZGQgYSBwYXRoIGl0ZW0gdG8gYGAuZW50cmllc2BgLCBmaW5kaW5nIGFueSBkaXN0cmlidXRpb25zIG9uIGl0CgogICAgICAgIGBgZmluZF9kaXN0cmlidXRpb25zKGVudHJ5LCBUcnVlKWBgIGlzIHVzZWQgdG8gZmluZCBkaXN0cmlidXRpb25zCiAgICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgcGF0aCBlbnRyeSwgYW5kIHRoZXkgYXJlIGFkZGVkLiAgYGVudHJ5YCBpcwogICAgICAgIGFsd2F5cyBhcHBlbmRlZCB0byBgYC5lbnRyaWVzYGAsIGV2ZW4gaWYgaXQgaXMgYWxyZWFkeSBwcmVzZW50LgogICAgICAgIChUaGlzIGlzIGJlY2F1c2UgYGBzeXMucGF0aGBgIGNhbiBjb250YWluIHRoZSBzYW1lIHZhbHVlIG1vcmUgdGhhbgogICAgICAgIG9uY2UsIGFuZCB0aGUgYGAuZW50cmllc2BgIG9mIHRoZSBgYHN5cy5wYXRoYGAgV29ya2luZ1NldCBzaG91bGQgYWx3YXlzCiAgICAgICAgZXF1YWwgYGBzeXMucGF0aGBgLikKICAgICAgICBURk4pBnLaAAAA2gpzZXRkZWZhdWx0ctkAAAByswAAAHJaAAAAcugAAAApA3KPAAAAct4AAABykQAAAHIaAAAAchoAAAByGwAAAHLdAAAAYwIAAHMIAAAAAAoOAQwBEAF6FFdvcmtpbmdTZXQuYWRkX2VudHJ5YwIAAAAAAAAAAgAAAAIAAABDAAAAcxIAAAB8AGoAagF8AWoCgwF8AWsCUwApAXo5VHJ1ZSBpZiBgZGlzdGAgaXMgdGhlIGFjdGl2ZSBkaXN0cmlidXRpb24gZm9yIGl0cyBwcm9qZWN0KQNy2wAAAHK3AAAAcjMAAAApAnKPAAAAcpEAAAByGgAAAHIaAAAAchsAAADaDF9fY29udGFpbnNfX3ICAABzAgAAAAACehdXb3JraW5nU2V0Ll9fY29udGFpbnNfX2MCAAAAAAAAAAMAAAADAAAAQwAAAHMsAAAAfABqAGoBfAFqAoMBfQJ8AmQBawlyKHwCfAFrB3IodAN8AnwBgwKCAXwCUwApAmHQAQAARmluZCBhIGRpc3RyaWJ1dGlvbiBtYXRjaGluZyByZXF1aXJlbWVudCBgcmVxYAoKICAgICAgICBJZiB0aGVyZSBpcyBhbiBhY3RpdmUgZGlzdHJpYnV0aW9uIGZvciB0aGUgcmVxdWVzdGVkIHByb2plY3QsIHRoaXMKICAgICAgICByZXR1cm5zIGl0IGFzIGxvbmcgYXMgaXQgbWVldHMgdGhlIHZlcnNpb24gcmVxdWlyZW1lbnQgc3BlY2lmaWVkIGJ5CiAgICAgICAgYHJlcWAuICBCdXQsIGlmIHRoZXJlIGlzIGFuIGFjdGl2ZSBkaXN0cmlidXRpb24gZm9yIHRoZSBwcm9qZWN0IGFuZCBpdAogICAgICAgIGRvZXMgKm5vdCogbWVldCB0aGUgYHJlcWAgcmVxdWlyZW1lbnQsIGBgVmVyc2lvbkNvbmZsaWN0YGAgaXMgcmFpc2VkLgogICAgICAgIElmIHRoZXJlIGlzIG5vIGFjdGl2ZSBkaXN0cmlidXRpb24gZm9yIHRoZSByZXF1ZXN0ZWQgcHJvamVjdCwgYGBOb25lYGAKICAgICAgICBpcyByZXR1cm5lZC4KICAgICAgICBOKQRy2wAAAHK3AAAAcjMAAAByZQAAACkDco8AAABykgAAAHKRAAAAchoAAAByGgAAAHIbAAAAcqEAAAB2AgAAcwgAAAAACg4BEAIKAXoPV29ya2luZ1NldC5maW5kYwMAAAAAAAAAAwAAAAMAAAADAAAAcxQAAACHAIcBZgJkAWQChAh8AEQAgwFTACkDYRMBAABZaWVsZCBlbnRyeSBwb2ludCBvYmplY3RzIGZyb20gYGdyb3VwYCBtYXRjaGluZyBgbmFtZWAKCiAgICAgICAgSWYgYG5hbWVgIGlzIE5vbmUsIHlpZWxkcyBhbGwgZW50cnkgcG9pbnRzIGluIGBncm91cGAgZnJvbSBhbGwKICAgICAgICBkaXN0cmlidXRpb25zIGluIHRoZSB3b3JraW5nIHNldCwgb3RoZXJ3aXNlIG9ubHkgb25lcyBtYXRjaGluZwogICAgICAgIGJvdGggYGdyb3VwYCBhbmQgYG5hbWVgIGFyZSB5aWVsZGVkIChpbiBkaXN0cmlidXRpb24gb3JkZXIpLgogICAgICAgIGMBAAAAAAAAAAMAAAAEAAAAMwAAAHM4AAAAfABdMH0BfAFqAIgAgwFqAYMARABdHH0CiAFkAGsIcyqIAXwCagJrAnIUfAJWAAEAcRRxAmQAUwApAU4pA3JOAAAA2gZ2YWx1ZXNyyQAAACkD2gIuMHKRAAAAct4AAAApAnJEAAAAcskAAAByGgAAAHIbAAAA+gk8Z2VuZXhwcj6OAgAAcwYAAAAEAQIBEgF6L1dvcmtpbmdTZXQuaXRlcl9lbnRyeV9wb2ludHMuPGxvY2Fscz4uPGdlbmV4cHI+choAAAApA3KPAAAAckQAAAByyQAAAHIaAAAAKQJyRAAAAHLJAAAAchsAAAByUAAAAIYCAABzBAAAAAAIDAF6HFdvcmtpbmdTZXQuaXRlcl9lbnRyeV9wb2ludHNjAwAAAAAAAAAFAAAAAwAAAEMAAABzPgAAAHQAagFkAYMBagJ9A3wDZAIZAH0EfANqA4MAAQB8BHwDZAI8AHwAagR8AYMBZAMZAGoFfAJ8A4MCAQBkBFMAKQV6P0xvY2F0ZSBkaXN0cmlidXRpb24gZm9yIGByZXF1aXJlc2AgYW5kIHJ1biBgc2NyaXB0X25hbWVgIHNjcmlwdHIPAAAAchYAAAByAQAAAE4pBnJAAAAAcsUAAAByxgAAAHIyAAAAckkAAABySgAAACkFco8AAADaCHJlcXVpcmVzcscAAAByyAAAAHLJAAAAchoAAAByGgAAAHIbAAAAckoAAACUAgAAcwoAAAAAAgwBCAEIAQgBehVXb3JraW5nU2V0LnJ1bl9zY3JpcHRjAQAAAAAAAAAEAAAABQAAAGMAAABzVAAAAGkAfQF4SnwAagBEAF1AfQJ8AnwAagFrB3IccQx4LnwAagF8AhkARABdIH0DfAN8AWsHcihkAXwBfAM8AHwAagJ8AxkAVgABAHEoVwBxDFcAZAJTACkDerhZaWVsZCBkaXN0cmlidXRpb25zIGZvciBub24tZHVwbGljYXRlIHByb2plY3RzIGluIHRoZSB3b3JraW5nIHNldAoKICAgICAgICBUaGUgeWllbGQgb3JkZXIgaXMgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBpdGVtcycgcGF0aCBlbnRyaWVzIHdlcmUKICAgICAgICBhZGRlZCB0byB0aGUgd29ya2luZyBzZXQuCiAgICAgICAgcg8AAABOKQNy2QAAAHLaAAAActsAAAApBHKPAAAA2gRzZWVu2gRpdGVtcjMAAAByGgAAAHIaAAAAchsAAADaCF9faXRlcl9fnAIAAHMQAAAAAAYEAQwBCgICAhABCAEIAXoTV29ya2luZ1NldC5fX2l0ZXJfX1RGYwUAAAAAAAAABwAAAAUAAABDAAAAc54AAAB8A3IWfAFqAHwAagF8AnwEZAGNAwEAfAJkAmsIciR8AWoCfQJ8AGoDagR8AmcAgwJ9BXwAagNqBHwBagJnAIMCfQZ8BAwAclh8AWoFfABqBmsGclhkAlMAfAF8AGoGfAFqBTwAfAFqBXwFawdyenwFagd8AWoFgwEBAHwBagV8BmsHcpB8BmoHfAFqBYMBAQB8AGoIfAGDAQEAZAJTACkDYRcCAABBZGQgYGRpc3RgIHRvIHdvcmtpbmcgc2V0LCBhc3NvY2lhdGVkIHdpdGggYGVudHJ5YAoKICAgICAgICBJZiBgZW50cnlgIGlzIHVuc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0byB0aGUgYGAubG9jYXRpb25gYCBvZiBgZGlzdGAuCiAgICAgICAgT24gZXhpdCBmcm9tIHRoaXMgcm91dGluZSwgYGVudHJ5YCBpcyBhZGRlZCB0byB0aGUgZW5kIG9mIHRoZSB3b3JraW5nCiAgICAgICAgc2V0J3MgYGAuZW50cmllc2BgIChpZiBpdCB3YXNuJ3QgYWxyZWFkeSBwcmVzZW50KS4KCiAgICAgICAgYGRpc3RgIGlzIG9ubHkgYWRkZWQgdG8gdGhlIHdvcmtpbmcgc2V0IGlmIGl0J3MgZm9yIGEgcHJvamVjdCB0aGF0CiAgICAgICAgZG9lc24ndCBhbHJlYWR5IGhhdmUgYSBkaXN0cmlidXRpb24gaW4gdGhlIHNldCwgdW5sZXNzIGByZXBsYWNlPVRydWVgLgogICAgICAgIElmIGl0J3MgYWRkZWQsIGFueSBjYWxsYmFja3MgcmVnaXN0ZXJlZCB3aXRoIHRoZSBgYHN1YnNjcmliZSgpYGAgbWV0aG9kCiAgICAgICAgd2lsbCBiZSBjYWxsZWQuCiAgICAgICAgKQFywAAAAE4pCdoJaW5zZXJ0X29uctkAAADaCGxvY2F0aW9uctoAAABy6wAAAHIzAAAActsAAAByswAAANoKX2FkZGVkX25ldykHco8AAABykQAAAHLeAAAA2gZpbnNlcnRywAAAANoEa2V5c1oFa2V5czJyGgAAAHIaAAAAchsAAABy6AAAAK0CAABzHAAAAAAMBAESAggBBgEOARABEgIEAgwBCgEMAQoBDAF6DldvcmtpbmdTZXQuYWRkYwYAAAAAAAAAEgAAAAYAAABDAAAAc4YBAAB0AHwBgwFkAWQBZAaFAxkAfQFpAH0GaQB9B2cAfQh0AYMAfQl0AmoDdASDAX0KkAF4UHwBkAFygHwBagVkA4MBfQt8C3wGawZyTHEyfAlqBnwLfAWDAnNacTJ8B2oHfAtqCIMBfQx8DGQBawiQAXIKfABqCWoHfAtqCIMBfQx8DGQBawhzlHwMfAtrB2+QfASQAXIAfAB9DXwCZAFrCHLEfAxkAWsIcrR0CnwAaguDAX0CbhB0CmcAgwF9AnQMZwCDAX0NfAJqDXwLfA18A3wEZASNBAQAfQx8B3wLagg8AHwMZAFrCJABcgB8CmoHfAtkAYMCfQ50DnwLfA6DAoIBfAhqD3wMgwEBAHwMfAtrB5ABcix8CnwLGQB9D3QQfAx8C4MCahF8D4MBggF8DGoSfAtqE4MBZAFkAWQHhQMZAH0QfAFqFHwQgwEBAHgofBBEAF0gfRF8CnwRGQBqFXwLahaDAQEAfAtqE3wJfBE8AJABcVJXAGQFfAZ8CzwAcTJXAHwIUwApCGHOBAAATGlzdCBhbGwgZGlzdHJpYnV0aW9ucyBuZWVkZWQgdG8gKHJlY3Vyc2l2ZWx5KSBtZWV0IGByZXF1aXJlbWVudHNgCgogICAgICAgIGByZXF1aXJlbWVudHNgIG11c3QgYmUgYSBzZXF1ZW5jZSBvZiBgYFJlcXVpcmVtZW50YGAgb2JqZWN0cy4gIGBlbnZgLAogICAgICAgIGlmIHN1cHBsaWVkLCBzaG91bGQgYmUgYW4gYGBFbnZpcm9ubWVudGBgIGluc3RhbmNlLiAgSWYKICAgICAgICBub3Qgc3VwcGxpZWQsIGl0IGRlZmF1bHRzIHRvIGFsbCBkaXN0cmlidXRpb25zIGF2YWlsYWJsZSB3aXRoaW4gYW55CiAgICAgICAgZW50cnkgb3IgZGlzdHJpYnV0aW9uIGluIHRoZSB3b3JraW5nIHNldC4gIGBpbnN0YWxsZXJgLCBpZiBzdXBwbGllZCwKICAgICAgICB3aWxsIGJlIGludm9rZWQgd2l0aCBlYWNoIHJlcXVpcmVtZW50IHRoYXQgY2Fubm90IGJlIG1ldCBieSBhbgogICAgICAgIGFscmVhZHktaW5zdGFsbGVkIGRpc3RyaWJ1dGlvbjsgaXQgc2hvdWxkIHJldHVybiBhIGBgRGlzdHJpYnV0aW9uYGAgb3IKICAgICAgICBgYE5vbmVgYC4KCiAgICAgICAgVW5sZXNzIGByZXBsYWNlX2NvbmZsaWN0aW5nPVRydWVgLCByYWlzZXMgYSBWZXJzaW9uQ29uZmxpY3QgZXhjZXB0aW9uCiAgICAgICAgaWYKICAgICAgICBhbnkgcmVxdWlyZW1lbnRzIGFyZSBmb3VuZCBvbiB0aGUgcGF0aCB0aGF0IGhhdmUgdGhlIGNvcnJlY3QgbmFtZSBidXQKICAgICAgICB0aGUgd3JvbmcgdmVyc2lvbi4gIE90aGVyd2lzZSwgaWYgYW4gYGluc3RhbGxlcmAgaXMgc3VwcGxpZWQgaXQgd2lsbCBiZQogICAgICAgIGludm9rZWQgdG8gb2J0YWluIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgdGhlIHJlcXVpcmVtZW50IGFuZCBhY3RpdmF0ZQogICAgICAgIGl0LgoKICAgICAgICBgZXh0cmFzYCBpcyBhIGxpc3Qgb2YgdGhlIGV4dHJhcyB0byBiZSB1c2VkIHdpdGggdGhlc2UgcmVxdWlyZW1lbnRzLgogICAgICAgIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgZXh0cmEgcmVxdWlyZW1lbnRzIG1heSBsb29rIGxpa2UgYG15X3JlcTsKICAgICAgICBleHRyYSA9ICJteV9leHRyYSJgLCB3aGljaCB3b3VsZCBvdGhlcndpc2UgYmUgaW50ZXJwcmV0ZWQgYXMgYSBwdXJlbHkKICAgICAgICBvcHRpb25hbCByZXF1aXJlbWVudC4gIEluc3RlYWQsIHdlIHdhbnQgdG8gYmUgYWJsZSB0byBhc3NlcnQgdGhhdCB0aGVzZQogICAgICAgIHJlcXVpcmVtZW50cyBhcmUgdHJ1bHkgcmVxdWlyZWQuCiAgICAgICAgTnIPAAAAcgEAAAApAdoTcmVwbGFjZV9jb25mbGljdGluZ1Tp/////3L6AAAAKRfaBGxpc3TaCl9SZXFFeHRyYXPaC2NvbGxlY3Rpb25z2gtkZWZhdWx0ZGljdNoDc2V02gNwb3DaDG1hcmtlcnNfcGFzc3K3AAAAcjMAAABy2wAAAHJeAAAActkAAAByXwAAANoKYmVzdF9tYXRjaHJmAAAAcrMAAAByZQAAAHKZAAAAcvAAAADaBmV4dHJhc9oGZXh0ZW5kcugAAADaDHByb2plY3RfbmFtZSkSco8AAADaDHJlcXVpcmVtZW50c9oDZW522glpbnN0YWxsZXJy+QAAAHIDAQAAWglwcm9jZXNzZWRaBGJlc3RaC3RvX2FjdGl2YXRlWgpyZXFfZXh0cmFzcpgAAABykgAAAHKRAAAAcuUAAABymwAAAFoNZGVwZW5kZW50X3JlcVoQbmV3X3JlcXVpcmVtZW50c1oPbmV3X3JlcXVpcmVtZW50choAAAByGgAAAHIbAAAAcucAAADLAgAAc04AAAAAGxICBAIEAQQCBgQKAgoCCgEIAgICDAECAgwBCgIOARYBBAEIAQgBDAUIAQgBBAEGARICCgEMAQoBCgEKAggBEAMWAQoDCgEQARACDAN6EldvcmtpbmdTZXQucmVzb2x2ZWMFAAAAAAAAAA8AAAASAAAAQwAAAHMCAQAAdAB8AYMBfQV8BWoBgwABAGkAfQZpAH0HfAJkAWsIcjR0AnwAagODAX0IfAh8ATcAfQhuCHwCfAEXAH0IfABqBGcAgwF9CXQAdAV8CWoGfACDAoMBAQB4knwFRABdin0KeIR8AXwKGQBEAF14fQt8C2oHgwBnAX0MeRJ8CWoIfAx8CHwDgwN9DVcAbjQEAHQJawpyvgEAfQ4BAHoYfA58BnwLPAB8BHKsd2puAlAAVwBZAGQBZAF9Dn4OWABxalgAdAB0BXwJagZ8DYMCgwEBAHwHagp0C2oMfA2DAYMBAQBQAHFqVwBxXFcAdAB8B4MBfQd8B2oBgwABAHwHfAZmAlMAKQJhcwYAAEZpbmQgYWxsIGFjdGl2YXRhYmxlIGRpc3RyaWJ1dGlvbnMgaW4gYHBsdWdpbl9lbnZgCgogICAgICAgIEV4YW1wbGUgdXNhZ2U6OgoKICAgICAgICAgICAgZGlzdHJpYnV0aW9ucywgZXJyb3JzID0gd29ya2luZ19zZXQuZmluZF9wbHVnaW5zKAogICAgICAgICAgICAgICAgRW52aXJvbm1lbnQocGx1Z2luX2Rpcmxpc3QpCiAgICAgICAgICAgICkKICAgICAgICAgICAgIyBhZGQgcGx1Z2lucytsaWJzIHRvIHN5cy5wYXRoCiAgICAgICAgICAgIG1hcCh3b3JraW5nX3NldC5hZGQsIGRpc3RyaWJ1dGlvbnMpCiAgICAgICAgICAgICMgZGlzcGxheSBlcnJvcnMKICAgICAgICAgICAgcHJpbnQoJ0NvdWxkIG5vdCBsb2FkJywgZXJyb3JzKQoKICAgICAgICBUaGUgYHBsdWdpbl9lbnZgIHNob3VsZCBiZSBhbiBgYEVudmlyb25tZW50YGAgaW5zdGFuY2UgdGhhdCBjb250YWlucwogICAgICAgIG9ubHkgZGlzdHJpYnV0aW9ucyB0aGF0IGFyZSBpbiB0aGUgcHJvamVjdCdzICJwbHVnaW4gZGlyZWN0b3J5IiBvcgogICAgICAgIGRpcmVjdG9yaWVzLiBUaGUgYGZ1bGxfZW52YCwgaWYgc3VwcGxpZWQsIHNob3VsZCBiZSBhbiBgYEVudmlyb25tZW50YGAKICAgICAgICBjb250YWlucyBhbGwgY3VycmVudGx5LWF2YWlsYWJsZSBkaXN0cmlidXRpb25zLiAgSWYgYGZ1bGxfZW52YCBpcyBub3QKICAgICAgICBzdXBwbGllZCwgb25lIGlzIGNyZWF0ZWQgYXV0b21hdGljYWxseSBmcm9tIHRoZSBgYFdvcmtpbmdTZXRgYCB0aGlzCiAgICAgICAgbWV0aG9kIGlzIGNhbGxlZCBvbiwgd2hpY2ggd2lsbCB0eXBpY2FsbHkgbWVhbiB0aGF0IGV2ZXJ5IGRpcmVjdG9yeSBvbgogICAgICAgIGBgc3lzLnBhdGhgYCB3aWxsIGJlIHNjYW5uZWQgZm9yIGRpc3RyaWJ1dGlvbnMuCgogICAgICAgIGBpbnN0YWxsZXJgIGlzIGEgc3RhbmRhcmQgaW5zdGFsbGVyIGNhbGxiYWNrIGFzIHVzZWQgYnkgdGhlCiAgICAgICAgYGByZXNvbHZlKClgYCBtZXRob2QuIFRoZSBgZmFsbGJhY2tgIGZsYWcgaW5kaWNhdGVzIHdoZXRoZXIgd2Ugc2hvdWxkCiAgICAgICAgYXR0ZW1wdCB0byByZXNvbHZlIG9sZGVyIHZlcnNpb25zIG9mIGEgcGx1Z2luIGlmIHRoZSBuZXdlc3QgdmVyc2lvbgogICAgICAgIGNhbm5vdCBiZSByZXNvbHZlZC4KCiAgICAgICAgVGhpcyBtZXRob2QgcmV0dXJucyBhIDItdHVwbGU6IChgZGlzdHJpYnV0aW9uc2AsIGBlcnJvcl9pbmZvYCksIHdoZXJlCiAgICAgICAgYGRpc3RyaWJ1dGlvbnNgIGlzIGEgbGlzdCBvZiB0aGUgZGlzdHJpYnV0aW9ucyBmb3VuZCBpbiBgcGx1Z2luX2VudmAKICAgICAgICB0aGF0IHdlcmUgbG9hZGFibGUsIGFsb25nIHdpdGggYW55IG90aGVyIGRpc3RyaWJ1dGlvbnMgdGhhdCBhcmUgbmVlZGVkCiAgICAgICAgdG8gcmVzb2x2ZSB0aGVpciBkZXBlbmRlbmNpZXMuICBgZXJyb3JfaW5mb2AgaXMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcKICAgICAgICB1bmxvYWRhYmxlIHBsdWdpbiBkaXN0cmlidXRpb25zIHRvIGFuIGV4Y2VwdGlvbiBpbnN0YW5jZSBkZXNjcmliaW5nIHRoZQogICAgICAgIGVycm9yIHRoYXQgb2NjdXJyZWQuIFVzdWFsbHkgdGhpcyB3aWxsIGJlIGEgYGBEaXN0cmlidXRpb25Ob3RGb3VuZGBgIG9yCiAgICAgICAgYGBWZXJzaW9uQ29uZmxpY3RgYCBpbnN0YW5jZS4KICAgICAgICBOKQ1y+wAAANoEc29ydHJeAAAActkAAAByjQAAAHIGAAAAcugAAADaDmFzX3JlcXVpcmVtZW50cucAAAByZAAAAHIjAAAAciUAAAByJgAAACkPco8AAABaCnBsdWdpbl9lbnZaCGZ1bGxfZW52cggBAADaCGZhbGxiYWNrWg9wbHVnaW5fcHJvamVjdHNaCmVycm9yX2luZm9aDWRpc3RyaWJ1dGlvbnNyBwEAAFoKc2hhZG93X3NldHIFAQAAcpEAAABykgAAAFoJcmVzb2x2ZWVzciAAAAByGgAAAHIaAAAAchsAAADaDGZpbmRfcGx1Z2lucycDAABzNAAAAAAkCAIIAgQBBAIIAQoBCgIIAgoCEAIKAg4CCgICARICEAIIAQQCBAMUAxABEAMKAggBCAJ6F1dvcmtpbmdTZXQuZmluZF9wbHVnaW5zYwEAAAAAAAAABAAAAAMAAABHAAAAcyoAAAB8AGoAdAF8AYMBgwF9AngWfAJEAF0OfQN8AGoCfAODAQEAcRRXAHwCUwApAWG+AQAARW5zdXJlIHRoYXQgZGlzdHJpYnV0aW9ucyBtYXRjaGluZyBgcmVxdWlyZW1lbnRzYCBhcmUgYWN0aXZhdGVkCgogICAgICAgIGByZXF1aXJlbWVudHNgIG11c3QgYmUgYSBzdHJpbmcgb3IgYSAocG9zc2libHktbmVzdGVkKSBzZXF1ZW5jZQogICAgICAgIHRoZXJlb2YsIHNwZWNpZnlpbmcgdGhlIGRpc3RyaWJ1dGlvbnMgYW5kIHZlcnNpb25zIHJlcXVpcmVkLiAgVGhlCiAgICAgICAgcmV0dXJuIHZhbHVlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIGRpc3RyaWJ1dGlvbnMgdGhhdCBuZWVkZWQgdG8gYmUKICAgICAgICBhY3RpdmF0ZWQgdG8gZnVsZmlsbCB0aGUgcmVxdWlyZW1lbnRzOyBhbGwgcmVsZXZhbnQgZGlzdHJpYnV0aW9ucyBhcmUKICAgICAgICBpbmNsdWRlZCwgZXZlbiBpZiB0aGV5IHdlcmUgYWxyZWFkeSBhY3RpdmF0ZWQgaW4gdGhpcyB3b3JraW5nIHNldC4KICAgICAgICApA3LnAAAAcmkAAABy6AAAACkEco8AAAByBgEAAFoGbmVlZGVkcpEAAAByGgAAAHIaAAAAchsAAABySQAAAHsDAABzCAAAAAAJDgIKAQ4CehJXb3JraW5nU2V0LnJlcXVpcmVjAwAAAAAAAAAEAAAAAwAAAEMAAABzPAAAAHwBfABqAGsGcg5kAVMAfABqAGoBfAGDAQEAfAJzImQBUwB4FHwARABdDH0DfAF8A4MBAQBxKFcAZAFTACkCeoNJbnZva2UgYGNhbGxiYWNrYCBmb3IgYWxsIGRpc3RyaWJ1dGlvbnMKCiAgICAgICAgSWYgYGV4aXN0aW5nPVRydWVgIChkZWZhdWx0KSwKICAgICAgICBjYWxsIG9uIGFsbCBleGlzdGluZyBvbmVzLCBhcyB3ZWxsLgogICAgICAgIE4pAnLcAAAAcrMAAAApBHKPAAAA2ghjYWxsYmFja9oIZXhpc3RpbmdykQAAAHIaAAAAchoAAAByGwAAANoJc3Vic2NyaWJliwMAAHMOAAAAAAYKAQQBDAEEAQQBCgF6FFdvcmtpbmdTZXQuc3Vic2NyaWJlYwIAAAAAAAAAAwAAAAMAAABDAAAAcxwAAAB4FnwAagBEAF0MfQJ8AnwBgwEBAHEIVwBkAFMAKQFOKQFy3AAAACkDco8AAABykQAAAHINAQAAchoAAAByGgAAAHIbAAAAcvYAAACZAwAAcwQAAAAAAQwBehVXb3JraW5nU2V0Ll9hZGRlZF9uZXdjAQAAAAAAAAABAAAABgAAAEMAAABzLAAAAHwAagBkAGQAhQIZAHwAagFqAoMAfABqA2oCgwB8AGoEZABkAIUCGQBmBFMAKQFOKQVy2QAAAHLaAAAAci8AAABy2wAAAHLcAAAAKQFyjwAAAHIaAAAAchoAAAByGwAAAHItAAAAnQMAAHMEAAAAAAIcAXoXV29ya2luZ1NldC5fX2dldHN0YXRlX19jAgAAAAAAAAAGAAAABAAAAEMAAABzQAAAAHwBXAR9An0DfQR9BXwCZABkAIUCGQB8AF8AfANqAYMAfABfAnwEagGDAHwAXwN8BWQAZACFAhkAfABfBGQAUwApAU4pBXLZAAAAci8AAABy2gAAAHLbAAAActwAAAApBnKPAAAAWgdlX2tfYl9jctkAAABy+AAAAHLbAAAActwAAAByGgAAAHIaAAAAchsAAAByLgAAAKMDAABzCgAAAAABDAEOAQoBCgF6F1dvcmtpbmdTZXQuX19zZXRzdGF0ZV9fKQFOKQFOKQNOVEYpBE5ORk4pA05OVCkBVCkWchYAAAByFwAAAHIYAAAAchkAAABy3wAAANoLY2xhc3NtZXRob2Ry5gAAAHLjAAAAct0AAABy7AAAAHKhAAAAclAAAABySgAAAHLzAAAAcugAAABy5wAAAHIMAQAAckkAAAByDwEAAHL2AAAAci0AAAByLgAAAHIaAAAAchoAAAByGgAAAHIbAAAAcl8AAAApAgAAcyYAAAAIAQQCCg0MFAwWCA8IBAgQCg4ICAgRCh4AAQpcClMIEAoOCAQIBmMAAAAAAAAAAAAAAAADAAAAQAAAAHMaAAAAZQBaAWQAWgJkAVoDZAVkA2QEhAFaBGQCUwApBnL8AAAAej4KICAgIE1hcCBlYWNoIHJlcXVpcmVtZW50IHRvIHRoZSBleHRyYXMgdGhhdCBkZW1hbmRlZCBpdC4KICAgIE5jAwAAAAAAAAAEAAAABAAAAAMAAABzMgAAAIcAZgFkAWQChAh8AGoAiABmAIMCfAJwGmQEFwBEAIMBfQOIAGoBDABwMHQCfAODAVMAKQV6uwogICAgICAgIEV2YWx1YXRlIG1hcmtlcnMgZm9yIHJlcSBhZ2FpbnN0IGVhY2ggZXh0cmEgdGhhdAogICAgICAgIGRlbWFuZGVkIGl0LgoKICAgICAgICBSZXR1cm4gRmFsc2UgaWYgdGhlIHJlcSBoYXMgYSBtYXJrZXIgYW5kIGZhaWxzCiAgICAgICAgZXZhbHVhdGlvbi4gT3RoZXJ3aXNlLCByZXR1cm4gVHJ1ZS4KICAgICAgICBjAQAAAAAAAAACAAAABAAAADMAAABzHgAAAHwAXRZ9AYgAagBqAWQAfAFpAYMBVgABAHECZAFTACkC2gVleHRyYU4pAtoGbWFya2Vy2ghldmFsdWF0ZSkCcu4AAAByEQEAACkBcpIAAAByGgAAAHIbAAAAcu8AAAC5AwAAcwIAAAAEAXoqX1JlcUV4dHJhcy5tYXJrZXJzX3Bhc3MuPGxvY2Fscz4uPGdlbmV4cHI+TikBTikDcrcAAAByEgEAANoDYW55KQRyjwAAAHKSAAAAcgMBAABaC2V4dHJhX2V2YWxzchoAAAApAXKSAAAAchsAAAByAQEAALADAABzBgAAAAAJCgEYAnoXX1JlcUV4dHJhcy5tYXJrZXJzX3Bhc3MpAU4pBXIWAAAAchcAAAByGAAAAHIZAAAAcgEBAAByGgAAAHIaAAAAchoAAAByGwAAAHL8AAAAqwMAAHMEAAAACAMEAnL8AAAAYwAAAAAAAAAAAAAAAAMAAABAAAAAc3gAAABlAFoBZABaAmQBWgNkAmUEgwBlBWYDZANkBIQBWgZkBWQGhABaB2QHZAiEAFoIZBpkCWQKhAFaCWQLZAyEAFoKZA1kDoQAWgtkG2QQZBGEAVoMZBxkEmQThAFaDWQUZBWEAFoOZBZkF4QAWg9kGGQZhABaEGQCUwApHXJeAAAAejVTZWFyY2hhYmxlIHNuYXBzaG90IG9mIGRpc3RyaWJ1dGlvbnMgb24gYSBzZWFyY2ggcGF0aE5jBAAAAAAAAAAEAAAAAgAAAEMAAABzIAAAAGkAfABfAHwCfABfAXwDfABfAnwAagN8AYMBAQBkAVMAKQJhIQMAAFNuYXBzaG90IGRpc3RyaWJ1dGlvbnMgYXZhaWxhYmxlIG9uIGEgc2VhcmNoIHBhdGgKCiAgICAgICAgQW55IGRpc3RyaWJ1dGlvbnMgZm91bmQgb24gYHNlYXJjaF9wYXRoYCBhcmUgYWRkZWQgdG8gdGhlIGVudmlyb25tZW50LgogICAgICAgIGBzZWFyY2hfcGF0aGAgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2YgYGBzeXMucGF0aGBgIGl0ZW1zLiAgSWYgbm90CiAgICAgICAgc3VwcGxpZWQsIGBgc3lzLnBhdGhgYCBpcyB1c2VkLgoKICAgICAgICBgcGxhdGZvcm1gIGlzIGFuIG9wdGlvbmFsIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIHRoZSBwbGF0Zm9ybQogICAgICAgIHRoYXQgcGxhdGZvcm0tc3BlY2lmaWMgZGlzdHJpYnV0aW9ucyBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aC4gIElmCiAgICAgICAgdW5zcGVjaWZpZWQsIGl0IGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHBsYXRmb3JtLiAgYHB5dGhvbmAgaXMgYW4KICAgICAgICBvcHRpb25hbCBzdHJpbmcgbmFtaW5nIHRoZSBkZXNpcmVkIHZlcnNpb24gb2YgUHl0aG9uIChlLmcuIGBgJzMuNidgYCk7CiAgICAgICAgaXQgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgdmVyc2lvbi4KCiAgICAgICAgWW91IG1heSBleHBsaWNpdGx5IHNldCBgcGxhdGZvcm1gIChhbmQvb3IgYHB5dGhvbmApIHRvIGBgTm9uZWBgIGlmIHlvdQogICAgICAgIHdpc2ggdG8gbWFwICphbGwqIGRpc3RyaWJ1dGlvbnMsIG5vdCBqdXN0IHRob3NlIGNvbXBhdGlibGUgd2l0aCB0aGUKICAgICAgICBydW5uaW5nIHBsYXRmb3JtIG9yIFB5dGhvbiB2ZXJzaW9uLgogICAgICAgIE4pBNoIX2Rpc3RtYXByQQAAANoGcHl0aG9u2gRzY2FuKQRyjwAAANoLc2VhcmNoX3BhdGhyQQAAAHIWAQAAchoAAAByGgAAAHIbAAAAct8AAADCAwAAcwgAAAAAEwYBBgEGAXoURW52aXJvbm1lbnQuX19pbml0X19jAgAAAAAAAAADAAAAAwAAAEMAAABzMgAAAHwAagBkAWsIcB58AWoBZAFrCHAefAFqAXwAagBrAn0CfAJvMHQCfAFqA3wAagODAlMAKQJ65UlzIGRpc3RyaWJ1dGlvbiBgZGlzdGAgYWNjZXB0YWJsZSBmb3IgdGhpcyBlbnZpcm9ubWVudD8KCiAgICAgICAgVGhlIGRpc3RyaWJ1dGlvbiBtdXN0IG1hdGNoIHRoZSBwbGF0Zm9ybSBhbmQgcHl0aG9uIHZlcnNpb24KICAgICAgICByZXF1aXJlbWVudHMgc3BlY2lmaWVkIHdoZW4gdGhpcyBlbnZpcm9ubWVudCB3YXMgY3JlYXRlZCwgb3IgRmFsc2UKICAgICAgICBpcyByZXR1cm5lZC4KICAgICAgICBOKQRyFgEAANoKcHlfdmVyc2lvbnJtAAAAckEAAAApA3KPAAAAcpEAAABaCXB5X2NvbXBhdHIaAAAAchoAAAByGwAAANoHY2FuX2FkZNoDAABzCAAAAAAICgEKAQwCehNFbnZpcm9ubWVudC5jYW5fYWRkYwIAAAAAAAAAAgAAAAIAAABDAAAAcxYAAAB8AGoAfAFqARkAagJ8AYMBAQBkAVMAKQJ6IlJlbW92ZSBgZGlzdGAgZnJvbSB0aGUgZW52aXJvbm1lbnROKQNyFQEAAHIzAAAA2gZyZW1vdmUpAnKPAAAAcpEAAAByGgAAAHIaAAAAchsAAAByGwEAAOgDAABzAgAAAAACehJFbnZpcm9ubWVudC5yZW1vdmVjAgAAAAAAAAAEAAAABAAAAEMAAABzPAAAAHwBZAFrCHIOdABqAX0BeCh8AUQAXSB9AngadAJ8AoMBRABdDn0DfABqA3wDgwEBAHEiVwBxFFcAZAFTACkCYWQBAABTY2FuIGBzZWFyY2hfcGF0aGAgZm9yIGRpc3RyaWJ1dGlvbnMgdXNhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQKCiAgICAgICAgQW55IGRpc3RyaWJ1dGlvbnMgZm91bmQgYXJlIGFkZGVkIHRvIHRoZSBlbnZpcm9ubWVudC4KICAgICAgICBgc2VhcmNoX3BhdGhgIHNob3VsZCBiZSBhIHNlcXVlbmNlIG9mIGBgc3lzLnBhdGhgYCBpdGVtcy4gIElmIG5vdAogICAgICAgIHN1cHBsaWVkLCBgYHN5cy5wYXRoYGAgaXMgdXNlZC4gIE9ubHkgZGlzdHJpYnV0aW9ucyBjb25mb3JtaW5nIHRvCiAgICAgICAgdGhlIHBsYXRmb3JtL3B5dGhvbiB2ZXJzaW9uIGRlZmluZWQgYXQgaW5pdGlhbGl6YXRpb24gYXJlIGFkZGVkLgogICAgICAgIE4pBHJAAAAAcq8AAAByWgAAAHLoAAAAKQRyjwAAAHIYAQAAcvIAAABykQAAAHIaAAAAchoAAAByGwAAAHIXAQAA7AMAAHMKAAAAAAgIAQYCCgEOAXoQRW52aXJvbm1lbnQuc2NhbmMCAAAAAAAAAAMAAAADAAAAQwAAAHMWAAAAfAFqAIMAfQJ8AGoBagJ8AmcAgwJTACkBYQEBAABSZXR1cm4gYSBuZXdlc3QtdG8tb2xkZXN0IGxpc3Qgb2YgZGlzdHJpYnV0aW9ucyBmb3IgYHByb2plY3RfbmFtZWAKCiAgICAgICAgVXNlcyBjYXNlLWluc2Vuc2l0aXZlIGBwcm9qZWN0X25hbWVgIGNvbXBhcmlzb24sIGFzc3VtaW5nIGFsbCB0aGUKICAgICAgICBwcm9qZWN0J3MgZGlzdHJpYnV0aW9ucyB1c2UgdGhlaXIgcHJvamVjdCdzIG5hbWUgY29udmVydGVkIHRvIGFsbAogICAgICAgIGxvd2VyY2FzZSBhcyB0aGVpciBrZXkuCgogICAgICAgICkD2gVsb3dlcnIVAQAAcrcAAAApA3KPAAAAcgUBAABaEGRpc3RyaWJ1dGlvbl9rZXlyGgAAAHIaAAAAchsAAADaC19fZ2V0aXRlbV9f+wMAAHMEAAAAAAgIAXoXRW52aXJvbm1lbnQuX19nZXRpdGVtX19jAgAAAAAAAAADAAAABAAAAEMAAABzTAAAAHwAagB8AYMBckh8AWoBgwBySHwAagJqA3wBagRnAIMCfQJ8AXwCawdySHwCagV8AYMBAQB8AmoGdAdqCGQBgwFkAmQDjQIBAGQEUwApBXpMQWRkIGBkaXN0YCBpZiB3ZSBgYGNhbl9hZGQoKWBgIGl0IGFuZCBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBhZGRlZAogICAgICAgINoHaGFzaGNtcFQpAnIzAAAA2gdyZXZlcnNlTikJchoBAADaC2hhc192ZXJzaW9uchUBAABy6wAAAHIzAAAAcrMAAAByCQEAANoIb3BlcmF0b3LaCmF0dHJnZXR0ZXIpA3KPAAAAcpEAAABy6gAAAHIaAAAAchoAAAByGwAAAHLoAAAABgQAAHMKAAAAAAMSARABCAEKAXoPRW52aXJvbm1lbnQuYWRkRmMFAAAAAAAAAAYAAAALAAAAQwAAAHNmAAAAeQ58AmoAfAGDAX0FVwBuHgQAdAFrCnIsAQABAAEAfARzJIIAZAF9BVkAbgJYAHwFZAFrCXI6fAVTAHgefAB8AWoCGQBEAF0QfQV8BXwBawZyRnwFUwBxRlcAfABqA3wBfAODAlMAKQJhuAIAAEZpbmQgZGlzdHJpYnV0aW9uIGJlc3QgbWF0Y2hpbmcgYHJlcWAgYW5kIHVzYWJsZSBvbiBgd29ya2luZ19zZXRgCgogICAgICAgIFRoaXMgY2FsbHMgdGhlIGBgZmluZChyZXEpYGAgbWV0aG9kIG9mIHRoZSBgd29ya2luZ19zZXRgIHRvIHNlZSBpZiBhCiAgICAgICAgc3VpdGFibGUgZGlzdHJpYnV0aW9uIGlzIGFscmVhZHkgYWN0aXZlLiAgKFRoaXMgbWF5IHJhaXNlCiAgICAgICAgYGBWZXJzaW9uQ29uZmxpY3RgYCBpZiBhbiB1bnN1aXRhYmxlIHZlcnNpb24gb2YgdGhlIHByb2plY3QgaXMgYWxyZWFkeQogICAgICAgIGFjdGl2ZSBpbiB0aGUgc3BlY2lmaWVkIGB3b3JraW5nX3NldGAuKSAgSWYgYSBzdWl0YWJsZSBkaXN0cmlidXRpb24KICAgICAgICBpc24ndCBhY3RpdmUsIHRoaXMgbWV0aG9kIHJldHVybnMgdGhlIG5ld2VzdCBkaXN0cmlidXRpb24gaW4gdGhlCiAgICAgICAgZW52aXJvbm1lbnQgdGhhdCBtZWV0cyB0aGUgYGBSZXF1aXJlbWVudGBgIGluIGByZXFgLiAgSWYgbm8gc3VpdGFibGUKICAgICAgICBkaXN0cmlidXRpb24gaXMgZm91bmQsIGFuZCBgaW5zdGFsbGVyYCBpcyBzdXBwbGllZCwgdGhlbiB0aGUgcmVzdWx0IG9mCiAgICAgICAgY2FsbGluZyB0aGUgZW52aXJvbm1lbnQncyBgYG9idGFpbihyZXEsIGluc3RhbGxlcilgYCBtZXRob2Qgd2lsbCBiZQogICAgICAgIHJldHVybmVkLgogICAgICAgIE4pBHKhAAAAcmUAAAByMwAAANoGb2J0YWluKQZyjwAAAHKSAAAAclgAAAByCAEAAHL5AAAAcpEAAAByGgAAAHIaAAAAchsAAAByAgEAAA8EAABzGAAAAAAOAgEOAQ4BBAECAQoBCAEEARABCAEIAnoWRW52aXJvbm1lbnQuYmVzdF9tYXRjaGMDAAAAAAAAAAMAAAACAAAAQwAAAHMUAAAAfAJkAWsJchB8AnwBgwFTAGQBUwApAmHeAQAAT2J0YWluIGEgZGlzdHJpYnV0aW9uIG1hdGNoaW5nIGByZXF1aXJlbWVudGAgKGUuZy4gdmlhIGRvd25sb2FkKQoKICAgICAgICBPYnRhaW4gYSBkaXN0cm8gdGhhdCBtYXRjaGVzIHJlcXVpcmVtZW50IChlLmcuIHZpYSBkb3dubG9hZCkuICBJbiB0aGUKICAgICAgICBiYXNlIGBgRW52aXJvbm1lbnRgYCBjbGFzcywgdGhpcyByb3V0aW5lIGp1c3QgcmV0dXJucwogICAgICAgIGBgaW5zdGFsbGVyKHJlcXVpcmVtZW50KWBgLCB1bmxlc3MgYGluc3RhbGxlcmAgaXMgTm9uZSwgaW4gd2hpY2ggY2FzZQogICAgICAgIE5vbmUgaXMgcmV0dXJuZWQgaW5zdGVhZC4gIFRoaXMgbWV0aG9kIGlzIGEgaG9vayB0aGF0IGFsbG93cyBzdWJjbGFzc2VzCiAgICAgICAgdG8gYXR0ZW1wdCBvdGhlciB3YXlzIG9mIG9idGFpbmluZyBhIGRpc3RyaWJ1dGlvbiBiZWZvcmUgZmFsbGluZyBiYWNrCiAgICAgICAgdG8gdGhlIGBpbnN0YWxsZXJgIGFyZ3Vt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INoCbnRaBndpbmRpck56yyVzIGlzIHdyaXRhYmxlIGJ5IGdyb3VwL290aGVycyBhbmQgdnVsbmVyYWJsZSB0byBhdHRhY2sgd2hlbiB1c2VkIHdpdGggZ2V0X3Jlc291cmNlX2ZpbGVuYW1lLiBDb25zaWRlciBhIG1vcmUgc2VjdXJlIGxvY2F0aW9uIChzZXQgd2l0aCAuc2V0X2V4dHJhY3Rpb25fcGF0aCBvciB0aGUgUFlUSE9OX0VHR19DQUNIRSBlbnZpcm9ubWVudCB2YXJpYWJsZSkuKQtyrgAAAHLJAAAAcr4AAADaB2Vudmlyb27aBHN0YXTaB3N0X21vZGXaB1NfSVdPVEjaB1NfSVdHUlDaCHdhcm5pbmdz2gR3YXJu2gtVc2VyV2FybmluZykDcq8AAADaBG1vZGXaA21zZ3IaAAAAchoAAAByGwAAAHI3AQAAwwQAAHMOAAAAAAocBAQBDAEUAgIEBgJ6LFJlc291cmNlTWFuYWdlci5fd2Fybl91bnNhZmVfZXh0cmFjdGlvbl9wYXRoYwMAAAAAAAAABAAAAAMAAABDAAAAcy4AAAB0AGoBZAFrAnIqdABqAnwBgwFqA2QCQgBkA0AAfQN0AGoEfAF8A4MCAQBkBFMAKQVhNAIAAFBlcmZvcm0gYW55IHBsYXRmb3JtLXNwZWNpZmljIHBvc3Rwcm9jZXNzaW5nIG9mIGB0ZW1wbmFtZWAKCiAgICAgICAgVGhpcyBpcyB3aGVyZSBNYWMgaGVhZGVyIHJld3JpdGVzIHNob3VsZCBiZSBkb25lOyBvdGhlciBwbGF0Zm9ybXMgZG9uJ3QKICAgICAgICBoYXZlIGFueXRoaW5nIHNwZWNpYWwgdGhleSBzaG91bGQgZG8uCgogICAgICAgIFJlc291cmNlIHByb3ZpZGVycyBzaG91bGQgY2FsbCB0aGlzIG1ldGhvZCBPTkxZIGFmdGVyIHN1Y2Nlc3NmdWxseQogICAgICAgIGV4dHJhY3RpbmcgYSBjb21wcmVzc2VkIHJlc291cmNlLiAgVGhleSBtdXN0IE5PVCBjYWxsIGl0IG9uIHJlc291cmNlcwogICAgICAgIHRoYXQgYXJlIGFscmVhZHkgaW4gdGhlIGZpbGVzeXN0ZW0uCgogICAgICAgIGB0ZW1wbmFtZWAgaXMgdGhlIGN1cnJlbnQgKHRlbXBvcmFyeSkgbmFtZSBvZiB0aGUgZmlsZSwgYW5kIGBmaWxlbmFtZWAKICAgICAgICBpcyB0aGUgbmFtZSBpdCB3aWxsIGJlIHJlbmFtZWQgdG8gYnkgdGhlIGNhbGxlciBhZnRlciB0aGlzIHJvdXRpbmUKICAgICAgICByZXR1cm5zLgogICAgICAgINoFcG9zaXhpbQEAAGn/DwAATikFcq4AAAByyQAAAHI9AQAAcj4BAADaBWNobW9kKQRyjwAAAFoIdGVtcG5hbWXaCGZpbGVuYW1lckQBAAByGgAAAHIaAAAAchsAAADaC3Bvc3Rwcm9jZXNz3QQAAHMGAAAAAA8KAhQBehtSZXNvdXJjZU1hbmFnZXIucG9zdHByb2Nlc3NjAgAAAAAAAAACAAAAAgAAAEMAAABzGAAAAHwAagByDnQBZAGDAYIBfAF8AF8CZAJTACkDYdIDAABTZXQgdGhlIGJhc2UgcGF0aCB3aGVyZSByZXNvdXJjZXMgd2lsbCBiZSBleHRyYWN0ZWQgdG8sIGlmIG5lZWRlZC4KCiAgICAgICAgSWYgeW91IGRvIG5vdCBjYWxsIHRoaXMgcm91dGluZSBiZWZvcmUgYW55IGV4dHJhY3Rpb25zIHRha2UgcGxhY2UsIHRoZQogICAgICAgIHBhdGggZGVmYXVsdHMgdG8gdGhlIHJldHVybiB2YWx1ZSBvZiBgYGdldF9kZWZhdWx0X2NhY2hlKClgYC4gIChXaGljaAogICAgICAgIGlzIGJhc2VkIG9uIHRoZSBgYFBZVEhPTl9FR0dfQ0FDSEVgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgd2l0aCB2YXJpb3VzCiAgICAgICAgcGxhdGZvcm0tc3BlY2lmaWMgZmFsbGJhY2tzLiAgU2VlIHRoYXQgcm91dGluZSdzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUKICAgICAgICBkZXRhaWxzLikKCiAgICAgICAgUmVzb3VyY2VzIGFyZSBleHRyYWN0ZWQgdG8gc3ViZGlyZWN0b3JpZXMgb2YgdGhpcyBwYXRoIGJhc2VkIHVwb24KICAgICAgICBpbmZvcm1hdGlvbiBnaXZlbiBieSB0aGUgYGBJUmVzb3VyY2VQcm92aWRlcmBgLiAgWW91IG1heSBzZXQgdGhpcyB0byBhCiAgICAgICAgdGVtcG9yYXJ5IGRpcmVjdG9yeSwgYnV0IHRoZW4geW91IG11c3QgY2FsbCBgYGNsZWFudXBfcmVzb3VyY2VzKClgYCB0bwogICAgICAgIGRlbGV0ZSB0aGUgZXh0cmFjdGVkIGZpbGVzIHdoZW4gZG9uZS4gIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0CiAgICAgICAgYGBjbGVhbnVwX3Jlc291cmNlcygpYGAgd2lsbCBiZSBhYmxlIHRvIHJlbW92ZSBhbGwgZXh0cmFjdGVkIGZpbGVzLgoKICAgICAgICAoTm90ZTogeW91IG1heSBub3QgY2hhbmdlIHRoZSBleHRyYWN0aW9uIHBhdGggZm9yIGEgZ2l2ZW4gcmVzb3VyY2UKICAgICAgICBtYW5hZ2VyIG9uY2UgcmVzb3VyY2VzIGhhdmUgYmVlbiBleHRyYWN0ZWQsIHVubGVzcyB5b3UgZmlyc3QgY2FsbAogICAgICAgIGBgY2xlYW51cF9yZXNvdXJjZXMoKWBgLikKICAgICAgICB6NUNhbid0IGNoYW5nZSBleHRyYWN0aW9uIHBhdGgsIGZpbGVzIGFscmVhZHkgZXh0cmFjdGVkTikDcikBAAByRQAAAHIsAQAAKQJyjwAAAHKvAAAAchoAAAByGgAAAHIbAAAAclsAAADxBAAAcwgAAAAAEwYBAgEGA3ojUmVzb3VyY2VNYW5hZ2VyLnNldF9leHRyYWN0aW9uX3BhdGhGYwIAAAAAAAAAAgAAAAEAAABDAAAAcwQAAABkAVMAKQJhQgIAAAogICAgICAgIERlbGV0ZSBhbGwgZXh0cmFjdGVkIHJlc291cmNlIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgcmV0dXJuaW5nIGEgbGlzdAogICAgICAgIG9mIHRoZSBmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZXMgdGhhdCBjb3VsZCBub3QgYmUgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuCiAgICAgICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBoYXZlIGFueSBjb25jdXJyZW5jeSBwcm90ZWN0aW9uLCBzbyBpdCBzaG91bGQKICAgICAgICBnZW5lcmFsbHkgb25seSBi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ICA+Pj4gYm9vbCh3YXJuZWQpCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiB3YXJuZWQuY2xlYXIoKQogICAgICAgID4+PiB2cnAoJ2Zvby9mLi4vYmFyLnR4dCcpCiAgICAgICAgPj4+IGJvb2wod2FybmVkKQogICAgICAgIEZhbHNlCgogICAgICAgIFdpbmRvd3MgcGF0aCBzZXBhcmF0b3JzIGFyZSBzdHJhaWdodC11cCBkaXNhbGxvd2VkLgogICAgICAgID4+PiB2cnAocidcZm9vL2Jhci50eHQnKQogICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgICAuLi4KICAgICAgICBWYWx1ZUVycm9yOiBVc2Ugb2YgLi4gb3IgYWJzb2x1dGUgcGF0aCBpbiBhIHJlc291cmNlIHBhdGggaXMgbm90IGFsbG93ZWQuCgogICAgICAgID4+PiB2cnAocidDOlxmb28vYmFyLnR4dCcpCiAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgIC4uLgogICAgICAgIFZhbHVlRXJyb3I6IFVzZSBvZiAuLiBvciBhYnNvbHV0ZSBwYXRoIGluIGEgcmVzb3VyY2UgcGF0aCBpcyBub3QgYWxsb3dlZC4KCiAgICAgICAgQmxhbmsgdmFsdWVzIGFyZSBhbGxvd2VkCgogICAgICAgID4+PiB2cnAoJycpCiAgICAgICAgPj4+IGJvb2wod2FybmVkKQogICAgICAgIEZhbHNlCgogICAgICAgIE5vbi1zdHJpbmcgdmFsdWVzIGFyZSBub3QuCgogICAgICAgID4+PiB2cnAoTm9uZSkKICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAgLi4uCiAgICAgICAgQXR0cmlidXRlRXJyb3I6IC4uLgogICAgICAgIE56PVVzZSBvZiAuLiBvciBhYnNvbHV0ZSBwYXRoIGluIGEgcmVzb3VyY2UgcGF0aCBpcyBub3QgYWxsb3dlZC5yDwAAAHovIGFuZCB3aWxsIHJhaXNlIGV4Y2VwdGlvbnMgaW4gYSBmdXR1cmUgcmVsZWFzZS5y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AABlAFoBZABaAmQBWgNkAmQDhABaBGQEUwApBXJ+AAAAYXMCAABNZXRhZGF0YSBwcm92aWRlciBmb3IgZWdnIGRpcmVjdG9yaWVzCgogICAgVXNhZ2U6OgoKICAgICAgICAjIERldmVsb3BtZW50IGVnZ3M6CgogICAgICAgIGVnZ19pbmZvID0gIi9wYXRoL3RvL1BhY2thZ2VOYW1lLmVnZy1pbmZvIgogICAgICAgIGJhc2VfZGlyID0gb3MucGF0aC5kaXJuYW1lKGVnZ19pbmZvKQogICAgICAgIG1ldGFkYXRhID0gUGF0aE1ldGFkYXRhKGJhc2VfZGlyLCBlZ2dfaW5mbykKICAgICAgICBkaXN0X25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoZWdnX2luZm8pKVswXQogICAgICAgIGRpc3QgPSBEaXN0cmlidXRpb24oYmFzZWRpciwgcHJvamVjdF9uYW1lPWRpc3RfbmFtZSwgbWV0YWRhdGE9bWV0YWRhdGEpCgogICAgICAgICMgVW5wYWNrZWQgZWdnIGRpcmVjdG9yaWVzOgoKICAgICAgICBlZ2dfcGF0aCA9ICIvcGF0aC90by9QYWNrYWdlTmFtZS12ZXItcHl2ZXItZXRjLmVnZyIKICAgICAgICBtZXRhZGF0YSA9IFBhdGhNZXRhZGF0YShlZ2dfcGF0aCwgb3MucGF0aC5qb2luKGVnZ19wYXRoLCdFR0ctSU5GTycpKQogICAgICAgIGRpc3QgPSBEaXN0cmlidXRpb24uZnJvbV9maWxlbmFtZShlZ2dfcGF0aCwgbWV0YWRhdGE9bWV0YWRhdGEpCiAgICBjAwAAAAAAAAADAAAAAgAAAEMAAABzEAAAAHwBfABfAHwCfABfAWQAUwApAU4pAnJUAQAAcloBAAApA3KPAAAAcq8AAAByWgEAAHIaAAAAchoAAAByGwAAAHLfAAAAjgcAAHMEAAAAAAEGAXoVUGF0aE1ldGFkYXRhLl9faW5pdF9fTikFchYAAAByFwAAAHIYAAAAchkAAABy3wAAAHIaAAAAchoAAAByGgAAAHIbAAAAcn4AAAB6BwAAcwQAAAAIEgQCYwAAAAAAAAAAAAAAAAIAAABAAAAAcxgAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEUwApBXJ/AAAAeiBNZXRhZGF0YSBwcm92aWRlciBmb3IgLmVnZyBmaWxlc2MCAAAAAAAAAAIAAAADAAAAQwAAAHNEAAAAfAFqAHQBagIXAHwAXwN8AXwAXwR8AWoFcjB0AWoGagd8AWoAfAFqBYMCfABfCG4IfAFqAHwAXwh8AGoJgwABAGQBUwApAnotQ3JlYXRlIGEgbWV0YWRhdGEgcHJvdmlkZXIgZnJvbSBhIHppcGltcG9ydGVyTikKcpYBAAByrgAAAHJ1AQAAcpcBAAByqQAAANoGcHJlZml4cq8AAAByQgAAAHJUAQAAcnwBAAApAnKPAAAA2ghpbXBvcnRlcnIaAAAAchoAAAByGwAAAHLfAAAAlgcAAHMMAAAAAAMOAQYBBgEWAggBehRFZ2dNZXRhZGF0YS5fX2luaXRfX04pBXIWAAAAchcAAAByGAAAAHIZAAAAct8AAAByGgAAAHIaAAAAchoAAAByGwAAAHJ/AAAAkwcAAHMEAAAACAEEAnIlAAAAKQHaFV9kaXN0cmlidXRpb25fZmluZGVyc2MCAAAAAAAAAAIAAAADAAAAQwAAAHMMAAAAfAF0AHwAPABkAVMAKQJheAEAAFJlZ2lzdGVyIGBkaXN0cmlidXRpb25fZmluZGVyYCB0byBmaW5kIGRpc3RyaWJ1dGlvbnMgaW4gc3lzLnBhdGggaXRlbXMKCiAgICBgaW1wb3J0ZXJfdHlwZWAgaXMgdGhlIHR5cGUgb3IgY2xhc3Mgb2YgYSBQRVAgMzAyICJJbXBvcnRlciIgKHN5cy5wYXRoIGl0ZW0KICAgIGhhbmRsZXIpLCBhbmQgYGRpc3RyaWJ1dGlvbl9maW5kZXJgIGlzIGEgY2FsbGFibGUgdGhhdCwgcGFzc2VkIGEgcGF0aAogICAgaXRlbSBhbmQgdGhlIGltcG9ydGVyIGluc3RhbmNlLCB5aWVsZHMgYGBEaXN0cmlidXRpb25gYCBpbnN0YW5jZXMgZm91bmQgb24KICAgIHRoYXQgcGF0aCBpdGVtLiAgU2VlIGBgcGtnX3Jlc291cmNlcy5maW5kX29uX3BhdGhgYCBmb3IgYW4gZXhhbXBsZS5OKQFywgEAACkC2g1pbXBvcnRlcl90eXBlWhNkaXN0cmlidXRpb25fZmluZGVychoAAAByGgAAAHIbAAAAcoYAAAClBwAAcwIAAAAAB2MCAAAAAAAAAAQAAAAEAAAAQwAAAHMeAAAAdAB8AIMBfQJ0AXQCfAKDAn0DfAN8AnwAfAGDA1MAKQF6LllpZWxkIGRpc3RyaWJ1dGlvbnMgYWNjZXNzaWJsZSB2aWEgYHBhdGhfaXRlbWApA3IDAAAAcqcAAABywgEAACkE2glwYXRoX2l0ZW3aBG9ubHlywQEAANoGZmluZGVychoAAAByGgAAAHIbAAAAcloAAACvBwAAcwYAAAAAAggBCgFjAwAAAAAAAAAJAAAABQAAAGMAAABzzgAAAHwAagBqAWQBgwFyEGQCUwB0AnwAgwF9A3wDagNkA4MBcjJ0BGoFfAF8A2QEjQJWAAEAfAJyOmQCUwB4jnwDagZkBYMBRABdgH0EdAd8BIMBcoZ0CGoJagp8AXwEgwJ9BXQLdAxqDXwFgwF8BYMCfQZ4VHwGRABdCn0HfAdWAAEAcXZXAHFGfARqDoMAagFkBoMBckZ0CGoJagp8AXwEgwJ9BXQCdAxqDXwFgwGDAX0IfAV8CF8PdARqEHwBfAR8CIMDVgABAHFGVwBkAlMAKQd6QAogICAgRmluZCBlZ2dzIGluIHppcCBmaWxlczsgcG9zc2libHkgbXVsdGlwbGUgbmVzdGVkIGVnZ3MuCiAgICB6BC53aGxOeghQS0ctSU5GTykBcr8BAAByqgAAAHoKLmRpc3QtaW5mbykRcpYBAADaCGVuZHN3aXRocn8AAAByzQAAAHJhAAAA2g1mcm9tX2ZpbGVuYW1lclQAAAByfQEAAHKuAAAAcq8AAAByQgAAANoQZmluZF9lZ2dzX2luX3ppcNoJemlwaW1wb3J02gt6aXBpbXBvcnRlcnIcAQAAcloBAADaDWZyb21fbG9jYXRpb24pCXLBAQAAcsQBAAByxQEAAHK/AQAAWgdzdWJpdGVt2gdzdWJwYXRocuoAAABykQAAAFoHc3VibWV0YXIaAAAAchoAAAByGwAAAHLJAQAAtgcAAHMkAAAAAAQMAwQBCAEKARABBAIEARABCAEOARABCgEMAQ4BDgEOAQYBcskBAABjAwAAAAAAAAADAAAAAQAAAEMAAABzBAAAAGYAUwApAU5yGgAAACkDcsEBAAByxAEAAHLFAQAAchoAAAByGgAAAHIbAAAA2gxmaW5kX25vdGhpbmfUBwAAcwIAAAAAAXLOAQAAYwEAAAAAAAAAAgAAAAUAAABDAAAAcxYAAABkAWQChAB9AXQAfAB8AWQDZASNA1MAKQVhTAIAAAogICAgR2l2ZW4gYSBsaXN0IG9mIGZpbGVuYW1lcywgcmV0dXJuIHRoZW0gaW4gZGVzY2VuZGluZyBvcmRlcgogICAgYnkgdmVyc2lvbiBudW1iZXIuCgogICAgPj4+IG5hbWVzID0gJ2JhcicsICdmb28nLCAnUHl0aG9uLTIuNy4xMC5lZ2cnLCAnUHl0aG9uLTIuNy4yLmVnZycKICAgID4+PiBfYnlfdmVyc2lvbl9kZXNjZW5kaW5nKG5hbWVzKQogICAgWydQeXRob24tMi43LjEwLmVnZycsICdQeXRob24tMi43LjIuZWdnJywgJ2ZvbycsICdiYXInXQogICAgPj4+IG5hbWVzID0gJ1NldHVwdG9vbHMtMS4yLjNiMS5lZ2cnLCAnU2V0dXB0b29scy0xLjIuMy5lZ2cnCiAgICA+Pj4gX2J5X3ZlcnNpb25fZGVzY2VuZGluZyhuYW1lcykKICAgIFsnU2V0dXB0b29scy0xLjIuMy5lZ2cnLCAnU2V0dXB0b29scy0xLjIuM2IxLmVnZyddCiAgICA+Pj4gbmFtZXMgPSAnU2V0dXB0b29scy0xLjIuM2IxLmVnZycsICdTZXR1cHRvb2xzLTEuMi4zLnBvc3QxLmVnZycKICAgID4+PiBfYnlfdmVyc2lvbl9kZXNjZW5kaW5nKG5hbWVzKQogICAgWydTZXR1cHRvb2xzLTEuMi4zLnBvc3QxLmVnZycsICdTZXR1cHRvb2xzLTEuMi4zYjEuZWdnJ10KICAgIGMBAAAAAAAAAAMAAAADAAAAUwAAAHMyAAAAdABqAWoCfACDAVwCfQB9AXQDagR8AGoFZAGDAXwBZwGDAn0CZAJkA4QAfAJEAIMBUwApBHo2CiAgICAgICAgUGFyc2UgZWFjaCBjb21wb25lbnQgb2YgdGhlIGZpbGVuYW1lCiAgICAgICAgcksBAABjAQAAAAAAAAACAAAABAAAAFMAAABzGAAAAGcAfABdEH0BdABqAWoCfAGDAZECcQRTAHIaAAAAKQNyEgAAAHIcAAAAcssAAAApAnLuAAAA2gRwYXJ0choAAAByGgAAAHIbAAAA+go8bGlzdGNvbXA+8AcAAHMCAAAABgB6P19ieV92ZXJzaW9uX2Rlc2NlbmRpbmcuPGxvY2Fscz4uX2J5X3ZlcnNpb24uPGxvY2Fscz4uPGxpc3Rjb21wPikGcq4AAAByrwAAANoIc3BsaXRleHTaCWl0ZXJ0b29sc9oFY2hhaW5yDgAAACkDcskAAADaA2V4dHK6AQAAchoAAAByGgAAAHIbAAAA2gtfYnlfdmVyc2lvbuoHAABzBgAAAAAEEAEUAXorX2J5X3ZlcnNpb25fZGVzY2VuZGluZy48bG9jYWxzPi5fYnlfdmVyc2lvblQpAnIzAAAAch8BAAApAdoGc29ydGVkKQJyOQEAAHLVAQAAchoAAAByGgAAAHIbAAAA2hZfYnlfdmVyc2lvbl9kZXNjZW5kaW5n2wcAAHMEAAAAAA8ICHLXAQAAYwMAAAAAAAAACgAAAAcAAAAjAAAAc5wAAAB0AIgBgwGJAXQBiAGDAXI0dAJqA4gBdASIAXQFagZqB4gBZAGDAoMCZAKNAlYAAQBkA1MAdAiIAYMBfQOHAIcBZgJkBGQFhAh8A0QAgwF9BHQJfASDAX0FeD58BUQAXTZ9BnQFagZqB4gBfAaDAn0HdAqIAXwGiACDA30IeBZ8CHwHgwFEAF0KfQl8CVYAAQBxhlcAcV5XAGQDUwApBno2WWllbGQgZGlzdHJpYnV0aW9ucyBhY2Nlc3NpYmxlIG9uIGEgc3lzLnBhdGggZGlyZWN0b3J5eghFR0ctSU5GTykBcr8BAABOYwEAAAAAAAAAAgAAAAUAAAAzAAAAcx4AAAB8AF0WfQF0AIgBfAGIAIMDcgJ8AVYAAQBxAmQAUwApAU4pAdoMZGlzdF9mYWN0b3J5KQJy7gAAAHLeAAAAKQJyxQEAAHLEAQAAchoAAAByGwAAAHLvAAAABwgAAHMEAAAABAECAXofZmluZF9vbl9wYXRoLjxsb2NhbHM+LjxnZW5leHByPikL2hFfbm9ybWFsaXplX2NhY2hlZNoQX2lzX3VucGFja2VkX2VnZ3JhAAAAcsgBAAByfgAAAHKuAAAAcq8AAAByQgAAANoMc2FmZV9saXN0ZGlyctcBAABy2AEAACkKcsEBAAByxAEAAHLFAQAActkAAABaCGZpbHRlcmVkWhFwYXRoX2l0ZW1fZW50cmllc3LeAAAA2ghmdWxscGF0aNoHZmFjdG9yeXKRAAAAchoAAAApAnLFAQAAcsQBAAByGwAAANoMZmluZF9vbl9wYXRo9QcAAHMeAAAAAAIIAggBBAEEARgDBAIIBgwBCAUIAQoBDgEMAQ4Bct4BAABjAwAAAAAAAAAFAAAABQAAAEMAAABzTAAAAHwBagCDAH0DdAF0AnwDagNkBIMCgwF9BHwEciB0BFMAfAIMAHIydAV8AYMBcjJ0BlMAfAIMAHJGfANqA2QDgwFyRnQHUwB0CIMAUwApBXo5CiAgICBSZXR1cm4gYSBkaXN0X2ZhY3RvcnkgZm9yIGEgcGF0aF9pdGVtIGFuZCBlbnRyeQogICAg+gkuZWdnLWluZm/6Ci5kaXN0LWluZm96CS5lZ2ctbGluaykCct8BAABy4AEAACkJchwBAAByFAEAAHIGAAAAcscBAADaG2Rpc3RyaWJ1dGlvbnNfZnJvbV9tZXRhZGF0YXJ9AQAAcloAAADaEHJlc29sdmVfZWdnX2xpbmvaB05vRGlzdHMpBXLEAQAAct4AAAByxQEAAHIcAQAAWgdpc19tZXRhchoAAAByGgAAAHIbAAAActgBAAAVCAAAcwwAAAAABAgBEAMIAhICFAFy2AEAAGMAAAAAAAAAAAAAAAACAAAAQAAAAHMqAAAAZQBaAWQAWgJkAVoDZAJkA4QAWgRlBWoGch5lBFoHZARkBYQAWghkBlMAKQdy4wEAAHpTCiAgICA+Pj4gYm9vbChOb0Rpc3RzKCkpCiAgICBGYWxzZQoKICAgID4+PiBsaXN0KE5vRGlzdHMoKSgnYW55dGhpbmcnKSkKICAgIFtdCiAgICBjAQAAAAAAAAABAAAAAQAAAEMAAABzBAAAAGQBUwApAk5GchoAAAApAXKPAAAAchoAAAByGgAAAHIbAAAA2ghfX2Jvb2xfXy4IAABzAgAAAAABehBOb0Rpc3RzLl9fYm9vbF9fYwIAAAAAAAAAAgAAAAIAAABDAAAAcwgAAAB0AGYAgwFTACkBTikB2gRpdGVyKQJyjwAAAHLcAQAAchoAAAByGgAAAHIbAAAA2ghfX2NhbGxfXzMIAABzAgAAAAABehBOb0Rpc3RzLl9fY2FsbF9fTikJchYAAAByFwAAAHIYAAAAchkAAABy5AEAAHIEAAAAclwBAABaC19fbm9uemVyb19fcuYBAAByGgAAAHIaAAAAchoAAAByGwAAAHLjAQAAJggAAHMKAAAACAcEAQgCBgEEAnLjAQAAYwEAAAAAAAAAAwAAABAAAABDAAAAc3QAAAB5CnQAagF8AIMBUwAEAHQCdANmAmsKciIBAAEAAQBZAG5OBAB0BGsKcm4BAH0BAQB6MnwBagV0BWoGdAVqB3QFaghmA2sGcFZ0CXwBZAFkAoMDZANrAn0CfAJzXoIAVwBZAGQCZAJ9AX4BWABuAlgAZgBTACkEekkKICAgIEF0dGVtcHQgdG8gbGlzdCBjb250ZW50cyBvZiBwYXRoLCBidXQgc3VwcHJlc3Mgc29tZSBleGNlcHRpb25zLgogICAg2gh3aW5lcnJvck5pCwEAACkKcq4AAABygQEAANoPUGVybWlzc2lvbkVycm9y2hJOb3RBRGlyZWN0b3J5RXJyb3LaB09TRXJyb3LaBWVycm5v2gdFTk9URElSWgZFQUNDRVPaBkVOT0VOVHKmAAAAKQNyrwAAAHJRAQAAWglpZ25vcmFibGVyGgAAAHIaAAAAchsAAABy2wEAADcIAABzFAAAAAAEAgEKARIBBAEQBBYCEAIEARQBctsBAABjAQAAAAAAAAAEAAAABgAAAGMAAABzZgAAAHQAagFqAnwAgwF9AXQAagFqA3wAgwFyOnQEdABqBXwAgwGDAWQBawJyLmQAUwB0BnwBfACDAn0Cbgh0B3wAgwF9AnQAagFqCHwAgwF9A3QJagp8AXwDfAJ0C2QCjQRWAAEAZABTACkDTnIBAAAAKQHaCnByZWNlZGVuY2UpDHKuAAAAcq8AAAByUwEAAHINAAAAcmsBAABygQEAAHJ+AAAAcn0AAAByfgEAAHJhAAAAcswBAAByegAAACkEcq8AAADaBHJvb3RyvwEAAHLeAAAAchoAAAByGgAAAHIbAAAAcuEBAABMCAAAcxIAAAAAAQwBDAESAgQBDAIIAQwBBAFy4QEAAGMBAAAAAAAAAAMAAAAJAAAAYwAAAHM4AAAAdAB8AIMBjyZ9AXgefAFEAF0WfQJ8AmoBgwB9AnwCchB8AlYAAQBxEFcAVwBkAVEAUgBYAGQBUwApAnoxCiAgICBZaWVsZCBub24tZW1wdHkgbGluZXMgZnJvbSBmaWxlIGF0IHBhdGgKICAgIE4pAnIMAAAA2gVzdHJpcCkDcq8AAABytgEAANoEbGluZXIaAAAAchoAAAByGwAAANoPbm9uX2VtcHR5X2xpbmVzWwgAAHMKAAAAAAQKAQoBCAEEAXLyAQAAYwEAAAAAAAAABAAAAAMAAAADAAAAcy4AAAB0AIgAgwF9AYcAZgFkAWQChAh8AUQAgwF9AnQBdAJ8AoMCfQN0A3wDZgCDAlMAKQN6YQogICAgR2l2ZW4gYSBwYXRoIHRvIGFuIC5lZ2ctbGluaywgcmVzb2x2ZSBkaXN0cmlidXRpb25zCiAgICBwcmVzZW50IGluIHRoZSByZWZlcmVuY2VkIHBhdGguCiAgICBjAQAAAAAAAAACAAAABAAAADMAAABzJAAAAHwAXRx9AXQAagFqAnQAagFqA4gAgwF8AYMCVgABAHECZABTACkBTikEcq4AAAByrwAAAHJCAAAAclMBAAApAnLuAAAA2gNyZWYpAXKvAAAAchoAAAByGwAAAHLvAAAAbQgAAHMCAAAABAF6I3Jlc29sdmVfZWdnX2xpbmsuPGxvY2Fscz4uPGdlbmV4cHI+KQRy8gEAAHIGAAAAcloAAADaBG5leHQpBHKvAAAAWhByZWZlcmVuY2VkX3BhdGhzWg5yZXNvbHZlZF9wYXRoc1oLZGlzdF9ncm91cHNyGgAAACkBcq8AAAByGwAAAHLiAQAAZggAAHMKAAAAAAUIAgoBCAIKAXLiAQAA2gpGaWxlRmluZGVyKQHaE19uYW1lc3BhY2VfaGFuZGxlcnMpAdoTX25hbWVzcGFjZV9wYWNrYWdlc2MCAAAAAAAAAAIAAAADAAAAQwAAAHMMAAAAfAF0AHwAPABkAVMAKQJhmgIAAFJlZ2lzdGVyIGBuYW1lc3BhY2VfaGFuZGxlcmAgdG8gZGVjbGFyZSBuYW1lc3BhY2UgcGFja2FnZXMKCiAgICBgaW1wb3J0ZXJfdHlwZWAgaXMgdGhlIHR5cGUgb3IgY2xhc3Mgb2YgYSBQRVAgMzAyICJJbXBvcnRlciIgKHN5cy5wYXRoIGl0ZW0KICAgIGhhbmRsZXIpLCBhbmQgYG5hbWVzcGFjZV9oYW5kbGVyYCBpcyBhIGNhbGxhYmxlIGxpa2UgdGhpczo6CgogICAgICAgIGRlZiBuYW1lc3BhY2VfaGFuZGxlcihpbXBvcnRlciwgcGF0aF9lbnRyeSwgbW9kdWxlTmFtZSwgbW9kdWxlKToKICAgICAgICAgICAgIyByZXR1cm4gYSBwYXRoX2VudHJ5IHRvIHVzZSBmb3IgY2hpbGQgcGFja2FnZXMKCiAgICBOYW1lc3BhY2UgaGFuZGxlcnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBpbXBvcnRlciBvYmplY3QgaGFzIGFscmVhZHkKICAgIGFncmVlZCB0aGF0IGl0IGNhbiBoYW5kbGUgdGhlIHJlbGV2YW50IHBhdGggaXRlbSwgYW5kIHRoZXkgc2hvdWxkIG9ubHkKICAgIHJldHVybiBhIHN1YnBhdGggaWYgdGhlIG1vZHVsZSBfX3BhdGhfXyBkb2VzIG5vdCBhbHJlYWR5IGNvbnRhaW4gYW4KICAgIGVxdWl2YWxlbnQgc3VicGF0aC4gIEZvciBhbiBleGFtcGxlIG5hbWVzcGFjZSBoYW5kbGVyLCBzZWUKICAgIGBgcGtnX3Jlc291cmNlcy5maWxlX25zX2hhbmRsZXJgYC4KICAgIE4pAXL2AQAAKQJywwEAAFoRbmFtZXNwYWNlX2hhbmRsZXJyGgAAAHIaAAAAchsAAAByhwAAAH0IAABzAgAAAAAPYwIAAAAAAAAACAAAAAwAAABDAAAAc94AAAB0AHwBgwF9AnwCZAFrCHIUZAFTAHQBagKDAI8aAQB0AWoDZAKDAQEAfAJqBHwAgwF9A1cAZAFRAFIAWAB8A2QBawhySGQBUwB0BWoGagd8AIMBfQR8BGQBawhygHQIagl8AIMBBAB9BHQFagZ8ADwAZwB8BF8KdAt8AIMBAQBuFHQMfARkA4MCc5R0DWQEfACDAoIBdA50D3wCgwJ9BXwFfAJ8AXwAfASDBH0GfAZkAWsJctp8BGoKfQd8B2oQfAaDAQEAfANqEXwAgwEBAHQSfAd8AHwEgwMBAHwGUwApBXpFRW5zdXJlIHRoYXQgbmFtZWQgcGFja2FnZSBpbmNsdWRlcyBhIHN1YnBhdGggb2YgcGF0aF9pdGVtIChpZiBuZWVkZWQpTtoGaWdub3Jl2ghfX3BhdGhfX3oOTm90IGEgcGFja2FnZTopE3IDAAAAckEBAADaDmNhdGNoX3dhcm5pbmdz2gxzaW1wbGVmaWx0ZXLaC2ZpbmRfbW9kdWxlckAAAAByowAAAHK3AAAA2gV0eXBlc9oKTW9kdWxlVHlwZXL5AQAA2g5fc2V0X3BhcmVudF9uc3KxAAAAcswAAABypwAAAHL2AQAAcrMAAADaC2xvYWRfbW9kdWxl2hFfcmVidWlsZF9tb2RfcGF0aCkI2gtwYWNrYWdlTmFtZXLEAQAAcsEBAAByqQAAAHKoAAAA2gdoYW5kbGVycs0BAAByrwAAAHIaAAAAchoAAAByGwAAANoKX2hhbmRsZV9uc48IAABzLgAAAAADCAEIAQQDCgEKARQCCAEEAQwBCAEUAQYBCgEKAQoBCgEOAQgBBgEKAQoBDAFyBAIAAGMDAAAAAAAAAAUAAAAEAAAAAwAAAHNqAAAAZAFkAoQAdABqAUQAgwGJAocCZgFkA2QEhAiJAYcAhwFmAmQFZAaECH0DdAJ8AHwDZAeNAn0EZAhkAoQAfAREAIMBfQR0A3wCagR0BYMCcmB8BHwCagRkCWQJhQI8AG4GfAR8Al8EZAlTACkKenEKICAgIFJlYnVpbGQgbW9kdWxlLl9fcGF0aF9fIGVuc3VyaW5nIHRoYXQgYWxsIGVudHJpZXMgYXJlIG9yZGVyZWQKICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlaXIgc3lzLnBhdGggb3JkZXIKICAgIGMBAAAAAAAAAAIAAAAEAAAAUwAAAHMUAAAAZwB8AF0MfQF0AHwBgwGRAnEEUwByGgAAACkBctkBAAApAnLuAAAA2gFwchoAAAByGgAAAHIbAAAActABAACzCAAAcwIAAAAGAHolX3JlYnVpbGRfbW9kX3BhdGguPGxvY2Fscz4uPGxpc3Rjb21wPmMBAAAAAAAAAAEAAAALAAAAEwAAAHMoAAAAeQqIAGoAfACDAVMABAB0AWsKciIBAAEAAQB0AmQBgwFTAFgAZAJTACkDei8KICAgICAgICBXb3JrYXJvdW5kIGZvciAjNTIwIGFuZCAjNTEzLgogICAgICAgINoDaW5mTikD2gVpbmRleHJFAAAA2gVmbG9hdCkBct4AAAApAdoIc3lzX3BhdGhyGgAAAHIbAAAA2hNzYWZlX3N5c19wYXRoX2luZGV4tQgAAHMIAAAAAAQCAQoBDgF6Ll9yZWJ1aWxkX21vZF9wYXRoLjxsb2NhbHM+LnNhZmVfc3lzX3BhdGhfaW5kZXhjAQAAAAAAAAAEAAAABAAAABMAAABzPAAAAHwAagB0AWoCgwF9AYgAagNkAYMBZAIXAH0CfAFkA3wCCwCFAhkAfQOIAXQEdAFqAmoFfAODAYMBgwFTACkEelIKICAgICAgICBSZXR1cm4gdGhlIG9yZGluYWwgb2YgdGhlIHBhdGggYmFzZWQgb24gaXRzIHBvc2l0aW9uIGluIHN5cy5wYXRoCiAgICAgICAgcjsAAAByDwAAAE4pBnIOAAAAcq4AAABydQEAANoFY291bnRy2QEAAHJCAAAAKQRyrwAAANoKcGF0aF9wYXJ0c1oMbW9kdWxlX3BhcnRzcroBAAApAtoMcGFja2FnZV9uYW1lcgoCAAByGgAAAHIbAAAA2hRwb3NpdGlvbl9pbl9zeXNfcGF0aL4IAABzCAAAAAAEDAEOAQ4Bei9fcmVidWlsZF9tb2RfcGF0aC48bG9jYWxzPi5wb3NpdGlvbl9pbl9zeXNfcGF0aCkBcjMAAABjAQAAAAAAAAACAAAABAAAAFMAAABzFAAAAGcAfABdDH0BdAB8AYMBkQJxBFMAchoAAAApAXLZAQAAKQJy7gAAAHIFAgAAchoAAAByGgAAAHIbAAAActABAADICAAAcwIAAAAGAE4pBnJAAAAAcq8AAABy1gEAAHKgAAAAcvkBAABy+wAAACkFWglvcmlnX3BhdGhyDQIAAHKoAAAAcg4CAADaCG5ld19wYXRochoAAAApA3INAgAAcgoCAAByCQIAAHIbAAAAcgECAACuCAAAcxAAAAAABRACDAkOCQwBDgIMARACcgECAABjAQAAAAAAAAAFAAAAEgAAAEMAAABzxAAAAHQAagGDAAEAeqx8AHQCawZyFmQBUwB0A2oEfQF8AGoFZAKDAVwDfQJ9A30DfAJyeHQGfAKDAQEAfAJ0AmsHckh0B3wCgwEBAHkQdANqCHwCGQBqCX0BVwBuHgQAdAprCnJ2AQABAAEAdAtkA3wCgwKCAVkAbgJYAHQCagx8AnCCZAFnAIMCag18AIMBAQB0AmoMfABnAIMCAQB4FnwBRABdDn0EdA58AHwEgwIBAHGgVwBXAGQBdABqD4MAAQBYAGQBUwApBHo5RGVjbGFyZSB0aGF0IHBhY2thZ2UgJ3BhY2thZ2VOYW1lJyBpcyBhIG5hbWVzcGFjZSBwYWNrYWdlTnI7AAAAeg5Ob3QgYSBwYWNrYWdlOikQ2gRfaW1w2gxhY3F1aXJlX2xvY2ty9wEAAHJAAAAAcq8AAADaCnJwYXJ0aXRpb25yVwAAAHKlAAAAcqMAAABy+QEAAHK5AQAAcswAAABy6wAAAHKzAAAAcgQCAADaDHJlbGVhc2VfbG9jaykFcgICAAByrwAAAHK7AQAAcrwAAAByxAEAAHIaAAAAchoAAAByGwAAAHJXAAAA0AgAAHMmAAAAAAMIAQIBCAEEAgYBEAIEAQgBCAEIAQIBEAEOARAEFgEMAgoDEgNjAgAAAAAAAAAEAAAACgAAAEMAAABzSgAAAHQAagGDAAEAejJ4LHQCagN8AWYAgwJEAF0cfQJ0BHwCfACDAn0DfANyGHQFfAN8AoMCAQBxGFcAVwBkAXQAagaDAAEAWABkAVMAKQJ6REVuc3VyZSB0aGF0IHByZXZpb3VzbHktZGVjbGFyZWQgbmFtZXNwYWNlIHBhY2thZ2VzIGluY2x1ZGUgcGF0aF9pdGVtTikHchACAAByEQIAAHL3AQAAcrcAAAByBAIAAHKJAAAAchMCAAApBHLEAQAAcrsBAADaB3BhY2thZ2VyzQEAAHIaAAAAchoAAAByGwAAAHKJAAAA8ggAAHMOAAAAAAIIAQIBEgEKAQQBEgJjBAAAAAAAAAAHAAAABAAAAEMAAABzRgAAAHQAagFqAnwBfAJqA2QBgwFkBBkAgwJ9BHQEfASDAX0FeCB8A2oFRABdEn0GdAR8BoMBfAVrAnIoUABxKFcAfARTAGQDUwApBXpCQ29tcHV0ZSBhbiBucy1wYWNrYWdlIHN1YnBhdGggZm9yIGEgZmlsZXN5c3RlbSBvciB6aXBmaWxlIGltcG9ydGVycjsAAAByDwAAAE5y+gAAACkGcq4AAAByrwAAAHJCAAAAcg4AAABy2QEAAHL5AQAAKQdywQEAAHLEAQAAcgICAAByqAAAAHLNAQAA2gpub3JtYWxpemVkcvIAAAByGgAAAHIaAAAAchsAAADaD2ZpbGVfbnNfaGFuZGxlcv4IAABzDAAAAAADGAEIAQwBDAEGA3IWAgAAYwQAAAAAAAAABAAAAAEAAABDAAAAcwQAAABkAFMAKQFOchoAAAApBHLBAQAAcsQBAAByAgIAAHKoAAAAchoAAAByGgAAAHIbAAAA2g9udWxsX25zX2hhbmRsZXISCQAAcwIAAAAAAXIXAgAAYwEAAAAAAAAAAQAAAAUAAABDAAAAcyAAAAB0AGoBagJ0AGoBagN0AGoBagR0BXwAgwGDAYMBgwFTACkBejFOb3JtYWxpemUgYSBmaWxlL2RpciBuYW1lIGZvciBjb21wYXJpc29uIHB1cnBvc2VzKQZyrgAAAHKvAAAA2ghub3JtY2FzZdoIcmVhbHBhdGhykQEAANoNX2N5Z3dpbl9wYXRjaCkBckgBAAByGgAAAHIaAAAAchsAAABydQAAABkJAABzAgAAAAACYwEAAAAAAAAAAQAAAAIAAABDAAAAcxoAAAB0AGoBZAFrAnIWdAJqA2oEfACDAVMAfABTACkCYQgBAAAKICAgIENvbnRyYXJ5IHRvIFBPU0lYIDIwMDgsIG9uIEN5Z3dpbiwgZ2V0Y3dkICgzKSBjb250YWlucwogICAgc3ltbGluayBjb21wb25lbnRzLiBVc2luZwogICAgb3MucGF0aC5hYnNwYXRoKCkgd29ya3MgYXJvdW5kIHRoaXMgbGltaXRhdGlvbi4gQSBmaXggaW4gb3MuZ2V0Y3dkKCkKICAgIHdvdWxkIHByb2JhYmx5IGJldHRlciwgaW4gQ3lnd2luIGV2ZW4gbW9yZSBzbywgZXhjZXB0CiAgICB0aGF0IHRoaXMgc2VlbXMgdG8gYmUgYnkgZGVzaWduLi4uCiAgICDaBmN5Z3dpbikFckAAAAByQQAAAHKuAAAAcq8AAADaB2Fic3BhdGgpAXJIAQAAchoAAAByGgAAAHIbAAAAchoCAAAeCQAAcwIAAAAACHIaAgAAYwIAAAAAAAAAAwAAAAsAAABDAAAAczIAAAB5CHwBfAAZAFMABAB0AGsKciwBAAEAAQB0AXwAgwEEAHwBfAA8AH0CfAJTAFgAZABTACkBTikCcqQAAABydQAAACkDckgBAABytAAAANoGcmVzdWx0choAAAByGgAAAHIbAAAActkBAAApCQAAcwoAAAAAAQIBCAEOARABctkBAABjAQAAAAAAAAABAAAAAgAAAEMAAABzDgAAAHwAagCDAGoBZAGDAVMAKQJ6NwogICAgRGV0ZXJtaW5lIGlmIGdpdmVuIHBhdGggYXBwZWFycyB0byBiZSBhbiBlZ2cuCiAgICB6BC5lZ2cpAnIcAQAAcscBAAApAXKvAAAAchoAAAByGgAAAHIbAAAAcn0BAAAxCQAAcwIAAAAABHJ9AQAAYwEAAAAAAAAAAQAAAAUAAABDAAAAcyAAAAB0AHwAgwFvHnQBagJqA3QBagJqBHwAZAFkAoMDgwFTACkDekAKICAgIERldGVybWluZSBpZiBnaXZlbiBwYXRoIGFwcGVhcnMgdG8gYmUgYW4gdW5wYWNrZWQgZWdnLgogICAgeghFR0ctSU5GT3oIUEtHLUlORk8pBXJ9AQAAcq4AAAByrwAAAHK0AQAAckIAAAApAXKvAAAAchoAAAByGgAAAHIbAAAActoBAAA4CQAAcwQAAAAABQgBctoBAABjAQAAAAAAAAAEAAAABQAAAEMAAABzPAAAAHwAagBkAYMBfQF8AWoBgwB9AnwBcjhkAWoCfAGDAX0DdAN0BGoFfAMZAHwCdARqBXwAGQCDAwEAZABTACkCTnI7AAAAKQZyDgAAAHIAAQAAckIAAADaB3NldGF0dHJyQAAAAHKjAAAAKQRyAgIAAHK6AQAAcskAAAByuwEAAHIaAAAAchoAAAByGwAAAHL/AQAAQgkAAHMKAAAAAAEKAQgBBAEKAXL/AQAAYwEAAAAAAAAAAwAAAAMAAABjAAAAc2gAAAB0AHwAdAFqAoMCcj54VnwAagODAEQAXSJ9AXwBagSDAH0BfAFyFnwBagVkAYMBDAByFnwBVgABAHEWVwBuJngkfABEAF0cfQJ4FnQGfAKDAUQAXQp9AXwBVgABAHFSVwBxRFcAZAJTACkDejlZaWVsZCBub24tZW1wdHkvbm9uLWNvbW1lbnQgbGluZXMgb2YgYSBzdHJpbmcgb3Igc2VxdWVuY2X6ASNOKQdyoAAAAHIEAAAAcsoAAADaCnNwbGl0bGluZXNy8AEAAHK+AAAAcm4AAAApA9oEc3Ryc9oBc9oCc3NyGgAAAHIaAAAAchsAAABybgAAAEoJAABzEAAAAAACDAEOAQgCEAEMAgoBDgF6DFx3KyhcLlx3KykqJHqWCiAgICAoP1A8bmFtZT5bXi1dKykgKAogICAgICAgIC0oP1A8dmVyPlteLV0rKSAoCiAgICAgICAgICAgIC1weSg/UDxweXZlcj5bXi1dKykgKAogICAgICAgICAgICAgICAgLSg/UDxwbGF0Pi4rKQogICAgICAgICAgICApPwogICAgICAgICk/CiAgICApPwogICAgYwAAAAAAAAAAAAAAAAQAAABAAAAAc4wAAABlAFoBZABaAmQBWgNmAGYAZAJmA2QDZASEAVoEZAVkBoQAWgVkB2QIhABaBmQZZApkC4QBWgdkDGQNhABaCGQaZA5kD4QBWgllCmoLZBCDAVoMZQ1kG2QRZBKEAYMBWg5lDWQTZBSEAIMBWg9lDWQcZBVkFoQBgwFaEGUNZB1kF2QYhAGDAVoRZAJTACkecmMAAAB6M09iamVjdCByZXByZXNlbnRpbmcgYW4gYWR2ZXJ0aXNlZCBpbXBvcnRhYmxlIG9iamVjdE5jBgAAAAAAAAAGAAAAAwAAAEMAAABzPAAAAHQAfAKDAXMSdAFkAXwCgwKCAXwBfABfAnwCfABfA3QEfAODAXwAXwV0BHwEgwF8AF8GfAV8AF8HZABTACkCTnoTSW52YWxpZCBtb2R1bGUgbmFtZSkI2gZNT0RVTEVyRQAAAHLJAAAA2gttb2R1bGVfbmFtZdoFdHVwbGXaBWF0dHJzcgMBAABykQAAACkGco8AAAByyQAAAHIlAgAAcicCAAByAwEAAHKRAAAAchoAAAByGgAAAHIbAAAAct8AAABqCQAAcw4AAAAAAQgBCgEGAQYBCgEKAXoTRW50cnlQb2ludC5fX2luaXRfX2MBAAAAAAAAAAIAAAAEAAAAQwAAAHNIAAAAZAF8AGoAfABqAWYCFgB9AXwAagJyKnwBZAJkA2oDfABqAoMBFwA3AH0BfABqBHJEfAFkBGQFagN8AGoEgwEWADcAfQF8AVMAKQZOegclcyA9ICVz+gE6cjsAAAB6BSBbJXNd+gEsKQVyyQAAAHIlAgAAcicCAAByQgAAAHIDAQAAKQJyjwAAAHIiAgAAchoAAAByGgAAAHIbAAAAcp0AAABzCQAAcwwAAAAAARABBgEUAQYBFAF6EkVudHJ5UG9pbnQuX19zdHJfX2MBAAAAAAAAAAEAAAADAAAAQwAAAHMMAAAAZAF0AHwAgwEWAFMAKQJOehRFbnRyeVBvaW50LnBhcnNlKCVyKSkBcqIAAAApAXKPAAAAchoAAAByGgAAAHIbAAAAcpAAAAB7CQAAcwIAAAAAAXoTRW50cnlQb2ludC5fX3JlcHJfX1RjAgAAAAAAAAAEAAAABQAAAE8AAABzNgAAAHwBDABzDnwCcw58A3IedABqAWQBdAJkAmQDjQMBAHwBci58AGoDfAJ8A44BAQB8AGoEgwBTACkEekgKICAgICAgICBSZXF1aXJlIHBhY2thZ2VzIGZvciB0aGlzIEVudHJ5UG9pbnQsIHRoZW4gcmVzb2x2ZSBpdC4KICAgICAgICB6SlBhcmFtZXRlcnMgdG8gbG9hZCBhcmUgZGVwcmVjYXRlZC4gIENhbGwgLnJlc29sdmUgYW5kIC5yZXF1aXJlIHNlcGFyYXRlbHkucjwAAAApAXJyAQAAKQVyQQEAAHJCAQAAcooAAABySQAAAHLnAAAAKQRyjwAAAHJJAAAAcjgAAADaBmt3YXJnc3IaAAAAchoAAAByGwAAAHKOAQAAfgkAAHMQAAAAAAQOAQQBAgICAQgCBAEMAXoPRW50cnlQb2ludC5sb2FkYwEAAAAAAAAAAwAAABAAAABDAAAAc1YAAAB0AHwAagFkAWcBZAJkA40DfQF5EHQCagN0BHwAagV8AYMDUwAEAHQGawpyUAEAfQIBAHoSdAd0CHwCgwGDAYIBVwBZAGQEZAR9An4CWABuAlgAZARTACkFekQKICAgICAgICBSZXNvbHZlIHRoZSBlbnRyeSBwb2ludCBmcm9tIGl0cyBtb2R1bGUgYW5kIGF0dHJzLgogICAgICAgIHIWAAAAcgEAAAApAtoIZnJvbWxpc3TaBWxldmVsTikJcqUAAAByJQIAANoJZnVuY3Rvb2xz2gZyZWR1Y2VypgAAAHInAgAAcrkBAABy4gAAAHKiAAAAKQNyjwAAAHKoAAAAcmEBAAByGgAAAHIaAAAAchsAAABy5wAAAI0JAABzCgAAAAAEEgECARABEAF6EkVudHJ5UG9pbnQucmVzb2x2ZWMDAAAAAAAAAAUAAAAGAAAAQwAAAHNOAAAAfABqAHIYfABqAQwAchh0AmQBfACDAoIBfABqAWoDfABqAIMBfQN0BGoFfAN8AXwCfABqAGQCjQR9BHQGdAd0BGoIfASDAoMBAQBkAFMAKQNOeiZDYW4ndCByZXF1aXJlKCkgd2l0aG91dCBhIGRpc3RyaWJ1dGlvbikBcgMBAAApCXIDAQAAcpEAAAByZwAAAHLwAAAAclgAAABy5wAAAHL7AAAAcgYAAABy6AAAACkFco8AAAByBwEAAHIIAQAAcukAAAByKQAAAHIaAAAAchoAAAByGwAAAHJJAAAAlwkAAHMKAAAAAAEOAQoHDgEUAXoSRW50cnlQb2ludC5yZXF1aXJlel1ccyooP1A8bmFtZT4uKz8pXHMqPVxzKig/UDxtb2R1bGU+W1x3Ll0rKVxzKig6XHMqKD9QPGF0dHI+W1x3Ll0rKSk/XHMqKD9QPGV4dHJhcz5cWy4qXF0pP1xzKiRjAwAAAAAAAAAIAAAABgAAAEMAAABzZgAAAHwAagBqAXwBgwF9A3wDcx5kAX0EdAJ8BHwBgwKCAXwDagODAH0FfABqBHwFZAIZAIMBfQZ8BWQDGQBySnwFZAMZAGoFZASDAW4CZgB9B3wAfAVkBRkAfAVkBhkAfAd8BnwCgwVTACkHYRQBAABQYXJzZSBhIHNpbmdsZSBlbnRyeSBwb2ludCBmcm9tIHN0cmluZyBgc3JjYAoKICAgICAgICBFbnRyeSBwb2ludCBzeW50YXggZm9sbG93cyB0aGUgZm9ybTo6CgogICAgICAgICAgICBuYW1lID0gc29tZS5tb2R1bGU6c29tZS5hdHRyIFtleHRyYTEsIGV4dHJhMl0KCiAgICAgICAgVGhlIGVudHJ5IG5hbWUgYW5kIG1vZHVsZSBuYW1lIGFyZSByZXF1aXJlZCwgYnV0IHRoZSBgYDphdHRyc2BgIGFuZAogICAgICAgIGBgW2V4dHJhc11gYCBwYXJ0cyBhcmUgb3B0aW9uYWwKICAgICAgICB6OUVudHJ5UG9pbnQgbXVzdCBiZSBpbiAnbmFtZT1tb2R1bGU6YXR0cnMgW2V4dHJhc10nIGZvcm1hdHIDAQAA2gRhdHRycjsAAAByyQAAAHKoAAAAKQbaB3BhdHRlcm5yPwAAAHJFAAAA2glncm91cGRpY3TaDV9wYXJzZV9leHRyYXNyDgAAACkIcuQAAADaA3NyY3KRAAAAckcAAAByRQEAANoDcmVzcgMBAAByJwIAAHIaAAAAchoAAAByGwAAAHLLAAAArQkAAHMQAAAAAAsMAQQBBAEKAQgBDgEaAXoQRW50cnlQb2ludC5wYXJzZWMCAAAAAAAAAAMAAAADAAAAQwAAAHMoAAAAfAFzCGYAUwB0AGoBZAF8ARcAgwF9AnwCagJyInQDgwCCAXwCagRTACkCTtoBeCkFcmIAAAByywAAANoFc3BlY3NyRQAAAHIDAQAAKQNy5AAAAFoLZXh0cmFzX3NwZWNykgAAAHIaAAAAchoAAAByGwAAAHIyAgAAwQkAAHMMAAAAAAIEAQQBDgEGAQYBehhFbnRyeVBvaW50Ll9wYXJzZV9leHRyYXNjBAAAAAAAAAAHAAAABQAAAEMAAABzWgAAAHQAfAGDAXMSdAFkAXwBgwKCAWkAfQR4PnQCfAKDAUQAXTJ9BXwAagN8BXwDgwJ9BnwGagR8BGsGckh0AWQCfAF8BmoEgwOCAXwGfAR8BmoEPABxIFcAfARTACkDehpQYXJzZSBhbiBlbnRyeSBwb2ludCBncm91cHoSSW52YWxpZCBncm91cCBuYW1lehVEdXBsaWNhdGUgZW50cnkgcG9pbnQpBXIkAgAAckUAAABybgAAAHLLAAAAcskAAAApB3LkAAAAckQAAADaBWxpbmVzcpEAAADaBHRoaXNy8QEAANoCZXByGgAAAHIaAAAAchsAAADaC3BhcnNlX2dyb3VwygkAAHMSAAAAAAMIAQoBBAEOAQwBCgEOAQ4BehZFbnRyeVBvaW50LnBhcnNlX2dyb3VwYwMAAAAAAAAABgAAAAUAAABDAAAAc3gAAAB0AHwBdAGDAnIUfAFqAoMAfQFuCHQDfAGDAX0BaQB9A3hSfAFEAF1KXAJ9BH0FfARkAWsIckR8BXM8cSZ0BGQCgwGCAXwEagWDAH0EfAR8A2sGcl50BGQDfASDAoIBfABqBnwEfAV8AoMDfAN8BDwAcSZXAHwDUwApBHohUGFyc2UgYSBtYXAgb2YgZW50cnkgcG9pbnQgZ3JvdXBzTnolRW50cnkgcG9pbnRzIG11c3QgYmUgbGlzdGVkIGluIGdyb3Vwc3oURHVwbGljYXRlIGdyb3VwIG5hbWUpB3KgAAAAciUAAAByKQAAAHJvAAAAckUAAABy8AEAAHI6AgAAKQZy5AAAANoEZGF0YXKRAAAA2gRtYXBzckQAAAByNwIAAHIaAAAAchoAAAByGwAAANoJcGFyc2VfbWFw1wkAAHMcAAAAAAMKAQoCCAEEAQ4BCAEEAQIBCAEIAQgBCgEWAXoURW50cnlQb2ludC5wYXJzZV9tYXApAVQpAk5OKQFOKQFOKQFOKRJyFgAAAHIXAAAAchgAAAByGQAAAHLfAAAAcp0AAABykAAAAHKOAQAAcucAAABySQAAAHJMAQAAcmkBAAByMAIAAHIQAQAAcssAAAByMgIAAHI6AgAAcj0CAAByGgAAAHIaAAAAchoAAAByGwAAAHJjAAAAZwkAAHMgAAAACAEEAhAJCAgIAwoPCAoKDQQBBggCAQwTDAkCAQwMAgFjAQAAAAAAAAACAAAABAAAAEMAAABzPgAAAHwAcwhkAVMAdABqAWoCfACDAX0BfAFkBBkAagNkA4MBcjp0AGoBagR8AWQAZAWFAhkAZAYXAIMBUwB8AFMAKQdOcqoAAAByDwAAAHoEbWQ1PXL6AAAAcvoAAAApAXKqAAAAKQVyBQAAAHLLAAAAWgh1cmxwYXJzZXK+AAAAWgp1cmx1bnBhcnNlKQJy9QAAANoGcGFyc2VkchoAAAByGgAAAHIbAAAA2hRfcmVtb3ZlX21kNV9mcmFnbWVudOsJAABzDAAAAAABBAEEAQwBDgEYAXI/AgAAYwEAAAAAAAAABgAAAAMAAABDAAAAc0AAAABkAWQChAB9AXQAfAF8AIMCfQJ0AXQCfAKDAWQDgwJ9A3wDagNkBIMBXAN9BH0EfQV0BHwFagWDAIMBcD5kBVMAKQZ6hAogICAgR2l2ZW4gYW4gaXRlcmFibGUgb2YgbGluZXMgZnJvbSBhIE1ldGFkYXRhIGZpbGUsIHJldHVybgogICAgdGhlIHZhbHVlIG9mIHRoZSBWZXJzaW9uIGZpZWxkLCBpZiBwcmVzZW50LCBvciBOb25lIG90aGVyd2lzZS4KICAgIGMBAAAAAAAAAAEAAAACAAAAUwAAAHMOAAAAfABqAIMAagFkAYMBUwApAk56CHZlcnNpb246KQJyHAEAAHK+AAAAKQFy8QEAAHIaAAAAchoAAAByGwAAANoPaXNfdmVyc2lvbl9saW5l+QkAAHMCAAAAAAF6K192ZXJzaW9uX2Zyb21fZmlsZS48bG9jYWxzPi5pc192ZXJzaW9uX2xpbmVyqgAAAHIoAgAATikGcgcAAABy9AEAAHLlAQAA2glwYXJ0aXRpb25yawAAAHLwAQAAKQZyNwIAAHJAAgAAWg12ZXJzaW9uX2xpbmVzcvEBAAByvAAAAHJgAQAAchoAAAByGgAAAHIbAAAA2hJfdmVyc2lvbl9mcm9tX2ZpbGX0CQAAcwoAAAAABQgCCgEOARABckICAABjAAAAAAAAAAAAAAAABwAAAAAAAABznAEAAGUAWgFkAFoCZAFaA2QCWgRkA2QDZANkA2UFZANlBmYHZARkBYQBWgdlCGRSZAZkB4QBgwFaCWQIZAmEAFoKZQtkCmQLhACDAVoMZAxkDYQAWg1kDmQPhABaDmQQZBGEAFoPZBJkE4QAWhBkFGQVhABaEWQWZBeEAFoSZBhkGYQAWhNlC2QaZBuEAIMBWhRlC2QcZB2EAIMBWhVkHmQfhABaFmULZCBkIYQAgwFaF2ULZCJkI4QAgwFaGGUZZCRkJYQAgwFaGmQmZCeEAFobZgBmAWQoZCmEAVocZCpkK4QAWh1kLGQthABaHmQuZC+EAFofZFNkMWQyhAFaIGQzZDSEAFohZDVkNoQAWiJkN2Q4hABaI2Q5ZDqEAFokhwBmAWQ7ZDyECFolZSZlJ2Q9gwKQAXM2WyVlCGRUZD5kP4QBgwFaKGRAZEGEAFopZEJkQ4QAWipkVWREZEWEAVorZEZkR4QAWixkVmRIZEmEAVotZEpkS4QAWi5kTGRNhABaL2ROZE+EAFowZQtkUGRRhACDAVoxhwAEAFoyUwApV3JhAAAAejVXcmFwIGFuIGFjdHVhbCBvciBwb3RlbnRpYWwgc3lzLnBhdGggZW50cnkgdy9tZXRhZGF0YXoIUEtHLUlORk9OYwgAAAAAAAAACAAAAAIAAABDAAAAc0YAAAB0AHwDcAhkAYMBfABfAXwEZABrCXIgdAJ8BIMBfABfA3wFfABfBHwGfABfBXwBfABfBnwHfABfB3wCcD50CHwAXwlkAFMAKQJOWgdVbmtub3duKQpyagAAAHIFAQAAcmsAAADaCF92ZXJzaW9uchkBAAByQQAAAHL1AAAAcu4BAABygQAAANoJX3Byb3ZpZGVyKQhyjwAAAHL1AAAAcr8BAAByBQEAAHIcAAAAchkBAAByQQAAAHLuAQAAchoAAAByGgAAAHIbAAAAct8AAAAFCgAAcxAAAAAABA4BCAEKAQYBBgEGAQYBehVEaXN0cmlidXRpb24uX19pbml0X19jBAAAAAAAAAALAAAABwAAAEsAAABzfgAAAGQAZwFkARQAXAR9BX0GfQd9CHQAagFqAnwCgwFcAn0CfQl8CWoDgwB0BGsGcl50BHwJagODABkAfQB0BXwCgwF9CnwKcl58CmoGZAJkA2QEZAWDBFwEfQV9Bn0HfQh8AHwBfANmAnwFfAZ8B3wIZAacBHwElwKOAWoHgwBTACkHTnK6AAAAcskAAADaA3ZlcloFcHl2ZXJyRgAAACkEcgUBAAByHAAAAHIZAQAAckEAAAApCHKuAAAAcq8AAABy0QEAAHIcAQAA2hFfZGlzdHJpYnV0aW9uSW1wbNoIRUdHX05BTUVyRAAAANoPX3JlbG9hZF92ZXJzaW9uKQty5AAAAHL1AAAAcn4BAAByvwEAAHInAAAAcgUBAAByHAAAAHIZAQAAckEAAABy1AEAAHI/AAAAchoAAAByGgAAAHIbAAAAcswBAAASCgAAcxYAAAAAAhIBEAEMAQwCCAEEAQQBFAICAQoBehpEaXN0cmlidXRpb24uZnJvbV9sb2NhdGlvbmMBAAAAAAAAAAEAAAABAAAAQwAAAHMEAAAAfABTACkBTnIaAAAAKQFyjwAAAHIaAAAAchoAAAByGwAAAHJIAgAAIwoAAHMCAAAAAAF6HERpc3RyaWJ1dGlvbi5fcmVsb2FkX3ZlcnNpb25jAQAAAAAAAAABAAAABgAAAEMAAABzKAAAAHwAagB8AGoBfABqAnQDfABqBIMBfABqBXAcZAF8AGoGcCRkAWYGUwApAk5yqgAAACkH2g5wYXJzZWRfdmVyc2lvbnLuAQAAcjMAAAByPwIAAHL1AAAAchkBAAByQQAAACkBco8AAAByGgAAAHIaAAAAchsAAAByHgEAACYKAABzDAAAAAADBAEEAQQBCAEIAXoURGlzdHJpYnV0aW9uLmhhc2hjbXBjAQAAAAAAAAABAAAAAgAAAEMAAABzCgAAAHQAfABqAYMBUwApAU4pAtoEaGFzaHIeAQAAKQFyjwAAAHIaAAAAchoAAAByGwAAANoIX19oYXNoX18xCgAAcwIAAAAAAXoVRGlzdHJpYnV0aW9uLl9faGFzaF9fYwIAAAAAAAAAAgAAAAIAAABDAAAAcwwAAAB8AGoAfAFqAGsAUwApAU4pAXIeAQAAKQJyjwAAAHIkAQAAchoAAAByGgAAAHIbAAAA2gZfX2x0X180CgAAcwIAAAAAAXoTRGlzdHJpYnV0aW9uLl9fbHRfX2MCAAAAAAAAAAIAAAACAAAAQwAAAHMMAAAAfABqAHwBagBrAVMAKQFOKQFyHgEAACkCco8AAAByJAEAAHIaAAAAchoAAAByGwAAANoGX19sZV9fNwoAAHMCAAAAAAF6E0Rpc3RyaWJ1dGlvbi5fX2xlX19jAgAAAAAAAAACAAAAAgAAAEMAAABzDAAAAHwAagB8AWoAawRTACkBTikBch4BAAApAnKPAAAAciQBAAByGgAAAHIaAAAAchsAAADaBl9fZ3RfXzoKAABzAgAAAAABehNEaXN0cmlidXRpb24uX19ndF9fYwIAAAAAAAAAAgAAAAIAAABDAAAAcwwAAAB8AGoAfAFqAGsFUwApAU4pAXIeAQAAKQJyjwAAAHIkAQAAchoAAAByGgAAAHIbAAAA2gZfX2dlX189CgAAcwIAAAAAAXoTRGlzdHJpYnV0aW9uLl9fZ2VfX2MCAAAAAAAAAAIAAAADAAAAQwAAAHMcAAAAdAB8AXwAagGDAnMQZAFTAHwAagJ8AWoCawJTACkCTkYpA3KgAAAAco0AAAByHgEAACkCco8AAAByJAEAAHIaAAAAchoAAAByGwAAANoGX19lcV9fQAoAAHMGAAAAAAEMAgQBehNEaXN0cmlidXRpb24uX19lcV9fYwIAAAAAAAAAAgAAAAIAAABDAAAAcwoAAAB8AHwBawIMAFMAKQFOchoAAAApAnKPAAAAciQBAAByGgAAAHIaAAAAchsAAADaBl9fbmVfX0YKAABzAgAAAAABehNEaXN0cmlidXRpb24uX19uZV9fYwEAAAAAAAAAAgAAAAsAAABDAAAAczAAAAB5BnwAagBTAAQAdAFrCnIqAQABAAEAfABqAmoDgwAEAHwAXwB9AXwBUwBYAGQAUwApAU4pBNoEX2tleXK5AQAAcgUBAAByHAEAACkCco8AAAByMwAAAHIaAAAAchoAAAByGwAAAHIzAAAATQoAAHMKAAAAAAICAQYBDgEQAXoQRGlzdHJpYnV0aW9uLmtleWMBAAAAAAAAAAEAAAADAAAAQwAAAHMcAAAAdAB8AGQBgwJzFnQBfABqAoMBfABfA3wAagNTACkCTtoPX3BhcnNlZF92ZXJzaW9uKQRysQAAAHIhAAAAchwAAAByUwIAACkBco8AAAByGgAAAHIaAAAAchsAAABySQIAAFUKAABzBgAAAAACCgEMAnobRGlzdHJpYnV0aW9uLnBhcnNlZF92ZXJzaW9uYwEAAAAAAAAABAAAAAUAAABDAAAAc1gAAAB0AGoBagJ9AXQDfABqBHwBgwJ9AnwCcxxkAFMAfABqAXMmZABTAHQFagZkAYMBageDAGoIZAJkA4MCfQN0CWoKfANqC2YAdAx8AIMBjgF0DYMCAQBkAFMAKQROYT4BAAAKICAgICAgICAgICAgJ3twcm9qZWN0X25hbWV9ICh7dmVyc2lvbn0pJyBpcyBiZWluZyBwYXJzZWQgYXMgYSBsZWdhY3ksCiAgICAgICAgICAgIG5vbiBQRVAgNDQwLAogICAgICAgICAgICB2ZXJzaW9uLiBZb3UgbWF5IGZpbmQgb2RkIGJlaGF2aW9yIGFuZCBzb3J0IG9yZGVyLgogICAgICAgICAgICBJbiBwYXJ0aWN1bGFyIGl0IHdpbGwgYmUgc29ydGVkIGFzIGxlc3MgdGhhbiAwLjAuIEl0CiAgICAgICAgICAgIGlzIHJlY29tbWVuZGVkIHRvIG1pZ3JhdGUgdG8gUEVQIDQ0MCBjb21wYXRpYmxlCiAgICAgICAgICAgIHZlcnNpb25zLgogICAgICAgICAgICByZAEAAHK7AAAAKQ5yEgAAAHIcAAAAch8AAAByoAAAAHJTAgAAci0BAAByLgEAAHLwAQAAcsAAAAByQQEAAHJCAQAAcpQAAADaBHZhcnNyFQAAACkEco8AAABaAkxWWglpc19sZWdhY3lyMgEAAHIaAAAAchoAAAByGwAAANoUX3dhcm5fbGVnYWN5X3ZlcnNpb25cCgAAcxIAAAAAAQgBDAEEAQQIBgEEAgQHEgJ6IURpc3RyaWJ1dGlvbi5fd2Fybl9sZWdhY3lfdmVyc2lvbmMBAAAAAAAAAAQAAAALAAAAQwAAAHNUAAAAeQZ8AGoAUwAEAHQBawpyTgEAAQABAHwAagKDAH0BfAFkAGsIckp8AGoDfABqBIMBfQJkAWoFfABqBHwCgwJ9A3QGfAN8AIMCggF8AVMAWABkAFMAKQJOejRNaXNzaW5nICdWZXJzaW9uOicgaGVhZGVyIGFuZC9vciB7fSBmaWxlIGF0IHBhdGg6IHt9KQdyQwIAAHK5AQAA2gxfZ2V0X3ZlcnNpb27aHl9nZXRfbWV0YWRhdGFfcGF0aF9mb3JfZGlzcGxhedoIUEtHX0lORk9ylAAAAHJFAAAAKQRyjwAAAHIcAAAAcq8AAAByRQEAAHIaAAAAchoAAAByGwAAAHIcAAAAdgoAAHMUAAAAAAICAQYBDgEIAQgBDAIEAQoBCgJ6FERpc3RyaWJ1dGlvbi52ZXJzaW9uYwEAAAAAAAAAAQAAAAsAAABDAAAAczIAAAB5BnwAagBTAAQAdAFrCnIqAQABAAEAfABqAnwAagODAIMBfABfAFkAbgJYAHwAagBTACkBen4KICAgICAgICBBIG1hcCBvZiBleHRyYSB0byBpdHMgbGlzdCBvZiAoZGlyZWN0KSByZXF1aXJlbWVudHMKICAgICAgICBmb3IgdGhpcyBkaXN0cmlidXRpb24sIGluY2x1ZGluZyB0aGUgbnVsbCBleHRyYS4KICAgICAgICApBFoWX0Rpc3RyaWJ1dGlvbl9fZGVwX21hcHK5AQAA2g5fZmlsdGVyX2V4dHJhc9oOX2J1aWxkX2RlcF9tYXApAXKPAAAAchoAAAByGgAAAHIbAAAA2ghfZGVwX21hcIUKAABzCgAAAAAGAgEGAQ4BFgF6FURpc3RyaWJ1dGlvbi5fZGVwX21hcGMBAAAAAAAAAAcAAAAEAAAAQwAAAHN2AAAAeHB0AHQBZAF8AIMCgwFEAF1efQF8AX0CfABqAnwBgwF9A3wBagNkAoMBXAN9An0EfQV8BW9GdAR8BYMBcEZ0BXwFgwEMAH0GfAZyUGcAfQN0BnwCgwFwWmQBfQJ8AGoHfAJnAIMCagh8A4MBAQBxEFcAfABTACkDeqQKICAgICAgICBHaXZlbiBhIG1hcHBpbmcgb2YgZXh0cmFzIHRvIGRlcGVuZGVuY2llcywgc3RyaXAgb2ZmCiAgICAgICAgZW52aXJvbm1lbnQgbWFya2VycyBhbmQgZmlsdGVyIG91dCBhbnkgZGVwZW5kZW5jaWVzCiAgICAgICAgbm90IG1hdGNoaW5nIHRoZSBtYXJrZXJzLgogICAgICAgIE5yKAIAACkJcvsAAAByBwAAAHIAAQAAckECAABycgAAAHJzAAAAcnAAAABy6wAAAHIEAQAAKQfaAmRtchEBAABaCW5ld19leHRyYXLpAAAAcrwAAAByEgEAAFoMZmFpbHNfbWFya2VychoAAAByGgAAAHIbAAAAclkCAACRCgAAcxgAAAAABxQBBAEKARABBAEIAQoCBAEEAQwCFgF6G0Rpc3RyaWJ1dGlvbi5fZmlsdGVyX2V4dHJhc2MBAAAAAAAAAAUAAAAFAAAAQwAAAHNIAAAAaQB9AXg+ZANEAF02fQJ4MHQAfABqAXwCgwGDAUQAXR5cAn0DfQR8AWoCfANnAIMCagN0BHwEgwGDAQEAcR5XAHEKVwB8AVMAKQRO+gxyZXF1aXJlcy50eHT6C2RlcGVuZHMudHh0KQJyXQIAAHJeAgAAKQVybwAAANoNX2dldF9tZXRhZGF0YXLrAAAAcgQBAAByaQAAACkFco8AAAByXAIAAHLJAAAAchEBAABy6QAAAHIaAAAAchoAAAByGwAAAHJaAgAApwoAAHMKAAAAAAEEAQoBGAEeAXobRGlzdHJpYnV0aW9uLl9idWlsZF9kZXBfbWFwYwIAAAAAAAAABQAAAAwAAABDAAAAc2oAAAB8AGoAfQJnAH0DfANqAXwCagJkAWYAgwKDAQEAeEh8AUQAXUB9BHkWfANqAXwCdAN8BIMBGQCDAQEAVwBxIgQAdARrCnJgAQABAAEAdAVkAnwAfARmAhYAgwGCAVkAcSJYAHEiVwB8A1MAKQN6QExpc3Qgb2YgUmVxdWlyZW1lbnRzIG5lZWRlZCBmb3IgdGhpcyBkaXN0cm8gaWYgYGV4dHJhc2AgYXJlIHVzZWROeh8lcyBoYXMgbm8gc3VjaCBleHRyYSBmZWF0dXJlICVyKQZyWwIAAHIEAQAAcrcAAABycAAAAHKkAAAAcmcAAAApBXKPAAAAcgMBAAByXAIAAFoEZGVwc3LUAQAAchoAAAByGgAAAHIbAAAAcvAAAACuCgAAcxQAAAAAAgYBBAESAQoBAgEWAQ4BAgEYAnoVRGlzdHJpYnV0aW9uLnJlcXVpcmVzYwIAAAAAAAAAAwAAAAsAAABDAAAAcyoAAAB5EHwAagBqAXwBgwF9AlcAbhQEAHQCawpyJAEAAQABAGQBUwBYAHwCUwApAnpLCiAgICAgICAgUmV0dXJuIHRoZSBwYXRoIHRvIHRoZSBnaXZlbiBtZXRhZGF0YSBmaWxlLCBpZiBhdmFpbGFibGUuCiAgICAgICAgehJbY291bGQgbm90IGRldGVjdF0pA3JEAgAAclsBAAByNgEAACkDco8AAAByyQAAAHKvAAAAchoAAAByGgAAAHIbAAAAclcCAAC8CgAAcwoAAAAABAIEEAQOAQYCeitEaXN0cmlidXRpb24uX2dldF9tZXRhZGF0YV9wYXRoX2Zvcl9kaXNwbGF5YwIAAAAAAAAAAwAAAAIAAABjAAAAcygAAAB8AGoAfAGDAXIkeBh8AGoBfAGDAUQAXQp9AnwCVgABAHEWVwBkAFMAKQFOKQJyzQAAAHLPAAAAKQNyjwAAAHLJAAAAcvEBAAByGgAAAHIaAAAAchsAAAByXwIAAM0KAABzBgAAAAABCgEQAXoaRGlzdHJpYnV0aW9uLl9nZXRfbWV0YWRhdGFjAQAAAAAAAAADAAAAAgAAAEMAAABzGAAAAHwAagB8AGoBgwF9AXQCfAGDAX0CfAJTACkBTikDcl8CAAByWAIAAHJCAgAAKQNyjwAAAHI3AgAAchwAAAByGgAAAHIaAAAAchsAAAByVgIAANIKAABzBgAAAAABDAEIAnoZRGlzdHJpYnV0aW9uLl9nZXRfdmVyc2lvbkZjAwAAAAAAAAAEAAAABAAAAEMAAABzWgAAAHwBZAFrCHIOdABqAX0BfABqAnwBfAJkAo0CAQB8AXQAagFrCHJWdAN8AGoEgwEBAHgkfABqBWQDgwFEAF0WfQN8A3QAagZrBnI8dAd8A4MBAQBxPFcAZAFTACkEej5FbnN1cmUgZGlzdHJpYnV0aW9uIGlzIGltcG9ydGFibGUgb24gYHBhdGhgIChkZWZhdWx0PXN5cy5wYXRoKU4pAXLAAAAAehZuYW1lc3BhY2VfcGFja2FnZXMudHh0KQhyQAAAAHKvAAAAcvQAAAByiQAAAHL1AAAAcl8CAAByowAAAHJXAAAAKQRyjwAAAHKvAAAAcsAAAADaA3BrZ3IaAAAAchoAAAByGwAAANoIYWN0aXZhdGXYCgAAcxAAAAAAAggBBgEOAQoBCgEQAQoBehVEaXN0cmlidXRpb24uYWN0aXZhdGVjAQAAAAAAAAACAAAABAAAAEMAAABzOAAAAGQBdAB8AGoBgwF0AHwAagKDAXwAagNwGnQEZgMWAH0BfABqBXI0fAFkAnwAagUXADcAfQF8AVMAKQN6QFJldHVybiB3aGF0IHRoaXMgZGlzdHJpYnV0aW9uJ3Mgc3RhbmRhcmQgLmVnZyBmaWxlbmFtZSBzaG91bGQgYmV6CiVzLSVzLXB5JXNySwEAACkGcnEAAAByBQEAAHIcAAAAchkBAAByKAEAAHJBAAAAKQJyjwAAAHJIAQAAchoAAAByGgAAAHIbAAAAcnsBAADjCgAAcwwAAAAAAgIBEAEOAwYBDgF6FURpc3RyaWJ1dGlvbi5lZ2dfbmFtZWMBAAAAAAAAAAEAAAADAAAAQwAAAHMgAAAAfABqAHIUZAF8AHwAagBmAhYAUwB0AXwAgwFTAGQAUwApAk56ByVzICglcykpAnL1AAAAcqIAAAApAXKPAAAAchoAAAByGgAAAHIbAAAAcpAAAADuCgAAcwYAAAAAAQYBDgJ6FURpc3RyaWJ1dGlvbi5fX3JlcHJfX2MBAAAAAAAAAAIAAAALAAAAQwAAAHNAAAAAeRB0AHwAZAFkAIMDfQFXAG4YBAB0AWsKcigBAAEAAQBkAH0BWQBuAlgAfAFwMGQCfQFkA3wAagJ8AWYCFgBTACkETnIcAAAAehFbdW5rbm93biB2ZXJzaW9uXXoFJXMgJXMpA3KmAAAAckUAAAByBQEAACkCco8AAAByHAAAAHIaAAAAchoAAAByGwAAAHKdAAAA9AoAAHMMAAAAAAECARABDgEKAQgBehREaXN0cmlidXRpb24uX19zdHJfX2MCAAAAAAAAAAIAAAADAAAAQwAAAHMeAAAAfAFqAGQBgwFyEnQBfAGDAYIBdAJ8AGoDfAGDAlMAKQJ6QURlbGVnYXRlIGFsbCB1bnJlY29nbml6ZWQgcHVibGljIGF0dHJpYnV0ZXMgdG8gLm1ldGFkYXRhIHByb3ZpZGVycrwAAAApBHK+AAAAcrkBAABypgAAAHJEAgAAKQJyjwAAAHIvAgAAchoAAAByGgAAAHIbAAAA2gtfX2dldGF0dHJfX/wKAABzBgAAAAACCgEIAXoYRGlzdHJpYnV0aW9uLl9fZ2V0YXR0cl9fYwEAAAAAAAAAAQAAAAUAAAADAAAAcy4AAAB0AHQBdAJ0A3wAgwJqBIMAgwF0AWQBZAKEAHwAagVqBIMARACDAYMBQgCDAVMAKQNOYwEAAAAAAAAAAgAAAAMAAABzAAAAcxwAAAB8AF0UfQF8AWoAZACDAXMCfAFWAAEAcQJkAVMAKQJyvAAAAE4pAXK+AAAAKQJy7gAAAHIvAgAAchoAAAByGgAAAHIbAAAAcu8AAAAGCwAAcwQAAAAEAAIBeidEaXN0cmlidXRpb24uX19kaXJfXy48bG9jYWxzPi48Z2VuZXhwcj4pBnL7AAAAcv8AAADaBXN1cGVycmEAAADaB19fZGlyX19yRAIAACkBco8AAAApAXKNAAAAchoAAAByGwAAAHJkAgAAAgsAAHMIAAAAAAECARABAgF6FERpc3RyaWJ1dGlvbi5fX2Rpcl9fcmQCAABjAwAAAAAAAAAEAAAABAAAAEsAAABzHgAAAHwAagB0AXwBgwF0AmoDagR8AYMBfAJmA3wDjgFTACkBTikFcswBAABy2QEAAHKuAAAAcq8AAAByfgEAACkEcuQAAABySAEAAHK/AQAAcicAAAByGgAAAHIaAAAAchsAAAByyAEAAA8LAABzBgAAAAACBAEUAXoaRGlzdHJpYnV0aW9uLmZyb21fZmlsZW5hbWVjAQAAAAAAAAACAAAAAwAAAEMAAABzPAAAAHQAfABqAXQCagNqBIMCciJkAXwAagV8AGoBZgIWAH0BbhBkAnwAagV8AGoBZgIWAH0BdAZqB3wBgwFTACkDej9SZXR1cm4gYSBgYFJlcXVpcmVtZW50YGAgdGhhdCBtYXRjaGVzIHRoaXMgZGlzdHJpYnV0aW9uIGV4YWN0bHl6BiVzPT0lc3oHJXM9PT0lcykIcqAAAABySQIAAHISAAAAchwAAAByHQAAAHIFAQAAcmIAAAByywAAACkCco8AAADaBHNwZWNyGgAAAHIaAAAAchsAAAByCgEAABYLAABzCAAAAAACEAESAhACehtEaXN0cmlidXRpb24uYXNfcmVxdWlyZW1lbnRjAwAAAAAAAAAEAAAABAAAAEMAAABzLgAAAHwAagB8AXwCgwJ9A3wDZAFrCHImdAFkAnwBfAJmAmYBFgCDAYIBfANqAoMAUwApA3o9UmV0dXJuIHRoZSBgbmFtZWAgZW50cnkgcG9pbnQgb2YgYGdyb3VwYCBvciByYWlzZSBJbXBvcnRFcnJvck56GEVudHJ5IHBvaW50ICVyIG5vdCBmb3VuZCkDck8AAABy4gAAAHKOAQAAKQRyjwAAAHJEAAAAcskAAAByOQIAAHIaAAAAchoAAAByGwAAAHJNAAAAHwsAAHMIAAAAAAIMAQgBEgF6HURpc3RyaWJ1dGlvbi5sb2FkX2VudHJ5X3BvaW50YwIAAAAAAAAAAwAAAAsAAABDAAAAc1AAAAB5CnwAagB9AlcAbiwEAHQBawpyNgEAAQABAHQCagN8AGoEZAGDAXwAgwIEAH0CfABfAFkAbgJYAHwBZAJrCXJMfAJqBXwBaQCDAlMAfAJTACkDej1SZXR1cm4gdGhlIGVudHJ5IHBvaW50IG1hcCBmb3IgYGdyb3VwYCwgb3IgdGhlIGZ1bGwgZW50cnkgbWFwehBlbnRyeV9wb2ludHMudHh0TikGWgdfZXBfbWFwcrkBAAByYwAAAHI9AgAAcl8CAABytwAAACkDco8AAAByRAAAAFoGZXBfbWFwchoAAAByGgAAAHIbAAAAck4AAAAmCwAAcxAAAAAAAgIBCgEOAQQBGgIIAQwBehpEaXN0cmlidXRpb24uZ2V0X2VudHJ5X21hcGMDAAAAAAAAAAMAAAACAAAAQwAAAHMQAAAAfABqAHwBgwFqAXwCgwFTACkBejxSZXR1cm4gdGhlIEVudHJ5UG9pbnQgb2JqZWN0IGZvciBgZ3JvdXBgK2BuYW1lYCwgb3IgYGBOb25lYGApAnJOAAAAcrcAAAApA3KPAAAAckQAAAByyQAAAHIaAAAAchoAAAByGwAAAHJPAAAAMgsAAHMCAAAAAAJ6G0Rpc3RyaWJ1dGlvbi5nZXRfZW50cnlfaW5mb2MEAAAAAAAAAAoAAAALAAAAQwAAAHMyAQAAfAJwCHwAagB9AnwCcxJkAVMAdAF8AoMBfQR0AmoDagR8BIMBfQVkAmQDhAB8AUQAgwF9Bni0dAV8BoMBRABddlwCfQd9CHwIfARrAnJcfANyVlAAcbRkAVMAcT58CHwFawJyPnwAagZ0B2sCcj58AwwAcoh8BHwGfAdkAYUCGQBrBnKIZAFTAHwBdAhqA2sIcpp8AGoJgwABAHwBagp8B3wCgwIBAHwGagp8B3wEgwIBAFAAcT5XAHwBdAhqA2sIcsp8AGoJgwABAHwDctx8AWoKZAR8AoMCAQBuCnwBagt8AoMBAQBkAVMAeEJ5FHwGagx8BHwHZAUXAIMCfQlXAG4YBAB0DWsKkAFyGAEAAQABAFAAWQBx7FgAfAZ8CT0AfAF8CT0AfAl9B3HsVwBkAVMAKQZh5AIAAEVuc3VyZSBzZWxmLmxvY2F0aW9uIGlzIG9uIHBhdGgKCiAgICAgICAgSWYgcmVwbGFjZT1GYWxzZSAoZGVmYXVsdCk6CiAgICAgICAgICAgIC0gSWYgbG9jYXRpb24gaXMgYWxyZWFkeSBpbiBwYXRoIGFueXdoZXJlLCBkbyBub3RoaW5nLgogICAgICAgICAgICAtIEVsc2U6CiAgICAgICAgICAgICAgLSBJZiBpdCdzIGFuIGVnZyBhbmQgaXRzIHBhcmVudCBkaXJlY3RvcnkgaXMgb24gcGF0aCwKICAgICAgICAgICAgICAgIGluc2VydCBqdXN0IGFoZWFkIG9mIHRoZSBwYXJlbnQuCiAgICAgICAgICAgICAgLSBFbHNlOiBhZGQgdG8gdGhlIGVuZCBvZiBwYXRoLgogICAgICAgIElmIHJlcGxhY2U9VHJ1ZToKICAgICAgICAgICAgLSBJZiBsb2NhdGlvbiBpcyBhbHJlYWR5IG9uIHBhdGggYW55d2hlcmUgKG5vdCBlZ2dzKQogICAgICAgICAgICAgIG9yIGhpZ2hlciBwcmlvcml0eSB0aGFuIGl0cyBwYXJlbnQgKGVnZ3MpCiAgICAgICAgICAgICAgZG8gbm90aGluZy4KICAgICAgICAgICAgLSBFbHNlOgogICAgICAgICAgICAgIC0gSWYgaXQncyBhbiBlZ2cgYW5kIGl0cyBwYXJlbnQgZGlyZWN0b3J5IGlzIG9uIHBhdGgsCiAgICAgICAgICAgICAgICBpbnNlcnQganVzdCBhaGVhZCBvZiB0aGUgcGFyZW50LAogICAgICAgICAgICAgICAgcmVtb3ZpbmcgYW55IGxvd2VyLXByaW9yaXR5IGVudHJpZXMuCiAgICAgICAgICAgICAgLSBFbHNlOiBhZGQgaXQgdG8gdGhlIGZyb250IG9mIHBhdGguCiAgICAgICAgTmMBAAAAAAAAAAIAAAAEAAAAUwAAAHMcAAAAZwB8AF0UfQF8AXIUdAB8AYMBcBZ8AZECcQRTAHIaAAAAKQFy2QEAACkCcu4AAAByBQIAAHIaAAAAchoAAAByGwAAAHLQAQAAUAsAAHMCAAAABgB6KkRpc3RyaWJ1dGlvbi5pbnNlcnRfb24uPGxvY2Fscz4uPGxpc3Rjb21wPnIBAAAAcg8AAAApDnL1AAAActkBAAByrgAAAHKvAAAAclMBAADaCWVudW1lcmF0ZXLuAQAAcnYAAAByQAAAANoWY2hlY2tfdmVyc2lvbl9jb25mbGljdHL3AAAAcrMAAAByBwIAAHJFAAAAKQpyjwAAAHKvAAAA2gNsb2NywAAAAFoEbmxvY1oEYmRpcloFbnBhdGhyBQIAAHLyAAAAWgJucHIaAAAAchoAAAByGwAAAHL0AAAANgsAAHNCAAAAABQKAQQBBAIIAQwBDgISAQgBBAEEBAYBEgMWAQQBCgEIAQwBDAEGAgoBCAEEAQ4CCgEEAwIBAgEUARABCAIMAggCehZEaXN0cmlidXRpb24uaW5zZXJ0X29uYwEAAAAAAAAABQAAAAYAAABDAAAAc6wAAAB8AGoAZAFrAnIOZABTAHQBagJ8AGoDZAKDAYMBfQF0BHwAagWDAX0CeH58AGoDZAODAUQAXXB9A3wDdAZqB2sHczR8A3wBawZzNHwDdAhrBnJUcTR8A2QIawZyXnE0dAl0BmoHfAMZAGQGZACDA30EfARykHQEfASDAWoKfAKDAXM0fARqCnwAagWDAXKQcTR0C2QHfAN8BHwAagVmAxYAgwEBAHE0VwBkAFMAKQlO2gpzZXR1cHRvb2xzehZuYW1lc3BhY2VfcGFja2FnZXMudHh0eg10b3BfbGV2ZWwudHh02g1wa2dfcmVzb3VyY2Vz2gRzaXRlclIBAAB6SU1vZHVsZSAlcyB3YXMgYWxyZWFkeSBpbXBvcnRlZCBmcm9tICVzLCBidXQgJXMgaXMgYmVpbmcgYWRkZWQgdG8gc3lzLnBhdGgpA3JqAgAAcmkCAAByawIAACkMcjMAAAByJQAAAHImAAAAcl8CAABydQAAAHL1AAAAckAAAAByowAAAHL3AQAAcqYAAAByvgAAANoNaXNzdWVfd2FybmluZykFco8AAABaA25zcHJoAgAA2gdtb2RuYW1l2gJmbnIaAAAAchoAAAByGwAAAHJnAgAAegsAAHMiAAAAAAEKAgQCEAEKARABEgEIAQIBCAECARIBEgEMAQIBAgECAXojRGlzdHJpYnV0aW9uLmNoZWNrX3ZlcnNpb25fY29uZmxpY3RjAQAAAAAAAAABAAAACwAAAEMAAABzNAAAAHkKfABqAAEAVwBuJAQAdAFrCnIuAQABAAEAdAJkAXQDfACDARcAgwEBAGQCUwBYAGQDUwApBE56EFVuYnVpbHQgZWdnIGZvciBGVCkEchwAAAByRQAAAHJsAgAAco4AAAApAXKPAAAAchoAAAByGgAAAHIbAAAAciABAACQCwAAcwwAAAAAAQIBCgEOARABBgF6GERpc3RyaWJ1dGlvbi5oYXNfdmVyc2lvbmMBAAAAAAAAAAQAAAAHAAAASwAAAHNEAAAAZAF9AngkfAJqAIMARABdGH0DfAFqAXwDdAJ8AHwDZAKDA4MCAQBxDlcAfAFqAWQDfABqA4MCAQB8AGoEZgB8AY4BUwApBHpAQ29weSB0aGlzIGRpc3RyaWJ1dGlvbiwgc3Vic3RpdHV0aW5nIGluIGFueSBjaGFuZ2VkIGtleXdvcmQgYXJnc3o8cHJvamVjdF9uYW1lIHZlcnNpb24gcHlfdmVyc2lvbiBwbGF0Zm9ybSBsb2NhdGlvbiBwcmVjZWRlbmNlTnK/AQAAKQVyDgAAAHLrAAAAcqYAAAByRAIAAHKNAAAAKQRyjwAAAHInAAAAcjkBAAByLwIAAHIaAAAAchoAAAByGwAAANoFY2xvbmWYCwAAcwoAAAAAAgQBDgEYAQ4BehJEaXN0cmlidXRpb24uY2xvbmVjAQAAAAAAAAABAAAAAgAAAEMAAABzEAAAAGQBZAKEAHwAagBEAIMBUwApA05jAQAAAAAAAAACAAAAAwAAAFMAAABzFAAAAGcAfABdDH0BfAFyBHwBkQJxBFMAchoAAAByGgAAACkCcu4AAABaA2RlcHIaAAAAchoAAAByGwAAAHLQAQAAogsAAHMCAAAABgB6J0Rpc3RyaWJ1dGlvbi5leHRyYXMuPGxvY2Fscz4uPGxpc3Rjb21wPikBclsCAAApAXKPAAAAchoAAAByGgAAAHIbAAAAcgMBAACgCwAAcwIAAAAAAnoTRGlzdHJpYnV0aW9uLmV4dHJhcykBTikCTkYpAU4pAU4pAk5GKTNyFgAAAHIXAAAAchgAAAByGQAAAHJYAgAAcigBAABydgAAAHLfAAAAchABAAByzAEAAHJIAgAAcpoAAAByHgEAAHJLAgAAckwCAAByTQIAAHJOAgAAck8CAAByUAIAAHJRAgAAcjMAAABySQIAAHJVAgAAchwAAAByWwIAAHJKAQAAclkCAAByWgIAAHLwAAAAclcCAAByXwIAAHJWAgAAcmECAAByewEAAHKQAAAAcp0AAAByYgIAAHJkAgAAcrEAAADaBm9iamVjdHLIAQAAcgoBAAByTQAAAHJOAAAAck8AAABy9AAAAHJnAgAAciABAABybwIAAHIDAQAA2g1fX2NsYXNzY2VsbF9fchoAAAByGgAAACkBco0AAAByGwAAAHJhAAAAAQoAAHNcAAAACAEEAQQDBgEGAQwKAgEMEAgDDAsIAwgDCAMIAwgDCAYIBwwIDAcIGgwPDAwMFggHDA4IEQgFCAYKCwgLCAYICAgGDAkMAgICAgEMBggJCAcKDAgECkQIFggICAhjAAAAAAAAAAAAAAAAAgAAAEAAAABzFAAAAGUAWgFkAFoCZAFkAoQAWgNkA1MAKQTaE0VnZ0luZm9EaXN0cmlidXRpb25jAQAAAAAAAAACAAAAAgAAAEMAAABzFgAAAHwAagCDAH0BfAFyEnwBfABfAXwAUwApAWHxAQAACiAgICAgICAgUGFja2FnZXMgaW5zdGFsbGVkIGJ5IGRpc3R1dGlscyAoZS5nLiBudW1weSBvciBzY2lweSksCiAgICAgICAgd2hpY2ggdXNlcyBhbiBvbGQgc2FmZV92ZXJzaW9uLCBhbmQgc28KICAgICAgICB0aGVpciB2ZXJzaW9uIG51bWJlcnMgY2FuIGdldCBtYW5nbGVkIHdoZW4KICAgICAgICBjb252ZXJ0ZWQgdG8gZmlsZW5hbWVzIChlLmcuLCAxLjExLjAuZGV2MCsyMzI5ZWFlIHRvCiAgICAgICAgMS4xMS4wLmRldjBfMjMyOWVhZSkuIFRoZXNlIGRpc3RyaWJ1dGlvbnMgd2lsbCBub3QgYmUKICAgICAgICBwYXJzZWQgcHJvcGVybHkKICAgICAgICBkb3duc3RyZWFtIGJ5IERpc3RyaWJ1dGlvbiBhbmQgc2FmZV92ZXJzaW9uLCBzbwogICAgICAgIHRha2UgYW4gZXh0cmEgc3RlcCBhbmQgdHJ5IHRvIGdldCB0aGUgdmVyc2lvbiBudW1iZXIgZnJvbQogICAgICAgIHRoZSBtZXRhZGF0YSBmaWxlIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlbmFtZS4KICAgICAgICApAnJWAgAAckMCAAApAnKPAAAAWgptZF92ZXJzaW9uchoAAAByGgAAAHIbAAAAckgCAACmCwAAcwgAAAAADAgBBAEGAXojRWdnSW5mb0Rpc3RyaWJ1dGlvbi5fcmVsb2FkX3ZlcnNpb25OKQRyFgAAAHIXAAAAchgAAABySAIAAHIaAAAAchoAAAByGgAAAHIbAAAAcnICAAClCwAAcwIAAAAIAXJyAgAAYwAAAAAAAAAAAAAAAAMAAABAAAAAcz4AAABlAFoBZABaAmQBWgNkAloEZQVqBmQDgwFaB2UIZARkBYQAgwFaCWUIZAZkB4QAgwFaCmQIZAmEAFoLZApTACkL2hREaXN0SW5mb0Rpc3RyaWJ1dGlvbnpWCiAgICBXcmFwIGFuIGFjdHVhbCBvciBwb3RlbnRpYWwgc3lzLnBhdGggZW50cnkKICAgIHcvbWV0YWRhdGEsIC5kaXN0LWluZm8gc3R5bGUuCiAgICBaCE1FVEFEQVRBehsoW1woLF0pXHMqKFxkLio/KVxzKihbLFwpXSljAQAAAAAAAAACAAAACwAAAEMAAABzQAAAAHkGfABqAFMABAB0AWsKcjoBAAEAAQB8AGoCfABqA4MBfQF0BGoFagaDAGoHfAGDAXwAXwB8AGoAUwBYAGQBUwApAnoYUGFyc2UgYW5kIGNhY2hlIG1ldGFkYXRhTikIWglfcGtnX2luZm9yuQEAAHLOAAAAclgCAADaBWVtYWls2gZwYXJzZXJaBlBhcnNlcloIcGFyc2VzdHIpAnKPAAAAcr8BAAByGgAAAHIaAAAAchsAAADaEF9wYXJzZWRfcGtnX2luZm/ACwAAcwwAAAAAAwIBBgEOAQwBEgF6JURpc3RJbmZvRGlzdHJpYnV0aW9uLl9wYXJzZWRfcGtnX2luZm9jAQAAAAAAAAABAAAACwAAAEMAAABzLAAAAHkGfABqAFMABAB0AWsKciYBAAEAAQB8AGoCgwB8AF8AfABqAFMAWABkAFMAKQFOKQPaHl9EaXN0SW5mb0Rpc3RyaWJ1dGlvbl9fZGVwX21hcHK5AQAA2hVfY29tcHV0ZV9kZXBlbmRlbmNpZXMpAXKPAAAAchoAAAByGgAAAHIbAAAAclsCAADKCwAAcwoAAAAAAgIBBgEOAQoBeh1EaXN0SW5mb0Rpc3RyaWJ1dGlvbi5fZGVwX21hcGMBAAAAAAAAAAcAAAAFAAAAAwAAAHOiAAAAZAFnAGkBBAB9AXwAXwBnAIkAeCZ8AGoBagJkAoMBcCJnAEQAXRJ9AogAagN0BHwCgwGDAQEAcSRXAIcAZgFkA2QEhAh9A3QFfANkAYMBgwF9BHwBZAEZAGoDfASDAQEAeDx8AGoBagJkBYMBcHBnAEQAXSh9BXQGfAVqB4MAgwF9BnQIdAV8A3wFgwGDAXwEGACDAXwBfAY8AHFyVwB8AVMAKQZ6K1JlY29tcHV0ZSB0aGlzIGRpc3RyaWJ1dGlvbidzIGRlcGVuZGVuY2llcy5Oeg1SZXF1aXJlcy1EaXN0YwEAAAAAAAAAAgAAAAQAAAAzAAAAczAAAAB4KogARABdIn0BfAFqAAwAcyJ8AWoAagFkAXwAaQGDAXIGfAFWAAEAcQZXAGQAUwApAk5yEQEAACkCchIBAAByEwEAACkCchEBAABykgAAACkBcukAAAByGgAAAHIbAAAA2g5yZXFzX2Zvcl9leHRyYdsLAABzBgAAAAABCgEYAXpCRGlzdEluZm9EaXN0cmlidXRpb24uX2NvbXB1dGVfZGVwZW5kZW5jaWVzLjxsb2NhbHM+LnJlcXNfZm9yX2V4dHJheg5Qcm92aWRlcy1FeHRyYSkJcncCAABydgIAAFoHZ2V0X2FsbHIEAQAAcmkAAADaCWZyb3plbnNldHJwAAAAcvABAABy+wAAACkHco8AAAByXAIAAHKSAAAAcnkCAADaBmNvbW1vbnIRAQAAWgdzX2V4dHJhchoAAAApAXLpAAAAchsAAAByeAIAANILAABzFgAAAAACDgIEAhYBEgIMBQwBDgIWAQwBHAJ6KkRpc3RJbmZvRGlzdHJpYnV0aW9uLl9jb21wdXRlX2RlcGVuZGVuY2llc04pDHIWAAAAchcAAAByGAAAAHIZAAAAclgCAAByTAEAAHJpAQAAWgRFUUVRcpoAAABydgIAAHJbAgAAcngCAAByGgAAAHIaAAAAchoAAAByGwAAAHJzAgAAuAsAAHMMAAAACAQEAQQBCgIMCgwIcnMCAAApA3oELmVnZ3oJLmVnZy1pbmZvegouZGlzdC1pbmZvYwAAAAAAAAAABAAAAA0AAABPAAAAc14AAABkAX0CdACDAH0DeSJ4HHQBagJ8AoMBagN8A2sIcih8AmQBNwB9AnEOVwBXAG4UBAB0BGsKckABAAEAAQBZAG4CWAB0BWoGfABkAnwCZAEXAGkBfAGXAo4BAQBkAFMAKQNOcg8AAABycgEAACkHciIAAAByQAAAAHLFAAAAcsYAAAByRQAAAHJBAQAAckIBAAApBHI4AAAAcicAAAByLAIAAHIrAAAAchoAAAByGgAAAHIbAAAAcmwCAADxCwAAcxAAAAAAAQQBBgECAxIBEAEOAQYBcmwCAABjAAAAAAAAAAAAAAAAAgAAAEAAAABzFAAAAGUAWgFkAFoCZAFkAoQAWgNkA1MAKQTaFVJlcXVpcmVtZW50UGFyc2VFcnJvcmMBAAAAAAAAAAEAAAACAAAAQwAAAHMMAAAAZAFqAHwAagGDAVMAKQJOcrsAAAApAnJCAAAAcjgAAAApAXKPAAAAchoAAAByGgAAAHIbAAAAcp0AAAD/CwAAcwIAAAAAAXodUmVxdWlyZW1lbnRQYXJzZUVycm9yLl9fc3RyX19OKQRyFgAAAHIXAAAAchgAAABynQAAAHIaAAAAchoAAAByGgAAAHIbAAAAcnwCAAD+CwAAcwIAAAAIAXJ8AgAAYwEAAAAAAAAAAwAAAAwAAABjAAAAc4IAAAB0AHQBfACDAYMBfQF4cHwBRABdaH0CZAF8AmsGcjB8AmQCfAJqAmQBgwGFAhkAfQJ8AmoDZAODAXJwfAJkAmQFhQIZAGoEgwB9AnkQfAJ0BXwBgwE3AH0CVwBuFAQAdAZrCnJuAQABAAEAZAJTAFgAdAd8AoMBVgABAHESVwBkAlMAKQZ6illpZWxkIGBgUmVxdWlyZW1lbnRgYCBvYmplY3RzIGZvciBlYWNoIHNwZWNpZmljYXRpb24gaW4gYHN0cnNgCgogICAgYHN0cnNgIG11c3QgYmUgYSBzdHJpbmcsIG9yIGEgKHBvc3NpYmx5LW5lc3RlZCkgaXRlcmFibGUgdGhlcmVvZi4KICAgIHoCICNO+gFccjwAAADp/v///ykIcuUBAABybgAAAHKhAAAAcscBAABy8AEAAHL0AQAA2g1TdG9wSXRlcmF0aW9ucmIAAAApA3IhAgAAcjcCAABy8QEAAHIaAAAAchoAAAByGwAAAHJpAAAAAwwAAHMWAAAAAAYMAgoCCAESAgoBEAECARABDgEGAWMAAAAAAAAAAAAAAAADAAAAAAAAAHNQAAAAZQBaAWQAWgKHAGYBZAFkAoQIWgNkA2QEhABaBGQFZAaEAFoFZAdkCIQAWgZkCWQKhABaB2QLZAyEAFoIZQlkDWQOhACDAVoKhwAEAFoLUwApD3JiAAAAYwIAAAAAAAAABAAAABQAAAADAAAAc8wAAAB5FHQAdAF8AIMCagJ8AYMBAQBXAG4yBAB0A2oEagVrCnJGAQB9AgEAehJ0BnQHfAKDAYMBggFXAFkAZAFkAX0CfgJYAG4CWAB8AGoIfABfCXQKfABqCIMBfQN8A3wDaguDAAIAfABfDHwAXw1kAmQDhAB8AGoORACDAXwAXw90EHQRdBJ8AGoTgwKDAXwAXxN8AGoNfABqFHwAag50FXwAahODAXwAahZytHQHfABqFoMBbgJkAWYFfABfF3QYfABqF4MBfABfGWQBUwApBHo+RE8gTk9UIENBTEwgVEhJUyBVTkRPQ1VNRU5URUQgTUVUSE9EOyB1c2UgUmVxdWlyZW1lbnQucGFyc2UoKSFOYwEAAAAAAAAAAgAAAAQAAABTAAAAcxgAAABnAHwAXRB9AXwBagB8AWoBZgKRAnEEUwByGgAAACkCciEBAAByHAAAACkCcu4AAAByZQIAAHIaAAAAchoAAAByGwAAAHLQAQAAJAwAAHMCAAAABgB6KFJlcXVpcmVtZW50Ll9faW5pdF9fLjxsb2NhbHM+LjxsaXN0Y29tcD4pGnJjAgAAcmIAAABy3wAAAHISAAAAcgYBAABaEkludmFsaWRSZXF1aXJlbWVudHJ8AgAAcqIAAAByyQAAAFoLdW5zYWZlX25hbWVyagAAAHIcAQAAcgUBAAByMwAAANoJc3BlY2lmaWVycjYCAAByJgIAAHIGAAAAcnAAAAByAwEAANoDdXJscnoCAAByEgEAANoHaGFzaENtcHJKAgAA2hJfUmVxdWlyZW1lbnRfX2hhc2gpBHKPAAAAWhJyZXF1aXJlbWVudF9zdHJpbmdyUQEAAHIFAQAAKQFyjQAAAHIaAAAAchsAAABy3wAAABoMAABzHgAAAAACAgEUARQBHgEIAQoBEgISARICBAEEAQQBCAEYAnoUUmVxdWlyZW1lbnQuX19pbml0X19jAgAAAAAAAAACAAAAAwAAAEMAAABzFgAAAHQAfAF0AYMCbxR8AGoCfAFqAmsCUwApAU4pA3KgAAAAcmIAAAByggIAACkCco8AAAByJAEAAHIaAAAAchoAAAByGwAAAHJQAgAALwwAAHMEAAAAAAIKAXoSUmVxdWlyZW1lbnQuX19lcV9fYwIAAAAAAAAAAgAAAAIAAABDAAAAcwoAAAB8AHwBawIMAFMAKQFOchoAAAApAnKPAAAAciQBAAByGgAAAHIaAAAAchsAAAByUQIAADUMAABzAgAAAAABehJSZXF1aXJlbWVudC5fX25lX19jAgAAAAAAAAACAAAABAAAAEMAAABzMAAAAHQAfAF0AYMCciB8AWoCfABqAmsDchpkAVMAfAFqA30BfABqBGoFfAFkAmQDjQJTACkETkZUKQFaC3ByZXJlbGVhc2VzKQZyoAAAAHJhAAAAcjMAAAByHAAAAHKAAgAA2ghjb250YWlucykCco8AAABy8gAAAHIaAAAAchoAAAByGwAAAHLsAAAAOAwAAHMKAAAAAAEKAQwBBAIGBXoYUmVxdWlyZW1lbnQuX19jb250YWluc19fYwEAAAAAAAAAAQAAAAEAAABDAAAAcwYAAAB8AGoAUwApAU4pAXKDAgAAKQFyjwAAAHIaAAAAchoAAAByGwAAAHJLAgAARAwAAHMCAAAAAAF6FFJlcXVpcmVtZW50Ll9faGFzaF9fYwEAAAAAAAAAAQAAAAMAAABDAAAAcwwAAABkAXQAfACDARYAUwApAk56FVJlcXVpcmVtZW50LnBhcnNlKCVyKSkBcqIAAAApAXKPAAAAchoAAAByGgAAAHIbAAAAcpAAAABHDAAAcwIAAAAAAXoUUmVxdWlyZW1lbnQuX19yZXByX19jAQAAAAAAAAACAAAAAgAAAEMAAABzDgAAAHQAfACDAVwBfQF8AVMAKQFOKQFyaQAAACkCciICAABykgAAAHIaAAAAchoAAAByGwAAAHLLAAAASgwAAHMEAAAAAAIKAXoRUmVxdWlyZW1lbnQucGFyc2UpDHIWAAAAchcAAAByGAAAAHLfAAAAclACAAByUQIAAHLsAAAAcksCAABykAAAAHJKAQAAcssAAABycQIAAHIaAAAAchoAAAApAXKNAAAAchsAAAByYgAAABkMAABzDgAAAAgBDBUIBggDCAwIAwgDYwEAAAAAAAAAAQAAAAIAAABDAAAAcxYAAAB0AHwAawdyEnwAdABmARcAUwB8AFMAKQF6SgogICAgRW5zdXJlIG9iamVjdCBhcHBlYXJzIGluIHRoZSBtcm8gZXZlbgogICAgZm9yIG9sZC1zdHlsZSBjbGFzc2VzLgogICAgKQFycAIAACkB2gdjbGFzc2VzchoAAAByGgAAAHIbAAAA2g5fYWx3YXlzX29iamVjdFAMAABzBgAAAAAFCAEKAXKGAgAAYwIAAAAAAAAABAAAAAcAAABDAAAAczwAAAB0AHQBagJ0A3wBZAF0BHwBgwGDA4MBgwF9AngcfAJEAF0UfQN8A3wAawZyIHwAfAMZAFMAcSBXAGQCUwApA3oyUmV0dXJuIGFuIGFkYXB0ZXIgZmFjdG9yeSBmb3IgYG9iYCBmcm9tIGByZWdpc3RyeWByjQAAAE4pBXKGAgAA2gdpbnNwZWN0WgZnZXRtcm9ypgAAAHKHAQAAKQTaCHJlZ2lzdHJ5cjQAAABy/QEAANoBdHIaAAAAchoAAAByGwAAAHKnAAAAWgwAAHMIAAAAAAIaAQoBCAFypwAAAGMBAAAAAAAAAAIAAAAEAAAAQwAAAHMeAAAAdABqAWoCfACDAX0BdANqBHwBZAFkAo0CAQBkA1MAKQR6MUVuc3VyZSB0aGF0IHRoZSBwYXJlbnQgZGlyZWN0b3J5IG9mIGBwYXRoYCBleGlzdHNUKQHaCGV4aXN0X29rTikFcq4AAAByrwAAAHJTAQAAchAAAADaCG1ha2VkaXJzKQJyrwAAAHJTAQAAchoAAAByGgAAAHIbAAAAcnQAAABiDAAAcwQAAAAAAgwBYwEAAAAAAAAAAwAAAAsAAABDAAAAc1oAAAB0AHMMdAFkAYMBggF0AnwAgwFcAn0BfQJ8AXJWfAJyVnQDfAGDAQwAclZ0BHwBgwEBAHkOdAV8AWQCgwIBAFcAbhQEAHQGawpyVAEAAQABAFkAbgJYAGQDUwApBHovU2FuZGJveC1ieXBhc3NpbmcgdmVyc2lvbiBvZiBlbnN1cmVfZGlyZWN0b3J5KCl6KiJvcy5ta2RpciIgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLmntAQAATikHcq0BAAByrgEAAHIOAAAAcg0AAAByNQEAAHIJAAAA2g9GaWxlRXhpc3RzRXJyb3IpA3KvAAAAclMBAABySAEAAHIaAAAAchoAAAByGwAAAHI1AQAAaAwAAHMSAAAAAAIEAQgBDAESAQgBAgEOAQ4BcjUBAABjAQAAAAAAAAAEAAAABAAAAGMAAABzegAAAGQBfQFnAH0CeGJ0AHwAgwFEAF1WfQN8A2oBZAKDAXJefANqAmQDgwFyUnwBczJ8AnI8fAF8AmYCVgABAHwDZARkBoUCGQBqA4MAfQFnAH0CcWh0BGQFfAODAoIBcRJ8AmoFfAODAQEAcRJXAHwBfAJmAlYAAQBkAVMAKQdhcwEAAFNwbGl0IGEgc3RyaW5nIG9yIGl0ZXJhYmxlIHRoZXJlb2YgaW50byAoc2VjdGlvbiwgY29udGVudCkgcGFpcnMKCiAgICBFYWNoIGBgc2VjdGlvbmBgIGlzIGEgc3RyaXBwZWQgdmVyc2lvbiBvZiB0aGUgc2VjdGlvbiBoZWFkZXIgKCJbc2VjdGlvbl0iKQogICAgYW5kIGVhY2ggYGBjb250ZW50YGAgaXMgYSBsaXN0IG9mIHN0cmlwcGVkIGxpbmVzIGV4Y2x1ZGluZyBibGFuayBsaW5lcyBhbmQKICAgIGNvbW1lbnQtb25seSBsaW5lcy4gIElmIHRoZXJlIGFyZSBhbnkgc3VjaCBsaW5lcyBiZWZvcmUgdGhlIGZpcnN0IHNlY3Rpb24KICAgIGhlYWRlciwgdGhleSdyZSByZXR1cm5lZCBpbiBhIGZpcnN0IGBgc2VjdGlvbmBgIG9mIGBgTm9uZWBgLgogICAgTvoBW/oBXXIPAAAAehdJbnZhbGlkIHNlY3Rpb24gaGVhZGluZ3L6AAAAKQZybgAAAHK+AAAAcscBAABy8AEAAHJFAAAAcrMAAAApBHIiAgAA2gdzZWN0aW9uWgdjb250ZW50cvEBAAByGgAAAHIaAAAAchsAAABybwAAAHUMAABzGAAAAAAIBAEEAQ4BCgEKAQgBCgEQAQYCDAIOA2MAAAAAAAAAAAMAAAALAAAATwAAAHMmAAAAdABqAX0CehJ0AnQAXwF0A2oEfAB8AY4BUwB8AnQAXwFYAGQAUwApAU4pBXKuAAAAcgwAAADaB29zX29wZW7aCHRlbXBmaWxlWgdta3N0ZW1wKQNyOAAAAHInAAAAWghvbGRfb3BlbnIaAAAAchoAAAByGwAAAHKwAQAAjwwAAHMKAAAAAAEGAQICBgEMA3KwAQAAcvgBAAApAtoIY2F0ZWdvcnlyswAAAGMBAAAAAAAAAAMAAAADAAAATwAAAHMOAAAAfAB8AXwCjgEBAHwAUwApAU5yGgAAACkDcrYBAAByOAAAAHIqAgAAchoAAAByGgAAAHIbAAAA2gtfY2FsbF9hc2lkZaIMAABzBAAAAAABCgFykwIAAGMBAAAAAAAAAAEAAAAEAAAAAwAAAHMuAAAAdACDAIkAiAB8AGQBPAB8AGoBhwBmAWQCZAOECHQCiACDAUQAgwGDAQEAZARTACkFej1TZXQgdXAgZ2xvYmFsIHJlc291cmNlIG1hbmFnZXIgKGRlbGliZXJhdGVseSBub3Qgc3RhdGUtc2F2ZWQpWghfbWFuYWdlcmMBAAAAAAAAAAIAAAAFAAAAMwAAAHMmAAAAfABdHn0BfAFqAGQAgwFzAnwBdAGIAHwBgwJmAlYAAQBxAmQBUwApAnK8AAAATikCcr4AAABypgAAACkCcu4AAAByyQAAACkBctMAAAByGgAAAHIbAAAAcu8AAACtDAAAcwQAAAAEAQIBeh5faW5pdGlhbGl6ZS48bG9jYWxzPi48Z2VuZXhwcj5OKQNyYAAAAHIjAAAAcqsBAAApAXIrAAAAchoAAAApAXLTAAAAchsAAADaC19pbml0aWFsaXplpwwAAHMKAAAAAAMGAQgBBAEKAXKUAgAAYwAAAAAAAAAABgAAAAQAAABDAAAAc3wAAAB0AGoBgwB9AHQCZAF8AGQCjQIBAHwAagN9AXwAagR9AnwAagV9A3wAagZ9BHwEfQV0B2QDZASEAHwARACDAYMBAQB8A2QFZAaEAGQHZAiNAgEAZwB8AF8IdAl0CnwAagt0DGoNgwKDAQEAdA6DAGoPdBCDAIMBAQBkCVMAKQphRQEAAAogICAgUHJlcGFyZSB0aGUgbWFzdGVyIHdvcmtpbmcgc2V0IGFuZCBtYWtlIHRoZSBgYHJlcXVpcmUoKWBgCiAgICBBUEkgYXZhaWxhYmxlLgoKICAgIFRoaXMgZnVuY3Rpb24gaGFzIGV4cGxpY2l0IGVmZmVjdHMgb24gdGhlIGdsb2JhbCBzdGF0ZQogICAgb2YgcGtnX3Jlc291cmNlcy4gSXQgaXMgaW50ZW5kZWQgdG8gYmUgaW52b2tlZCBvbmNlIGF0CiAgICB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhpcyBtb2R1bGUuCgogICAgSW52b2NhdGlvbiBieSBvdGhlciBwYWNrYWdlcyBpcyB1bnN1cHBvcnRlZCBhbmQgZG9uZQogICAgYXQgdGhlaXIgb3duIHJpc2suCiAgICBycAIAACkBclgAAABjAQAAAAAAAAACAAAABAAAAHMAAABzGgAAAHwAXRJ9AXwBagBkAGQBjQFWAAEAcQJkAlMAKQNGKQFywAAAAE4pAXJhAgAAKQJy7gAAAHKRAAAAchoAAAByGgAAAHIbAAAAcu8AAADODAAAcwIAAAAEAXoxX2luaXRpYWxpemVfbWFzdGVyX3dvcmtpbmdfc2V0Ljxsb2NhbHM+LjxnZW5leHByPmMBAAAAAAAAAAEAAAADAAAAUwAAAHMMAAAAfABqAGQBZAKNAVMAKQNOVCkBcsAAAAApAXJhAgAAKQFykQAAAHIaAAAAchoAAAByGwAAAHI5AAAA0gwAAHMAAAAAejBfaW5pdGlhbGl6ZV9tYXN0ZXJfd29ya2luZ19zZXQuPGxvY2Fscz4uPGxhbWJkYT5GKQFyDgEAAE4pEXJfAAAAcuYAAAByKAAAAHJJAAAAclAAAAByDwEAAHJKAAAAciYCAABy2QAAAHL7AAAAcgYAAABy3QAAAHJAAAAAcq8AAAByIgAAAHIjAAAAcpUAAAApBnJYAAAAckkAAAByUAAAAHJZAAAAckoAAAByiwAAAHIaAAAAchoAAAByGwAAANoeX2luaXRpYWxpemVfbWFzdGVyX3dvcmtpbmdfc2V0swwAAHMgAAAAAA0IAQwCBgEGAQYBBgIEBQIBBgEKAgIBBgEIAgYCEgFylQIAAGMAAAAAAAAAAAAAAAABAAAAQAAAAHMQAAAAZQBaAWQAWgJkAVoDZAJTACkDcooAAAB6qwogICAgQmFzZSBjbGFzcyBmb3Igd2FybmluZyBhYm91dCBkZXByZWNhdGlvbnMgaW4gYGBwa2dfcmVzb3VyY2VzYGAKCiAgICBUaGlzIGNsYXNzIGlzIG5vdCBkZXJpdmVkIGZyb20gYGBEZXByZWNhdGlvbldhcm5pbmdgYCwgYW5kIGFzIHN1Y2ggaXMKICAgIHZpc2libGUgYnkgZGVmYXVsdC4KICAgIE4pBHIWAAAAchcAAAByGAAAAHIZAAAAchoAAAByGgAAAHIaAAAAchsAAAByigAAANoMAABzAgAAAAgGKQJyEwAAAHIBAAAAKQJyEwAAAHIUAAAAcvoAAAApAU4pAU4pAUYpAUYpAUYpAUYpAU4p23IZAAAA2gpfX2Z1dHVyZV9fcgIAAAByQAAAAHKuAAAAclYBAABypgEAAHJMAQAAcv0BAAByiwEAAHLKAQAAckEBAAByPQEAAHItAgAA2gdwa2d1dGlsciEBAAByQQAAAHL9AAAAcrIAAABaDGVtYWlsLnBhcnNlcnJ0AgAAcusBAABykQIAAHItAQAActIBAAByhwIAAHJ3AQAAcnQBAAByAwAAAHIQAgAAcuIAAADaA2ltcHKMAgAA2glOYW1lRXJyb3Jy6gEAAFoLcGlwLl92ZW5kb3JyBAAAAFoVcGlwLl92ZW5kb3Iuc2l4Lm1vdmVzcgUAAAByBgAAAHIHAAAAcggAAAByCQAAAHIKAAAAcgsAAAByrQEAAHIMAAAAcpACAABaB29zLnBhdGhyDQAAAHIOAAAA2hNpbXBvcnRsaWIubWFjaGluZXJ52gltYWNoaW5lcnlyhgEAAHIWAAAAcqoAAAByEAAAAHIRAAAAchIAAABypQAAAHKHAQAAWg1fX21ldGFjbGFzc19f2gx2ZXJzaW9uX2luZm/aDFJ1bnRpbWVFcnJvcnJcAQAAcugBAABy6QEAAHJJAAAAclgAAAByWQAAAFoQcmVzb3VyY2VzX3N0cmVhbXJcAAAAWgxyZXNvdXJjZV9kaXJyUgAAAHJbAAAAclYAAAByUQAAAHJQAAAAclQAAAByUwAAAHJVAAAAcsIBAABy9gEAAHL3AQAA2g5SdW50aW1lV2FybmluZ3IVAAAAciEAAAByJAAAAHIoAAAAci0AAAByLgAAAHIxAAAAcjUAAAByNgAAAHI3AAAAWgpfc2dldF9ub25lWgpfc3NldF9ub25lckgAAADaB19fYWxsX19yNgEAAHJkAAAAcmUAAABylwAAAHJmAAAAcmcAAAByngAAAHKUAAAAcigBAABydgAAAHJ3AAAAcngAAAByeQAAAHJ6AAAAcogAAABySwAAAHJDAAAAcrkAAAByPQAAAHJpAQAAcj4AAAByxAAAAHJsAAAAcm0AAABySgAAAHKLAAAAckwAAAByTQAAAHJOAAAAck8AAAByewAAAHJ8AAAAcl8AAAByJQAAAHL8AAAAcl4AAAByjAAAAHJoAAAAcmAAAAByXQAAAHJqAAAAcmsAAABycAAAAHJxAAAAcnIAAABycwAAAHKCAAAAcnACAABygwAAAHKEAAAAcogBAABygAAAAHKBAAAAcokBAAByjwEAAHKFAAAAcssBAAByfQAAAHJ+AAAAcn8AAAByhgAAAHJaAAAAcskBAAByzgEAAHLXAQAAct4BAABy2AEAAHLjAQAActsBAABy4QEAAHLyAQAAcuIBAADaC0ltcEltcG9ydGVycrEAAABy9QEAAHKHAAAAcgQCAAByAQIAAHJXAAAAcokAAAByFgIAAHIXAgAAcnUAAAByGgIAAHLZAQAAcn0BAABy2gEAAHL/AQAAcm4AAAByPwAAAHIkAgAA2gdWRVJCT1NF2gpJR05PUkVDQVNFckcCAAByYwAAAHI/AgAAckICAAByYQAAAHJyAgAAcnMCAAByRgIAAHJsAgAAckUAAAByfAIAAHJpAAAAcgYBAAByYgAAAHKGAgAAcqcAAABydAAAAHI1AQAAcm8AAABysAEAANoOZmlsdGVyd2FybmluZ3NykwIAAHIiAAAAcpQCAABylQIAANoHV2FybmluZ3KKAAAAchoAAAByGgAAAHIaAAAAchsAAADaCDxtb2R1bGU+EAAAAHP2AQAABAIMAggBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQwCAgEMARACDgICAQgBEAEKAgwBFAMMAQIBFAEIARACCgIMARACAgEKAgoBEAEKAgwBDAEMAQgBCAEIAQgDBAMeAQgCCAIEAQQEBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQQBBAEEAxAHCAcEAwgFCAgIBwgECAUIBAgEDAMIGggBBgECAQYBBgMGAQYBAgMGAQYDBgEEAwIDCAEIAQgDBAMKAwYBCAEIAQYBBAMCAwgEEAcQIBANEBsQBAQCDAEEAQQBBAEEAQYDCAoIDQwQCAQIGAoBCgIEAwguCAoEAwgLCAUMBQgFDhcQHA5/AH8AfwAFEBQOfwAUBAMQEA5/ADUIDAgICAwICQgICA4MDw5/AEEKAxAWEBsIAxARBgMQGxAUEH8ALQwDECoQGRAPDAMICgwHDBsMAwwECgMIGgwgCBEOEQgVCA8ICwgODAIMAQwCDAEMAwgSCB8IIggiDAwIDQwBDAIMAQwDCAQKAwgFCAsMCAgHCAoICAgODAEECQIBEAQOfwAFCAkIDQ5/AH8AfwAnEBMQMwIBAgEIBAgNEAUIFhQ3CAoICAgGCA0IGggPEAQIBQIBEAsMJw==