Skip to content

Instantly share code, notes, and snippets.

@uzihaq
Last active July 14, 2026 04:51
Show Gist options
  • Select an option

  • Save uzihaq/f2a3a19a7f698ec7006044b573adb95f to your computer and use it in GitHub Desktop.

Select an option

Save uzihaq/f2a3a19a7f698ec7006044b573adb95f to your computer and use it in GitHub Desktop.
lakebed whiteboard MINIFIED envelope (92KB)
{"artifact":{"name":"Whiteboard","client":{"bundleHash":"sha256:a98203e21ad74f83c6122e066e6971fe0f90b9ec8cc661d3fded016096d955d7","bytes":67923,"entry":"/client.js"},"createdWith":{"compiler":"0.1.0","lakebed":"0.0.30-staging.29292788364"},"format":"lakebed.capsule.artifact.v1","limits":{"instructionBudget":50000,"maxRowsReturned":1000,"maxValueBytes":65536,"maxIndexKeyBytes":2048,"maxRowsRead":5000,"maxBytesRead":4194304,"maxDirectGets":1000,"maxScanCalls":100,"maxWrites":1000},"source":{"files":[{"bytes":113,"hash":"sha256:aaa4c02a1033fc56bfb872526d522b9c69a9f6a48214d5e1144020b8e60760ee","path":".git/COMMIT_EDITMSG"},{"bytes":318,"hash":"sha256:9174639466229e9445803a12fa12cb7c1aac7faf515bc0d504b4f78de00f2ef1","path":".git/config"},{"bytes":73,"hash":"sha256:85ab6c163d43a17ea9cf7788308bca1466f1b0a8d1cc92e26e9bf63da4062aee","path":".git/description"},{"bytes":23,"hash":"sha256:f6f2b945f6c411b02ba3da9c7ace88dcf71b6af65ba2e0d89aa82900042b5a10","path":".git/HEAD"},{"bytes":478,"hash":"sha256:0223497a0b8b033aa58a3a521b8629869386cf7ab0e2f101963d328aa62193f7","path":".git/hooks/applypatch-msg.sample"},{"bytes":896,"hash":"sha256:1f74d5e9292979b573ebd59741d46cb93ff391acdd083d340b94370753d92437","path":".git/hooks/commit-msg.sample"},{"bytes":4726,"hash":"sha256:e0549964e93897b519bd8e333c037e51fff0f88ba13e086a331592bf801fa1d0","path":".git/hooks/fsmonitor-watchman.sample"},{"bytes":189,"hash":"sha256:81765af2daef323061dcbc5e61fc16481cb74b3bac9ad8a174b186523586f6c5","path":".git/hooks/post-update.sample"},{"bytes":424,"hash":"sha256:e15c5b469ea3e0a695bea6f2c82bcf8e62821074939ddd85b77e0007ff165475","path":".git/hooks/pre-applypatch.sample"},{"bytes":1643,"hash":"sha256:f9af7d95eb1231ecf2eba9770fedfa8d4797a12b02d7240e98d568201251244a","path":".git/hooks/pre-commit.sample"},{"bytes":416,"hash":"sha256:d3825a70337940ebbd0a5c072984e13245920cdf8898bd225c8d27a6dfc9cb53","path":".git/hooks/pre-merge-commit.sample"},{"bytes":1374,"hash":"sha256:ecce9c7e04d3f5dd9d8ada81753dd1d549a9634b26770042b58dda00217d086a","path":".git/hooks/pre-push.sample"},{"bytes":4898,"hash":"sha256:4febce867790052338076f4e66cc47efb14879d18097d1d61c8261859eaaa7b3","path":".git/hooks/pre-rebase.sample"},{"bytes":544,"hash":"sha256:a4c3d2b9c7bb3fd8d1441c31bd4ee71a595d66b44fcf49ddb310252320169989","path":".git/hooks/pre-receive.sample"},{"bytes":1492,"hash":"sha256:e9ddcaa4189fddd25ed97fc8c789eca7b6ca16390b2392ae3276f0c8e1aa4619","path":".git/hooks/prepare-commit-msg.sample"},{"bytes":2783,"hash":"sha256:a53d0741798b287c6dd7afa64aee473f305e65d3f49463bb9d7408ec3b12bf5f","path":".git/hooks/push-to-checkout.sample"},{"bytes":2308,"hash":"sha256:44ebfc923dc5466bc009602f0ecf067b9c65459abfe8868ddc49b78e6ced7a92","path":".git/hooks/sendemail-validate.sample"},{"bytes":3650,"hash":"sha256:8d5f2fa83e103cf08b57eaa67521df9194f45cbdbcb37da52ad586097a14d106","path":".git/hooks/update.sample"},{"bytes":519,"hash":"sha256:e9686bc41834f33468fd7d08e6d0c320c11fce534f1e75c62828088dba451c49","path":".git/index"},{"bytes":240,"hash":"sha256:6671fe83b7a07c8932ee89164d1f2793b2318058eb8b98dc5c06ee0a5a3b0ec1","path":".git/info/exclude"},{"bytes":962,"hash":"sha256:60eed57e382ad9b766307919374b82caf64fe63ec4676db6bb16824f674f7bfd","path":".git/logs/HEAD"},{"bytes":962,"hash":"sha256:60eed57e382ad9b766307919374b82caf64fe63ec4676db6bb16824f674f7bfd","path":".git/logs/refs/heads/master"},{"bytes":191,"hash":"sha256:f1023774c20ba012c9d1e3b2955877488892a189e82aafea0f461d9ae4fcc0c4","path":".git/logs/refs/remotes/origin/HEAD"},{"bytes":290,"hash":"sha256:a2fff39daf32d70b676cbe32899790adc7e5f59d0eb3f371e2766dfd3bbc9c8b","path":".git/logs/refs/remotes/origin/master"},{"bytes":273,"hash":"sha256:830f8fecacd83e5421f99fa1f83ba7503cdb6da90c4e83e720df12618cc0ebeb","path":".git/objects/00/77549e71c228c1f7bceb0820ff1a4cfc33bcb9"},{"bytes":53,"hash":"sha256:eaa3ee2c8a699a10f1e9e5cd2fff193e15ce2e4ae92401999570bf0990078d7a","path":".git/objects/07/5eef90cad005adbb40ed7f97ec985f10ddc1c8"},{"bytes":189,"hash":"sha256:f5fef39740249394f8a4dbda649b236c054c3e9ca5f3b4f2a737fe6f4fd18461","path":".git/objects/27/1e7387693f20115d8bbef84c7fb37d3424c76d"},{"bytes":234,"hash":"sha256:33b68050857b52ccf57ca471538126aaeebdcd4e7dac2ab7f8ec2815bf81115a","path":".git/objects/69/1e6fb571666eacdba4f6f01bd2ffadc75f112d"},{"bytes":211,"hash":"sha256:7077c42e29bad79f6c3fdc88a5df2ffa9ff428c061382a5d84526f3bdc97f80e","path":".git/objects/72/b8f524e4b9a49ec773b51d14e653d50f02a155"},{"bytes":188,"hash":"sha256:5f1ec91f243183ddb5ceb0904698a29798bcf0e23322578bd49e5ef24bcf2908","path":".git/objects/95/6176592b53ab265d7b40f1305f03ee723e6d0e"},{"bytes":189,"hash":"sha256:290ce330246ea297eb20c53c56b17345bbc10ff219f7e6d4510e3f56fb846d54","path":".git/objects/ce/151434dcd3addfa752b6171dbdfa675286f081"},{"bytes":53,"hash":"sha256:9812060d2278d69c736b564b065f8f6ca8fca9c028648c60f0e66fc500592db6","path":".git/objects/d9/d52edf1893502d9da738a568c3dd0aa90f1b7b"},{"bytes":53,"hash":"sha256:e3fa2fc945f848fe87bedadf94392a9fee33d61018d4c092b9076bfb67308165","path":".git/objects/e1/3dd42decc01c882a3fc5259d40657b7e2d9b61"},{"bytes":2314,"hash":"sha256:b9f77c27995a09322413a7192491ac29cc70709c6f312ddcbc2d991516c31d8d","path":".git/objects/f1/3ab2ddbeb6b7e9f18efa9f6feea4903bfa0469"},{"bytes":2369,"hash":"sha256:61f7b1ed0d00192a6c59b7f2b56ac25f6a24cf4eab7aa3657023bcbaf09eda65","path":".git/objects/f5/8a20cda51fb2c5f02959146606630df418b424"},{"bytes":2568,"hash":"sha256:834841c6b7031ad9dfe8e994c90a5891209b56aa38e45be2df5b5eff697b7765","path":".git/objects/f7/6e8f4765092d34b0e5d5c4bb217e5a43cead12"},{"bytes":1548,"hash":"sha256:841d0d109859525edf33febd2acada2c5424bd70f426dc2463c4778f63dbbe5c","path":".git/objects/pack/pack-cb1b50ec86bc9dec5a0a1afaef27acbdff88dfce.idx"},{"bytes":15858,"hash":"sha256:c78d5d17ce1b5b6c535feb58d9b89316621d8cc286808840d908a73ab537dc57","path":".git/objects/pack/pack-cb1b50ec86bc9dec5a0a1afaef27acbdff88dfce.pack"},{"bytes":120,"hash":"sha256:31a9b125c4dabd3d97b9cf58049e0a4d7b5c8f7202c7e262c939fef838d7243c","path":".git/objects/pack/pack-cb1b50ec86bc9dec5a0a1afaef27acbdff88dfce.rev"},{"bytes":114,"hash":"sha256:bbd7cf52899297c67bb8479a57e176bb2d5ee741e67b835feaf2c54330ae3ab5","path":".git/packed-refs"},{"bytes":41,"hash":"sha256:6ffe6ec7003ec4ec9578c4db538240a67fe7d2f7b71adb590d249b60c1fcdac3","path":".git/refs/heads/master"},{"bytes":32,"hash":"sha256:cdc65e67690c4c6475174e5ec662b70655246a2f3924354778835ab3be70aa76","path":".git/refs/remotes/origin/HEAD"},{"bytes":41,"hash":"sha256:6ffe6ec7003ec4ec9578c4db538240a67fe7d2f7b71adb590d249b60c1fcdac3","path":".git/refs/remotes/origin/master"},{"bytes":40,"hash":"sha256:7f1efed4fbde1413f08bce5a441a54715fb422268fe6973014e8329d39f75fff","path":".gitignore"},{"bytes":38525,"hash":"sha256:04123a3114760c14c100c1c8caa06aed15d1de2bacb65b528682fbc9ea6e188b","path":"client/index.tsx"},{"bytes":1023,"hash":"sha256:954beaa2ee9deef21ebddeff8368c4229e9cbfc31d35eb4ae034faed9d8003bc","path":"README.md"},{"bytes":7730,"hash":"sha256:c210c241dcdeb5f17ec76bb19d7e4a83f2e4a51928a7b986bc02ebe6aee660a5","path":"server/index.ts"}],"snapshotHash":"sha256:bdd1b8a1fffc232c544aeb732f5e9c0e83c12352abb6c9f61476b6fcb869c68d"},"database":{"apiVersion":1,"indexCodecVersion":1,"schemaHash":"sha256:49b0fdf027e1a33feee6e6deafa2e17b26b5fef916b1e46cea8bf811f0ef6b02"},"deployTarget":"anonymous-source","server":{"actions":{},"endpoints":{},"helpers":{},"imports":["lakebed/server"],"mutations":{"addShape":{"op":"source"},"updateShape":{"op":"source"},"deleteShape":{"op":"source"},"undo":{"op":"source"},"redo":{"op":"source"},"claim":{"op":"source"},"setDrawLock":{"op":"source"},"setViewLock":{"op":"source"}},"queries":{"shapes":{"op":"source"},"room":{"op":"source"}},"schema":{"shapes":{"kind":"table","fields":{"type":{"defaultValue":"","kind":"string"},"x":{"defaultValue":"","kind":"string"},"y":{"defaultValue":"","kind":"string"},"w":{"defaultValue":"","kind":"string"},"h":{"defaultValue":"","kind":"string"},"points":{"defaultValue":"","kind":"string"},"color":{"defaultValue":"","kind":"string"},"strokeWidth":{"defaultValue":"","kind":"string"},"text":{"defaultValue":"","kind":"string"},"fill":{"defaultValue":"","kind":"string"},"rotation":{"defaultValue":"","kind":"string"},"z":{"defaultValue":"","kind":"string"},"createdBy":{"defaultValue":"","kind":"string"}},"indexes":[]},"ops":{"kind":"table","fields":{"userId":{"defaultValue":"","kind":"string"},"kind":{"defaultValue":"","kind":"string"},"shapeId":{"defaultValue":"","kind":"string"},"before":{"defaultValue":"","kind":"string"},"after":{"defaultValue":"","kind":"string"},"undone":{"defaultValue":false,"kind":"boolean"}},"indexes":[]},"room":{"kind":"table","fields":{"ownerId":{"defaultValue":"","kind":"string"},"viewHash":{"defaultValue":"","kind":"string"},"drawLock":{"defaultValue":false,"kind":"boolean"},"viewLock":{"defaultValue":false,"kind":"boolean"}},"indexes":[]}},"source":{"bytes":10120,"bundle":"dmFyIHk9Y2xhc3MgdntjbGF1c2VzO2NvbnN0cnVjdG9yKHI9W10pe3RoaXMuY2xhdXNlcz1yfWFkZChyLHQsYSl7cmV0dXJuIG5ldyB2KFsuLi50aGlzLmNsYXVzZXMse2ZpZWxkOnQsb3A6cix2YWx1ZTphfV0pfWVxKHIsdCl7cmV0dXJuIHRoaXMuYWRkKCJlcSIscix0KX1ndChyLHQpe3JldHVybiB0aGlzLmFkZCgiZ3QiLHIsdCl9Z3RlKHIsdCl7cmV0dXJuIHRoaXMuYWRkKCJndGUiLHIsdCl9bHQocix0KXtyZXR1cm4gdGhpcy5hZGQoImx0IixyLHQpfWx0ZShyLHQpe3JldHVybiB0aGlzLmFkZCgibHRlIixyLHQpfX0sTj1jbGFzcyBTe2V4ZWN1dG9yO3BsYW47Y29uc3RydWN0b3Iocix0KXt0aGlzLmV4ZWN1dG9yPXIsdGhpcy5wbGFuPXR9b3JkZXIocil7aWYociE9PSJhc2MiJiZyIT09ImRlc2MiKXRocm93IG5ldyBFcnJvcignUXVlcnkgb3JkZXIgbXVzdCBiZSAiYXNjIiBvciAiZGVzYyIuJyk7cmV0dXJuIG5ldyBTKHRoaXMuZXhlY3V0b3Isey4uLnRoaXMucGxhbixvcmRlcjpyfSl9Y29sbGVjdCgpe3JldHVybiB0aGlzLmV4ZWN1dG9yLmV4ZWN1dGUoe2tpbmQ6InF1ZXJ5IixwbGFuOnRoaXMucGxhbix0ZXJtaW5hbDp7a2luZDoiY29sbGVjdCJ9fSl9dGFrZShyKXtyZXR1cm4gdGhpcy5leGVjdXRvci5leGVjdXRlKHtraW5kOiJxdWVyeSIscGxhbjp0aGlzLnBsYW4sdGVybWluYWw6e2NvdW50OnIsa2luZDoidGFrZSJ9fSl9Zmlyc3QoKXtyZXR1cm4gdGhpcy5leGVjdXRvci5leGVjdXRlKHtraW5kOiJxdWVyeSIscGxhbjp0aGlzLnBsYW4sdGVybWluYWw6e2tpbmQ6ImZpcnN0In19KX1wYWdpbmF0ZShyKXtyZXR1cm4gdGhpcy5leGVjdXRvci5leGVjdXRlKHtraW5kOiJxdWVyeSIscGxhbjp0aGlzLnBsYW4sdGVybWluYWw6e2tpbmQ6InBhZ2luYXRlIixvcHRpb25zOnJ9fSl9fSxFPWNsYXNze2V4ZWN1dG9yO3RhYmxlO2NvbnN0cnVjdG9yKGUscil7dGhpcy5leGVjdXRvcj1lLHRoaXMudGFibGU9cn1nZXQoZSl7cmV0dXJuIHRoaXMuZXhlY3V0b3IuZXhlY3V0ZSh7aWQ6ZSxraW5kOiJnZXQiLHRhYmxlOnRoaXMudGFibGV9KX13aXRoSW5kZXgoZSxyKXtjb25zdCB0PXI/cihuZXcgeSk6bmV3IHk7aWYoISh0IGluc3RhbmNlb2YgeSkpdGhyb3cgbmV3IEVycm9yKGB3aXRoSW5kZXgoIiR7ZX0iKSBjYWxsYmFjayBtdXN0IHJldHVybiB0aGUgcHJvdmlkZWQgcmFuZ2UgYnVpbGRlci5gKTtyZXR1cm4gbmV3IE4odGhpcy5leGVjdXRvcix7Y2xhdXNlczp0LmNsYXVzZXMsaW5kZXg6ZSxvcmRlcjoiYXNjIix0YWJsZTp0aGlzLnRhYmxlfSl9d2hlcmUoKXt0aHJvdyBuZXcgRXJyb3IoIndoZXJlKCkgaXMgYSBsZWdhY3kgZnVsbC1zY2FuIEFQSS4gRGVjbGFyZSBhbiBpbmRleCBhbmQgdXNlIHdpdGhJbmRleCgpLiIpfW9yZGVyQnkoKXt0aHJvdyBuZXcgRXJyb3IoIm9yZGVyQnkoKSBpcyBhIGxlZ2FjeSBpbi1tZW1vcnkgc29ydCBBUEkuIFVzZSBpbmRleCB0cmF2ZXJzYWwgd2l0aCBvcmRlcigpLiIpfWxpbWl0KCl7dGhyb3cgbmV3IEVycm9yKCJsaW1pdCgpIGlzIGEgbGVnYWN5IEFQSS4gVXNlIHRha2UoKSwgZmlyc3QoKSwgb3IgcGFnaW5hdGUoKS4iKX1hbGwoKXt0aHJvdyBuZXcgRXJyb3IoImFsbCgpIGlzIGEgbGVnYWN5IEFQSS4gVXNlIGNvbGxlY3QoKSwgdGFrZSgpLCBmaXJzdCgpLCBvciBwYWdpbmF0ZSgpLiIpfX0seD1jbGFzcyBleHRlbmRzIEV7aW5zZXJ0KGUpe3JldHVybiB0aGlzLmV4ZWN1dG9yLmV4ZWN1dGUoe2tpbmQ6Imluc2VydCIsdGFibGU6dGhpcy50YWJsZSx2YWx1ZTplfSl9dXBkYXRlKGUscil7cmV0dXJuIHRoaXMuZXhlY3V0b3IuZXhlY3V0ZSh7aWQ6ZSxraW5kOiJ1cGRhdGUiLHBhdGNoOnIsdGFibGU6dGhpcy50YWJsZX0pfWRlbGV0ZShlKXtyZXR1cm4gdGhpcy5leGVjdXRvci5leGVjdXRlKHtpZDplLGtpbmQ6ImRlbGV0ZSIsdGFibGU6dGhpcy50YWJsZX0pfX07ZnVuY3Rpb24gQShlLHIsdCl7Y29uc3QgYT17fTtmb3IoY29uc3QgbiBvZiBPYmplY3Qua2V5cyhlPz97fSkpYVtuXT10P25ldyB4KHIsbik6bmV3IEUocixuKTtyZXR1cm4gYX12YXIgcD0iYnlfY3JlYXRpb24iLEw9L15bQS1aYS16XVtBLVphLXowLTlfXSokLyxiPW5ldyBTZXQoWyJpZCIsImNyZWF0ZWRBdCIsInVwZGF0ZWRBdCJdKTtmdW5jdGlvbiB1KGUscil7aWYoIUwudGVzdChyKSl0aHJvdyBuZXcgRXJyb3IoYCR7ZX0gbmFtZSAiJHtyfSIgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIGFuZCBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgYW5kIHVuZGVyc2NvcmVzLmApfWZ1bmN0aW9uIE8oZSxyPXt9KXtyZXR1cm57a2luZDplLC4uLnIsZGVmYXVsdCh0KXtyZXR1cm57Li4udGhpcyxkZWZhdWx0VmFsdWU6dH19fX1mdW5jdGlvbiBzKCl7cmV0dXJuIE8oInN0cmluZyIpfWZ1bmN0aW9uIG0oKXtyZXR1cm4gTygiYm9vbGVhbiIpfWZ1bmN0aW9uIGsoZSl7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMoZSkpaWYodSgiRmllbGQiLHQpLGIuaGFzKHQpKXRocm93IG5ldyBFcnJvcihgRmllbGQgbmFtZSAiJHt0fSIgaXMgcmVzZXJ2ZWQgZm9yIExha2ViZWQgbWV0YWRhdGEuYCk7cmV0dXJue2ZpZWxkczplLGluZGV4ZXM6W10sa2luZDoidGFibGUiLGluZGV4KHQsYSl7aWYodSgiSW5kZXgiLHQpLHQ9PT1wKXRocm93IG5ldyBFcnJvcihgSW5kZXggbmFtZSAiJHtwfSIgaXMgcmVzZXJ2ZWQgYnkgTGFrZWJlZC5gKTtpZighQXJyYXkuaXNBcnJheShhKXx8YS5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcihgSW5kZXggJHt0fSBtdXN0IGRlY2xhcmUgYXQgbGVhc3Qgb25lIGZpZWxkLmApO2lmKHRoaXMuaW5kZXhlcy5zb21lKGk9PmkubmFtZT09PXQpKXRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlIGluZGV4IG5hbWU6ICR7dH1gKTtjb25zdCBuPW5ldyBTZXQ7Zm9yKGNvbnN0IGkgb2YgYSl7aWYobi5oYXMoaSkpdGhyb3cgbmV3IEVycm9yKGBJbmRleCAke3R9IHJlcGVhdHMgZmllbGQgJHtpfS5gKTtpZihuLmFkZChpKSwhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuZmllbGRzLGkpJiYhYi5oYXMoaSkpdGhyb3cgbmV3IEVycm9yKGBJbmRleCAke3R9IHJlZmVyZW5jZXMgdW5rbm93biBmaWVsZCAke2l9LmApfXJldHVybnsuLi50aGlzLGluZGV4ZXM6Wy4uLnRoaXMuaW5kZXhlcyx7ZmllbGRzOlsuLi5hXSxuYW1lOnR9XX19fX1mdW5jdGlvbiBqKGUpe2NvbnN0IHI9e307Zm9yKGNvbnN0W3QsYV1vZiBPYmplY3QuZW50cmllcyhlPz97fSkpe2lmKHUoIlRhYmxlIix0KSxhPy5raW5kIT09InRhYmxlIil0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGFibGUgZGVmaW5pdGlvbiBmb3IgJHt0fS5gKTtpZighYS5maWVsZHN8fHR5cGVvZiBhLmZpZWxkcyE9Im9iamVjdCJ8fEFycmF5LmlzQXJyYXkoYS5maWVsZHMpKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBmaWVsZHMgZGVmaW5pdGlvbiBmb3IgJHt0fS5gKTtjb25zdCBuPXt9O2Zvcihjb25zdFtvLGRdb2YgT2JqZWN0LmVudHJpZXMoYS5maWVsZHMpKXtpZih1KCJGaWVsZCIsbyksYi5oYXMobykpdGhyb3cgbmV3IEVycm9yKGBGaWVsZCBuYW1lICIke299IiBpcyByZXNlcnZlZCBmb3IgTGFrZWJlZCBtZXRhZGF0YS5gKTtpZighZHx8IVsiYm9vbGVhbiIsImlkIiwic3RyaW5nIl0uaW5jbHVkZXMoZC5raW5kKSl0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGZpZWxkIGtpbmQgZm9yICR7dH0uJHtvfTogJHtTdHJpbmcoZD8ua2luZCl9YCk7aWYoZC5raW5kPT09ImlkIiYmIWQucmVmVGFibGUpdGhyb3cgbmV3IEVycm9yKGBJRCBmaWVsZCAke3R9LiR7b30gbXVzdCByZWZlcmVuY2UgYSB0YWJsZS5gKTtkLmtpbmQ9PT0iaWQiJiZ1KCJSZWZlcmVuY2VkIHRhYmxlIixkLnJlZlRhYmxlKSxuW29dPXsuLi5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCwiZGVmYXVsdFZhbHVlIik/e2RlZmF1bHRWYWx1ZTpkLmRlZmF1bHRWYWx1ZX06e30sa2luZDpkLmtpbmQsLi4uZC5yZWZUYWJsZT97cmVmVGFibGU6ZC5yZWZUYWJsZX06e319LE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLCJkZWZhdWx0VmFsdWUiKSYmVChuW29dLGQuZGVmYXVsdFZhbHVlLGAke3R9LiR7b30gZGVmYXVsdGApfWlmKCFBcnJheS5pc0FycmF5KGEuaW5kZXhlcykpdGhyb3cgbmV3IEVycm9yKGBJbmRleGVzIGZvciAke3R9IG11c3QgYmUgYW4gYXJyYXkuYCk7Y29uc3QgaT1hLmluZGV4ZXMsaD1uZXcgU2V0O2Zvcihjb25zdCBvIG9mIGkpe2lmKCFvfHx0eXBlb2Ygby5uYW1lIT0ic3RyaW5nIil0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaW5kZXggZGVmaW5pdGlvbiBvbiAke3R9LmApO2lmKHUoIkluZGV4IixvLm5hbWUpLG8ubmFtZT09PXApdGhyb3cgbmV3IEVycm9yKGBJbmRleCBuYW1lICIke3B9IiBpcyByZXNlcnZlZCBieSBMYWtlYmVkLmApO2lmKCFBcnJheS5pc0FycmF5KG8uZmllbGRzKXx8by5maWVsZHMubGVuZ3RoPT09MCl0aHJvdyBuZXcgRXJyb3IoYEluZGV4ICR7dH0uJHtvLm5hbWV9IG11c3QgZGVjbGFyZSBhdCBsZWFzdCBvbmUgZmllbGQuYCk7aWYoaC5oYXMoby5uYW1lKSl0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBpbmRleCBuYW1lIG9uICR7dH06ICR7by5uYW1lfWApO2guYWRkKG8ubmFtZSk7Y29uc3QgZD1uZXcgU2V0O2Zvcihjb25zdCBsIG9mIG8uZmllbGRzKXtpZih0eXBlb2YgbCE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKGBJbmRleCAke3R9LiR7by5uYW1lfSBjb250YWlucyBhbiBpbnZhbGlkIGZpZWxkIG5hbWUuYCk7aWYodSgiSW5kZXggZmllbGQiLGwpLGQuaGFzKGwpKXRocm93IG5ldyBFcnJvcihgSW5kZXggJHt0fS4ke28ubmFtZX0gcmVwZWF0cyBmaWVsZCAke2x9LmApO2lmKGQuYWRkKGwpLCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixsKSYmIWIuaGFzKGwpKXRocm93IG5ldyBFcnJvcihgSW5kZXggJHt0fS4ke28ubmFtZX0gcmVmZXJlbmNlcyB1bmtub3duIGZpZWxkICR7bH0uYCl9fXJbdF09e2ZpZWxkczpuLGluZGV4ZXM6aS5tYXAobz0+KHtmaWVsZHM6Wy4uLm8uZmllbGRzXSxuYW1lOm8ubmFtZX0pKSxraW5kOiJ0YWJsZSJ9fWZvcihjb25zdFt0LGFdb2YgT2JqZWN0LmVudHJpZXMocikpZm9yKGNvbnN0W24saV1vZiBPYmplY3QuZW50cmllcyhhLmZpZWxkcykpaWYoaS5raW5kPT09ImlkIiYmaS5yZWZUYWJsZSYmIXJbaS5yZWZUYWJsZV0pdGhyb3cgbmV3IEVycm9yKGBJRCBmaWVsZCAke3R9LiR7bn0gcmVmZXJlbmNlcyB1bmtub3duIHRhYmxlICR7aS5yZWZUYWJsZX0uYCk7cmV0dXJuIHJ9ZnVuY3Rpb24gSihlLHIpe2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCs9MSl7Y29uc3QgYT1lLmNoYXJDb2RlQXQodCk7aWYoYT09PTApdGhyb3cgbmV3IEVycm9yKGBWYWx1ZSBmb3IgJHtyfSBjYW5ub3QgY29udGFpbiBhIE5VTCBjaGFyYWN0ZXIuYCk7aWYoYT49NTUyOTYmJmE8PTU2MzE5KXtjb25zdCBuPWUuY2hhckNvZGVBdCh0KzEpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG4pfHxuPDU2MzIwfHxuPjU3MzQzKXRocm93IG5ldyBFcnJvcihgVmFsdWUgZm9yICR7cn0gY2Fubm90IGNvbnRhaW4gYW4gdW5wYWlyZWQgVVRGLTE2IHN1cnJvZ2F0ZS5gKTt0Kz0xO2NvbnRpbnVlfWlmKGE+PTU2MzIwJiZhPD01NzM0Myl0aHJvdyBuZXcgRXJyb3IoYFZhbHVlIGZvciAke3J9IGNhbm5vdCBjb250YWluIGFuIHVucGFpcmVkIFVURi0xNiBzdXJyb2dhdGUuYCl9fWZ1bmN0aW9uIFQoZSxyLHQpe2lmKHI9PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHZhbHVlIGZvciAke3R9YCk7aWYoKGUua2luZD09PSJzdHJpbmcifHxlLmtpbmQ9PT0iaWQiKSYmdHlwZW9mIHIhPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHt0fSB0byBiZSBhIHN0cmluZy5gKTtpZigoZS5raW5kPT09InN0cmluZyJ8fGUua2luZD09PSJpZCIpJiZ0eXBlb2Ygcj09InN0cmluZyImJkoocix0KSxlLmtpbmQ9PT0iYm9vbGVhbiImJnR5cGVvZiByIT0iYm9vbGVhbiIpdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke3R9IHRvIGJlIGEgYm9vbGVhbi5gKX12YXIgQj1uZXcgU2V0KFsiYWN0aW9ucyIsImVuZHBvaW50cyIsImZhdmljb24iLCJtdXRhdGlvbnMiLCJuYW1lIiwicXVlcmllcyIsInNjaGVtYSJdKTtmdW5jdGlvbiBEKGUpe2lmKCFlfHx0eXBlb2YgZSE9Im9iamVjdCIpdGhyb3cgbmV3IEVycm9yKCJjYXBzdWxlKCkgcmVxdWlyZXMgYSBkZWZpbml0aW9uIG9iamVjdC4iKTtmb3IoY29uc3QgciBvZiBPYmplY3Qua2V5cyhlKSlpZighQi5oYXMocikpdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGNhcHN1bGUoKSBvcHRpb246ICR7cn0uIFN1cHBvcnRlZCBvcHRpb25zOiBuYW1lLCBmYXZpY29uLCBzY2hlbWEsIGFjdGlvbnMsIHF1ZXJpZXMsIG11dGF0aW9ucywgZW5kcG9pbnRzLmApO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19sYWtlYmVkQ3JlYXRlRGIiLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMSx2YWx1ZShyLHQpe3JldHVybiBBKGooZS5zY2hlbWEpLHIsdCl9LHdyaXRhYmxlOiExfSksZX1mdW5jdGlvbiBQKGUpe3JldHVybiBlfWZ1bmN0aW9uIFUoZSl7cmV0dXJuIGV9dmFyIF89WyJ0eXBlIiwieCIsInkiLCJ3IiwiaCIsInBvaW50cyIsImNvbG9yIiwic3Ryb2tlV2lkdGgiLCJ0ZXh0IiwiZmlsbCIsInJvdGF0aW9uIiwieiIsImNyZWF0ZWRCeSJdO2Z1bmN0aW9uIGMoZSl7Y29uc3Qgcj17fTtyZXR1cm4gXy5mb3JFYWNoKHQ9PntyW3RdPWVbdF0/PyIifSkscn1mdW5jdGlvbiB3KGUscil7cmV0dXJuISFyJiYhIXIub3duZXJJZCYmci5vd25lcklkPT09ZS5hdXRoLnVzZXJJZH1mdW5jdGlvbiBJKGUscil7cmV0dXJuIXJ8fCFyLmRyYXdMb2NrfHx3KGUscil9YXN5bmMgZnVuY3Rpb24gZihlKXtyZXR1cm4oYXdhaXQgZS5kYi5yb29tLndpdGhJbmRleCgiYnlfY3JlYXRpb24iKS5jb2xsZWN0KCkpWzBdfWFzeW5jIGZ1bmN0aW9uIGcoZSl7cmV0dXJuIGUuZGIub3BzLndpdGhJbmRleCgiYnlfY3JlYXRpb24iKS5vcmRlcigiYXNjIikuY29sbGVjdCgpfWFzeW5jIGZ1bmN0aW9uICQoZSxyLHQsYSxuKXthd2FpdCBlLmRiLm9wcy5pbnNlcnQoe3VzZXJJZDplLmF1dGgudXNlcklkLGtpbmQ6cixzaGFwZUlkOnQsYmVmb3JlOmEsYWZ0ZXI6bix1bmRvbmU6ITF9KTtjb25zdCBpPWF3YWl0IGcoZSk7aWYoaS5sZW5ndGg+MTYwKWZvcihjb25zdCBoIG9mIGkuc2xpY2UoMCxpLmxlbmd0aC0xNjApKWF3YWl0IGUuZGIub3BzLmRlbGV0ZShoLmlkKX12YXIgcT1EKHtuYW1lOiJXaGl0ZWJvYXJkIixzY2hlbWE6e3NoYXBlczprKHt0eXBlOnMoKS5kZWZhdWx0KCIiKSx4OnMoKS5kZWZhdWx0KCIiKSx5OnMoKS5kZWZhdWx0KCIiKSx3OnMoKS5kZWZhdWx0KCIiKSxoOnMoKS5kZWZhdWx0KCIiKSxwb2ludHM6cygpLmRlZmF1bHQoIiIpLGNvbG9yOnMoKS5kZWZhdWx0KCIiKSxzdHJva2VXaWR0aDpzKCkuZGVmYXVsdCgiIiksdGV4dDpzKCkuZGVmYXVsdCgiIiksZmlsbDpzKCkuZGVmYXVsdCgiIikscm90YXRpb246cygpLmRlZmF1bHQoIiIpLHo6cygpLmRlZmF1bHQoIiIpLGNyZWF0ZWRCeTpzKCkuZGVmYXVsdCgiIil9KSxvcHM6ayh7dXNlcklkOnMoKS5kZWZhdWx0KCIiKSxraW5kOnMoKS5kZWZhdWx0KCIiKSxzaGFwZUlkOnMoKS5kZWZhdWx0KCIiKSxiZWZvcmU6cygpLmRlZmF1bHQoIiIpLGFmdGVyOnMoKS5kZWZhdWx0KCIiKSx1bmRvbmU6bSgpLmRlZmF1bHQoITEpfSkscm9vbTprKHtvd25lcklkOnMoKS5kZWZhdWx0KCIiKSx2aWV3SGFzaDpzKCkuZGVmYXVsdCgiIiksZHJhd0xvY2s6bSgpLmRlZmF1bHQoITEpLHZpZXdMb2NrOm0oKS5kZWZhdWx0KCExKX0pfSxxdWVyaWVzOntzaGFwZXM6YXN5bmMgZT0+ZS5kYi5zaGFwZXMud2l0aEluZGV4KCJieV9jcmVhdGlvbiIpLm9yZGVyKCJhc2MiKS5jb2xsZWN0KCkscm9vbTphc3luYyBlPT5lLmRiLnJvb20ud2l0aEluZGV4KCJieV9jcmVhdGlvbiIpLmNvbGxlY3QoKX0sbXV0YXRpb25zOnthZGRTaGFwZTphc3luYyhlLHIpPT57Y29uc3R7c2hhcGU6dH09SlNPTi5wYXJzZShyfHwie30iKSxhPWF3YWl0IGYoZSk7aWYoIUkoZSxhKXx8IXQpcmV0dXJuO2NvbnN0IG49YXdhaXQgZS5kYi5zaGFwZXMuaW5zZXJ0KHsuLi5jKHQpLGNyZWF0ZWRCeTplLmF1dGgudXNlcklkfSk7YXdhaXQgJChlLCJhZGQiLG4uaWQsIiIsSlNPTi5zdHJpbmdpZnkoYyhuKSkpfSx1cGRhdGVTaGFwZTphc3luYyhlLHIpPT57Y29uc3R7aWQ6dCxwYXRjaDphfT1KU09OLnBhcnNlKHJ8fCJ7fSIpLG49YXdhaXQgZihlKTtpZighSShlLG4pKXJldHVybjtjb25zdCBpPWF3YWl0IGUuZGIuc2hhcGVzLmdldCh0KTshaXx8IWF8fChhd2FpdCBlLmRiLnNoYXBlcy51cGRhdGUodCxhKSxhd2FpdCAkKGUsInVwZGF0ZSIsdCxKU09OLnN0cmluZ2lmeShjKGkpKSxKU09OLnN0cmluZ2lmeSh7Li4uYyhpKSwuLi5hfSkpKX0sZGVsZXRlU2hhcGU6YXN5bmMoZSxyKT0+e2NvbnN0e2lkOnR9PUpTT04ucGFyc2Uocnx8Int9IiksYT1hd2FpdCBmKGUpO2lmKCFJKGUsYSkpcmV0dXJuO2NvbnN0IG49YXdhaXQgZS5kYi5zaGFwZXMuZ2V0KHQpO24mJihhd2FpdCBlLmRiLnNoYXBlcy5kZWxldGUodCksYXdhaXQgJChlLCJkZWxldGUiLHQsSlNPTi5zdHJpbmdpZnkoYyhuKSksIiIpKX0sdW5kbzphc3luYyBlPT57Y29uc3Qgcj1hd2FpdCBmKGUpO2lmKHImJnIub3duZXJJZCYmIXcoZSxyKSlyZXR1cm47Y29uc3QgdD0oYXdhaXQgZyhlKSkuZmlsdGVyKGk9PiFpLnVuZG9uZSksYT10W3QubGVuZ3RoLTFdO2lmKCFhKXJldHVybjtsZXQgbj1hLnNoYXBlSWQ7YS5raW5kPT09ImFkZCI/YXdhaXQgZS5kYi5zaGFwZXMuZGVsZXRlKGEuc2hhcGVJZCk6YS5raW5kPT09ImRlbGV0ZSI/bj0oYXdhaXQgZS5kYi5zaGFwZXMuaW5zZXJ0KHsuLi5KU09OLnBhcnNlKGEuYmVmb3JlKSxjcmVhdGVkQnk6YS5iZWZvcmU/SlNPTi5wYXJzZShhLmJlZm9yZSkuY3JlYXRlZEJ5OmUuYXV0aC51c2VySWR9KSkuaWQ6YXdhaXQgZS5kYi5zaGFwZXMudXBkYXRlKGEuc2hhcGVJZCxKU09OLnBhcnNlKGEuYmVmb3JlKSksYXdhaXQgZS5kYi5vcHMudXBkYXRlKGEuaWQse3VuZG9uZTohMCxzaGFwZUlkOm59KX0scmVkbzphc3luYyBlPT57Y29uc3Qgcj1hd2FpdCBmKGUpO2lmKHImJnIub3duZXJJZCYmIXcoZSxyKSlyZXR1cm47Y29uc3QgdD0oYXdhaXQgZyhlKSkuZmlsdGVyKGk9PmkudW5kb25lKSxhPXRbdC5sZW5ndGgtMV07aWYoIWEpcmV0dXJuO2xldCBuPWEuc2hhcGVJZDthLmtpbmQ9PT0iYWRkIj9uPShhd2FpdCBlLmRiLnNoYXBlcy5pbnNlcnQoey4uLkpTT04ucGFyc2UoYS5hZnRlciksY3JlYXRlZEJ5OmUuYXV0aC51c2VySWR9KSkuaWQ6YS5raW5kPT09ImRlbGV0ZSI/YXdhaXQgZS5kYi5zaGFwZXMuZGVsZXRlKGEuc2hhcGVJZCk6YXdhaXQgZS5kYi5zaGFwZXMudXBkYXRlKGEuc2hhcGVJZCxKU09OLnBhcnNlKGEuYWZ0ZXIpKSxhd2FpdCBlLmRiLm9wcy51cGRhdGUoYS5pZCx7dW5kb25lOiExLHNoYXBlSWQ6bn0pfSxjbGFpbTphc3luYyhlLHIpPT57Y29uc3R7dmlld0hhc2g6dH09SlNPTi5wYXJzZShyfHwie30iKSxhPWF3YWl0IGYoZSk7YSYmYS5vd25lcklkfHwoYT9hd2FpdCBlLmRiLnJvb20udXBkYXRlKGEuaWQse293bmVySWQ6ZS5hdXRoLnVzZXJJZCx2aWV3SGFzaDp0fHwiIixkcmF3TG9jazohMSx2aWV3TG9jazohMX0pOmF3YWl0IGUuZGIucm9vbS5pbnNlcnQoe293bmVySWQ6ZS5hdXRoLnVzZXJJZCx2aWV3SGFzaDp0fHwiIixkcmF3TG9jazohMSx2aWV3TG9jazohMX0pKX0sc2V0RHJhd0xvY2s6YXN5bmMoZSxyKT0+e2NvbnN0e3ZhbHVlOnR9PUpTT04ucGFyc2Uocnx8Int9IiksYT1hd2FpdCBmKGUpO3coZSxhKSYmYXdhaXQgZS5kYi5yb29tLnVwZGF0ZShhLmlkLHtkcmF3TG9jazohIXR9KX0sc2V0Vmlld0xvY2s6YXN5bmMoZSxyKT0+e2NvbnN0e3ZhbHVlOnQsdmlld0hhc2g6YX09SlNPTi5wYXJzZShyfHwie30iKSxuPWF3YWl0IGYoZSk7aWYoIXcoZSxuKSlyZXR1cm47Y29uc3QgaT17dmlld0xvY2s6ISF0fTt0eXBlb2YgYT09InN0cmluZyImJihpLnZpZXdIYXNoPWEpLGF3YWl0IGUuZGIucm9vbS51cGRhdGUobi5pZCxpKX19fSk7ZXhwb3J0e3EgYXMgZGVmYXVsdH07Cg==","bundleHash":"sha256:4b1ec1aca0b3e660969b1fd26223c4efc861bf491f5bb9ccadf989e63e5bf439","entry":"/server.mjs"}}},"clientBundle":"dmFyIG4sbCx1LHQsaSxyLG8sZSxmLGMsYSxzLGgscCx2LHksZD17fSx3PVtdLF89L2FjaXR8ZXgoPzpzfGd8bnxwfCQpfHJwaHxncmlkfG93c3xtbmN8bnR3fGluZVtjaF18em9vfF5vcmR8aXRlcmEvaSxnPUFycmF5LmlzQXJyYXk7ZnVuY3Rpb24gbShVLE0pe2Zvcih2YXIgVyBpbiBNKVVbV109TVtXXTtyZXR1cm4gVX1mdW5jdGlvbiBiKFUpe1UmJlUucGFyZW50Tm9kZSYmVS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKFUpfWZ1bmN0aW9uIGsoVSxNLFcpe3ZhciBGLFksWixuZT17fTtmb3IoWiBpbiBNKVo9PSJrZXkiP0Y9TVtaXTpaPT0icmVmIj9ZPU1bWl06bmVbWl09TVtaXTtpZihhcmd1bWVudHMubGVuZ3RoPjImJihuZS5jaGlsZHJlbj1hcmd1bWVudHMubGVuZ3RoPjM/bi5jYWxsKGFyZ3VtZW50cywyKTpXKSx0eXBlb2YgVT09ImZ1bmN0aW9uIiYmVS5kZWZhdWx0UHJvcHMhPW51bGwpZm9yKFogaW4gVS5kZWZhdWx0UHJvcHMpbmVbWl09PT12b2lkIDAmJihuZVtaXT1VLmRlZmF1bHRQcm9wc1taXSk7cmV0dXJuIHgoVSxuZSxGLFksbnVsbCl9ZnVuY3Rpb24geChVLE0sVyxGLFkpe3ZhciBaPXt0eXBlOlUscHJvcHM6TSxrZXk6VyxyZWY6RixfX2s6bnVsbCxfXzpudWxsLF9fYjowLF9fZTpudWxsLF9fYzpudWxsLGNvbnN0cnVjdG9yOnZvaWQgMCxfX3Y6WT8/Kyt1LF9faTotMSxfX3U6MH07cmV0dXJuIFk9PW51bGwmJmwudm5vZGUhPW51bGwmJmwudm5vZGUoWiksWn1mdW5jdGlvbiBTKFUpe3JldHVybiBVLmNoaWxkcmVufWZ1bmN0aW9uIEMoVSxNKXt0aGlzLnByb3BzPVUsdGhpcy5jb250ZXh0PU19ZnVuY3Rpb24gJChVLE0pe2lmKE09PW51bGwpcmV0dXJuIFUuX18/JChVLl9fLFUuX19pKzEpOm51bGw7Zm9yKHZhciBXO008VS5fX2subGVuZ3RoO00rKylpZigoVz1VLl9fa1tNXSkhPW51bGwmJlcuX19lIT1udWxsKXJldHVybiBXLl9fZTtyZXR1cm4gdHlwZW9mIFUudHlwZT09ImZ1bmN0aW9uIj8kKFUpOm51bGx9ZnVuY3Rpb24gSShVKXtpZihVLl9fUCYmVS5fX2Qpe3ZhciBNPVUuX192LFc9TS5fX2UsRj1bXSxZPVtdLFo9bSh7fSxNKTtaLl9fdj1NLl9fdisxLGwudm5vZGUmJmwudm5vZGUoWikscShVLl9fUCxaLE0sVS5fX24sVS5fX1AubmFtZXNwYWNlVVJJLDMyJk0uX191P1tXXTpudWxsLEYsVz8/JChNKSwhISgzMiZNLl9fdSksWSksWi5fX3Y9TS5fX3YsWi5fXy5fX2tbWi5fX2ldPVosRChGLFosWSksTS5fX2U9TS5fXz1udWxsLFouX19lIT1XJiZQKFopfX1mdW5jdGlvbiBQKFUpe2lmKChVPVUuX18pIT1udWxsJiZVLl9fYyE9bnVsbClyZXR1cm4gVS5fX2U9VS5fX2MuYmFzZT1udWxsLFUuX19rLnNvbWUoZnVuY3Rpb24oTSl7aWYoTSE9bnVsbCYmTS5fX2UhPW51bGwpcmV0dXJuIFUuX19lPVUuX19jLmJhc2U9TS5fX2V9KSxQKFUpfWZ1bmN0aW9uIEEoVSl7KCFVLl9fZCYmKFUuX19kPSEwKSYmaS5wdXNoKFUpJiYhSC5fX3IrK3x8ciE9bC5kZWJvdW5jZVJlbmRlcmluZykmJigocj1sLmRlYm91bmNlUmVuZGVyaW5nKXx8bykoSCl9ZnVuY3Rpb24gSCgpe3RyeXtmb3IodmFyIFUsTT0xO2kubGVuZ3RoOylpLmxlbmd0aD5NJiZpLnNvcnQoZSksVT1pLnNoaWZ0KCksTT1pLmxlbmd0aCxJKFUpfWZpbmFsbHl7aS5sZW5ndGg9SC5fX3I9MH19ZnVuY3Rpb24gTChVLE0sVyxGLFksWixuZSxpZSxvZSxhZSxjZSl7dmFyIGRlLHJlLGxlLHBlLHdlLHllLGdlLF9lPUYmJkYuX19rfHx3LEllPU0ubGVuZ3RoO2ZvcihvZT1UKFcsTSxfZSxvZSxJZSksZGU9MDtkZTxJZTtkZSsrKShsZT1XLl9fa1tkZV0pIT1udWxsJiYocmU9bGUuX19pIT0tMSYmX2VbbGUuX19pXXx8ZCxsZS5fX2k9ZGUseWU9cShVLGxlLHJlLFksWixuZSxpZSxvZSxhZSxjZSkscGU9bGUuX19lLGxlLnJlZiYmcmUucmVmIT1sZS5yZWYmJihyZS5yZWYmJkoocmUucmVmLG51bGwsbGUpLGNlLnB1c2gobGUucmVmLGxlLl9fY3x8cGUsbGUpKSx3ZT09bnVsbCYmcGUhPW51bGwmJih3ZT1wZSksKGdlPSEhKDQmbGUuX191KSl8fHJlLl9faz09PWxlLl9faz8ob2U9aihsZSxvZSxVLGdlKSxnZSYmcmUuX19lJiYocmUuX19lPW51bGwpKTp0eXBlb2YgbGUudHlwZT09ImZ1bmN0aW9uIiYmeWUhPT12b2lkIDA/b2U9eWU6cGUmJihvZT1wZS5uZXh0U2libGluZyksbGUuX191Jj0tNyk7cmV0dXJuIFcuX19lPXdlLG9lfWZ1bmN0aW9uIFQoVSxNLFcsRixZKXt2YXIgWixuZSxpZSxvZSxhZSxjZT1XLmxlbmd0aCxkZT1jZSxyZT0wO2ZvcihVLl9faz1uZXcgQXJyYXkoWSksWj0wO1o8WTtaKyspKG5lPU1bWl0pIT1udWxsJiZ0eXBlb2YgbmUhPSJib29sZWFuIiYmdHlwZW9mIG5lIT0iZnVuY3Rpb24iPyh0eXBlb2YgbmU9PSJzdHJpbmcifHx0eXBlb2YgbmU9PSJudW1iZXIifHx0eXBlb2YgbmU9PSJiaWdpbnQifHxuZS5jb25zdHJ1Y3Rvcj09U3RyaW5nP25lPVUuX19rW1pdPXgobnVsbCxuZSxudWxsLG51bGwsbnVsbCk6ZyhuZSk/bmU9VS5fX2tbWl09eChTLHtjaGlsZHJlbjpuZX0sbnVsbCxudWxsLG51bGwpOm5lLmNvbnN0cnVjdG9yPT09dm9pZCAwJiZuZS5fX2I+MD9uZT1VLl9fa1taXT14KG5lLnR5cGUsbmUucHJvcHMsbmUua2V5LG5lLnJlZj9uZS5yZWY6bnVsbCxuZS5fX3YpOlUuX19rW1pdPW5lLG9lPVorcmUsbmUuX189VSxuZS5fX2I9VS5fX2IrMSxpZT1udWxsLChhZT1uZS5fX2k9TyhuZSxXLG9lLGRlKSkhPS0xJiYoZGUtLSwoaWU9V1thZV0pJiYoaWUuX191fD0yKSksaWU9PW51bGx8fGllLl9fdj09bnVsbD8oYWU9PS0xJiYoWT5jZT9yZS0tOlk8Y2UmJnJlKyspLHR5cGVvZiBuZS50eXBlIT0iZnVuY3Rpb24iJiYobmUuX191fD00KSk6YWUhPW9lJiYoYWU9PW9lLTE/cmUtLTphZT09b2UrMT9yZSsrOihhZT5vZT9yZS0tOnJlKyssbmUuX191fD00KSkpOlUuX19rW1pdPW51bGw7aWYoZGUpZm9yKFo9MDtaPGNlO1orKykoaWU9V1taXSkhPW51bGwmJigyJmllLl9fdSk9PTAmJihpZS5fX2U9PUYmJihGPSQoaWUpKSxLKGllLGllKSk7cmV0dXJuIEZ9ZnVuY3Rpb24gaihVLE0sVyxGKXt2YXIgWSxaO2lmKHR5cGVvZiBVLnR5cGU9PSJmdW5jdGlvbiIpe2ZvcihZPVUuX19rLFo9MDtZJiZaPFkubGVuZ3RoO1orKylZW1pdJiYoWVtaXS5fXz1VLE09aihZW1pdLE0sVyxGKSk7cmV0dXJuIE19VS5fX2UhPU0mJihGJiYoTSYmVS50eXBlJiYhTS5wYXJlbnROb2RlJiYoTT0kKFUpKSxXLmluc2VydEJlZm9yZShVLl9fZSxNfHxudWxsKSksTT1VLl9fZSk7ZG8gTT1NJiZNLm5leHRTaWJsaW5nO3doaWxlKE0hPW51bGwmJk0ubm9kZVR5cGU9PTgpO3JldHVybiBNfWZ1bmN0aW9uIE8oVSxNLFcsRil7dmFyIFksWixuZSxpZT1VLmtleSxvZT1VLnR5cGUsYWU9TVtXXSxjZT1hZSE9bnVsbCYmKDImYWUuX191KT09MDtpZihhZT09PW51bGwmJmllPT1udWxsfHxjZSYmaWU9PWFlLmtleSYmb2U9PWFlLnR5cGUpcmV0dXJuIFc7aWYoRj4oY2U/MTowKSl7Zm9yKFk9Vy0xLFo9VysxO1k+PTB8fFo8TS5sZW5ndGg7KWlmKChhZT1NW25lPVk+PTA/WS0tOlorK10pIT1udWxsJiYoMiZhZS5fX3UpPT0wJiZpZT09YWUua2V5JiZvZT09YWUudHlwZSlyZXR1cm4gbmV9cmV0dXJuLTF9ZnVuY3Rpb24geihVLE0sVyl7TVswXT09Ii0iP1Uuc2V0UHJvcGVydHkoTSxXPz8iIik6VVtNXT1XPT1udWxsPyIiOnR5cGVvZiBXIT0ibnVtYmVyInx8Xy50ZXN0KE0pP1c6VysicHgifWZ1bmN0aW9uIE4oVSxNLFcsRixZKXt2YXIgWixuZTtlOmlmKE09PSJzdHlsZSIpaWYodHlwZW9mIFc9PSJzdHJpbmciKVUuc3R5bGUuY3NzVGV4dD1XO2Vsc2V7aWYodHlwZW9mIEY9PSJzdHJpbmciJiYoVS5zdHlsZS5jc3NUZXh0PUY9IiIpLEYpZm9yKE0gaW4gRilXJiZNIGluIFd8fHooVS5zdHlsZSxNLCIiKTtpZihXKWZvcihNIGluIFcpRiYmV1tNXT09RltNXXx8eihVLnN0eWxlLE0sV1tNXSl9ZWxzZSBpZihNWzBdPT0ibyImJk1bMV09PSJuIilaPU0hPShNPU0ucmVwbGFjZShzLCIkMSIpKSxuZT1NLnRvTG93ZXJDYXNlKCksTT1uZSBpbiBVfHxNPT0ib25Gb2N1c091dCJ8fE09PSJvbkZvY3VzSW4iP25lLnNsaWNlKDIpOk0uc2xpY2UoMiksVS5sfHwoVS5sPXt9KSxVLmxbTStaXT1XLFc/Rj9XW2FdPUZbYV06KFdbYV09aCxVLmFkZEV2ZW50TGlzdGVuZXIoTSxaP3Y6cCxaKSk6VS5yZW1vdmVFdmVudExpc3RlbmVyKE0sWj92OnAsWik7ZWxzZXtpZihZPT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKU09TS5yZXBsYWNlKC94bGluayhIfDpoKS8sImgiKS5yZXBsYWNlKC9zTmFtZSQvLCJzIik7ZWxzZSBpZihNIT0id2lkdGgiJiZNIT0iaGVpZ2h0IiYmTSE9ImhyZWYiJiZNIT0ibGlzdCImJk0hPSJmb3JtIiYmTSE9InRhYkluZGV4IiYmTSE9ImRvd25sb2FkIiYmTSE9InJvd1NwYW4iJiZNIT0iY29sU3BhbiImJk0hPSJyb2xlIiYmTSE9InBvcG92ZXIiJiZNIGluIFUpdHJ5e1VbTV09Vz8/IiI7YnJlYWsgZX1jYXRjaHt9dHlwZW9mIFc9PSJmdW5jdGlvbiJ8fChXPT1udWxsfHxXPT09ITEmJk1bNF0hPSItIj9VLnJlbW92ZUF0dHJpYnV0ZShNKTpVLnNldEF0dHJpYnV0ZShNLE09PSJwb3BvdmVyIiYmVz09MT8iIjpXKSl9fWZ1bmN0aW9uIFYoVSl7cmV0dXJuIGZ1bmN0aW9uKE0pe2lmKHRoaXMubCl7dmFyIFc9dGhpcy5sW00udHlwZStVXTtpZihNW2NdPT1udWxsKU1bY109aCsrO2Vsc2UgaWYoTVtjXTxXW2FdKXJldHVybjtyZXR1cm4gVyhsLmV2ZW50P2wuZXZlbnQoTSk6TSl9fX1mdW5jdGlvbiBxKFUsTSxXLEYsWSxaLG5lLGllLG9lLGFlKXt2YXIgY2UsZGUscmUsbGUscGUsd2UseWUsZ2UsX2UsSWUsRGUsTmUsR2UsdHQsamUsdmUsQ2U9TS50eXBlO2lmKE0uY29uc3RydWN0b3IhPT12b2lkIDApcmV0dXJuIG51bGw7MTI4JlcuX191JiYob2U9ISEoMzImVy5fX3UpLFo9W2llPU0uX19lPVcuX19lXSksKGNlPWwuX19iKSYmY2UoTSk7ZTppZih0eXBlb2YgQ2U9PSJmdW5jdGlvbiIpe2RlPW5lLmxlbmd0aDt0cnl7aWYoX2U9TS5wcm9wcyxJZT1DZS5wcm90b3R5cGUmJkNlLnByb3RvdHlwZS5yZW5kZXIsRGU9KGNlPUNlLmNvbnRleHRUeXBlKSYmRltjZS5fX2NdLE5lPWNlP0RlP0RlLnByb3BzLnZhbHVlOmNlLl9fOkYsVy5fX2M/Z2U9KHJlPU0uX19jPVcuX19jKS5fXz1yZS5fX0U6KEllP00uX19jPXJlPW5ldyBDZShfZSxOZSk6KE0uX19jPXJlPW5ldyBDKF9lLE5lKSxyZS5jb25zdHJ1Y3Rvcj1DZSxyZS5yZW5kZXI9USksRGUmJkRlLnN1YihyZSkscmUuc3RhdGV8fChyZS5zdGF0ZT17fSkscmUuX19uPUYsbGU9cmUuX19kPSEwLHJlLl9faD1bXSxyZS5fc2I9W10pLEllJiZyZS5fX3M9PW51bGwmJihyZS5fX3M9cmUuc3RhdGUpLEllJiZDZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMhPW51bGwmJihyZS5fX3M9PXJlLnN0YXRlJiYocmUuX19zPW0oe30scmUuX19zKSksbShyZS5fX3MsQ2UuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKF9lLHJlLl9fcykpKSxwZT1yZS5wcm9wcyx3ZT1yZS5zdGF0ZSxyZS5fX3Y9TSxsZSlJZSYmQ2UuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPT1udWxsJiZyZS5jb21wb25lbnRXaWxsTW91bnQhPW51bGwmJnJlLmNvbXBvbmVudFdpbGxNb3VudCgpLEllJiZyZS5jb21wb25lbnREaWRNb3VudCE9bnVsbCYmcmUuX19oLnB1c2gocmUuY29tcG9uZW50RGlkTW91bnQpO2Vsc2V7aWYoSWUmJkNlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz09bnVsbCYmX2UhPT1wZSYmcmUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyE9bnVsbCYmcmUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhfZSxOZSksTS5fX3Y9PVcuX192fHwhcmUuX19lJiZyZS5zaG91bGRDb21wb25lbnRVcGRhdGUhPW51bGwmJnJlLnNob3VsZENvbXBvbmVudFVwZGF0ZShfZSxyZS5fX3MsTmUpPT09ITEpe00uX192IT1XLl9fdiYmKHJlLnByb3BzPV9lLHJlLnN0YXRlPXJlLl9fcyxyZS5fX2Q9ITEpLE0uX19lPVcuX19lLE0uX19rPVcuX19rLE0uX19rLnNvbWUoZnVuY3Rpb24oYmUpe2JlJiYoYmUuX189TSl9KSx3LnB1c2guYXBwbHkocmUuX19oLHJlLl9zYikscmUuX3NiPVtdLHJlLl9faC5sZW5ndGgmJm5lLnB1c2gocmUpO2JyZWFrIGV9cmUuY29tcG9uZW50V2lsbFVwZGF0ZSE9bnVsbCYmcmUuY29tcG9uZW50V2lsbFVwZGF0ZShfZSxyZS5fX3MsTmUpLEllJiZyZS5jb21wb25lbnREaWRVcGRhdGUhPW51bGwmJnJlLl9faC5wdXNoKGZ1bmN0aW9uKCl7cmUuY29tcG9uZW50RGlkVXBkYXRlKHBlLHdlLHllKX0pfWlmKHJlLmNvbnRleHQ9TmUscmUucHJvcHM9X2UscmUuX19QPVUscmUuX19lPSExLEdlPWwuX19yLHR0PTAsSWUpcmUuc3RhdGU9cmUuX19zLHJlLl9fZD0hMSxHZSYmR2UoTSksY2U9cmUucmVuZGVyKHJlLnByb3BzLHJlLnN0YXRlLHJlLmNvbnRleHQpLHcucHVzaC5hcHBseShyZS5fX2gscmUuX3NiKSxyZS5fc2I9W107ZWxzZSBkbyByZS5fX2Q9ITEsR2UmJkdlKE0pLGNlPXJlLnJlbmRlcihyZS5wcm9wcyxyZS5zdGF0ZSxyZS5jb250ZXh0KSxyZS5zdGF0ZT1yZS5fX3M7d2hpbGUocmUuX19kJiYrK3R0PDI1KTtyZS5zdGF0ZT1yZS5fX3MscmUuZ2V0Q2hpbGRDb250ZXh0IT1udWxsJiYoRj1tKG0oe30sRikscmUuZ2V0Q2hpbGRDb250ZXh0KCkpKSxJZSYmIWxlJiZyZS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSE9bnVsbCYmKHllPXJlLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKHBlLHdlKSksamU9Y2UhPW51bGwmJmNlLnR5cGU9PT1TJiZjZS5rZXk9PW51bGw/RShjZS5wcm9wcy5jaGlsZHJlbik6Y2UsaWU9TChVLGcoamUpP2plOltqZV0sTSxXLEYsWSxaLG5lLGllLG9lLGFlKSxyZS5iYXNlPU0uX19lLE0uX191Jj0tMTYxLHJlLl9faC5sZW5ndGgmJm5lLnB1c2gocmUpLGdlJiYocmUuX19FPXJlLl9fPW51bGwpfWNhdGNoKGJlKXtpZihuZS5sZW5ndGg9ZGUsTS5fX3Y9bnVsbCxvZXx8WiE9bnVsbCl7aWYoYmUudGhlbil7Zm9yKE0uX191fD1vZT8xNjA6MTI4O2llJiZpZS5ub2RlVHlwZT09OCYmaWUubmV4dFNpYmxpbmc7KWllPWllLm5leHRTaWJsaW5nO1ohPW51bGwmJihaW1ouaW5kZXhPZihpZSldPW51bGwpLE0uX19lPWllfWVsc2UgaWYoWiE9bnVsbClmb3IodmU9Wi5sZW5ndGg7dmUtLTspYihaW3ZlXSl9ZWxzZSBNLl9fZT1XLl9fZTtNLl9faz09bnVsbCYmKE0uX19rPVcuX19rfHxbXSksYmUudGhlbnx8QihNKSxsLl9fZShiZSxNLFcpfX1lbHNlIFo9PW51bGwmJk0uX192PT1XLl9fdj8oTS5fX2s9Vy5fX2ssTS5fX2U9Vy5fX2UpOmllPU0uX19lPUcoVy5fX2UsTSxXLEYsWSxaLG5lLG9lLGFlKTtyZXR1cm4oY2U9bC5kaWZmZWQpJiZjZShNKSwxMjgmTS5fX3U/dm9pZCAwOmllfWZ1bmN0aW9uIEIoVSl7VSYmKFUuX19jJiYoVS5fX2MuX19lPSEwKSxVLl9fayYmVS5fX2suc29tZShCKSl9ZnVuY3Rpb24gRChVLE0sVyl7Zm9yKHZhciBGPTA7RjxXLmxlbmd0aDtGKyspSihXW0ZdLFdbKytGXSxXWysrRl0pO2wuX19jJiZsLl9fYyhNLFUpLFUuc29tZShmdW5jdGlvbihZKXt0cnl7VT1ZLl9faCxZLl9faD1bXSxVLnNvbWUoZnVuY3Rpb24oWil7Wi5jYWxsKFkpfSl9Y2F0Y2goWil7bC5fX2UoWixZLl9fdil9fSl9ZnVuY3Rpb24gRShVKXtyZXR1cm4gdHlwZW9mIFUhPSJvYmplY3QifHxVPT1udWxsfHxVLl9fYj4wP1U6ZyhVKT9VLm1hcChFKTpVLmNvbnN0cnVjdG9yIT09dm9pZCAwP251bGw6bSh7fSxVKX1mdW5jdGlvbiBHKFUsTSxXLEYsWSxaLG5lLGllLG9lKXt2YXIgYWUsY2UsZGUscmUsbGUscGUsd2UseWU9Vy5wcm9wc3x8ZCxnZT1NLnByb3BzLF9lPU0udHlwZTtpZihfZT09InN2ZyI/WT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciOl9lPT0ibWF0aCI/WT0iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCI6WXx8KFk9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiKSxaIT1udWxsKXtmb3IoYWU9MDthZTxaLmxlbmd0aDthZSsrKWlmKChsZT1aW2FlXSkmJiJzZXRBdHRyaWJ1dGUiaW4gbGU9PSEhX2UmJihfZT9sZS5sb2NhbE5hbWU9PV9lOmxlLm5vZGVUeXBlPT0zKSl7VT1sZSxaW2FlXT1udWxsO2JyZWFrfX1pZihVPT1udWxsKXtpZihfZT09bnVsbClyZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZ2UpO1U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFksX2UsZ2UuaXMmJmdlKSxpZSYmKGwuX19tJiZsLl9fbShNLFopLGllPSExKSxaPW51bGx9aWYoX2U9PW51bGwpeWU9PT1nZXx8aWUmJlUuZGF0YT09Z2V8fChVLmRhdGE9Z2UpO2Vsc2V7aWYoWj1fZT09InRleHRhcmVhIiYmZ2UuZGVmYXVsdFZhbHVlIT1udWxsP251bGw6WiYmbi5jYWxsKFUuY2hpbGROb2RlcyksIWllJiZaIT1udWxsKWZvcih5ZT17fSxhZT0wO2FlPFUuYXR0cmlidXRlcy5sZW5ndGg7YWUrKyl5ZVsobGU9VS5hdHRyaWJ1dGVzW2FlXSkubmFtZV09bGUudmFsdWU7Zm9yKGFlIGluIHllKWxlPXllW2FlXSxhZT09ImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIj9kZT1sZTphZT09ImNoaWxkcmVuInx8YWUgaW4gZ2V8fGFlPT0idmFsdWUiJiYiZGVmYXVsdFZhbHVlImluIGdlfHxhZT09ImNoZWNrZWQiJiYiZGVmYXVsdENoZWNrZWQiaW4gZ2V8fE4oVSxhZSxudWxsLGxlLFkpO2ZvcihhZSBpbiBnZSlsZT1nZVthZV0sYWU9PSJjaGlsZHJlbiI/cmU9bGU6YWU9PSJkYW5nZXJvdXNseVNldElubmVySFRNTCI/Y2U9bGU6YWU9PSJ2YWx1ZSI/cGU9bGU6YWU9PSJjaGVja2VkIj93ZT1sZTppZSYmdHlwZW9mIGxlIT0iZnVuY3Rpb24ifHx5ZVthZV09PT1sZXx8TihVLGFlLGxlLHllW2FlXSxZKTtpZihjZSlpZXx8ZGUmJihjZS5fX2h0bWw9PWRlLl9faHRtbHx8Y2UuX19odG1sPT1VLmlubmVySFRNTCl8fChVLmlubmVySFRNTD1jZS5fX2h0bWwpLE0uX19rPVtdO2Vsc2UgaWYoZGUmJihVLmlubmVySFRNTD0iIiksTChNLnR5cGU9PSJ0ZW1wbGF0ZSI/VS5jb250ZW50OlUsZyhyZSk/cmU6W3JlXSxNLFcsRixfZT09ImZvcmVpZ25PYmplY3QiPyJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjpZLFosbmUsWj9aWzBdOlcuX19rJiYkKFcsMCksaWUsb2UpLFohPW51bGwpZm9yKGFlPVoubGVuZ3RoO2FlLS07KWIoWlthZV0pO2llJiZfZSE9InRleHRhcmVhInx8KGFlPSJ2YWx1ZSIsX2U9PSJwcm9ncmVzcyImJnBlPT1udWxsP1UucmVtb3ZlQXR0cmlidXRlKCJ2YWx1ZSIpOnBlIT1udWxsJiYocGUhPT1VW2FlXXx8X2U9PSJwcm9ncmVzcyImJiFwZXx8X2U9PSJvcHRpb24iJiZwZSE9eWVbYWVdKSYmTihVLGFlLHBlLHllW2FlXSxZKSxhZT0iY2hlY2tlZCIsd2UhPW51bGwmJndlIT1VW2FlXSYmTihVLGFlLHdlLHllW2FlXSxZKSl9cmV0dXJuIFV9ZnVuY3Rpb24gSihVLE0sVyl7dHJ5e2lmKHR5cGVvZiBVPT0iZnVuY3Rpb24iKXt2YXIgRj10eXBlb2YgVS5fX3U9PSJmdW5jdGlvbiI7RiYmVS5fX3UoKSxGJiZNPT1udWxsfHwoVS5fX3U9VShNKSl9ZWxzZSBVLmN1cnJlbnQ9TX1jYXRjaChZKXtsLl9fZShZLFcpfX1mdW5jdGlvbiBLKFUsTSxXKXt2YXIgRixZO2lmKGwudW5tb3VudCYmbC51bm1vdW50KFUpLChGPVUucmVmKSYmKEYuY3VycmVudCYmRi5jdXJyZW50IT1VLl9fZXx8SihGLG51bGwsTSkpLChGPVUuX19jKSE9bnVsbCl7aWYoRi5jb21wb25lbnRXaWxsVW5tb3VudCl0cnl7Ri5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKFope2wuX19lKFosTSl9Ri5iYXNlPUYuX19QPUYuX19uPW51bGx9aWYoRj1VLl9faylmb3IoWT0wO1k8Ri5sZW5ndGg7WSsrKUZbWV0mJksoRltZXSxNLFd8fHR5cGVvZiBVLnR5cGUhPSJmdW5jdGlvbiIpO1d8fGIoVS5fX2UpLFUuX19jPVUuX189VS5fX2U9dm9pZCAwfWZ1bmN0aW9uIFEoVSxNLFcpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yKFUsVyl9ZnVuY3Rpb24gUihVLE0sVyl7dmFyIEYsWSxaLG5lO009PWRvY3VtZW50JiYoTT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLGwuX18mJmwuX18oVSxNKSxZPShGPXR5cGVvZiBXPT0iZnVuY3Rpb24iKT9udWxsOlcmJlcuX19rfHxNLl9fayxaPVtdLG5lPVtdLHEoTSxVPSghRiYmV3x8TSkuX19rPWsoUyxudWxsLFtVXSksWXx8ZCxkLE0ubmFtZXNwYWNlVVJJLCFGJiZXP1tXXTpZP251bGw6TS5maXJzdENoaWxkP24uY2FsbChNLmNoaWxkTm9kZXMpOm51bGwsWiwhRiYmVz9XOlk/WS5fX2U6TS5maXJzdENoaWxkLEYsbmUpLEQoWixVLG5lKSxVLnByb3BzLmNoaWxkcmVuPW51bGx9ZnVuY3Rpb24gWChVKXtmdW5jdGlvbiBNKFcpe3ZhciBGLFk7cmV0dXJuIHRoaXMuZ2V0Q2hpbGRDb250ZXh0fHwoRj1uZXcgU2V0LChZPXt9KVtNLl9fY109dGhpcyx0aGlzLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3JldHVybiBZfSx0aGlzLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7Rj1udWxsfSx0aGlzLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbihaKXt0aGlzLnByb3BzLnZhbHVlIT1aLnZhbHVlJiZGLmZvckVhY2goZnVuY3Rpb24obmUpe25lLl9fZT0hMCxBKG5lKX0pfSx0aGlzLnN1Yj1mdW5jdGlvbihaKXtGLmFkZChaKTt2YXIgbmU9Wi5jb21wb25lbnRXaWxsVW5tb3VudDtaLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7RiYmRi5kZWxldGUoWiksbmUmJm5lLmNhbGwoWil9fSksVy5jaGlsZHJlbn1yZXR1cm4gTS5fX2M9Il9fY0MiK3krKyxNLl9fPVUsTS5Qcm92aWRlcj1NLl9fbD0oTS5Db25zdW1lcj1mdW5jdGlvbihXLEYpe3JldHVybiBXLmNoaWxkcmVuKEYpfSkuY29udGV4dFR5cGU9TSxNfW49dy5zbGljZSxsPXtfX2U6ZnVuY3Rpb24oVSxNLFcsRil7Zm9yKHZhciBZLFosbmU7TT1NLl9fOylpZigoWT1NLl9fYykmJiFZLl9fKXRyeXtpZigoWj1ZLmNvbnN0cnVjdG9yKSYmWi5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IhPW51bGwmJihZLnNldFN0YXRlKFouZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKFUpKSxuZT1ZLl9fZCksWS5jb21wb25lbnREaWRDYXRjaCE9bnVsbCYmKFkuY29tcG9uZW50RGlkQ2F0Y2goVSxGfHx7fSksbmU9WS5fX2QpLG5lKXJldHVybiBZLl9fRT1ZfWNhdGNoKGllKXtVPWllfXRocm93IFV9fSx1PTAsdD1mdW5jdGlvbihVKXtyZXR1cm4gVSE9bnVsbCYmVS5jb25zdHJ1Y3Rvcj09PXZvaWQgMH0sQy5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oVSxNKXt2YXIgVztXPXRoaXMuX19zIT1udWxsJiZ0aGlzLl9fcyE9dGhpcy5zdGF0ZT90aGlzLl9fczp0aGlzLl9fcz1tKHt9LHRoaXMuc3RhdGUpLHR5cGVvZiBVPT0iZnVuY3Rpb24iJiYoVT1VKG0oe30sVyksdGhpcy5wcm9wcykpLFUmJm0oVyxVKSxVIT1udWxsJiZ0aGlzLl9fdiYmKE0mJnRoaXMuX3NiLnB1c2goTSksQSh0aGlzKSl9LEMucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKFUpe3RoaXMuX192JiYodGhpcy5fX2U9ITAsVSYmdGhpcy5fX2gucHVzaChVKSxBKHRoaXMpKX0sQy5wcm90b3R5cGUucmVuZGVyPVMsaT1bXSxvPXR5cGVvZiBQcm9taXNlPT0iZnVuY3Rpb24iP1Byb21pc2UucHJvdG90eXBlLnRoZW4uYmluZChQcm9taXNlLnJlc29sdmUoKSk6c2V0VGltZW91dCxlPWZ1bmN0aW9uKFUsTSl7cmV0dXJuIFUuX192Ll9fYi1NLl9fdi5fX2J9LEguX19yPTAsZj1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDgpLGM9Il9fZCIrZixhPSJfX2EiK2Yscz0vKFBvaW50ZXJDYXB0dXJlKSR8Q2FwdHVyZSQvaSxoPTAscD1WKCExKSx2PVYoITApLHk9MDt2YXIgSURFTlRJVFlfU1VCSkVDVF9NQVhfQllURVM9NTEyLHV0ZjhFbmNvZGVyPW5ldyBUZXh0RW5jb2RlcjtmdW5jdGlvbiBpc1dlbGxGb3JtZWRVbmljb2RlU2NhbGFyU3RyaW5nKFUpe2ZvcihsZXQgTT0wO008VS5sZW5ndGg7TSs9MSl7Y29uc3QgVz1VLmNoYXJDb2RlQXQoTSk7aWYoVz49NTUyOTYmJlc8PTU2MzE5KXtjb25zdCBGPVUuY2hhckNvZGVBdChNKzEpO2lmKE0rMT49VS5sZW5ndGh8fEY8NTYzMjB8fEY+NTczNDMpcmV0dXJuITE7TSs9MX1lbHNlIGlmKFc+PTU2MzIwJiZXPD01NzM0MylyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBwYXJzZUlkZW50aXR5U3ViamVjdChVKXtyZXR1cm4gdHlwZW9mIFUhPSJzdHJpbmcifHxVLnRyaW0oKS5sZW5ndGg9PT0wfHwhaXNXZWxsRm9ybWVkVW5pY29kZVNjYWxhclN0cmluZyhVKXx8dXRmOEVuY29kZXIuZW5jb2RlKFUpLmJ5dGVMZW5ndGg+SURFTlRJVFlfU1VCSkVDVF9NQVhfQllURVM/bnVsbDpVfXZhciBERUZBVUxUX0FVVEhfQkFTRV9VUkw9Imh0dHBzOi8vYXV0aC5sYWtlYmVkLmRldiIsQVVUSF9TVE9SQUdFX0tFWT0ibGFrZWJlZF9pZGVudGl0eSIsT0JTT0xFVEVfQVVUSF9TVE9SQUdFX0tFWT0ic2hvb19pZGVudGl0eSIsUEtDRV9TVE9SQUdFX0tFWT0ibGFrZWJlZF9nb29nbGVfcGtjZSIsUkVUVVJOX1RPX1NUT1JBR0VfS0VZPSJsYWtlYmVkX2dvb2dsZV9yZXR1cm5fdG8iLEFVVEhfUkVTVU1FX1NUT1JBR0VfS0VZPSJsYWtlYmVkX2dvb2dsZV9yZXN1bWVfYXR0ZW1wdCIsUEtDRV9NQVhfQUdFX01TPTYwMCoxZTMsZW5jb2Rlcj1uZXcgVGV4dEVuY29kZXIsU1RBQkxFX1VTRVJfU1VCSkVDVF9QQVRURVJOPS9edXNyX1tBLVphLXowLTlfLV17MTYsfSQvLGF1dGg9Y3JlYXRlSW5pdGlhbEF1dGgoKSxhdXRoUmVzdW1lU3RhcnRlZD0hMSxhdXRoTGlzdGVuZXJzPW5ldyBTZXQ7ZnVuY3Rpb24gZ2V0QXV0aCgpe3JldHVybiBhdXRofWZ1bmN0aW9uIHNldEF1dGgoVSl7YXV0aD1VfWZ1bmN0aW9uIGdldEF1dGhSZXN1bWVTdGFydGVkKCl7cmV0dXJuIGF1dGhSZXN1bWVTdGFydGVkfWZ1bmN0aW9uIHNldEF1dGhSZXN1bWVTdGFydGVkKFUpe2F1dGhSZXN1bWVTdGFydGVkPVV9ZnVuY3Rpb24gYWRkQXV0aExpc3RlbmVyKFUpe2F1dGhMaXN0ZW5lcnMuYWRkKFUpfWZ1bmN0aW9uIHJlbW92ZUF1dGhMaXN0ZW5lcihVKXthdXRoTGlzdGVuZXJzLmRlbGV0ZShVKX1mdW5jdGlvbiBlbWl0QXV0aCgpe2Zvcihjb25zdCBVIG9mIGF1dGhMaXN0ZW5lcnMpVShhdXRoKX1mdW5jdGlvbiBub3JtYWxpemVCYXNlUGF0aFZhbHVlKFUpe2NvbnN0IE09U3RyaW5nKFU/PyIiKS5yZXBsYWNlKC9cLyskL2csIiIpO3JldHVybiBNPT09Ii8iPyIiOk19ZnVuY3Rpb24gYmFzZVBhdGgoKXtyZXR1cm4gbm9ybWFsaXplQmFzZVBhdGhWYWx1ZSh3aW5kb3cuX19MQUtFQkVEX0JBU0VfUEFUSF9fPz8iIil9ZnVuY3Rpb24gYXV0aENvbmZpZygpe3JldHVybiB3aW5kb3cuX19MQUtFQkVEX0FVVEhfXz8/e319ZnVuY3Rpb24gdG9HdWVzdE5hbWUoVSl7cmV0dXJuIFN0cmluZyhVPz8ibG9jYWwiKS5yZXBsYWNlKC9eZ3Vlc3Q6LywiIikudHJpbSgpLnJlcGxhY2UoL1teYS16QS1aMC05Xy4tXSsvZywiLSIpLnJlcGxhY2UoL14tK3wtKyQvZywiIikudG9Mb3dlckNhc2UoKXx8ImxvY2FsIn1mdW5jdGlvbiB0b0Rpc3BsYXlOYW1lKFUpe3JldHVybiB0b0d1ZXN0TmFtZShVKS5zcGxpdCgvWy1fXHMuXSsvKS5maWx0ZXIoQm9vbGVhbikubWFwKE09PmAke01bMF0/LnRvVXBwZXJDYXNlKCk/PyIifSR7TS5zbGljZSgxKX1gKS5qb2luKCIgIil9ZnVuY3Rpb24gY3JlYXRlR3Vlc3RBdXRoKFUpe2NvbnN0IE09dG9HdWVzdE5hbWUoVSk7cmV0dXJue2Rpc3BsYXlOYW1lOnRvRGlzcGxheU5hbWUoTSksaXNBdXRoZW50aWNhdGVkOiExLGlzR3Vlc3Q6ITAscHJvdmlkZXI6Imd1ZXN0Iix1c2VySWQ6YGd1ZXN0OiR7TX1gfX1mdW5jdGlvbiB3aXRoQXV0aExvYWRpbmcoVSxNKXtyZXR1cm57Li4uVSxpc0xvYWRpbmc6TX19ZnVuY3Rpb24gYnJvd3NlclN0b3JhZ2UoKXtpZih0eXBlb2Ygd2luZG93PiJ1IilyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2V9Y2F0Y2h7cmV0dXJuIG51bGx9fWZ1bmN0aW9uIGJyb3dzZXJTZXNzaW9uU3RvcmFnZSgpe2lmKHR5cGVvZiB3aW5kb3c+InUiKXJldHVybiBudWxsO3RyeXtyZXR1cm4gd2luZG93LnNlc3Npb25TdG9yYWdlfWNhdGNoe3JldHVybiBudWxsfX1mdW5jdGlvbiBjdXJyZW50R3Vlc3ROYW1lKCl7cmV0dXJuIHR5cGVvZiB3aW5kb3c+InUiPyJsb2NhbCI6bmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5nZXQoImxha2ViZWRfZ3Vlc3QiKT8/ImxvY2FsIn1mdW5jdGlvbiBwYXJzZUpzb24oVSl7dHJ5e3JldHVybiBKU09OLnBhcnNlKFUpfWNhdGNoe3JldHVybiBudWxsfX1mdW5jdGlvbiBkZWNvZGVCYXNlNjRVcmwoVSl7Y29uc3QgTT1VLnJlcGxhY2UoLy0vZywiKyIpLnJlcGxhY2UoL18vZywiLyIpLFc9TS5wYWRFbmQoTWF0aC5jZWlsKE0ubGVuZ3RoLzQpKjQsIj0iKTtyZXR1cm4gYXRvYihXKX1mdW5jdGlvbiBkZWNvZGVJZGVudGl0eUNsYWltcyhVKXtpZih0eXBlb2YgVSE9InN0cmluZyJ8fCFVfHxVLmxlbmd0aD42NTUzNilyZXR1cm4gbnVsbDtjb25zdCBNPVUuc3BsaXQoIi4iKTtpZihNLmxlbmd0aCE9PTN8fCEvXltBLVphLXowLTlfLV17MSw2NTUzNn0kLy50ZXN0KE1bMV0pKXJldHVybiBudWxsO3RyeXtjb25zdCBXPWRlY29kZUJhc2U2NFVybChNWzFdKSxGPVVpbnQ4QXJyYXkuZnJvbShXLG5lPT5uZS5jaGFyQ29kZUF0KDApKSxZPW5ldyBUZXh0RGVjb2RlcigidXRmLTgiLHtmYXRhbDohMH0pLmRlY29kZShGKSxaPXBhcnNlSnNvbihZKTtyZXR1cm4gWiYmdHlwZW9mIFo9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShaKT9aOm51bGx9Y2F0Y2h7cmV0dXJuIG51bGx9fWZ1bmN0aW9uIGlzRXhwaXJlZENsYWltcyhVKXtyZXR1cm4gdHlwZW9mIFU/LmV4cD09Im51bWJlciImJlUuZXhwKjFlMzw9RGF0ZS5ub3coKX1mdW5jdGlvbiByZW1vdmVPYnNvbGV0ZVN0b3JlZElkZW50aXR5KFUpe3RyeXtVLnJlbW92ZUl0ZW0oT0JTT0xFVEVfQVVUSF9TVE9SQUdFX0tFWSl9Y2F0Y2h7fX1mdW5jdGlvbiByZWFkU3RvcmVkSWRlbnRpdHkoe2FsbG93RXhwaXJlZDpVPSExfT17fSl7Y29uc3QgTT1icm93c2VyU3RvcmFnZSgpO2lmKCFNKXJldHVybnt1c2VySWQ6bnVsbH07bGV0IFc9bnVsbDt0cnl7Vz1NLmdldEl0ZW0oQVVUSF9TVE9SQUdFX0tFWSl9Y2F0Y2h7cmV0dXJue3VzZXJJZDpudWxsfX1pZihyZW1vdmVPYnNvbGV0ZVN0b3JlZElkZW50aXR5KE0pLCFXKXJldHVybnt1c2VySWQ6bnVsbH07Y29uc3QgRj1wYXJzZUpzb24oVyk7aWYoIUZ8fHR5cGVvZiBGIT0ib2JqZWN0Iil7dHJ5e00ucmVtb3ZlSXRlbShBVVRIX1NUT1JBR0VfS0VZKX1jYXRjaHt9cmV0dXJue3VzZXJJZDpudWxsfX1jb25zdCBZPXR5cGVvZiBGLnRva2VuPT0ic3RyaW5nIj9GLnRva2VuOnZvaWQgMCxaPWRlY29kZUlkZW50aXR5Q2xhaW1zKFkpO2lmKCFaKXt0cnl7TS5yZW1vdmVJdGVtKEFVVEhfU1RPUkFHRV9LRVkpfWNhdGNoe31yZXR1cm57dXNlcklkOm51bGx9fWlmKEYudmVyc2lvbiE9PTEpe3RyeXtNLnJlbW92ZUl0ZW0oQVVUSF9TVE9SQUdFX0tFWSl9Y2F0Y2h7fXJldHVybnt1c2VySWQ6bnVsbH19Y29uc3QgbmU9YnJva2VySWRlbnRpdHlGcm9tVG9rZW4oWSk7aWYoIW5lKXt0cnl7TS5yZW1vdmVJdGVtKEFVVEhfU1RPUkFHRV9LRVkpfWNhdGNoe31yZXR1cm57dXNlcklkOm51bGx9fWNvbnN0IGllPXR5cGVvZiBGLnVzZXJJZD09InN0cmluZyI/Ri51c2VySWQ6dHlwZW9mIEYucGFpcndpc2VTdWI9PSJzdHJpbmciP0YucGFpcndpc2VTdWI6dm9pZCAwO2lmKGllIT09dm9pZCAwJiZpZSE9PW5lLnN1YmplY3Qpe3RyeXtNLnJlbW92ZUl0ZW0oQVVUSF9TVE9SQUdFX0tFWSl9Y2F0Y2h7fXJldHVybnt1c2VySWQ6bnVsbH19Y29uc3Qgb2U9aXNFeHBpcmVkQ2xhaW1zKFopO3JldHVybiBvZSYmIVU/e2V4cGlyZWQ6b2UsdXNlcklkOm51bGx9OntleHBpcmVkOm9lLHRva2VuOlksdXNlcklkOm5lLnN1YmplY3R9fWZ1bmN0aW9uIHN0b3JlZEF1dGhUb2tlbigpe3JldHVybiByZWFkU3RvcmVkSWRlbnRpdHkoKS50b2tlbj8/IiJ9ZnVuY3Rpb24gaWRlbnRpdHlJZEZyb21Ub2tlblJlc3BvbnNlKFUpe2NvbnN0IE09VS5zdWJqZWN0Pz9VLnBhaXJ3aXNlX3N1YjtyZXR1cm4gcGFyc2VJZGVudGl0eVN1YmplY3QoTSl9ZnVuY3Rpb24gYnJva2VySWRlbnRpdHlGcm9tQ2xhaW1zKFUpe2lmKCFVKXJldHVybiBudWxsO2NvbnN0IE09VSxXPXBhcnNlSWRlbnRpdHlTdWJqZWN0KE0ubGFrZWJlZF9zdWIpLEY9cGFyc2VJZGVudGl0eVN1YmplY3QoTS5wYWlyd2lzZV9zdWIpO3JldHVybiBVLmlkZW50aXR5X3ZlcnNpb249PT0yJiZXJiZTVEFCTEVfVVNFUl9TVUJKRUNUX1BBVFRFUk4udGVzdChXKSYmRj97cGFpcndpc2VTdWI6RixzdWJqZWN0Old9Om51bGx9ZnVuY3Rpb24gYnJva2VySWRlbnRpdHlGcm9tVG9rZW4oVSl7cmV0dXJuIGJyb2tlcklkZW50aXR5RnJvbUNsYWltcyhkZWNvZGVJZGVudGl0eUNsYWltcyhVKSl9ZnVuY3Rpb24gY3JlYXRlR29vZ2xlQXV0aEZyb21Ub2tlbihVKXtjb25zdCBNPWRlY29kZUlkZW50aXR5Q2xhaW1zKFUpLFc9YnJva2VySWRlbnRpdHlGcm9tQ2xhaW1zKE0pO3JldHVybiFNfHwhVz9udWxsOntkaXNwbGF5TmFtZTp0eXBlb2YgTS5uYW1lPT0ic3RyaW5nIiYmTS5uYW1lLnRyaW0oKT9NLm5hbWUudHJpbSgpOiJHb29nbGUgVXNlciIsZW1haWw6dHlwZW9mIE0uZW1haWw9PSJzdHJpbmciP00uZW1haWw6dm9pZCAwLGVtYWlsVmVyaWZpZWQ6dHlwZW9mIE0uZW1haWxfdmVyaWZpZWQ9PSJib29sZWFuIj9NLmVtYWlsX3ZlcmlmaWVkOnZvaWQgMCxpZGVudGl0eUFsaWFzZXM6W2Bnb29nbGU6JHtXLnBhaXJ3aXNlU3VifWBdLGlzQXV0aGVudGljYXRlZDohMCxpc0d1ZXN0OiExLHBpY3R1cmU6dHlwZW9mIE0ucGljdHVyZT09InN0cmluZyI/TS5waWN0dXJlOnZvaWQgMCxwcm92aWRlcjoiZ29vZ2xlIixzdWJqZWN0OmBnb29nbGU6JHtXLnN1YmplY3R9YCx1c2VySWQ6YGdvb2dsZToke1cuc3ViamVjdH1gfX1mdW5jdGlvbiBjcmVhdGVJbml0aWFsQXV0aCgpe2NvbnN0IFU9cmVhZFN0b3JlZElkZW50aXR5KCksTT1jcmVhdGVHb29nbGVBdXRoRnJvbVRva2VuKFUudG9rZW4pO3JldHVybiBNP3dpdGhBdXRoTG9hZGluZyhNLCEwKTp3aXRoQXV0aExvYWRpbmcoY3JlYXRlR3Vlc3RBdXRoKGN1cnJlbnRHdWVzdE5hbWUoKSksdHlwZW9mIHdpbmRvdzwidSIpfXZhciB0MixyMix1MixpMixvMj0wLGYyPVtdLGMyPWwsZTI9YzIuX19iLGEyPWMyLl9fcix2Mj1jMi5kaWZmZWQsbDI9YzIuX19jLG0yPWMyLnVubW91bnQscDI9YzIuX187ZnVuY3Rpb24gczIoVSxNKXtjMi5fX2gmJmMyLl9faChyMixVLG8yfHxNKSxvMj0wO3ZhciBXPXIyLl9fSHx8KHIyLl9fSD17X186W10sX19oOltdfSk7cmV0dXJuIFU+PVcuX18ubGVuZ3RoJiZXLl9fLnB1c2goe30pLFcuX19bVV19ZnVuY3Rpb24gZDIoVSl7cmV0dXJuIG8yPTEseTIoRDIsVSl9ZnVuY3Rpb24geTIoVSxNLFcpe3ZhciBGPXMyKHQyKyssMik7aWYoRi50PVUsIUYuX19jJiYoRi5fXz1bVz9XKE0pOkQyKHZvaWQgMCxNKSxmdW5jdGlvbihpZSl7dmFyIG9lPUYuX19OP0YuX19OWzBdOkYuX19bMF0sYWU9Ri50KG9lLGllKTtvZSE9PWFlJiYoRi5fX049W2FlLEYuX19bMV1dLEYuX19jLnNldFN0YXRlKHt9KSl9XSxGLl9fYz1yMiwhcjIuX19mKSl7dmFyIFk9ZnVuY3Rpb24oaWUsb2UsYWUpe2lmKCFGLl9fYy5fX0gpcmV0dXJuITA7dmFyIGNlPSExLGRlPUYuX19jLnByb3BzIT09aWU7aWYoRi5fX2MuX19ILl9fLnNvbWUoZnVuY3Rpb24obGUpe2lmKGxlLl9fTil7Y2U9ITA7dmFyIHBlPWxlLl9fWzBdO2xlLl9fPWxlLl9fTixsZS5fX049dm9pZCAwLHBlIT09bGUuX19bMF0mJihkZT0hMCl9fSksWil7dmFyIHJlPVouY2FsbCh0aGlzLGllLG9lLGFlKTtyZXR1cm4gY2U/cmV8fGRlOnJlfXJldHVybiFjZXx8ZGV9O3IyLl9fZj0hMDt2YXIgWj1yMi5zaG91bGRDb21wb25lbnRVcGRhdGUsbmU9cjIuY29tcG9uZW50V2lsbFVwZGF0ZTtyMi5jb21wb25lbnRXaWxsVXBkYXRlPWZ1bmN0aW9uKGllLG9lLGFlKXtpZih0aGlzLl9fZSl7dmFyIGNlPVo7Wj12b2lkIDAsWShpZSxvZSxhZSksWj1jZX1uZSYmbmUuY2FsbCh0aGlzLGllLG9lLGFlKX0scjIuc2hvdWxkQ29tcG9uZW50VXBkYXRlPVl9cmV0dXJuIEYuX19OfHxGLl9ffWZ1bmN0aW9uIGgyKFUsTSl7dmFyIFc9czIodDIrKywzKTshYzIuX19zJiZDMihXLl9fSCxNKSYmKFcuX189VSxXLnU9TSxyMi5fX0guX19oLnB1c2goVykpfWZ1bmN0aW9uIEEyKFUpe3JldHVybiBvMj01LFQyKGZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6VX19LFtdKX1mdW5jdGlvbiBUMihVLE0pe3ZhciBXPXMyKHQyKyssNyk7cmV0dXJuIEMyKFcuX19ILE0pJiYoVy5fXz1VKCksVy5fX0g9TSxXLl9faD1VKSxXLl9ffWZ1bmN0aW9uIGoyKCl7Zm9yKHZhciBVO1U9ZjIuc2hpZnQoKTspe3ZhciBNPVUuX19IO2lmKFUuX19QJiZNKXRyeXtNLl9faC5zb21lKHoyKSxNLl9faC5zb21lKEIyKSxNLl9faD1bXX1jYXRjaChXKXtNLl9faD1bXSxjMi5fX2UoVyxVLl9fdil9fX1jMi5fX2I9ZnVuY3Rpb24oVSl7cjI9bnVsbCxlMiYmZTIoVSl9LGMyLl9fPWZ1bmN0aW9uKFUsTSl7VSYmTS5fX2smJk0uX19rLl9fbSYmKFUuX19tPU0uX19rLl9fbSkscDImJnAyKFUsTSl9LGMyLl9fcj1mdW5jdGlvbihVKXthMiYmYTIoVSksdDI9MDt2YXIgTT0ocjI9VS5fX2MpLl9fSDtNJiYodTI9PT1yMj8oTS5fX2g9W10scjIuX19oPVtdLE0uX18uc29tZShmdW5jdGlvbihXKXtXLl9fTiYmKFcuX189Vy5fX04pLFcudT1XLl9fTj12b2lkIDB9KSk6KE0uX19oLnNvbWUoejIpLE0uX19oLnNvbWUoQjIpLE0uX19oPVtdLHQyPTApKSx1Mj1yMn0sYzIuZGlmZmVkPWZ1bmN0aW9uKFUpe3YyJiZ2MihVKTt2YXIgTT1VLl9fYztNJiZNLl9fSCYmKE0uX19ILl9faC5sZW5ndGgmJihmMi5wdXNoKE0pIT09MSYmaTI9PT1jMi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fCgoaTI9YzIucmVxdWVzdEFuaW1hdGlvbkZyYW1lKXx8dzIpKGoyKSksTS5fX0guX18uc29tZShmdW5jdGlvbihXKXtXLnUmJihXLl9fSD1XLnUsVy51PXZvaWQgMCl9KSksdTI9cjI9bnVsbH0sYzIuX19jPWZ1bmN0aW9uKFUsTSl7TS5zb21lKGZ1bmN0aW9uKFcpe3RyeXtXLl9faC5zb21lKHoyKSxXLl9faD1XLl9faC5maWx0ZXIoZnVuY3Rpb24oRil7cmV0dXJuIUYuX198fEIyKEYpfSl9Y2F0Y2goRil7TS5zb21lKGZ1bmN0aW9uKFkpe1kuX19oJiYoWS5fX2g9W10pfSksTT1bXSxjMi5fX2UoRixXLl9fdil9fSksbDImJmwyKFUsTSl9LGMyLnVubW91bnQ9ZnVuY3Rpb24oVSl7bTImJm0yKFUpO3ZhciBNLFc9VS5fX2M7VyYmVy5fX0gmJihXLl9fSC5fXy5zb21lKGZ1bmN0aW9uKEYpe3RyeXt6MihGKX1jYXRjaChZKXtNPVl9fSksVy5fX0g9dm9pZCAwLE0mJmMyLl9fZShNLFcuX192KSl9O3ZhciBrMj10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lPT0iZnVuY3Rpb24iO2Z1bmN0aW9uIHcyKFUpe3ZhciBNLFc9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoRiksazImJmNhbmNlbEFuaW1hdGlvbkZyYW1lKE0pLHNldFRpbWVvdXQoVSl9LEY9c2V0VGltZW91dChXLDM1KTtrMiYmKE09cmVxdWVzdEFuaW1hdGlvbkZyYW1lKFcpKX1mdW5jdGlvbiB6MihVKXt2YXIgTT1yMixXPVUuX19jO3R5cGVvZiBXPT0iZnVuY3Rpb24iJiYoVS5fX2M9dm9pZCAwLFcoKSkscjI9TX1mdW5jdGlvbiBCMihVKXt2YXIgTT1yMjtVLl9fYz1VLl9fKCkscjI9TX1mdW5jdGlvbiBDMihVLE0pe3JldHVybiFVfHxVLmxlbmd0aCE9PU0ubGVuZ3RofHxNLnNvbWUoZnVuY3Rpb24oVyxGKXtyZXR1cm4gVyE9PVVbRl19KX1mdW5jdGlvbiBEMihVLE0pe3JldHVybiB0eXBlb2YgTT09ImZ1bmN0aW9uIj9NKFUpOk19ZnVuY3Rpb24gaXNFeGFjdExvb3BiYWNrSG9zdG5hbWUoVSl7cmV0dXJuIFU9PT0ibG9jYWxob3N0Inx8VT09PSIxMjcuMC4wLjEifHxVPT09Ijo6MSJ8fFU9PT0iWzo6MV0ifXZhciBNQVhfU1RBQkxFX0pTT05fREVQVEg9MTAwO2Z1bmN0aW9uIHN0cmluZ2lmeShVLE0sVyl7aWYoTT5NQVhfU1RBQkxFX0pTT05fREVQVEgpdGhyb3cgbmV3IEVycm9yKGBWYWx1ZSBleGNlZWRzIHRoZSBtYXhpbXVtIEpTT04gbmVzdGluZyBkZXB0aCBvZiAke01BWF9TVEFCTEVfSlNPTl9ERVBUSH0uYCk7aWYoVSE9PXZvaWQgMCl7aWYoVT09PW51bGx8fHR5cGVvZiBVIT0ib2JqZWN0IilyZXR1cm4gSlNPTi5zdHJpbmdpZnkoVSk7aWYoVy5oYXMoVSkpdGhyb3cgbmV3IEVycm9yKCJWYWx1ZSBjb250YWlucyBhIGNpcmN1bGFyIEpTT04gcmVmZXJlbmNlLiIpO1cuYWRkKFUpO3RyeXtyZXR1cm4gQXJyYXkuaXNBcnJheShVKT9gWyR7VS5tYXAoRj0+c3RyaW5naWZ5KEYsTSsxLFcpPz8ibnVsbCIpLmpvaW4oIiwiKX1dYDpgeyR7T2JqZWN0LmVudHJpZXMoVSkuZmlsdGVyKChbLEZdKT0+RiE9PXZvaWQgMCkuc29ydCgoW0ZdLFtZXSk9PkY8WT8tMTpGPlk/MTowKS5tYXAoKFtGLFldKT0+YCR7SlNPTi5zdHJpbmdpZnkoRil9OiR7c3RyaW5naWZ5KFksTSsxLFcpPz8ibnVsbCJ9YCkuam9pbigiLCIpfX1gfWZpbmFsbHl7Vy5kZWxldGUoVSl9fX1mdW5jdGlvbiBzdGFibGVTdHJpbmdpZnkoVSl7cmV0dXJuIHN0cmluZ2lmeShVLDAsbmV3IFNldCl9ZnVuY3Rpb24gc3Vic2NyaXB0aW9uSWRGcm9tV2lyZUFyZ3MoVSxNKXtjb25zdCBXPUFycmF5LmlzQXJyYXkoTSk/TTpbXTtyZXR1cm5gJHtVfToke3N0YWJsZVN0cmluZ2lmeShXKT8/IltdIn1gfXZhciBzb2NrZXQ9bnVsbCxuZXh0UmVxdWVzdElkPTEscmVmcmVzaFJlcXVlc3RlZD0hMSxxdWVyeUVycm9ycz1uZXcgTWFwLHF1ZXJ5VmFsdWVzPW5ldyBNYXAscXVlcnlMaXN0ZW5lcnM9bmV3IE1hcCxxdWVyeUxvYWRpbmdGYWxsYmFja3M9bmV3IE1hcCxwZW5kaW5nPW5ldyBNYXAsYWN0aXZlU3Vic2NyaXB0aW9ucz1uZXcgTWFwO2Z1bmN0aW9uIGF1dGhGaW5nZXJwcmludChVKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKFUpLmZpbHRlcigoW01dKT0+TSE9PSJpc0xvYWRpbmciKS5zb3J0KChbTV0sW1ddKT0+TS5sb2NhbGVDb21wYXJlKFcpKSkpfWZ1bmN0aW9uIHF1ZXJ5U3Vic2NyaXB0aW9uKFUsTSl7cmV0dXJuIHF1ZXJ5U3Vic2NyaXB0aW9uVHVwbGUoVSxNPT09dm9pZCAwP1tdOltNXSl9ZnVuY3Rpb24gcXVlcnlTdWJzY3JpcHRpb25UdXBsZShVLE0pe2NvbnN0IFc9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShNKSksRj1zdWJzY3JpcHRpb25JZEZyb21XaXJlQXJncyhVLFcpO3JldHVybnthcmdzOlcsbmFtZTpVLHN1YnNjcmlwdGlvbklkOkZ9fWZ1bmN0aW9uIGdldFF1ZXJ5VmFsdWUoVSl7cmV0dXJuIHF1ZXJ5VmFsdWVzLmdldChVKX1mdW5jdGlvbiBoYXNRdWVyeVZhbHVlKFUpe3JldHVybiBxdWVyeVZhbHVlcy5oYXMoVSl9ZnVuY3Rpb24gZ2V0UXVlcnlFcnJvcihVKXtyZXR1cm4gcXVlcnlFcnJvcnMuZ2V0KFUpfWZ1bmN0aW9uIGFkZFF1ZXJ5TGlzdGVuZXIoVSxNLFcpe2FjdGl2ZVN1YnNjcmlwdGlvbnMuc2V0KFUuc3Vic2NyaXB0aW9uSWQsVSkscXVlcnlMaXN0ZW5lcnMuaGFzKFUuc3Vic2NyaXB0aW9uSWQpfHxxdWVyeUxpc3RlbmVycy5zZXQoVS5zdWJzY3JpcHRpb25JZCxuZXcgU2V0KSxxdWVyeUxpc3RlbmVycy5nZXQoVS5zdWJzY3JpcHRpb25JZCkuYWRkKE0pO2NvbnN0IEY9cXVlcnlMb2FkaW5nRmFsbGJhY2tzLmdldChVLnN1YnNjcmlwdGlvbklkKT8/bmV3IE1hcDtGLnNldChNLFcpLHF1ZXJ5TG9hZGluZ0ZhbGxiYWNrcy5zZXQoVS5zdWJzY3JpcHRpb25JZCxGKX1mdW5jdGlvbiByZW1vdmVRdWVyeUxpc3RlbmVyKFUsTSl7Y29uc3QgVz1xdWVyeUxpc3RlbmVycy5nZXQoVSk7Vz8uZGVsZXRlKE0pLHF1ZXJ5TG9hZGluZ0ZhbGxiYWNrcy5nZXQoVSk/LmRlbGV0ZShNKSxXPy5zaXplPT09MCYmKHF1ZXJ5TGlzdGVuZXJzLmRlbGV0ZShVKSxxdWVyeUxvYWRpbmdGYWxsYmFja3MuZGVsZXRlKFUpLGFjdGl2ZVN1YnNjcmlwdGlvbnMuZGVsZXRlKFUpLHF1ZXJ5RXJyb3JzLmRlbGV0ZShVKSxxdWVyeVZhbHVlcy5kZWxldGUoVSksc2VuZCh7b3A6InF1ZXJ5LnVuc3Vic2NyaWJlIixzdWJzY3JpcHRpb25JZDpVfSkpfWZ1bmN0aW9uIGVtaXRRdWVyeShVLE0sVz17aW52YWxpZGF0aW9uOiExfSl7Y29uc3QgRj1xdWVyeUxpc3RlbmVycy5nZXQoVSk7aWYoRil7cXVlcnlFcnJvcnMuZGVsZXRlKFUpLHF1ZXJ5VmFsdWVzLnNldChVLE0pO2Zvcihjb25zdCBZIG9mIEYpWShNLFcpfX1mdW5jdGlvbiBlbWl0UXVlcnlFcnJvcihVLE0pe2NvbnN0IFc9cXVlcnlMaXN0ZW5lcnMuZ2V0KFUpO2lmKCFXKXJldHVybjtjb25zdCBGPW5ldyBFcnJvcih0eXBlb2YgTT09InN0cmluZyImJk0/TToiTGFrZWJlZCBxdWVyeSBmYWlsZWQiKTtxdWVyeUVycm9ycy5zZXQoVSxGKTtmb3IoY29uc3QgWSBvZiBXKVkocXVlcnlWYWx1ZXMuZ2V0KFUpLHtlcnJvcjpGLGludmFsaWRhdGlvbjohMX0pfWZ1bmN0aW9uIHJlc2V0UXVlcnlDYWNoZUFmdGVyQXV0aENoYW5nZSgpe2Zvcihjb25zdCBVIG9mIGFjdGl2ZVN1YnNjcmlwdGlvbnMudmFsdWVzKCkpe3F1ZXJ5RXJyb3JzLmRlbGV0ZShVLnN1YnNjcmlwdGlvbklkKSxxdWVyeVZhbHVlcy5kZWxldGUoVS5zdWJzY3JpcHRpb25JZCk7Zm9yKGNvbnN0IE0gb2YgcXVlcnlMaXN0ZW5lcnMuZ2V0KFUuc3Vic2NyaXB0aW9uSWQpPz9bXSlNKHF1ZXJ5TG9hZGluZ0ZhbGxiYWNrcy5nZXQoVS5zdWJzY3JpcHRpb25JZCk/LmdldChNKSx7aW52YWxpZGF0aW9uOiExfSl9fWZ1bmN0aW9uIHJlamVjdFBlbmRpbmdSZXF1ZXN0cyhVKXtmb3IoY29uc3QgTSBvZiBwZW5kaW5nLnZhbHVlcygpKU0ucmVqZWN0KFUpO3BlbmRpbmcuY2xlYXIoKX1mdW5jdGlvbiByZWZyZXNoUGFnZSgpe3JlZnJlc2hSZXF1ZXN0ZWR8fChyZWZyZXNoUmVxdWVzdGVkPSEwLHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKSl9ZnVuY3Rpb24gd2lyZUFyZ3MoVSl7cmV0dXJuIFUuYXJnc31mdW5jdGlvbiBxdWVyeVN1YnNjcmliZU1lc3NhZ2UoVSl7cmV0dXJue2FyZ3M6VS5hcmdzLG5hbWU6VS5uYW1lLG9wOiJxdWVyeS5zdWJzY3JpYmUifX1mdW5jdGlvbiBzZW5kKFUpe2NvbnN0IE09Y29ubmVjdCgpLFc9SlNPTi5zdHJpbmdpZnkoVSk7aWYoTS5yZWFkeVN0YXRlPT09V2ViU29ja2V0Lk9QRU4pe00uc2VuZChXKTtyZXR1cm59VS5vcCE9PSJxdWVyeS5zdWJzY3JpYmUiJiZNLmFkZEV2ZW50TGlzdGVuZXIoIm9wZW4iLCgpPT57c29ja2V0IT09TXx8TS5yZWFkeVN0YXRlIT09V2ViU29ja2V0Lk9QRU58fE0uc2VuZChXKX0se29uY2U6ITB9KX1mdW5jdGlvbiByZXF1ZXN0KFUsTSl7Y29uc3QgVz1uZXh0UmVxdWVzdElkKys7cmV0dXJuIG5ldyBQcm9taXNlKChGLFkpPT57cGVuZGluZy5zZXQoVyx7cmVzb2x2ZTpGLHJlamVjdDpZfSk7dHJ5e3NlbmQoe2lkOlcsb3A6VSwuLi5NfSl9Y2F0Y2goWil7cGVuZGluZy5kZWxldGUoVyksWShaKX19KX1mdW5jdGlvbiBjb25uZWN0KCl7aWYoc29ja2V0JiZzb2NrZXQucmVhZHlTdGF0ZSE9PVdlYlNvY2tldC5DTE9TRUQmJnNvY2tldC5yZWFkeVN0YXRlIT09V2ViU29ja2V0LkNMT1NJTkcpcmV0dXJuIHNvY2tldDtlbnN1cmVBdXRoSW5pdGlhbGl6ZWQoKTtjb25zdCBVPXdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbD09PSJodHRwczoiPyJ3c3M6Ijoid3M6IixNPW5ldyBVUkwoYCR7VX0vLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9JHtiYXNlUGF0aCgpfS9fX2xha2ViZWQvd3NgKSxXPW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCkuZ2V0KCJsYWtlYmVkX2d1ZXN0Iik7VyYmTS5zZWFyY2hQYXJhbXMuc2V0KCJsYWtlYmVkX2d1ZXN0IixXKTtjb25zdCBGPXN0b3JlZEF1dGhUb2tlbigpO0YmJk0uc2VhcmNoUGFyYW1zLnNldCgibGFrZWJlZF90b2tlbiIsRiksc29ja2V0PW5ldyBXZWJTb2NrZXQoTSk7Y29uc3QgWT1zb2NrZXQ7cmV0dXJuIFkuYWRkRXZlbnRMaXN0ZW5lcigib3BlbiIsKCk9PntpZihzb2NrZXQ9PT1ZKXtZLnNlbmQoSlNPTi5zdHJpbmdpZnkoe29wOiJhdXRoLmdldCJ9KSk7Zm9yKGNvbnN0IFogb2YgYWN0aXZlU3Vic2NyaXB0aW9ucy52YWx1ZXMoKSlZLnNlbmQoSlNPTi5zdHJpbmdpZnkocXVlcnlTdWJzY3JpYmVNZXNzYWdlKFopKSl9fSksWS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixaPT57aWYoc29ja2V0IT09WSlyZXR1cm47Y29uc3QgbmU9SlNPTi5wYXJzZShTdHJpbmcoWi5kYXRhKSk7c3dpdGNoKG5lLm9wKXtjYXNlImF1dGgucmVzdWx0Ijp7aWYoZ2V0QXV0aFJlc3VtZVN0YXJ0ZWQoKSlyZXR1cm47Y29uc3QgaWU9YXV0aEZpbmdlcnByaW50KGdldEF1dGgoKSk7c2V0QXV0aCh3aXRoQXV0aExvYWRpbmcobmUuYXV0aCwhMSkpLGVtaXRBdXRoKCksYXV0aEZpbmdlcnByaW50KG5lLmF1dGgpIT09aWUmJnJlc2V0UXVlcnlDYWNoZUFmdGVyQXV0aENoYW5nZSgpO3JldHVybn1jYXNlInF1ZXJ5LnJlc3VsdCI6e2NvbnN0IGllPSJpbnZhbGlkYXRpb24iaW4gbmUmJm5lLmludmFsaWRhdGlvbj09PSEwLG9lPW5lLnN1YnNjcmlwdGlvbklkPz9zdWJzY3JpcHRpb25JZEZyb21XaXJlQXJncyhuZS5uYW1lLHdpcmVBcmdzKG5lKSk7ZW1pdFF1ZXJ5KG9lLG5lLmRhdGEse2ludmFsaWRhdGlvbjppZX0pO3JldHVybn1jYXNlInF1ZXJ5LmVycm9yIjp7Y29uc3QgaWU9bmUuc3Vic2NyaXB0aW9uSWQ/P3N1YnNjcmlwdGlvbklkRnJvbVdpcmVBcmdzKG5lLm5hbWUsd2lyZUFyZ3MobmUpKTtlbWl0UXVlcnlFcnJvcihpZSxuZS5lcnJvcik7cmV0dXJufWNhc2UicmVmcmVzaCI6e3JlZnJlc2hQYWdlKCk7cmV0dXJufWNhc2UibXV0YXRpb24ucmVzdWx0IjpjYXNlImFjdGlvbi5yZXN1bHQiOmNhc2UicXVlcnkudW5zdWJzY3JpYmUucmVzdWx0IjpjYXNlImVycm9yIjp7Y29uc3QgaWU9bmUuaWQ7aWYodHlwZW9mIGllIT0ibnVtYmVyInx8IXBlbmRpbmcuaGFzKGllKSlyZXR1cm47Y29uc3Qgb2U9cGVuZGluZy5nZXQoaWUpO3BlbmRpbmcuZGVsZXRlKGllKSxuZS5vaz9vZS5yZXNvbHZlKCJyZXN1bHQiaW4gbmU/bmUucmVzdWx0OnZvaWQgMCk6b2UucmVqZWN0KG5ldyBFcnJvcihuZS5lcnJvcj8/Ikxha2ViZWQgcmVxdWVzdCBmYWlsZWQiKSk7cmV0dXJufX19KSxZLmFkZEV2ZW50TGlzdGVuZXIoImNsb3NlIiwoKT0+e3NvY2tldD09PVkmJihyZWplY3RQZW5kaW5nUmVxdWVzdHMobmV3IEVycm9yKCJMYWtlYmVkIGNvbm5lY3Rpb24gY2xvc2VkIGJlZm9yZSB0aGUgcmVxdWVzdCBjb21wbGV0ZWQuIikpLHdpbmRvdy5zZXRUaW1lb3V0KCgpPT57c29ja2V0PT09WSYmKHNvY2tldD1udWxsLGNvbm5lY3QoKSl9LDUwMCkpfSksc29ja2V0fWZ1bmN0aW9uIHJlY29ubmVjdCgpe3JlamVjdFBlbmRpbmdSZXF1ZXN0cyhuZXcgRXJyb3IoIkxha2ViZWQgY29ubmVjdGlvbiB3YXMgcmVwbGFjZWQgYmVmb3JlIHRoZSByZXF1ZXN0IGNvbXBsZXRlZC4iKSksc29ja2V0JiZzb2NrZXQucmVhZHlTdGF0ZSE9PVdlYlNvY2tldC5DTE9TRUQmJnNvY2tldC5yZWFkeVN0YXRlIT09V2ViU29ja2V0LkNMT1NJTkcmJnNvY2tldC5jbG9zZSgpLHNvY2tldD1udWxsLGNvbm5lY3QoKX12YXIgYXV0aEluaXRQcm9taXNlPW51bGwsYXV0aEluaXRpYWxpemVkPSExLFRPS0VOX1JFU1BPTlNFX01BWF9CWVRFUz02NCoxMDI0LFRPS0VOX1JFU1BPTlNFX01BWF9DSFVOS1M9MTAyNCxUT0tFTl9SRVNQT05TRV9USU1FT1VUX01TPTVlMyxPQlNPTEVURV9BVVRIX1NUT1JBR0VfS0VZMj0ic2hvb19pZGVudGl0eSIsVG9rZW5SZXNwb25zZUJvZHlFcnJvcj1jbGFzcyBleHRlbmRzIEVycm9ye2tpbmQ7Y29uc3RydWN0b3IoVSl7c3VwZXIoVSksdGhpcy5raW5kPVV9fSxUZXJtaW5hbFRva2VuUmVzcG9uc2VFcnJvcj1jbGFzcyBleHRlbmRzIEVycm9ye307ZnVuY3Rpb24gY2FsbGJhY2tQYXRoKCl7cmV0dXJuYCR7YmFzZVBhdGgoKX0vYXV0aC9jYWxsYmFja2AucmVwbGFjZSgvXC97Mix9L2csIi8iKX1mdW5jdGlvbiBjdXJyZW50Um91dGUoKXtyZXR1cm5gJHt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWV9JHt3aW5kb3cubG9jYXRpb24uc2VhcmNofSR7d2luZG93LmxvY2F0aW9uLmhhc2h9YH1mdW5jdGlvbiBub3JtYWxpemVSZXR1cm5UbyhVKXtpZighVSlyZXR1cm4gbnVsbDt0cnl7Y29uc3QgTT1uZXcgVVJMKFUsd2luZG93LmxvY2F0aW9uLm9yaWdpbik7aWYoTS5vcmlnaW4hPT13aW5kb3cubG9jYXRpb24ub3JpZ2luKXJldHVybiBudWxsO2NvbnN0IFc9YCR7TS5wYXRobmFtZX0ke00uc2VhcmNofSR7TS5oYXNofWA7cmV0dXJuIVcuc3RhcnRzV2l0aCgiLyIpfHxXLnN0YXJ0c1dpdGgoIi8vIik/bnVsbDpXfWNhdGNoe3JldHVybiBudWxsfX1mdW5jdGlvbiBmYWxsYmFja1JvdXRlKCl7cmV0dXJuIGJhc2VQYXRoKCl8fCIvIn1mdW5jdGlvbiBkZXJpdmVSZWRpcmVjdFVyaShVKXtyZXR1cm4gbmV3IFVSTChVLHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pLnRvU3RyaW5nKCl9ZnVuY3Rpb24gZGVyaXZlQ2xpZW50SWRGcm9tUmVkaXJlY3RVcmkoVSl7cmV0dXJuYG9yaWdpbjoke25ldyBVUkwoVSkub3JpZ2lufWB9ZnVuY3Rpb24gcmVzb2x2ZUdvb2dsZUF1dGhPcHRpb25zKFU9e30pe2NvbnN0IE09VS5yZWRpcmVjdFVyaT8oKCk9Pnt0cnl7Y29uc3QgYWU9bmV3IFVSTChVLnJlZGlyZWN0VXJpKTtyZXR1cm4gYWUub3JpZ2luPT09d2luZG93LmxvY2F0aW9uLm9yaWdpbj9gJHthZS5wYXRobmFtZX0ke2FlLnNlYXJjaH1gOm51bGx9Y2F0Y2h7cmV0dXJuIG51bGx9fSkoKTpudWxsLFc9bm9ybWFsaXplUmV0dXJuVG8oVS5jYWxsYmFja1BhdGgpPz9NPz9jYWxsYmFja1BhdGgoKSxGPVUucmVkaXJlY3RVcmk/P2Rlcml2ZVJlZGlyZWN0VXJpKFcpLFk9YXV0aENvbmZpZygpLFo9dHlwZW9mIFkuYXV0aEJhc2VVcmw9PSJzdHJpbmciJiZZLmF1dGhCYXNlVXJsLnRyaW0oKT9ZLmF1dGhCYXNlVXJsOnZvaWQgMCxpZT0oVS5hdXRoQmFzZVVybD8udHJpbSgpfHx2b2lkIDApPz9aPz9ERUZBVUxUX0FVVEhfQkFTRV9VUkwsb2U9bm9ybWFsaXplUmV0dXJuVG8oVS5yZXR1cm5Ubyk/P2N1cnJlbnRSb3V0ZSgpO3JldHVybiB2YWxpZGF0ZVJlc29sdmVkR29vZ2xlQXV0aE9wdGlvbnMoe2F1dGhCYXNlVXJsOmllLGNhbGxiYWNrUGF0aDpXLGNsaWVudElkOlUuY2xpZW50SWQ/P2Rlcml2ZUNsaWVudElkRnJvbVJlZGlyZWN0VXJpKEYpLHJlZGlyZWN0VXJpOkYscmV0dXJuVG86b2U9PT1XP2ZhbGxiYWNrUm91dGUoKTpvZX0pfWZ1bmN0aW9uIHZhbGlkYXRlUmVzb2x2ZWRHb29nbGVBdXRoT3B0aW9ucyhVKXtjb25zdCBNPW5ldyBVUkwoVS5hdXRoQmFzZVVybCksVz1uZXcgVVJMKFUucmVkaXJlY3RVcmkpO2lmKE0ucHJvdG9jb2whPT0iaHR0cHM6IiYmTS5wcm90b2NvbCE9PSJodHRwOiJ8fE0ucHJvdG9jb2w9PT0iaHR0cDoiJiYhaXNFeGFjdExvb3BiYWNrSG9zdG5hbWUoTS5ob3N0bmFtZSl8fE0udXNlcm5hbWV8fE0ucGFzc3dvcmR8fE0ucGF0aG5hbWUhPT0iLyJ8fE0uc2VhcmNofHxNLmhhc2gpdGhyb3cgbmV3IEVycm9yKCJHb29nbGUgYXV0aCBicm9rZXIgVVJMIG11c3QgYmUgYW4gYWJzb2x1dGUgSFRUUChTKSBvcmlnaW4gd2l0aG91dCBjcmVkZW50aWFscywgcXVlcnksIG9yIGZyYWdtZW50LiIpO2lmKFcucHJvdG9jb2whPT0iaHR0cHM6IiYmVy5wcm90b2NvbCE9PSJodHRwOiJ8fFcucHJvdG9jb2w9PT0iaHR0cDoiJiYhaXNFeGFjdExvb3BiYWNrSG9zdG5hbWUoVy5ob3N0bmFtZSl8fFcudXNlcm5hbWV8fFcucGFzc3dvcmR8fFcuaGFzaCl0aHJvdyBuZXcgRXJyb3IoIkdvb2dsZSBhdXRoIHJlZGlyZWN0IFVSSSBtdXN0IGJlIGFuIGFic29sdXRlIEhUVFAoUykgVVJMIHdpdGhvdXQgY3JlZGVudGlhbHMgb3IgZnJhZ21lbnQuIik7aWYoIVUuY2xpZW50SWR8fFUuY2xpZW50SWQubGVuZ3RoPjUxMil0aHJvdyBuZXcgRXJyb3IoIkdvb2dsZSBhdXRoIGNsaWVudCBJRCBpcyBpbnZhbGlkLiIpO2NvbnN0IEY9bm9ybWFsaXplUmV0dXJuVG8oVS5jYWxsYmFja1BhdGgpLFk9bm9ybWFsaXplUmV0dXJuVG8oVS5yZXR1cm5UbyksWj1gJHtXLnBhdGhuYW1lfSR7Vy5zZWFyY2h9YDtpZighRnx8IVl8fFcub3JpZ2luIT09d2luZG93LmxvY2F0aW9uLm9yaWdpbnx8WiE9PUYpdGhyb3cgbmV3IEVycm9yKCJHb29nbGUgYXV0aCBjYWxsYmFjayBhbmQgcmV0dXJuIHJvdXRlcyBtdXN0IHN0YXkgb24gdGhlIGN1cnJlbnQgYXBwIG9yaWdpbi4iKTtyZXR1cm57YXV0aEJhc2VVcmw6TS50b1N0cmluZygpLnJlcGxhY2UoL1wvKyQvZywiIiksY2FsbGJhY2tQYXRoOkYsY2xpZW50SWQ6VS5jbGllbnRJZCxyZWRpcmVjdFVyaTpXLnRvU3RyaW5nKCkscmV0dXJuVG86WX19ZnVuY3Rpb24gcGFyc2VTdG9yZWRQa2NlVHJhbnNhY3Rpb24oVSl7aWYoIVV8fHR5cGVvZiBVIT0ib2JqZWN0IilyZXR1cm4gbnVsbDtjb25zdCBNPVU7aWYoTS52ZXJzaW9uIT09MXx8TS5wcm92aWRlciE9PSJnb29nbGUiKXJldHVybiBudWxsO2NvbnN0IFc9TS5vcHRpb25zO2lmKCFXfHx0eXBlb2YgVyE9Im9iamVjdCIpcmV0dXJuIG51bGw7Y29uc3QgRj1XO2lmKHR5cGVvZiBNLmNyZWF0ZWRBdCE9Im51bWJlciJ8fCFOdW1iZXIuaXNGaW5pdGUoTS5jcmVhdGVkQXQpfHxNLmNyZWF0ZWRBdD5EYXRlLm5vdygpKzZlNHx8dHlwZW9mIE0uc3RhdGUhPSJzdHJpbmcifHx0eXBlb2YgTS52ZXJpZmllciE9InN0cmluZyJ8fHR5cGVvZiBGLmF1dGhCYXNlVXJsIT0ic3RyaW5nInx8dHlwZW9mIEYuY2FsbGJhY2tQYXRoIT0ic3RyaW5nInx8dHlwZW9mIEYuY2xpZW50SWQhPSJzdHJpbmcifHx0eXBlb2YgRi5yZWRpcmVjdFVyaSE9InN0cmluZyJ8fHR5cGVvZiBGLnJldHVyblRvIT0ic3RyaW5nInx8IS9eW0EtWmEtejAtOS5ffi1dezMyLDI1Nn0kLy50ZXN0KE0uc3RhdGUpfHwhL15bQS1aYS16MC05Ll9+LV17NDMsMTI4fSQvLnRlc3QoTS52ZXJpZmllcikpcmV0dXJuIG51bGw7dHJ5e2NvbnN0IFk9e2F1dGhCYXNlVXJsOkYuYXV0aEJhc2VVcmwsY2FsbGJhY2tQYXRoOkYuY2FsbGJhY2tQYXRoLGNsaWVudElkOkYuY2xpZW50SWQscmVkaXJlY3RVcmk6Ri5yZWRpcmVjdFVyaSxyZXR1cm5UbzpGLnJldHVyblRvfTtyZXR1cm57Y3JlYXRlZEF0Ok0uY3JlYXRlZEF0LG9wdGlvbnM6dmFsaWRhdGVSZXNvbHZlZEdvb2dsZUF1dGhPcHRpb25zKFkpLHByb3ZpZGVyOiJnb29nbGUiLHN0YXRlOk0uc3RhdGUsdmVyaWZpZXI6TS52ZXJpZmllcix2ZXJzaW9uOjF9fWNhdGNoe3JldHVybiBudWxsfX1mdW5jdGlvbiByYW5kb21TdHJpbmcoVT02NCl7Y29uc3QgTT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktLl9+IixXPWNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoVSkpO2xldCBGPSIiO2ZvcihsZXQgWT0wO1k8Vy5sZW5ndGg7WSs9MSlGKz1NW1dbWV0lTS5sZW5ndGhdO3JldHVybiBGfWZ1bmN0aW9uIGJ5dGVzVG9CYXNlNjRVcmwoVSl7bGV0IE09IiI7Zm9yKGNvbnN0IFcgb2YgVSlNKz1TdHJpbmcuZnJvbUNoYXJDb2RlKFcpO3JldHVybiBidG9hKE0pLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIikucmVwbGFjZSgvPSskL2csIiIpfWFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVBrY2VCdW5kbGUoKXtjb25zdCBVPXJhbmRvbVN0cmluZyg2NCksTT1yYW5kb21TdHJpbmcoMzIpLFc9YXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoIlNIQS0yNTYiLGVuY29kZXIuZW5jb2RlKFUpKTtyZXR1cm57Y2hhbGxlbmdlOmJ5dGVzVG9CYXNlNjRVcmwobmV3IFVpbnQ4QXJyYXkoVykpLHN0YXRlOk0sdmVyaWZpZXI6VX19ZnVuY3Rpb24gY3JlYXRlU2lnbkluVXJsKFUsTSl7Y29uc3QgVz1uZXcgVVJMKCIvYXV0aG9yaXplIixVLmF1dGhCYXNlVXJsKTtyZXR1cm4gVy5zZWFyY2hQYXJhbXMuc2V0KCJjbGllbnRfaWQiLFUuY2xpZW50SWQpLFcuc2VhcmNoUGFyYW1zLnNldCgicmVkaXJlY3RfdXJpIixVLnJlZGlyZWN0VXJpKSxXLnNlYXJjaFBhcmFtcy5zZXQoInN0YXRlIixNLnN0YXRlKSxXLnNlYXJjaFBhcmFtcy5zZXQoImNvZGVfY2hhbGxlbmdlIixNLmNoYWxsZW5nZSksVy5zZWFyY2hQYXJhbXMuc2V0KCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiLCJTMjU2IiksVy5zZWFyY2hQYXJhbXMuc2V0KCJwaWkiLCJ0cnVlIiksVy50b1N0cmluZygpfWZ1bmN0aW9uIHBlcnNpc3RJZGVudGl0eShVLE0sVyl7Y29uc3QgRj1icm93c2VyU3RvcmFnZSgpO2lmKEYpdHJ5e0Yuc2V0SXRlbShBVVRIX1NUT1JBR0VfS0VZLEpTT04uc3RyaW5naWZ5KHtleHBpcmVzSW46VyxyZWNlaXZlZEF0OkRhdGUubm93KCksdG9rZW46TSx1c2VySWQ6VSx2ZXJzaW9uOjF9KSksRi5yZW1vdmVJdGVtKE9CU09MRVRFX0FVVEhfU1RPUkFHRV9LRVkyKX1jYXRjaHt9fWZ1bmN0aW9uIGNsZWFyU3RvcmVkSWRlbnRpdHkoKXtjb25zdCBVPWJyb3dzZXJTdG9yYWdlKCk7aWYoVSl0cnl7VS5yZW1vdmVJdGVtKEFVVEhfU1RPUkFHRV9LRVkpLFUucmVtb3ZlSXRlbShPQlNPTEVURV9BVVRIX1NUT1JBR0VfS0VZMil9Y2F0Y2h7fX1mdW5jdGlvbiBjbGVhckF1dGhSZXN1bWVBdHRlbXB0KCl7Y29uc3QgVT1icm93c2VyU2Vzc2lvblN0b3JhZ2UoKTtpZihVKXRyeXtVLnJlbW92ZUl0ZW0oQVVUSF9SRVNVTUVfU1RPUkFHRV9LRVkpfWNhdGNoe319ZnVuY3Rpb24gcGFyc2VDYWxsYmFjayhVPXdpbmRvdy5sb2NhdGlvbi5ocmVmKXtjb25zdCBNPW5ldyBVUkwoVSksVz1NLnNlYXJjaFBhcmFtcy5nZXQoImNvZGUiKSxGPU0uc2VhcmNoUGFyYW1zLmdldCgiZXJyb3IiKSxZPU0uc2VhcmNoUGFyYW1zLmdldCgic3RhdGUiKTtyZXR1cm4gVz09PW51bGwmJkY9PT1udWxsJiZZPT09bnVsbD9udWxsOiFZfHxZLmxlbmd0aD4yNTZ8fCEhVz09ISFGfHxXIT09bnVsbCYmVy5sZW5ndGg+NDA5Nnx8RiE9PW51bGwmJkYubGVuZ3RoPjI1Nj97a2luZDoibWFsZm9ybWVkIn06Vz97Y29kZTpXLGtpbmQ6InN1Y2Nlc3MiLHN0YXRlOll9OntlcnJvcjpGLGtpbmQ6ImVycm9yIixzdGF0ZTpZfX1mdW5jdGlvbiBjbGVhckNhbGxiYWNrUGFyYW1zKFU9d2luZG93LmxvY2F0aW9uLmhyZWYpe2NvbnN0IE09bmV3IFVSTChVKTtNLnNlYXJjaFBhcmFtcy5kZWxldGUoImNvZGUiKSxNLnNlYXJjaFBhcmFtcy5kZWxldGUoInN0YXRlIiksTS5zZWFyY2hQYXJhbXMuZGVsZXRlKCJlcnJvciIpLE0uc2VhcmNoUGFyYW1zLmRlbGV0ZSgiZXJyb3JfZGVzY3JpcHRpb24iKSxNLnNlYXJjaFBhcmFtcy5kZWxldGUoImVycm9yX3VyaSIpLHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwiIixNLnRvU3RyaW5nKCkpfWZ1bmN0aW9uIGlzRXhhY3RTdG9yZWRDYWxsYmFjayhVLE0pe2NvbnN0IFc9bmV3IFVSTChVKSxGPW5ldyBVUkwoTS5vcHRpb25zLnJlZGlyZWN0VXJpKTtmb3IoY29uc3QgWSBvZlsiY29kZSIsInN0YXRlIiwiZXJyb3IiLCJlcnJvcl9kZXNjcmlwdGlvbiIsImVycm9yX3VyaSJdKVcuc2VhcmNoUGFyYW1zLmRlbGV0ZShZKTtyZXR1cm4gVy5vcmlnaW49PT1GLm9yaWdpbiYmVy5wYXRobmFtZT09PUYucGF0aG5hbWUmJlcuc2VhcmNoPT09Ri5zZWFyY2gmJlcuaGFzaD09PUYuaGFzaH1mdW5jdGlvbiByZWFkVG9rZW5SZXNwb25zZUNodW5rKFUsTSl7cmV0dXJuIE0uYWJvcnRlZD9Qcm9taXNlLnJlamVjdChuZXcgVG9rZW5SZXNwb25zZUJvZHlFcnJvcigidGltZW91dCIpKTpuZXcgUHJvbWlzZSgoVyxGKT0+e2xldCBZPSExO2NvbnN0IFo9KCk9PntZfHwoWT0hMCxGKG5ldyBUb2tlblJlc3BvbnNlQm9keUVycm9yKCJ0aW1lb3V0IikpKX07TS5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsWix7b25jZTohMH0pLFUucmVhZCgpLnRoZW4obmU9PntZfHwoWT0hMCxXKG5lKSl9LCgpPT57WXx8KFk9ITAsRihuZXcgVG9rZW5SZXNwb25zZUJvZHlFcnJvcigiaW52YWxpZCIpKSl9KS5maW5hbGx5KCgpPT5NLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixaKSl9KX1hc3luYyBmdW5jdGlvbiByZWFkVG9rZW5SZXNwb25zZUJ5dGVzKFUsTSl7Y29uc3QgVz1VLmhlYWRlcnMuZ2V0KCJjb250ZW50LWxlbmd0aCIpO2lmKFchPT1udWxsJiYoIS9eXGQrJC8udGVzdChXKXx8TnVtYmVyKFcpPlRPS0VOX1JFU1BPTlNFX01BWF9CWVRFUykpdGhyb3cgVS5ib2R5Py5jYW5jZWwoInRva2VuIHJlc3BvbnNlIHRvbyBsYXJnZSIpLmNhdGNoKCgpPT57fSksbmV3IFRva2VuUmVzcG9uc2VCb2R5RXJyb3IoInNpemUiKTtpZighVS5ib2R5KXJldHVybiBuZXcgVWludDhBcnJheTtjb25zdCBGPVUuYm9keS5nZXRSZWFkZXIoKSxZPW5ldyBVaW50OEFycmF5KFRPS0VOX1JFU1BPTlNFX01BWF9CWVRFUyk7bGV0IFo9MCxuZT0wLGllPSExO3RyeXtmb3IoOzspe2NvbnN0e2RvbmU6b2UsdmFsdWU6YWV9PWF3YWl0IHJlYWRUb2tlblJlc3BvbnNlQ2h1bmsoRixNKTtpZihvZSlyZXR1cm4gaWU9ITAsWS5zbGljZSgwLG5lKTtpZihaKz0xLFo+VE9LRU5fUkVTUE9OU0VfTUFYX0NIVU5LU3x8bmUrYWUuYnl0ZUxlbmd0aD5ZLmJ5dGVMZW5ndGgpdGhyb3cgbmV3IFRva2VuUmVzcG9uc2VCb2R5RXJyb3IoInNpemUiKTtZLnNldChhZSxuZSksbmUrPWFlLmJ5dGVMZW5ndGh9fWNhdGNoKG9lKXt0aHJvdyBvZSBpbnN0YW5jZW9mIFRva2VuUmVzcG9uc2VCb2R5RXJyb3I/b2U6bmV3IFRva2VuUmVzcG9uc2VCb2R5RXJyb3IoImludmFsaWQiKX1maW5hbGx5e2lmKCFpZSl0cnl7Ri5jYW5jZWwoImludmFsaWQgdG9rZW4gcmVzcG9uc2UiKS5jYXRjaCgoKT0+e30pfWNhdGNoe310cnl7Ri5yZWxlYXNlTG9jaygpfWNhdGNoe319fWFzeW5jIGZ1bmN0aW9uIGV4Y2hhbmdlQ29kZSh7Y29kZTpVLGNvZGVWZXJpZmllcjpNLG9wdGlvbnM6V30pe2NvbnN0IEY9bmV3IFVSTFNlYXJjaFBhcmFtcyh7Y2xpZW50X2lkOlcuY2xpZW50SWQsY29kZTpVLGNvZGVfdmVyaWZpZXI6TSxncmFudF90eXBlOiJhdXRob3JpemF0aW9uX2NvZGUiLHJlZGlyZWN0X3VyaTpXLnJlZGlyZWN0VXJpfSksWT1uZXcgQWJvcnRDb250cm9sbGVyLFo9c2V0VGltZW91dCgoKT0+WS5hYm9ydCgpLFRPS0VOX1JFU1BPTlNFX1RJTUVPVVRfTVMpO3RyeXtsZXQgbmU7dHJ5e25lPWF3YWl0IGZldGNoKG5ldyBVUkwoIi90b2tlbiIsVy5hdXRoQmFzZVVybCkse2JvZHk6RixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn0sbWV0aG9kOiJQT1NUIixzaWduYWw6WS5zaWduYWx9KX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoWS5zaWduYWwuYWJvcnRlZD8iR29vZ2xlIHNpZ24taW4gdG9rZW4gZXhjaGFuZ2UgdGltZWQgb3V0LiI6Ikdvb2dsZSBzaWduLWluIHRva2VuIGV4Y2hhbmdlIHdhcyB1bmF2YWlsYWJsZS4iKX1sZXQgaWU7dHJ5e2llPWF3YWl0IHJlYWRUb2tlblJlc3BvbnNlQnl0ZXMobmUsWS5zaWduYWwpfWNhdGNoKGFlKXtjb25zdCBjZT1hZSBpbnN0YW5jZW9mIFRva2VuUmVzcG9uc2VCb2R5RXJyb3I/YWUua2luZDoiaW52YWxpZCI7WS5hYm9ydCgpO2NvbnN0IGRlPWNlPT09InRpbWVvdXQiPyJHb29nbGUgc2lnbi1pbiB0b2tlbiBleGNoYW5nZSB0aW1lZCBvdXQuIjpjZT09PSJzaXplIj8iR29vZ2xlIHNpZ24taW4gdG9rZW4gcmVzcG9uc2UgZXhjZWVkZWQgdGhlIHNpemUgbGltaXQuIjoiR29vZ2xlIHNpZ24taW4gdG9rZW4gcmVzcG9uc2UgY291bGQgbm90IGJlIHJlYWQuIjt0aHJvdyBuZS5vaz9uZXcgVGVybWluYWxUb2tlblJlc3BvbnNlRXJyb3IoZGUpOm5ldyBFcnJvcihkZSl9aWYoIW5lLm9rKXRocm93IG5ldyBFcnJvcihgR29vZ2xlIHNpZ24taW4gdG9rZW4gZXhjaGFuZ2UgZmFpbGVkICgke25lLnN0YXR1c30pLmApO2xldCBvZTt0cnl7b2U9SlNPTi5wYXJzZShuZXcgVGV4dERlY29kZXIoInV0Zi04Iix7ZmF0YWw6ITB9KS5kZWNvZGUoaWUpKX1jYXRjaHt0aHJvdyBuZXcgVGVybWluYWxUb2tlblJlc3BvbnNlRXJyb3IoIkdvb2dsZSBzaWduLWluIHRva2VuIHJlc3BvbnNlIHdhcyBub3QgdmFsaWQgVVRGLTggSlNPTi4iKX1pZighb2V8fHR5cGVvZiBvZSE9Im9iamVjdCJ8fEFycmF5LmlzQXJyYXkob2UpKXRocm93IG5ldyBUZXJtaW5hbFRva2VuUmVzcG9uc2VFcnJvcigiR29vZ2xlIHNpZ24taW4gdG9rZW4gcmVzcG9uc2Ugd2FzIG1hbGZvcm1lZC4iKTtyZXR1cm4gb2V9ZmluYWxseXtjbGVhclRpbWVvdXQoWil9fWFzeW5jIGZ1bmN0aW9uIGhhbmRsZUdvb2dsZUNhbGxiYWNrKCl7Y29uc3QgVT1wYXJzZUNhbGxiYWNrKCk7aWYoIVUpcmV0dXJuIG51bGw7Y29uc3QgTT13aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShQS0NFX1NUT1JBR0VfS0VZKSxXPU0/cGFyc2VKc29uKE0pOm51bGwsWT1wYXJzZVN0b3JlZFBrY2VUcmFuc2FjdGlvbihXKTtpZighWSl0aHJvdyB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShQS0NFX1NUT1JBR0VfS0VZKSx3aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShSRVRVUk5fVE9fU1RPUkFHRV9LRVkpLG5ldyBFcnJvcigiTWlzc2luZyBHb29nbGUgc2lnbi1pbiB2ZXJpZmllci4gU3RhcnQgc2lnbi1pbiBhZ2Fpbi4iKTtpZihEYXRlLm5vdygpLVkuY3JlYXRlZEF0PlBLQ0VfTUFYX0FHRV9NUyl0aHJvdyB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShQS0NFX1NUT1JBR0VfS0VZKSx3aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShSRVRVUk5fVE9fU1RPUkFHRV9LRVkpLG5ldyBFcnJvcigiR29vZ2xlIHNpZ24taW4gdmVyaWZpZXIgZXhwaXJlZC4gU3RhcnQgc2lnbi1pbiBhZ2Fpbi4iKTtpZighaXNFeGFjdFN0b3JlZENhbGxiYWNrKHdpbmRvdy5sb2NhdGlvbi5ocmVmLFkpKXRocm93IG5ldyBFcnJvcigiR29vZ2xlIHNpZ24taW4gY2FsbGJhY2sgcm91dGUgbWlzbWF0Y2guIik7aWYoVS5raW5kPT09Im1hbGZvcm1lZCIpdGhyb3cgbmV3IEVycm9yKCJNYWxmb3JtZWQgR29vZ2xlIHNpZ24taW4gY2FsbGJhY2suIik7aWYoWS5zdGF0ZSE9PVUuc3RhdGUpdGhyb3cgbmV3IEVycm9yKCJHb29nbGUgc2lnbi1pbiBzdGF0ZSBtaXNtYXRjaC4iKTtpZihVLmtpbmQ9PT0iZXJyb3IiKXtjb25zdCBsZT1ZLm9wdGlvbnMucmV0dXJuVG87cmV0dXJuIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFBLQ0VfU1RPUkFHRV9LRVkpLHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFJFVFVSTl9UT19TVE9SQUdFX0tFWSksY2xlYXJDYWxsYmFja1BhcmFtcygpLHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKGxlKSxudWxsfWNvbnN0IFo9KCk9Pnt3aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShQS0NFX1NUT1JBR0VfS0VZKSx3aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShSRVRVUk5fVE9fU1RPUkFHRV9LRVkpLGNsZWFyQ2FsbGJhY2tQYXJhbXMoKX07bGV0IG5lO3RyeXtuZT1hd2FpdCBleGNoYW5nZUNvZGUoe2NvZGU6VS5jb2RlLGNvZGVWZXJpZmllcjpZLnZlcmlmaWVyLG9wdGlvbnM6WS5vcHRpb25zfSl9Y2F0Y2gobGUpe3Rocm93IGxlIGluc3RhbmNlb2YgVGVybWluYWxUb2tlblJlc3BvbnNlRXJyb3ImJlooKSxsZX1pZighbmV8fHR5cGVvZiBuZS5pZF90b2tlbiE9InN0cmluZyIpdGhyb3cgWigpLG5ldyBFcnJvcigiR29vZ2xlIHNpZ24taW4gdG9rZW4gcmVzcG9uc2Ugd2FzIG1pc3NpbmcgaWRlbnRpdHkgY2xhaW1zLiIpO2NvbnN0IGllPWJyb2tlcklkZW50aXR5RnJvbVRva2VuKG5lLmlkX3Rva2VuKSxvZT1jcmVhdGVHb29nbGVBdXRoRnJvbVRva2VuKG5lLmlkX3Rva2VuKSxhZT1pZGVudGl0eUlkRnJvbVRva2VuUmVzcG9uc2Uoe3BhaXJ3aXNlX3N1YjpuZS5wYWlyd2lzZV9zdWJ9KSxjZT1pZGVudGl0eUlkRnJvbVRva2VuUmVzcG9uc2Uoe3N1YmplY3Q6bmUuc3ViamVjdH0pLGRlPWllIT09bnVsbCYmYWU9PT1pZS5wYWlyd2lzZVN1YiYmY2U9PT1pZS5zdWJqZWN0O2lmKCFvZXx8IWllfHwhZGUpdGhyb3cgWigpLG5ldyBFcnJvcigiR29vZ2xlIHNpZ24taW4gdG9rZW4gcmVzcG9uc2UgZGlkIG5vdCBtYXRjaCB0aGUgdHJ1c3RlZCBicm9rZXIuIik7cGVyc2lzdElkZW50aXR5KGllLnN1YmplY3QsbmUuaWRfdG9rZW4sbmUuZXhwaXJlc19pbiksY2xlYXJBdXRoUmVzdW1lQXR0ZW1wdCgpLHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFBLQ0VfU1RPUkFHRV9LRVkpLHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFJFVFVSTl9UT19TVE9SQUdFX0tFWSksc2V0QXV0aCh3aXRoQXV0aExvYWRpbmcob2UsITApKSxlbWl0QXV0aCgpO2NvbnN0IHJlPVkub3B0aW9ucy5yZXR1cm5UbztyZXR1cm4gY2xlYXJDYWxsYmFja1BhcmFtcygpLHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHJlKSxuZX1mdW5jdGlvbiBhdXRoUmVzdW1lQXR0ZW1wdEtleShVKXtjb25zdCBNPWRlY29kZUlkZW50aXR5Q2xhaW1zKFUudG9rZW4pO3JldHVybltVLnVzZXJJZCxNPy5qdGksTT8uZXhwXS5maWx0ZXIoQm9vbGVhbikuam9pbigiOiIpfHxVLnRva2VufWZ1bmN0aW9uIGJlZ2luU3RvcmVkR29vZ2xlU2Vzc2lvblJlc3VtZSgpe2lmKHR5cGVvZiB3aW5kb3c+InUifHxnZXRBdXRoUmVzdW1lU3RhcnRlZCgpfHxwYXJzZUNhbGxiYWNrKCkpcmV0dXJuITE7Y29uc3QgVT1uZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO2lmKFUuaGFzKCJlcnJvciIpfHx3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU9PT1jYWxsYmFja1BhdGgoKXx8VS5oYXMoImxha2ViZWRfZ3Vlc3QiKXx8VS5oYXMoImd1ZXN0IikpcmV0dXJuITE7Y29uc3QgTT1yZWFkU3RvcmVkSWRlbnRpdHkoe2FsbG93RXhwaXJlZDohMH0pO2lmKCFNLnRva2VufHwhTS5leHBpcmVkKXJldHVybiExO2NvbnN0IFc9ZGVjb2RlSWRlbnRpdHlDbGFpbXMoTS50b2tlbik7aWYoIVc/LnBhaXJ3aXNlX3N1YiYmIVc/LnN1YilyZXR1cm4gY2xlYXJTdG9yZWRJZGVudGl0eSgpLCExO2NvbnN0IEY9YnJvd3NlclNlc3Npb25TdG9yYWdlKCksWT1hdXRoUmVzdW1lQXR0ZW1wdEtleShNKTt0cnl7aWYoRj8uZ2V0SXRlbShBVVRIX1JFU1VNRV9TVE9SQUdFX0tFWSk9PT1ZKXJldHVybiExO0Y/LnNldEl0ZW0oQVVUSF9SRVNVTUVfU1RPUkFHRV9LRVksWSl9Y2F0Y2h7fXJldHVybiBzZXRBdXRoUmVzdW1lU3RhcnRlZCghMCksc2V0QXV0aCh3aXRoQXV0aExvYWRpbmcoY3JlYXRlR3Vlc3RBdXRoKGN1cnJlbnRHdWVzdE5hbWUoKSksITApKSxlbWl0QXV0aCgpLHNpZ25JbldpdGhHb29nbGUoe3JldHVyblRvOmN1cnJlbnRSb3V0ZSgpfSkuY2F0Y2goWj0+e2NvbnNvbGUuZXJyb3IoIltsYWtlYmVkXSBHb29nbGUgc2Vzc2lvbiByZXN1bWUgZmFpbGVkIixaKSxzZXRBdXRoUmVzdW1lU3RhcnRlZCghMSksY2xlYXJTdG9yZWRJZGVudGl0eSgpLGNsZWFyQXV0aFJlc3VtZUF0dGVtcHQoKSxzZXRBdXRoKHdpdGhBdXRoTG9hZGluZyhjcmVhdGVHdWVzdEF1dGgoY3VycmVudEd1ZXN0TmFtZSgpKSwhMSkpLGVtaXRBdXRoKCkscmVjb25uZWN0KCl9KSwhMH1mdW5jdGlvbiBlbnN1cmVBdXRoSW5pdGlhbGl6ZWQoKXtyZXR1cm4gYXV0aEluaXRpYWxpemVkP1Byb21pc2UucmVzb2x2ZSgpOmJlZ2luU3RvcmVkR29vZ2xlU2Vzc2lvblJlc3VtZSgpPyhhdXRoSW5pdGlhbGl6ZWQ9ITAsUHJvbWlzZS5yZXNvbHZlKCkpOihhdXRoSW5pdFByb21pc2U/Pz1oYW5kbGVHb29nbGVDYWxsYmFjaygpLnRoZW4oKCk9Pnt9KS5jYXRjaChVPT57Y29uc29sZS5lcnJvcigiW2xha2ViZWRdIEdvb2dsZSBzaWduLWluIGZhaWxlZCIsVSl9KS5maW5hbGx5KCgpPT57YXV0aEluaXRpYWxpemVkPSEwfSksYXV0aEluaXRQcm9taXNlKX1mdW5jdGlvbiB1c2VBdXRoKCl7Y29uc3RbVSxNXT1kMihnZXRBdXRoKCkpO3JldHVybiBoMigoKT0+KGVuc3VyZUF1dGhJbml0aWFsaXplZCgpLGNvbm5lY3QoKSxhZGRBdXRoTGlzdGVuZXIoTSksKCk9PntyZW1vdmVBdXRoTGlzdGVuZXIoTSl9KSxbXSksVX1hc3luYyBmdW5jdGlvbiBzaWduSW5XaXRoR29vZ2xlKFU9e30pe2NvbnN0IE09cmVzb2x2ZUdvb2dsZUF1dGhPcHRpb25zKFUpLFc9YXdhaXQgY3JlYXRlUGtjZUJ1bmRsZSgpLEY9Y3JlYXRlU2lnbkluVXJsKE0sVyk7cmV0dXJuIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFBLQ0VfU1RPUkFHRV9LRVksSlNPTi5zdHJpbmdpZnkoe2NyZWF0ZWRBdDpEYXRlLm5vdygpLG9wdGlvbnM6TSxwcm92aWRlcjoiZ29vZ2xlIixzdGF0ZTpXLnN0YXRlLHZlcmlmaWVyOlcudmVyaWZpZXIsdmVyc2lvbjoxfSkpLHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFJFVFVSTl9UT19TVE9SQUdFX0tFWSksd2luZG93LmxvY2F0aW9uLmFzc2lnbihGKSx7YnVuZGxlOlcsdXJsOkZ9fWZ1bmN0aW9uIHNpZ25PdXQoKXtjbGVhclN0b3JlZElkZW50aXR5KCksY2xlYXJBdXRoUmVzdW1lQXR0ZW1wdCgpLHJlc2V0UXVlcnlDYWNoZUFmdGVyQXV0aENoYW5nZSgpLHNldEF1dGgod2l0aEF1dGhMb2FkaW5nKGNyZWF0ZUd1ZXN0QXV0aChjdXJyZW50R3Vlc3ROYW1lKCkpLCEwKSksZW1pdEF1dGgoKSxyZWNvbm5lY3QoKX1mdW5jdGlvbiBTaWduSW5XaXRoR29vZ2xlKHthdXRoQmFzZVVybDpVLGNoaWxkcmVuOk09IlNpZ24gaW4gd2l0aCBHb29nbGUiLGNsYXNzTmFtZTpXPSIiLGNsaWVudElkOkYsY2FsbGJhY2tQYXRoOlksZGlzYWJsZWQ6WixvbkNsaWNrOm5lLHJlZGlyZWN0VXJpOmllLHJlcXVlc3RQaWk6b2UscmVxdWVzdFByb2ZpbGU6YWUscmV0dXJuVG86Y2UsdHlwZTpkZT0iYnV0dG9uIiwuLi5yZX09e30pe3JldHVybiBkZWxldGUgcmUuc2hvb0Jhc2VVcmwsaygiYnV0dG9uIix7Y2xhc3NOYW1lOlcsZGlzYWJsZWQ6WixvbkNsaWNrOmxlPT57bmU/LihsZSksIShsZS5kZWZhdWx0UHJldmVudGVkfHxaKSYmc2lnbkluV2l0aEdvb2dsZSh7YXV0aEJhc2VVcmw6VSxjYWxsYmFja1BhdGg6WSxjbGllbnRJZDpGLHJlZGlyZWN0VXJpOmllLHJldHVyblRvOmNlfSl9LHR5cGU6ZGUsLi4ucmV9LE0pfXZhciBFcnJvckJvdW5kYXJ5PWNsYXNzIGV4dGVuZHMgQ3tzdGF0ZT17ZXJyb3I6bnVsbCxyZXZpc2lvbjowfTtzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKFUpe3JldHVybntlcnJvcjpVfX1yZXRyeT0oKT0+e3RoaXMuc2V0U3RhdGUoVT0+KHtlcnJvcjpudWxsLHJldmlzaW9uOlUucmV2aXNpb24rMX0pKX07cmVuZGVyKHtjaGlsZHJlbjpVLGZhbGxiYWNrOk19LHtlcnJvcjpXLHJldmlzaW9uOkZ9KXtyZXR1cm4gVz9NP00oVyx0aGlzLnJldHJ5KTprKCJtYWluIix7c3R5bGU6ImZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyBtYXJnaW46IDNyZW0gYXV0bzsgbWF4LXdpZHRoOiA0MHJlbTsgcGFkZGluZzogMCAxLjVyZW0ifSxbaygiaDEiLG51bGwsIlRoZSBhcHAgcXVlcnkgZmFpbGVkIiksaygicHJlIix7c3R5bGU6Im92ZXJmbG93LXdyYXA6IGFueXdoZXJlOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXAifSxXLm1lc3NhZ2UpLGsoImJ1dHRvbiIse29uQ2xpY2s6dGhpcy5yZXRyeSx0eXBlOiJidXR0b24ifSwiUmV0cnkiKV0pOmsoImRpdiIse2tleTpGfSxVKX19LFJvdXRlckNvbnRleHQ9WChudWxsKSxSb3V0ZUNvbnRleHQ9WCh7cGFyYW1zOnt9fSk7ZnVuY3Rpb24gdXNlUXVlcnlTdWJzY3JpcHRpb24oVSxNKXtjb25zdCBXPSgpPT5oYXNRdWVyeVZhbHVlKFUuc3Vic2NyaXB0aW9uSWQpP2dldFF1ZXJ5VmFsdWUoVS5zdWJzY3JpcHRpb25JZCk6TSxbRixZXT1kMigoKT0+KHtlcnJvcjpnZXRRdWVyeUVycm9yKFUuc3Vic2NyaXB0aW9uSWQpLHN1YnNjcmlwdGlvbklkOlUuc3Vic2NyaXB0aW9uSWQsdmFsdWU6VygpfSkpLFo9Ri5zdWJzY3JpcHRpb25JZD09PVUuc3Vic2NyaXB0aW9uSWQ/Rjp7ZXJyb3I6Z2V0UXVlcnlFcnJvcihVLnN1YnNjcmlwdGlvbklkKSxzdWJzY3JpcHRpb25JZDpVLnN1YnNjcmlwdGlvbklkLHZhbHVlOlcoKX07aWYoaDIoKCk9Pntjb25uZWN0KCksWSh7ZXJyb3I6Z2V0UXVlcnlFcnJvcihVLnN1YnNjcmlwdGlvbklkKSxzdWJzY3JpcHRpb25JZDpVLnN1YnNjcmlwdGlvbklkLHZhbHVlOlcoKX0pO2NvbnN0IG5lPShpZSxvZSk9PntZKHtlcnJvcjpvZT8uZXJyb3Isc3Vic2NyaXB0aW9uSWQ6VS5zdWJzY3JpcHRpb25JZCx2YWx1ZTppZX0pfTtyZXR1cm4gYWRkUXVlcnlMaXN0ZW5lcihVLG5lLE0pLHNlbmQocXVlcnlTdWJzY3JpYmVNZXNzYWdlKFUpKSwoKT0+e3JlbW92ZVF1ZXJ5TGlzdGVuZXIoVS5zdWJzY3JpcHRpb25JZCxuZSl9fSxbVS5zdWJzY3JpcHRpb25JZF0pLFouZXJyb3IpdGhyb3cgWi5lcnJvcjtyZXR1cm4gWi52YWx1ZX1mdW5jdGlvbiB1c2VRdWVyeShVLE0pe3JldHVybiB1c2VRdWVyeVN1YnNjcmlwdGlvbihxdWVyeVN1YnNjcmlwdGlvbihVLE0pLFtdKX1mdW5jdGlvbiB1c2VNdXRhdGlvbihVKXtyZXR1cm4oLi4uTSk9PnJlcXVlc3QoIm11dGF0aW9uLnJ1biIse25hbWU6VSxhcmdzOk19KX12YXIgZjM9MDtmdW5jdGlvbiB1MyhVLE0sVyxGLFksWil7TXx8KE09e30pO3ZhciBuZSxpZSxvZT1NO2lmKCJyZWYiaW4gb2UpZm9yKGllIGluIG9lPXt9LE0paWU9PSJyZWYiP25lPU1baWVdOm9lW2llXT1NW2llXTt2YXIgYWU9e3R5cGU6VSxwcm9wczpvZSxrZXk6VyxyZWY6bmUsX19rOm51bGwsX186bnVsbCxfX2I6MCxfX2U6bnVsbCxfX2M6bnVsbCxjb25zdHJ1Y3Rvcjp2b2lkIDAsX192Oi0tZjMsX19pOi0xLF9fdTowLF9fc291cmNlOlksX19zZWxmOlp9O2lmKHR5cGVvZiBVPT0iZnVuY3Rpb24iJiYobmU9VS5kZWZhdWx0UHJvcHMpKWZvcihpZSBpbiBuZSlvZVtpZV09PT12b2lkIDAmJihvZVtpZV09bmVbaWVdKTtyZXR1cm4gbC52bm9kZSYmbC52bm9kZShhZSksYWV9dmFyIE4yPVU9Pntjb25zdCBNPU51bWJlcihVKTtyZXR1cm4gaXNGaW5pdGUoTSk/TTowfSxGT05UPSJzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sICdTZWdvZSBVSScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYiLFBVUlBMRT0iIzY5NjVkYiIsU0VMQkc9IiNlM2UyZmMiLFNFTEZHPSIjNGE0N2MyIixGQVZJQ09OPSJkYXRhOmltYWdlL3N2Zyt4bWwsIitlbmNvZGVVUklDb21wb25lbnQoIjxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMzIgMzInPjxyZWN0IHdpZHRoPSczMicgaGVpZ2h0PSczMicgcng9JzcnIGZpbGw9JyM2OTY1ZGInLz48cGF0aCBkPSdNMyAxNi41bDEuNi00LjIgNy42LTcuNiAyLjYgMi42LTcuNiA3LjZ6JyB0cmFuc2Zvcm09J3RyYW5zbGF0ZSg3IDUpJyBmaWxsPScjZmZmJy8+PC9zdmc+IiksTElHSFRfQ09MT1JTPVsiIzFlMWUxZSIsIiNlMDMxMzEiLCIjMmY5ZTQ0IiwiIzE5NzFjMiIsIiNmMDhjMDAiLCIjOWMzNmI1Il0sREFSS19DT0xPUlM9WyIjZTllOWVlIiwiI2ZmODc4NyIsIiM2OWRiN2MiLCIjNzRjMGZjIiwiI2ZmZDQzYiIsIiNkYTc3ZjIiXSxGSUxMUz1bInRyYW5zcGFyZW50IiwiI2ZmYzljOSIsIiNiMmYyYmIiLCIjYTVkOGZmIiwiI2ZmZWM5OSJdLFdJRFRIUz1bMiw0LDddLFRJTlRTX0xJR0hUPVsiIiwiI2Y4ZjlmYSIsIiNmZmY5ZGIiLCIjZTdmNWZmIiwiI2ZmZTNlMyJdLFRJTlRTX0RBUks9WyIiLCIjMjAyMDI0IiwiIzFiMWUyYyIsIiMxNjIwMWEiXSxUSEVNRT1VPT5VP3twYW5lbDoiIzI2MjYyYiIsbGluZToiIzNhM2E0MiIsaW5rOiIjZTdlN2VhIixzdWI6IiM5YTlhYTIiLHNvZnQ6IiMzMzMzM2IiLGNhbnZhczoiIzE5MTkxZCIsZG90OiIjZmZmZmZmMTQiLHNoYWRvdzoiMCA2cHggMjBweCAtOHB4IHJnYmEoMCwwLDAsMC42NSkifTp7cGFuZWw6IiNmZmZmZmYiLGxpbmU6IiNlOWU5ZWUiLGluazoiIzFlMWUxZSIsc3ViOiIjODY4ZTk2Iixzb2Z0OiIjZjFmM2Y1IixjYW52YXM6IiNmZmZmZmYiLGRvdDoiIzAwMDAwMDBkIixzaGFkb3c6IjAgNHB4IDE4cHggLTZweCByZ2JhKDAsMCwwLDAuMTYpIn0sVE9PTFM9W3trOiJzZWxlY3QiLGxhYmVsOiJTZWxlY3QiLGtleToiMSJ9LHtrOiJoYW5kIixsYWJlbDoiUGFuIixrZXk6IkgifSx7azoicmVjdCIsbGFiZWw6IlJlY3RhbmdsZSIsa2V5OiIyIn0se2s6ImRpYW1vbmQiLGxhYmVsOiJEaWFtb25kIixrZXk6IjMifSx7azoiZWxsaXBzZSIsbGFiZWw6IkVsbGlwc2UiLGtleToiNCJ9LHtrOiJhcnJvdyIsbGFiZWw6IkFycm93IixrZXk6IjUifSx7azoibGluZSIsbGFiZWw6IkxpbmUiLGtleToiNiJ9LHtrOiJkcmF3IixsYWJlbDoiRHJhdyIsa2V5OiI3In0se2s6InRleHQiLGxhYmVsOiJUZXh0IixrZXk6IjgifV0sUk9UPShVLE0sVyk9PltNKk1hdGguY29zKFUpLVcqTWF0aC5zaW4oVSksTSpNYXRoLnNpbihVKStXKk1hdGguY29zKFUpXSxieVo9KFUsTSk9Pk4yKFUueiktTjIoTS56KXx8KChVLmNyZWF0ZWRBdHx8Ilx1RkZGRiIpPChNLmNyZWF0ZWRBdHx8Ilx1RkZGRiIpPy0xOjEpO2Z1bmN0aW9uIEljb24oe2s6VSxzOk09MTh9KXtjb25zdCBXPXt3aWR0aDpNLGhlaWdodDpNLHZpZXdCb3g6IjAgMCAyMCAyMCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLCJzdHJva2Utd2lkdGgiOjEuNSwic3Ryb2tlLWxpbmVjYXAiOiJyb3VuZCIsInN0cm9rZS1saW5lam9pbiI6InJvdW5kIn07cmV0dXJuIFU9PT0ic2VsZWN0Ij91Mygic3ZnIix7Li4uVyxjaGlsZHJlbjp1MygicGF0aCIse2Q6Ik01IDNsMTEgNi00LjYgMS4xTDkuNCAxNnoifSl9KTpVPT09ImhhbmQiP3UzKCJzdmciLHsuLi5XLGNoaWxkcmVuOnUzKCJwYXRoIix7ZDoiTTcgMTBWNS4yYTEuMSAxLjEgMCAwIDEgMi4yIDBWOW0wLS41VjQuNGExLjEgMS4xIDAgMCAxIDIuMiAwVjltMC0uNFY1LjRhMS4xIDEuMSAwIDAgMSAyLjIgMFYxMmMwIDIuNi0xLjggNC41LTQuMyA0LjUtMS42IDAtMi42LS43LTMuNC0xLjlMNCAxMS4zYTEuMSAxLjEgMCAwIDEgMS44LTEuMkw3IDExLjUifSl9KTpVPT09InJlY3QiP3UzKCJzdmciLHsuLi5XLGNoaWxkcmVuOnUzKCJyZWN0Iix7eDoiMy41Iix5OiI0LjgiLHdpZHRoOiIxMyIsaGVpZ2h0OiIxMC40IixyeDoiMS41In0pfSk6VT09PSJkaWFtb25kIj91Mygic3ZnIix7Li4uVyxjaGlsZHJlbjp1MygicGF0aCIse2Q6Ik0xMCAzLjVsNi4zIDYuNUwxMCAxNi41IDMuNyAxMHoifSl9KTpVPT09ImVsbGlwc2UiP3UzKCJzdmciLHsuLi5XLGNoaWxkcmVuOnUzKCJjaXJjbGUiLHtjeDoiMTAiLGN5OiIxMCIscjoiNi40In0pfSk6VT09PSJhcnJvdyI/dTMoInN2ZyIsey4uLlcsY2hpbGRyZW46dTMoInBhdGgiLHtkOiJNNCAxNC41TDE1LjUgNU0xNS41IDVoLTUuMk0xNS41IDV2NS4yIn0pfSk6VT09PSJsaW5lIj91Mygic3ZnIix7Li4uVyxjaGlsZHJlbjp1MygicGF0aCIse2Q6Ik00LjUgMTVMMTUuNSA1In0pfSk6VT09PSJkcmF3Ij91Mygic3ZnIix7Li4uVyxjaGlsZHJlbjp1MygicGF0aCIse2Q6Ik0zIDE2LjVsMS42LTQuMiA3LjYtNy42IDIuNiAyLjYtNy42IDcuNnoifSl9KTpVPT09InRleHQiP3UzKCJzdmciLHsuLi5XLGNoaWxkcmVuOnUzKCJwYXRoIix7ZDoiTTUgNlY0LjZoMTBWNk0xMCA0LjZWMTZNOCAxNmg0In0pfSk6bnVsbH1hc3luYyBmdW5jdGlvbiBzaGEyNTYoVSl7dHJ5e2NvbnN0IE09YXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoIlNIQS0yNTYiLG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShVKSk7cmV0dXJuWy4uLm5ldyBVaW50OEFycmF5KE0pXS5tYXAoVz0+Vy50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKX1jYXRjaHtyZXR1cm4icGxhaW46IitVfX1mdW5jdGlvbiBzaW1wbGlmeShVLE09MS40KXtpZihVLmxlbmd0aDw9MilyZXR1cm4gVTtjb25zdCBXPU0qTSxGPW5ldyBBcnJheShVLmxlbmd0aCkuZmlsbCghMSk7RlswXT1GW1UubGVuZ3RoLTFdPSEwO2NvbnN0IFk9W1swLFUubGVuZ3RoLTFdXTtmb3IoO1kubGVuZ3RoOyl7Y29uc3RbWixuZV09WS5wb3AoKTtsZXQgaWU9LTEsb2U9LTE7Zm9yKGxldCBhZT1aKzE7YWU8bmU7YWUrKyl7Y29uc3QgY2U9c2VnRGlzdChVW2FlXSxVW1pdLFVbbmVdKTtjZT5pZSYmKGllPWNlLG9lPWFlKX1pZT5XJiZvZT4tMSYmKEZbb2VdPSEwLFkucHVzaChbWixvZV0sW29lLG5lXSkpfXJldHVybiBVLmZpbHRlcigoWixuZSk9PkZbbmVdKX1mdW5jdGlvbiBzZWdEaXN0KFUsTSxXKXtsZXQgRj1NWzBdLFk9TVsxXSxaPVdbMF0tRixuZT1XWzFdLVk7aWYoWnx8bmUpe2NvbnN0IGllPSgoVVswXS1GKSpaKyhVWzFdLVkpKm5lKS8oWipaK25lKm5lKTtpZT4xPyhGPVdbMF0sWT1XWzFdKTppZT4wJiYoRis9WippZSxZKz1uZSppZSl9cmV0dXJuKFVbMF0tRikqKjIrKFVbMV0tWSkqKjJ9ZnVuY3Rpb24gYmJveChVKXtpZihVLnR5cGU9PT0iZHJhdyJ8fFUudHlwZT09PSJsaW5lInx8VS50eXBlPT09ImFycm93Iil7Y29uc3QgWj1KU09OLnBhcnNlKFUucG9pbnRzfHwiW10iKTtpZighWi5sZW5ndGgpcmV0dXJue3g6TjIoVS54KSx5Ok4yKFUueSksdzpOMihVLncpLGg6TjIoVS5oKX07Y29uc3QgbmU9Wi5tYXAoY2U9PmNlWzBdKSxpZT1aLm1hcChjZT0+Y2VbMV0pLG9lPU1hdGgubWluKC4uLm5lKSxhZT1NYXRoLm1pbiguLi5pZSk7cmV0dXJue3g6b2UseTphZSx3Ok1hdGgubWF4KC4uLm5lKS1vZSxoOk1hdGgubWF4KC4uLmllKS1hZX19bGV0IE09TjIoVS54KSxXPU4yKFUueSksRj1OMihVLncpLFk9TjIoVS5oKTtyZXR1cm4gRjwwJiYoTSs9RixGPS1GKSxZPDAmJihXKz1ZLFk9LVkpLHt4Ok0seTpXLHc6RixoOll9fXZhciBzaWc9VT0+W1UudHlwZSxVLngsVS55LFUudyxVLmgsVS5wb2ludHMsVS5jb2xvcixVLnN0cm9rZVdpZHRoLFUudGV4dCxVLmZpbGwsVS5yb3RhdGlvbixVLnpdLmpvaW4oInwiKTtmdW5jdGlvbiBTaGFwZUVsKHtzOlV9KXtjb25zdCBNPVUuY29sb3J8fCIjODg4IixXPU4yKFUuc3Ryb2tlV2lkdGgpfHwyLEY9VS5maWxsJiZVLmZpbGwhPT0idHJhbnNwYXJlbnQiP1UuZmlsbDoibm9uZSIsWT17c3Ryb2tlOk0sInN0cm9rZS13aWR0aCI6VyxmaWxsOkYsInN0cm9rZS1saW5lY2FwIjoicm91bmQiLCJzdHJva2UtbGluZWpvaW4iOiJyb3VuZCJ9O2xldCBaPW51bGw7aWYoVS50eXBlPT09InJlY3QiKXtjb25zdCBvZT1iYm94KFUpO1o9dTMoInJlY3QiLHt4Om9lLngseTpvZS55LHdpZHRoOm9lLncsaGVpZ2h0Om9lLmgscng6TWF0aC5taW4oNSxvZS53LzEyLG9lLmgvMTIpLC4uLll9KX1lbHNlIGlmKFUudHlwZT09PSJlbGxpcHNlIil7Y29uc3Qgb2U9YmJveChVKTtaPXUzKCJlbGxpcHNlIix7Y3g6b2UueCtvZS53LzIsY3k6b2UueStvZS5oLzIscng6b2Uudy8yLHJ5Om9lLmgvMiwuLi5ZfSl9ZWxzZSBpZihVLnR5cGU9PT0iZGlhbW9uZCIpe2NvbnN0IG9lPWJib3goVSk7Wj11MygicG9seWdvbiIse3BvaW50czpgJHtvZS54K29lLncvMn0sJHtvZS55fSAke29lLngrb2Uud30sJHtvZS55K29lLmgvMn0gJHtvZS54K29lLncvMn0sJHtvZS55K29lLmh9ICR7b2UueH0sJHtvZS55K29lLmgvMn1gLC4uLll9KX1lbHNlIGlmKFUudHlwZT09PSJkcmF3Iil7Y29uc3Qgb2U9SlNPTi5wYXJzZShVLnBvaW50c3x8IltdIik7Wj11MygicG9seWxpbmUiLHtwb2ludHM6b2UubWFwKGFlPT5hZS5qb2luKCIsIikpLmpvaW4oIiAiKSwuLi5ZLGZpbGw6Im5vbmUifSl9ZWxzZSBpZihVLnR5cGU9PT0ibGluZSJ8fFUudHlwZT09PSJhcnJvdyIpe2NvbnN0IG9lPUpTT04ucGFyc2UoVS5wb2ludHN8fCJbXSIpO2lmKG9lLmxlbmd0aDwyKXJldHVybiBudWxsO2NvbnN0IGFlPW9lWzBdLGNlPW9lW29lLmxlbmd0aC0xXSxkZT0oKT0+e2NvbnN0IHJlPU1hdGguYXRhbjIoY2VbMV0tYWVbMV0sY2VbMF0tYWVbMF0pLGxlPTkrVyoxLjQ7cmV0dXJuYCR7Y2VbMF0tbGUqTWF0aC5jb3MocmUtLjUpfSwke2NlWzFdLWxlKk1hdGguc2luKHJlLS41KX0gJHtjZVswXX0sJHtjZVsxXX0gJHtjZVswXS1sZSpNYXRoLmNvcyhyZSsuNSl9LCR7Y2VbMV0tbGUqTWF0aC5zaW4ocmUrLjUpfWB9O1o9dTMoImciLHtjaGlsZHJlbjpbdTMoInBvbHlsaW5lIix7cG9pbnRzOm9lLm1hcChyZT0+cmUuam9pbigiLCIpKS5qb2luKCIgIiksLi4uWSxmaWxsOiJub25lIn0pLFUudHlwZT09PSJhcnJvdyImJnUzKCJwb2x5bGluZSIse3BvaW50czpkZSgpLHN0cm9rZTpNLCJzdHJva2Utd2lkdGgiOlcsZmlsbDoibm9uZSIsInN0cm9rZS1saW5lY2FwIjoicm91bmQiLCJzdHJva2UtbGluZWpvaW4iOiJyb3VuZCJ9KV19KX1lbHNlIFUudHlwZT09PSJ0ZXh0IiYmKFo9dTMoInRleHQiLHt4Ok4yKFUueCkseTpOMihVLnkpK01hdGgubWF4KDE2LFcqNyksZmlsbDpNLCJmb250LXNpemUiOk1hdGgubWF4KDE2LFcqNyksImZvbnQtZmFtaWx5IjpGT05ULHN0eWxlOnt3aGl0ZVNwYWNlOiJwcmUifSxjaGlsZHJlbjpVLnRleHR9KSk7aWYoWj09PW51bGwpcmV0dXJuIG51bGw7Y29uc3QgbmU9TjIoVS5yb3RhdGlvbik7aWYoIW5lKXJldHVybiBaO2NvbnN0IGllPWJib3goVSk7cmV0dXJuIHUzKCJnIix7dHJhbnNmb3JtOmByb3RhdGUoJHtuZX0gJHtpZS54K2llLncvMn0gJHtpZS55K2llLmgvMn0pYCxjaGlsZHJlbjpafSl9ZnVuY3Rpb24gQXBwKCl7Y29uc3QgVT11c2VRdWVyeSgic2hhcGVzIiksTT11c2VRdWVyeSgicm9vbSIpLFc9dXNlQXV0aCgpLEY9dXNlTXV0YXRpb24oImFkZFNoYXBlIiksWT11c2VNdXRhdGlvbigidXBkYXRlU2hhcGUiKSxaPXVzZU11dGF0aW9uKCJkZWxldGVTaGFwZSIpLG5lPXVzZU11dGF0aW9uKCJ1bmRvIiksaWU9dXNlTXV0YXRpb24oInJlZG8iKSxvZT11c2VNdXRhdGlvbigiY2xhaW0iKSxhZT11c2VNdXRhdGlvbigic2V0RHJhd0xvY2siKSxjZT11c2VNdXRhdGlvbigic2V0Vmlld0xvY2siKSxkZT1NJiZNWzBdLHJlPSEoZGUmJmRlLm93bmVySWQpLGxlPSEhKGRlJiZkZS5vd25lcklkJiZkZS5vd25lcklkPT09Vy51c2VySWQpLHBlPSEhKGRlJiZkZS5kcmF3TG9jayksd2U9ISEoZGUmJmRlLnZpZXdMb2NrKSx5ZT10eXBlb2YgbG9jYWxTdG9yYWdlPCJ1IiYmbG9jYWxTdG9yYWdlLmdldEl0ZW0oIndiLWRhcmsiKT09PSIxIixbZ2UsX2VdPWQyKHllKSxbSWUsRGVdPWQyKCIiKSxbTmUsR2VdPWQyKCEwKSxbdHQsamVdPWQyKCExKSxbdmUsQ2VdPWQyKCJzZWxlY3QiKSxbYmUsaXRdPWQyKHllP0RBUktfQ09MT1JTWzBdOkxJR0hUX0NPTE9SU1swXSksW1dlLGZ0XT1kMihGSUxMU1swXSksW0ZlLFB0XT1kMihXSURUSFNbMV0pLFtIZSxxZV09ZDIobnVsbCksW2tlLEtlXT1kMih7eDotMjAwLHk6LTE1MCx6b29tOjF9KSxbTGUsQWVdPWQyKG51bGwpLFtodCxfdF09ZDIoW10pLFtudCxwdF09ZDIoe30pLFtUZSxvdF09ZDIobnVsbCksW0x0LE90XT1kMigiIiksW2d0LFJ0XT1kMigiIiksW3l0LG10XT1kMigiIiksW1ZlLE50XT1kMigoKT0+dHlwZW9mIHdpbmRvdzwidSImJndpbmRvdy5pbm5lcldpZHRoPDc2MCksW3d0LHp0XT1kMigoKT0+KHt3OnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdy5pbm5lcldpZHRoOjEyODAsaDp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3cuaW5uZXJIZWlnaHQ6ODAwfSkpLGF0PUEyKG51bGwpLEVlPUEyKG51bGwpLHN0PUEyKGtlKTtzdC5jdXJyZW50PWtlO2NvbnN0IE10PUEyKDApLE1lPVRIRU1FKGdlKSx2dD1JZXx8TWUuY2FudmFzLCR0PWdlP0RBUktfQ09MT1JTOkxJR0hUX0NPTE9SUyxCdD1nZT9USU5UU19EQVJLOlRJTlRTX0xJR0hULEplPSFkZXx8IXBlfHxsZSxsdD1yZXx8bGUsWWU9bGV8fCF3ZXx8ISFkZT8udmlld0hhc2gmJkx0PT09ZGUudmlld0hhc2gsWGU9ZWU9PnttdChlZSksc2V0VGltZW91dCgoKT0+bXQoIiIpLDJlMyl9LGJ0PU9iamVjdC5rZXlzKG50KS5sZW5ndGg+MD9VLm1hcChlZT0+bnRbZWUuaWRdfHxlZSk6VSxEdD1odC5sZW5ndGg/Wy4uLmJ0LC4uLmh0XTpidDtoMigoKT0+e190KGVlPT57aWYoIWVlLmxlbmd0aClyZXR1cm4gZWU7Y29uc3QgdGU9bmV3IFNldChVLm1hcChzaWcpKSxzZT1lZS5maWx0ZXIodWU9PiF0ZS5oYXMoc2lnKHVlKSkpO3JldHVybiBzZS5sZW5ndGg9PT1lZS5sZW5ndGg/ZWU6c2V9KSxwdChlZT0+e2NvbnN0IHRlPU9iamVjdC5rZXlzKGVlKTtpZighdGUubGVuZ3RoKXJldHVybiBlZTtsZXQgc2U9ITE7Y29uc3QgdWU9e307Zm9yKGNvbnN0IGZlIG9mIHRlKXtjb25zdCBoZT1VLmZpbmQoVWU9PlVlLmlkPT09ZmUpO2lmKCFoZXx8c2lnKGhlKT09PXNpZyhlZVtmZV0pKXtzZT0hMDtjb250aW51ZX11ZVtmZV09ZWVbZmVdfXJldHVybiBzZT91ZTplZX0pfSxbVV0pO2Z1bmN0aW9uIGN0KGVlKXtfdCh0ZT0+Wy4uLnRlLHsuLi5lZSxpZDoicGVuZC0iK010LmN1cnJlbnQrKyxjcmVhdGVkQnk6IiIsY3JlYXRlZEF0OiIifV0pLEYoSlNPTi5zdHJpbmdpZnkoe3NoYXBlOmVlfSkpfWZ1bmN0aW9uIHplKGVlKXt0cnl7Y29uc3R7aWQ6dGUscGF0Y2g6c2V9PUpTT04ucGFyc2UoZWUpLHVlPW50W3RlXXx8VS5maW5kKGZlPT5mZS5pZD09PXRlKTt1ZSYmcHQoZmU9Pih7Li4uZmUsW3RlXTp7Li4udWUsLi4uc2UsaWQ6dGV9fSkpfWNhdGNoe31ZKGVlKX1oMigoKT0+e2NvbnN0IGVlPSgpPT57TnQod2luZG93LmlubmVyV2lkdGg8NzYwKSx6dCh7dzp3aW5kb3cuaW5uZXJXaWR0aCxoOndpbmRvdy5pbm5lckhlaWdodH0pfTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsZWUpLCgpPT53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIixlZSl9LFtdKSxoMigoKT0+e2xldCBlZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJsaW5rW3JlbD0naWNvbiddIik7ZWV8fChlZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIiksZWUucmVsPSJpY29uIixkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGVlKSksZWUudHlwZT0iaW1hZ2Uvc3ZnK3htbCIsZWUuaHJlZj1GQVZJQ09OfSxbXSk7ZnVuY3Rpb24ga3QoZWUpe19lKGVlKTt0cnl7bG9jYWxTdG9yYWdlLnNldEl0ZW0oIndiLWRhcmsiLGVlPyIxIjoiIil9Y2F0Y2h7fURlKCIiKSxpdCh0ZT0+dGU9PT0oZWU/TElHSFRfQ09MT1JTOkRBUktfQ09MT1JTKVswXT8oZWU/REFSS19DT0xPUlM6TElHSFRfQ09MT1JTKVswXTp0ZSl9ZnVuY3Rpb24gU3QoZWUpe2NvbnN0IHRlPWF0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksc2U9c3QuY3VycmVudDtyZXR1cm5bc2UueCsoZWUuY2xpZW50WC10ZS5sZWZ0KS90ZS53aWR0aCoodGUud2lkdGgvc2Uuem9vbSksc2UueSsoZWUuY2xpZW50WS10ZS50b3ApL3RlLmhlaWdodCoodGUuaGVpZ2h0L3NlLnpvb20pXX1mdW5jdGlvbiBXdChlZSl7Y29uc3QgdGU9VS5tYXAoc2U9Pm50W3NlLmlkXXx8c2UpLnNvcnQoYnlaKTtmb3IobGV0IHNlPXRlLmxlbmd0aC0xO3NlPj0wO3NlLS0pe2NvbnN0IHVlPXRlW3NlXSxmZT1iYm94KHVlKSxoZT02K04yKHVlLnN0cm9rZVdpZHRoKSxVZT1OMih1ZS5yb3RhdGlvbik7bGV0IHhlPWVlO2lmKFVlKXtjb25zdCBCZT1mZS54K2ZlLncvMixPZT1mZS55K2ZlLmgvMixSZT0tVWUqTWF0aC5QSS8xODAsUGU9Uk9UKFJlLGVlWzBdLUJlLGVlWzFdLU9lKTt4ZT1bQmUrUGVbMF0sT2UrUGVbMV1dfWlmKHhlWzBdPj1mZS54LWhlJiZ4ZVswXTw9ZmUueCtmZS53K2hlJiZ4ZVsxXT49ZmUueS1oZSYmeGVbMV08PWZlLnkrZmUuaCtoZSlyZXR1cm4gdWV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gRnQoZWUsdGUsc2Upe2VlLnN0b3BQcm9wYWdhdGlvbigpLHFlKHRlLmlkKSxFZS5jdXJyZW50PXttb2RlOiJyZXNpemUiLGlkOnRlLmlkLGJhc2U6dGUsYjA6YmJveCh0ZSkscm90Ok4yKHRlLnJvdGF0aW9uKSpNYXRoLlBJLzE4MCxjb3JuZXI6c2V9fWZ1bmN0aW9uIEh0KGVlLHRlLHNlKXtlZS5zdG9wUHJvcGFnYXRpb24oKSxxZSh0ZS5pZCksRWUuY3VycmVudD17bW9kZToicmVzaXplRHJhdyIsaWQ6dGUuaWQsYmFzZTp0ZSxiMDpiYm94KHRlKSxwdHMwOkpTT04ucGFyc2UodGUucG9pbnRzfHwiW10iKSxjb3JuZXI6c2V9fWZ1bmN0aW9uIEp0KGVlLHRlKXtlZS5zdG9wUHJvcGFnYXRpb24oKSxxZSh0ZS5pZCk7Y29uc3Qgc2U9YmJveCh0ZSk7RWUuY3VycmVudD17bW9kZToicm90YXRlIixpZDp0ZS5pZCxiYXNlOnRlLGNlbnRlcjpbc2UueCtzZS53LzIsc2UueStzZS5oLzJdfX1mdW5jdGlvbiBHdChlZSx0ZSxzZSl7ZWUuc3RvcFByb3BhZ2F0aW9uKCkscWUodGUuaWQpLEVlLmN1cnJlbnQ9e21vZGU6ImVuZHBvaW50IixpZDp0ZS5pZCxiYXNlOnRlLHB0czA6SlNPTi5wYXJzZSh0ZS5wb2ludHN8fCJbXSIpLGlkeDpzZX19ZnVuY3Rpb24ganQoZWUpe2lmKFRlfHwhWWUpcmV0dXJuO3R0JiZqZSghMSksZWUudGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlPy4oZWUucG9pbnRlcklkKTtjb25zdCB0ZT1TdChlZSk7aWYodmU9PT0iaGFuZCJ8fGVlLmJ1dHRvbj09PTF8fEVlLmN1cnJlbnQ/LnNwYWNlKXtFZS5jdXJyZW50PXttb2RlOiJwYW4iLHN4OmVlLmNsaWVudFgsc3k6ZWUuY2xpZW50WSxveDprZS54LG95OmtlLnl9O3JldHVybn1pZih2ZT09PSJzZWxlY3QiKXtjb25zdCBzZT1XdCh0ZSk7cWUoc2U/c2UuaWQ6bnVsbCksc2UmJkplJiYoRWUuY3VycmVudD17bW9kZToibW92ZSIsaWQ6c2UuaWQsc3RhcnQ6dGUsYmFzZTpzZX0pO3JldHVybn1pZighSmUpe1hlKCJUaGlzIGJvYXJkIGlzIHNldCB0byB2aWV3LW9ubHkiKTtyZXR1cm59aWYodmU9PT0idGV4dCIpe290KHtpZDpudWxsLHg6dGVbMF0seTp0ZVsxXSx2YWx1ZToiIn0pO3JldHVybn1pZih2ZT09PSJkcmF3Iil7RWUuY3VycmVudD17bW9kZToiZHJhdyIscHRzOlt0ZV19LEFlKG1rUGF0aCgiZHJhdyIsW3RlXSxiZSxGZSxXZSkpO3JldHVybn1FZS5jdXJyZW50PXttb2RlOiJjcmVhdGUiLHR5cGU6dmUsc3RhcnQ6dGV9LEFlKG1rRHJhZnQodmUsdGUsdGUsYmUsRmUsV2UpKX1mdW5jdGlvbiBxdChlZSl7Y29uc3QgdGU9RWUuY3VycmVudDtpZighdGUpcmV0dXJuO2lmKHRlLm1vZGU9PT0icGFuIil7S2UodWU9Pih7Li4udWUseDp0ZS5veC0oZWUuY2xpZW50WC10ZS5zeCkvdWUuem9vbSx5OnRlLm95LShlZS5jbGllbnRZLXRlLnN5KS91ZS56b29tfSkpO3JldHVybn1jb25zdCBzZT1TdChlZSk7aWYodGUubW9kZT09PSJkcmF3Iil7dGUucHRzLnB1c2goc2UpLEFlKG1rUGF0aCgiZHJhdyIsdGUucHRzLGJlLEZlLFdlKSk7cmV0dXJufWlmKHRlLm1vZGU9PT0iY3JlYXRlIil7QWUobWtEcmFmdCh0ZS50eXBlLHRlLnN0YXJ0LHNlLGJlLEZlLFdlKSk7cmV0dXJufWlmKHRlLm1vZGU9PT0ibW92ZSIpe0FlKG1vdmVTaGFwZSh0ZS5iYXNlLHNlWzBdLXRlLnN0YXJ0WzBdLHNlWzFdLXRlLnN0YXJ0WzFdKSk7cmV0dXJufWlmKHRlLm1vZGU9PT0icmVzaXplIil7Y29uc3QgdWU9dGUuYjAsZmU9dWUueCt1ZS53LzIsaGU9dWUueSt1ZS5oLzIsW1VlLHhlXT10ZS5jb3JuZXIsQmU9Uk9UKHRlLnJvdCwtVWUqdWUudy8yLC14ZSp1ZS5oLzIpLE9lPVtmZStCZVswXSxoZStCZVsxXV0sUmU9Uk9UKC10ZS5yb3Qsc2VbMF0tT2VbMF0sc2VbMV0tT2VbMV0pLFBlPU1hdGgubWF4KDgsTWF0aC5hYnMoUmVbMF0pKSxRZT1NYXRoLm1heCg4LE1hdGguYWJzKFJlWzFdKSksWmU9WyhPZVswXStzZVswXSkvMiwoT2VbMV0rc2VbMV0pLzJdO0FlKHsuLi50ZS5iYXNlLGlkOiJkcmFmdCIseDpTdHJpbmcoWmVbMF0tUGUvMikseTpTdHJpbmcoWmVbMV0tUWUvMiksdzpTdHJpbmcoUGUpLGg6U3RyaW5nKFFlKX0pO3JldHVybn1pZih0ZS5tb2RlPT09InJlc2l6ZURyYXciKXtjb25zdCB1ZT10ZS5iMCxbZmUsaGVdPXRlLmNvcm5lcixVZT1mZTwwP3VlLngrdWUudzp1ZS54LHhlPWhlPDA/dWUueSt1ZS5oOnVlLnksQmU9ZmU8MD91ZS54OnVlLngrdWUudyxPZT1oZTwwP3VlLnk6dWUueSt1ZS5oO2xldCBSZT0oc2VbMF0tVWUpLyhCZS1VZXx8MSksUGU9KHNlWzFdLXhlKS8oT2UteGV8fDEpO01hdGguYWJzKFJlKTwuMDUmJihSZT1SZTwwPy0uMDU6LjA1KSxNYXRoLmFicyhQZSk8LjA1JiYoUGU9UGU8MD8tLjA1Oi4wNSk7Y29uc3QgUWU9dGUucHRzMC5tYXAoWmU9PltVZSsoWmVbMF0tVWUpKlJlLHhlKyhaZVsxXS14ZSkqUGVdKTtBZSh7Li4udGUuYmFzZSxpZDoiZHJhZnQiLHBvaW50czpKU09OLnN0cmluZ2lmeShRZSl9KTtyZXR1cm59aWYodGUubW9kZT09PSJyb3RhdGUiKXtsZXQgdWU9TWF0aC5hdGFuMihzZVsxXS10ZS5jZW50ZXJbMV0sc2VbMF0tdGUuY2VudGVyWzBdKSoxODAvTWF0aC5QSSs5MDtlZS5zaGlmdEtleSYmKHVlPU1hdGgucm91bmQodWUvMTUpKjE1KSx1ZT0oTWF0aC5yb3VuZCh1ZSklMzYwKzM2MCklMzYwLEFlKHsuLi50ZS5iYXNlLGlkOiJkcmFmdCIscm90YXRpb246U3RyaW5nKHVlKX0pO3JldHVybn1pZih0ZS5tb2RlPT09ImVuZHBvaW50Iil7Y29uc3QgdWU9dGUucHRzMC5zbGljZSgpO3VlW3RlLmlkeF09c2UsQWUoey4uLnRlLmJhc2UsaWQ6ImRyYWZ0Iixwb2ludHM6SlNPTi5zdHJpbmdpZnkodWUpfSk7cmV0dXJufX1mdW5jdGlvbiBWdCgpe2NvbnN0IGVlPUVlLmN1cnJlbnQ7aWYoRWUuY3VycmVudD1udWxsLCEhZWUpe2lmKGVlLm1vZGU9PT0iZHJhdyIpe2NvbnN0IHRlPXNpbXBsaWZ5KGVlLnB0cyk7QWUobnVsbCksdGUubGVuZ3RoPj0yJiZjdCh7dHlwZToiZHJhdyIscG9pbnRzOkpTT04uc3RyaW5naWZ5KHRlKSxjb2xvcjpiZSxzdHJva2VXaWR0aDpTdHJpbmcoRmUpLHg6IjAiLHk6IjAiLHc6IjAiLGg6IjAiLHRleHQ6IiIsZmlsbDoiIixyb3RhdGlvbjoiMCIsejoiMCJ9KTtyZXR1cm59aWYoZWUubW9kZT09PSJjcmVhdGUiKXtjb25zdCB0ZT1MZTtpZihBZShudWxsKSx0ZSl7Y29uc3Qgc2U9YmJveCh0ZSk7KHNlLnc+NHx8c2UuaD40fHx0ZS50eXBlPT09ImxpbmUifHx0ZS50eXBlPT09ImFycm93IikmJmN0KHN0cmlwRHJhZnQodGUpKX1yZXR1cm59aWYoZWUubW9kZT09PSJtb3ZlIil7Y29uc3QgdGU9TGU7QWUobnVsbCksdGUmJnplKEpTT04uc3RyaW5naWZ5KHtpZDplZS5pZCxwYXRjaDp0ZS50eXBlPT09ImRyYXcifHx0ZS50eXBlPT09ImxpbmUifHx0ZS50eXBlPT09ImFycm93Ij97cG9pbnRzOnRlLnBvaW50c306e3g6dGUueCx5OnRlLnl9fSkpO3JldHVybn1pZihlZS5tb2RlPT09InJlc2l6ZSJ8fGVlLm1vZGU9PT0icmVzaXplRHJhdyIpe2NvbnN0IHRlPUxlO0FlKG51bGwpLHRlJiZ6ZShKU09OLnN0cmluZ2lmeSh7aWQ6ZWUuaWQscGF0Y2g6ZWUubW9kZT09PSJyZXNpemUiP3t4OnRlLngseTp0ZS55LHc6dGUudyxoOnRlLmh9Ontwb2ludHM6dGUucG9pbnRzfX0pKTtyZXR1cm59aWYoZWUubW9kZT09PSJyb3RhdGUiKXtjb25zdCB0ZT1MZTtBZShudWxsKSx0ZSYmemUoSlNPTi5zdHJpbmdpZnkoe2lkOmVlLmlkLHBhdGNoOntyb3RhdGlvbjp0ZS5yb3RhdGlvbn19KSk7cmV0dXJufWlmKGVlLm1vZGU9PT0iZW5kcG9pbnQiKXtjb25zdCB0ZT1MZTtBZShudWxsKSx0ZSYmemUoSlNPTi5zdHJpbmdpZnkoe2lkOmVlLmlkLHBhdGNoOntwb2ludHM6dGUucG9pbnRzfX0pKTtyZXR1cm59fX1mdW5jdGlvbiBLdCgpe2lmKCFUZSlyZXR1cm47Y29uc3QgZWU9VGUudmFsdWUucmVwbGFjZSgvXHMrJC8sIiIpO2VlJiYoVGUuaWQ/emUoSlNPTi5zdHJpbmdpZnkoe2lkOlRlLmlkLHBhdGNoOnt0ZXh0OmVlfX0pKTpjdCh7dHlwZToidGV4dCIseDpTdHJpbmcoVGUueCkseTpTdHJpbmcoVGUueSksdzpTdHJpbmcoZWUubGVuZ3RoKjkpLGg6IjI2Iixwb2ludHM6IiIsY29sb3I6YmUsc3Ryb2tlV2lkdGg6U3RyaW5nKEZlKSx0ZXh0OmVlLGZpbGw6IiIscm90YXRpb246IjAiLHo6IjAifSkpLG90KG51bGwpLENlKCJzZWxlY3QiKX1mdW5jdGlvbiB4dChlZSl7aWYoIVNlKXJldHVybjtjb25zdCB0ZT1VLm1hcCh1ZT0+TjIodWUueikpLHNlPWVlP01hdGgubWF4KDAsLi4udGUpKzE6TWF0aC5taW4oMCwuLi50ZSktMTt6ZShKU09OLnN0cmluZ2lmeSh7aWQ6U2UuaWQscGF0Y2g6e3o6U3RyaW5nKHNlKX19KSl9aDIoKCk9PntmdW5jdGlvbiBlZShzZSl7aWYoVGUpcmV0dXJuO2NvbnN0IHVlPXNlLnRhcmdldDtpZih1ZSYmKHVlLnRhZ05hbWU9PT0iSU5QVVQifHx1ZS50YWdOYW1lPT09IlRFWFRBUkVBIikpcmV0dXJuO2lmKHNlLmNvZGU9PT0iU3BhY2UiKXtFZS5jdXJyZW50PXsuLi5FZS5jdXJyZW50fHx7fSxzcGFjZTohMH07cmV0dXJufWlmKChzZS5tZXRhS2V5fHxzZS5jdHJsS2V5KSYmc2Uua2V5LnRvTG93ZXJDYXNlKCk9PT0ieiIpe2lmKCFsdClyZXR1cm47c2UucHJldmVudERlZmF1bHQoKSxzZS5zaGlmdEtleT9pZSgiIik6bmUoIiIpO3JldHVybn1pZigoc2Uua2V5PT09IkRlbGV0ZSJ8fHNlLmtleT09PSJCYWNrc3BhY2UiKSYmSGUmJkplKXtzZS5wcmV2ZW50RGVmYXVsdCgpLFooSlNPTi5zdHJpbmdpZnkoe2lkOkhlfSkpLHFlKG51bGwpO3JldHVybn1jb25zdCBmZT1UT09MUy5maW5kKGhlPT5oZS5rZXkudG9Mb3dlckNhc2UoKT09PXNlLmtleS50b0xvd2VyQ2FzZSgpKTtmZSYmQ2UoZmUuayl9ZnVuY3Rpb24gdGUoc2Upe3NlLmNvZGU9PT0iU3BhY2UiJiZFZS5jdXJyZW50JiYoRWUuY3VycmVudC5zcGFjZT0hMSl9cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixlZSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIix0ZSksKCk9Pnt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsZWUpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXl1cCIsdGUpfX0sW0hlLFRlLGx0LEplXSk7ZnVuY3Rpb24gWXQoZWUpe2lmKGVlLnByZXZlbnREZWZhdWx0KCksZWUuY3RybEtleXx8ZWUubWV0YUtleSl7Y29uc3QgdGU9YXQuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzZT1zdC5jdXJyZW50LHVlPXNlLngrKGVlLmNsaWVudFgtdGUubGVmdCkvdGUud2lkdGgqKHRlLndpZHRoL3NlLnpvb20pLGZlPXNlLnkrKGVlLmNsaWVudFktdGUudG9wKS90ZS5oZWlnaHQqKHRlLmhlaWdodC9zZS56b29tKSxoZT1NYXRoLm1pbig2LE1hdGgubWF4KC4xNSxzZS56b29tKihlZS5kZWx0YVk8MD8xLjEyOi44OSkpKTtLZSh7em9vbTpoZSx4OnVlLShlZS5jbGllbnRYLXRlLmxlZnQpL3RlLndpZHRoKih0ZS53aWR0aC9oZSkseTpmZS0oZWUuY2xpZW50WS10ZS50b3ApL3RlLmhlaWdodCoodGUuaGVpZ2h0L2hlKX0pfWVsc2UgS2UodGU9Pih7Li4udGUseDp0ZS54K2VlLmRlbHRhWC90ZS56b29tLHk6dGUueStlZS5kZWx0YVkvdGUuem9vbX0pKX1mdW5jdGlvbiBYdCgpe29lKEpTT04uc3RyaW5naWZ5KHt2aWV3SGFzaDoiIn0pKSxYZSgiWW91IG93biB0aGlzIGJvYXJkIil9YXN5bmMgZnVuY3Rpb24gUXQoKXtpZih3ZSljZShKU09OLnN0cmluZ2lmeSh7dmFsdWU6ITF9KSksWGUoIlZpZXdpbmcgb3BlbiIpO2Vsc2V7Y29uc3QgZWU9d2luZG93LnByb21wdCgiU2V0IGEgcGFzc2NvZGUgcGVvcGxlIG5lZWQgdG8gVklFVyB0aGlzIGJvYXJkOiIpPz8iIjtpZighZWUpcmV0dXJuO2NvbnN0IHRlPWF3YWl0IHNoYTI1NihlZSk7Y2UoSlNPTi5zdHJpbmdpZnkoe3ZhbHVlOiEwLHZpZXdIYXNoOnRlfSkpLFhlKCJWaWV3aW5nIGxvY2tlZCIpfX1hc3luYyBmdW5jdGlvbiBJdCgpe2NvbnN0IGVlPWF3YWl0IHNoYTI1NihndCk7ZGU/LnZpZXdIYXNoJiZlZT09PWRlLnZpZXdIYXNoPyhPdChlZSksWGUoIlVubG9ja2VkIikpOlhlKCJXcm9uZyBwYXNzY29kZSIpfWNvbnN0IEV0PXd0Lncva2Uuem9vbSxBdD13dC5oL2tlLnpvb20sVHQ9SlNPTi5zdHJpbmdpZnkoVSkubGVuZ3RoLEN0PU1hdGgubWluKDEwMCxUdC8xMDQ4NTc2KjEwMCksWnQ9Wy4uLkR0XS5zb3J0KGJ5WiksU2U9SGUmJihudFtIZV18fFUuZmluZChlZT0+ZWUuaWQ9PT1IZSkpfHxudWxsLCRlPUhlJiZMZSYmTGUuaWQ9PT0iZHJhZnQiP0xlOlNlLGVuPSFWZSYmKHZlIT09InNlbGVjdCImJnZlIT09ImhhbmQifHxTZSk7ZnVuY3Rpb24gdG4oKXtpZighJGV8fFRlfHx2ZSE9PSJzZWxlY3QiKXJldHVybiBudWxsO2NvbnN0IGVlPWtlLnpvb20sdGU9OS9lZSxzZT01L2VlLHVlPTEuNS9lZSxmZT0kZS50eXBlO2lmKGZlPT09ImxpbmUifHxmZT09PSJhcnJvdyIpe2NvbnN0IG1lPUpTT04ucGFyc2UoJGUucG9pbnRzfHwiW10iKTtpZihtZS5sZW5ndGg8MilyZXR1cm4gbnVsbDtjb25zdCBldD1bMCxtZS5sZW5ndGgtMV07cmV0dXJuIHUzKCJnIix7Y2hpbGRyZW46W3UzKCJsaW5lIix7eDE6bWVbMF1bMF0seTE6bWVbMF1bMV0seDI6bWVbbWUubGVuZ3RoLTFdWzBdLHkyOm1lW21lLmxlbmd0aC0xXVsxXSxzdHJva2U6UFVSUExFLCJzdHJva2Utd2lkdGgiOnVlLCJzdHJva2UtZGFzaGFycmF5IjpgJHs1L2VlfSAkezQvZWV9YH0pLEplJiZldC5tYXAoKHJ0LHV0KT0+dTMoImNpcmNsZSIse2N4Om1lW3J0XVswXSxjeTptZVtydF1bMV0scjp0ZSouNyxmaWxsOiJ2YXIoLS1wYW5lbCkiLHN0cm9rZTpQVVJQTEUsInN0cm9rZS13aWR0aCI6dWUsc3R5bGU6e2N1cnNvcjoibW92ZSJ9LG9uUG9pbnRlckRvd246ZHQ9Pkd0KGR0LCRlLHJ0KX0sdXQpKV19KX1jb25zdCBoZT1iYm94KCRlKSxVZT1OMigkZS5yb3RhdGlvbikseGU9aGUueCtoZS53LzIsQmU9aGUueStoZS5oLzIsT2U9bWU9PnUzKCJnIix7dHJhbnNmb3JtOlVlP2Byb3RhdGUoJHtVZX0gJHt4ZX0gJHtCZX0pYDp2b2lkIDAsY2hpbGRyZW46bWV9KSxSZT11MygicmVjdCIse3g6aGUueC1zZSx5OmhlLnktc2Usd2lkdGg6aGUudytzZSoyLGhlaWdodDpoZS5oK3NlKjIsZmlsbDoibm9uZSIsc3Ryb2tlOlBVUlBMRSwic3Ryb2tlLXdpZHRoIjp1ZSwic3Ryb2tlLWRhc2hhcnJheSI6YCR7NS9lZX0gJHs0L2VlfWAscng6My9lZX0pO2lmKCFKZSlyZXR1cm4gT2UoUmUpO2NvbnN0IFBlPWZlPT09ImRyYXciLFFlPWZlPT09InJlY3QifHxmZT09PSJlbGxpcHNlInx8ZmU9PT0iZGlhbW9uZCJ8fGZlPT09InRleHQiO3JldHVybiBPZSh1MyhTLHtjaGlsZHJlbjpbUmUsKGZlPT09InJlY3QifHxmZT09PSJlbGxpcHNlInx8ZmU9PT0iZGlhbW9uZCJ8fFBlKSYmW1stMSwtMV0sWzEsLTFdLFsxLDFdLFstMSwxXV0ubWFwKChbbWUsZXRdLHJ0KT0+e2NvbnN0IHV0PW1lPDA/aGUueC1zZTpoZS54K2hlLncrc2UsZHQ9ZXQ8MD9oZS55LXNlOmhlLnkraGUuaCtzZTtyZXR1cm4gdTMoInJlY3QiLHt4OnV0LXRlLzIseTpkdC10ZS8yLHdpZHRoOnRlLGhlaWdodDp0ZSxyeDoyL2VlLGZpbGw6InZhcigtLXBhbmVsKSIsc3Ryb2tlOlBVUlBMRSwic3Ryb2tlLXdpZHRoIjp1ZSxzdHlsZTp7Y3Vyc29yOm1lKmV0PjA/Im53c2UtcmVzaXplIjoibmVzdy1yZXNpemUifSxvblBvaW50ZXJEb3duOlV0PT5QZT9IdChVdCwkZSxbbWUsZXRdKTpGdChVdCwkZSxbbWUsZXRdKX0scnQpfSksUWUmJnUzKFMse2NoaWxkcmVuOlt1MygibGluZSIse3gxOnhlLHkxOmhlLnktc2UseDI6eGUseTI6aGUueS1zZS0yMi9lZSxzdHJva2U6UFVSUExFLCJzdHJva2Utd2lkdGgiOnVlfSksdTMoImNpcmNsZSIse2N4OnhlLGN5OmhlLnktc2UtMjIvZWUscjp0ZSouNzIsZmlsbDoidmFyKC0tcGFuZWwpIixzdHJva2U6UFVSUExFLCJzdHJva2Utd2lkdGgiOnVlLHN0eWxlOntjdXJzb3I6ImdyYWIifSxvblBvaW50ZXJEb3duOm1lPT5KdChtZSwkZSl9KV19KV19KSl9cmV0dXJuIHUzKCJkaXYiLHtzdHlsZTp7cG9zaXRpb246ImZpeGVkIixpbnNldDowLGJhY2tncm91bmQ6dnQsY29sb3I6InZhcigtLWluaykiLGZvbnRGYW1pbHk6Rk9OVCxvdmVyZmxvdzoiaGlkZGVuIix1c2VyU2VsZWN0OiJub25lIiwiLS1wYW5lbCI6TWUucGFuZWwsIi0tbGluZSI6TWUubGluZSwiLS1pbmsiOk1lLmluaywiLS1zdWIiOk1lLnN1YiwiLS1zb2Z0IjpNZS5zb2Z0LCItLXNoYWRvdyI6TWUuc2hhZG93fSxjaGlsZHJlbjpbdTMoInN2ZyIse3JlZjphdCx3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIix2aWV3Qm94OmAke2tlLnh9ICR7a2UueX0gJHtFdH0gJHtBdH1gLHN0eWxlOntwb3NpdGlvbjoiYWJzb2x1dGUiLGluc2V0OjAsY3Vyc29yOnZlPT09ImhhbmQiPyJncmFiIjp2ZT09PSJzZWxlY3QiPyJkZWZhdWx0IjoiY3Jvc3NoYWlyIix0b3VjaEFjdGlvbjoibm9uZSJ9LG9uUG9pbnRlckRvd246anQsb25Qb2ludGVyTW92ZTpxdCxvblBvaW50ZXJVcDpWdCxvbldoZWVsOll0LGNoaWxkcmVuOlt1MygiZGVmcyIse2NoaWxkcmVuOnUzKCJwYXR0ZXJuIix7aWQ6ImRvdHMiLHdpZHRoOiIyMiIsaGVpZ2h0OiIyMiIscGF0dGVyblVuaXRzOiJ1c2VyU3BhY2VPblVzZSIsY2hpbGRyZW46dTMoImNpcmNsZSIse2N4OiIxLjQiLGN5OiIxLjQiLHI6IjEuNCIsZmlsbDpNZS5kb3R9KX0pfSksTmUmJnUzKCJyZWN0Iix7eDprZS54LHk6a2UueSx3aWR0aDpFdCxoZWlnaHQ6QXQsZmlsbDoidXJsKCNkb3RzKSJ9KSxZZSYmWnQubWFwKGVlPT51MygiZyIse29wYWNpdHk6TGUmJkxlLmlkPT09ImRyYWZ0IiYmZWUuaWQ9PT1IZT8wOjEsY2hpbGRyZW46dTMoU2hhcGVFbCx7czplZX0pfSxlZS5pZCkpLFllJiZMZSYmdTMoU2hhcGVFbCx7czpMZX0pLFllJiZ0bigpXX0pLCFZZSYmdTMoImRpdiIse3N0eWxlOntwb3NpdGlvbjoiYWJzb2x1dGUiLGluc2V0OjAsYmFja2dyb3VuZDp2dCxkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsZ2FwOjE0LHpJbmRleDo5MH0sY2hpbGRyZW46W3UzKCJkaXYiLHtzdHlsZTp7Zm9udFNpemU6NDB9LGNoaWxkcmVuOiJcdXsxRjUxMn0ifSksdTMoImRpdiIse3N0eWxlOntmb250U2l6ZToyMCxmb250V2VpZ2h0OjYwMCxjb2xvcjoidmFyKC0taW5rKSJ9LGNoaWxkcmVuOiJUaGlzIGJvYXJkIGlzIGxvY2tlZCJ9KSx1MygiZGl2Iix7c3R5bGU6e2Rpc3BsYXk6ImZsZXgiLGdhcDo4fSxjaGlsZHJlbjpbdTMoImlucHV0Iix7dHlwZToicGFzc3dvcmQiLGF1dG9Gb2N1czohMCx2YWx1ZTpndCxwbGFjZWhvbGRlcjoicGFzc2NvZGUiLG9uSW5wdXQ6ZWU9PlJ0KGVlLnRhcmdldC52YWx1ZSksb25LZXlEb3duOmVlPT57ZWUua2V5PT09IkVudGVyIiYmSXQoKX0sc3R5bGU6aW5wfSksdTMoImJ1dHRvbiIse3N0eWxlOnByaW1hcnlCdG4sb25DbGljazpJdCxjaGlsZHJlbjoiVW5sb2NrIn0pXX0pXX0pLFllJiZ1MyhTLHtjaGlsZHJlbjpbVGUmJnUzKCJ0ZXh0YXJlYSIse2F1dG9Gb2N1czohMCx2YWx1ZTpUZS52YWx1ZSxvbklucHV0OmVlPT5vdCh7Li4uVGUsdmFsdWU6ZWUudGFyZ2V0LnZhbHVlfSksb25CbHVyOkt0LG9uS2V5RG93bjplZT0+e2VlLmtleT09PSJFc2NhcGUiJiZvdChudWxsKX0sc3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDooVGUueC1rZS54KSprZS56b29tLHRvcDooVGUueS1rZS55KSprZS56b29tLG1pbldpZHRoOjE0MCxiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsY29sb3I6YmUsYm9yZGVyOiJub25lIixvdXRsaW5lOiJub25lIixyZXNpemU6Im5vbmUiLGZvbnQ6YCR7TWF0aC5tYXgoMTYsRmUqNykqa2Uuem9vbX1weCAke0ZPTlR9YCxsaW5lSGVpZ2h0OjEuMX19KSx1MygiZGl2Iix7c3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOlZlPzU4OjEyLGxlZnQ6IjUwJSIsdHJhbnNmb3JtOiJ0cmFuc2xhdGVYKC01MCUpIixkaXNwbGF5OiJmbGV4IixnYXA6MiwuLi5jYXJkLHBhZGRpbmc6NSxvdmVyZmxvd1g6VmU/ImF1dG8iOiJ2aXNpYmxlIixtYXhXaWR0aDoiOTR2dyJ9LGNoaWxkcmVuOlRPT0xTLm1hcChlZT0+dTMoImJ1dHRvbiIse3RpdGxlOmAke2VlLmxhYmVsfSBcdTIwMTQgJHtlZS5rZXl9YCxvbkNsaWNrOigpPT5DZShlZS5rKSxkaXNhYmxlZDohSmUmJmVlLmshPT0ic2VsZWN0IiYmZWUuayE9PSJoYW5kIixzdHlsZTp7cG9zaXRpb246InJlbGF0aXZlIix3aWR0aDozNixoZWlnaHQ6MzYsYm9yZGVyUmFkaXVzOjksYm9yZGVyOiJub25lIixjdXJzb3I6InBvaW50ZXIiLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsYmFja2dyb3VuZDp2ZT09PWVlLms/U0VMQkc6InRyYW5zcGFyZW50Iixjb2xvcjp2ZT09PWVlLms/U0VMRkc6IUplJiZlZS5rIT09InNlbGVjdCImJmVlLmshPT0iaGFuZCI/InZhcigtLXN1YikiOiJ2YXIoLS1pbmspIn0sY2hpbGRyZW46W3UzKEljb24se2s6ZWUua30pLCFWZSYmdTMoInNwYW4iLHtzdHlsZTp7cG9zaXRpb246ImFic29sdXRlIixyaWdodDozLGJvdHRvbToxLGZvbnRTaXplOjgsY29sb3I6InZhcigtLXN1YikifSxjaGlsZHJlbjplZS5rZXl9KV19LGVlLmspKX0pLGVuJiZ1MygiZGl2Iix7c3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDoxMix0b3A6NjQsLi4uY2FyZCxwYWRkaW5nOjEyLGRpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsZ2FwOjEwLHdpZHRoOjE5MH0sY2hpbGRyZW46W3UzKFJvdyx7bGFiZWw6IlN0cm9rZSIsY2hpbGRyZW46WyR0Lm1hcChlZT0+dTMoU3cse2M6ZWUsb246YmU9PT1lZSxvbkNsaWNrOigpPT57aXQoZWUpLFNlJiZ6ZShKU09OLnN0cmluZ2lmeSh7aWQ6U2UuaWQscGF0Y2g6e2NvbG9yOmVlfX0pKX19LGVlKSksdTMoQ29sb3JJbnB1dCx7dmFsdWU6YmVbMF09PT0iIyI/YmU6IiMwMDAwMDAiLG9uQ2hhbmdlOmVlPT57aXQoZWUpLFNlJiZ6ZShKU09OLnN0cmluZ2lmeSh7aWQ6U2UuaWQscGF0Y2g6e2NvbG9yOmVlfX0pKX19KV19KSx1MyhSb3cse2xhYmVsOiJCYWNrZ3JvdW5kIixjaGlsZHJlbjpbRklMTFMubWFwKGVlPT51MyhTdyx7YzplZSxvbjpXZT09PWVlLG9uQ2xpY2s6KCk9PntmdChlZSksU2UmJnplKEpTT04uc3RyaW5naWZ5KHtpZDpTZS5pZCxwYXRjaDp7ZmlsbDplZX19KSl9fSxlZSkpLHUzKENvbG9ySW5wdXQse3ZhbHVlOldlJiZXZSE9PSJ0cmFuc3BhcmVudCI/V2U6IiNmZmZmZmYiLG9uQ2hhbmdlOmVlPT57ZnQoZWUpLFNlJiZ6ZShKU09OLnN0cmluZ2lmeSh7aWQ6U2UuaWQscGF0Y2g6e2ZpbGw6ZWV9fSkpfX0pXX0pLHUzKFJvdyx7bGFiZWw6IlN0cm9rZSB3aWR0aCIsY2hpbGRyZW46V0lEVEhTLm1hcChlZT0+dTMoImJ1dHRvbiIse29uQ2xpY2s6KCk9PntQdChlZSksU2UmJnplKEpTT04uc3RyaW5naWZ5KHtpZDpTZS5pZCxwYXRjaDp7c3Ryb2tlV2lkdGg6U3RyaW5nKGVlKX19KSl9LHN0eWxlOnt3aWR0aDozNCxoZWlnaHQ6MzAsYm9yZGVyUmFkaXVzOjgsYm9yZGVyOiJub25lIixjdXJzb3I6InBvaW50ZXIiLGJhY2tncm91bmQ6RmU9PT1lZT9TRUxCRzoidmFyKC0tc29mdCkiLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciJ9LGNoaWxkcmVuOnUzKCJzcGFuIix7c3R5bGU6e3dpZHRoOjE4LGhlaWdodDplZSxiYWNrZ3JvdW5kOiJ2YXIoLS1pbmspIixib3JkZXJSYWRpdXM6NH19KX0sZWUpKX0pLFNlJiZ1MyhSb3cse2xhYmVsOiJMYXllciIsY2hpbGRyZW46W3UzKCJidXR0b24iLHtvbkNsaWNrOigpPT54dCghMCksc3R5bGU6cGlsbCghMSksdGl0bGU6IkJyaW5nIHRvIGZyb250IixjaGlsZHJlbjoiXHUyOTEyIEZyb250In0pLHUzKCJidXR0b24iLHtvbkNsaWNrOigpPT54dCghMSksc3R5bGU6cGlsbCghMSksdGl0bGU6IlNlbmQgdG8gYmFjayIsY2hpbGRyZW46Ilx1MjkxMyBCYWNrIn0pXX0pLFNlJiZ1MygiYnV0dG9uIix7b25DbGljazooKT0+e1ooSlNPTi5zdHJpbmdpZnkoe2lkOlNlLmlkfSkpLHFlKG51bGwpfSxzdHlsZTp7Li4uZ2hvc3RCdG4sY29sb3I6IiNlMDMxMzEiLGp1c3RpZnlDb250ZW50OiJmbGV4LXN0YXJ0Iixib3hTaGFkb3c6Im5vbmUiLGJvcmRlcjoiMXB4IHNvbGlkIHZhcigtLWxpbmUpIn0sY2hpbGRyZW46Ilx1ezFGNUQxfSBEZWxldGUifSldfSksdTMoImRpdiIse3N0eWxlOntwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDoxNCxsZWZ0OjE0LGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjh9LGNoaWxkcmVuOlt1MygiYnV0dG9uIix7c3R5bGU6ey4uLmNhcmQsd2lkdGg6MzgsaGVpZ2h0OjM4LGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsY3Vyc29yOiJwb2ludGVyIixjb2xvcjoidmFyKC0taW5rKSIsZm9udFNpemU6MTd9LHRpdGxlOiJNZW51IixvbkNsaWNrOigpPT5qZShlZT0+IWVlKSxjaGlsZHJlbjoiXHUyNjMwIn0pLHUzKCJkaXYiLHtzdHlsZTp7Li4uY2FyZCxwYWRkaW5nOiI3cHggMTJweCIsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6OH0sY2hpbGRyZW46W3UzKCJzcGFuIix7c3R5bGU6e2ZvbnRXZWlnaHQ6NzAwLGZvbnRTaXplOjE1LGNvbG9yOlBVUlBMRSxsZXR0ZXJTcGFjaW5nOiItMC4wMWVtIn0sY2hpbGRyZW46IndoaXRlYm9hcmQifSksIVZlJiZ1MyhTLHtjaGlsZHJlbjpbdTMoInNwYW4iLHtzdHlsZTp7d2lkdGg6MSxoZWlnaHQ6MTYsYmFja2dyb3VuZDoidmFyKC0tbGluZSkifX0pLHUzKCJzcGFuIix7c3R5bGU6e2ZvbnRTaXplOjExLGNvbG9yOiJ2YXIoLS1zdWIpIixmb250VmFyaWFudE51bWVyaWM6InRhYnVsYXItbnVtcyJ9LGNoaWxkcmVuOlsoVHQvMTAyNCkudG9GaXhlZCgxKSwiIEtCIl19KSx1MygiZGl2Iix7c3R5bGU6e3dpZHRoOjU2LGhlaWdodDo2LGJhY2tncm91bmQ6InZhcigtLXNvZnQpIixib3JkZXJSYWRpdXM6NCxvdmVyZmxvdzoiaGlkZGVuIn0sY2hpbGRyZW46dTMoImRpdiIse3N0eWxlOnt3aWR0aDpgJHtDdH0lYCxoZWlnaHQ6IjEwMCUiLGJhY2tncm91bmQ6Q3Q+ODA/IiNlMDMxMzEiOlBVUlBMRX19KX0pXX0pXX0pXX0pLHR0JiZ1MygiZGl2Iix7c3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjYwLGxlZnQ6MTQsLi4uY2FyZCxwYWRkaW5nOjE0LHdpZHRoOjIxMCxkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGdhcDoxMix6SW5kZXg6NzB9LGNoaWxkcmVuOlt1MyhSb3cse2xhYmVsOiJUaGVtZSIsY2hpbGRyZW46W3UzKCJidXR0b24iLHtvbkNsaWNrOigpPT5rdCghMSksc3R5bGU6cGlsbCghZ2UpLGNoaWxkcmVuOiJcdTI2MDAgTGlnaHQifSksdTMoImJ1dHRvbiIse29uQ2xpY2s6KCk9Pmt0KCEwKSxzdHlsZTpwaWxsKGdlKSxjaGlsZHJlbjoiXHUyNjNFIERhcmsifSldfSksdTMoUm93LHtsYWJlbDoiQ2FudmFzIGJhY2tncm91bmQiLGNoaWxkcmVuOkJ0Lm1hcChlZT0+dTMoU3cse2M6ZWV8fE1lLmNhbnZhcyxvbjpJZT09PWVlLG9uQ2xpY2s6KCk9PkRlKGVlKX0sZWV8fCJkZWYiKSl9KSx1MyhSb3cse2xhYmVsOiJHcmlkIixjaGlsZHJlbjp1MygiYnV0dG9uIix7b25DbGljazooKT0+R2UoZWU9PiFlZSksc3R5bGU6cGlsbChOZSksY2hpbGRyZW46TmU/Ik9uIjoiT2ZmIn0pfSldfSksdTMoImRpdiIse3N0eWxlOntwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDoxNCxyaWdodDoxNCxkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGdhcDo4fSxjaGlsZHJlbjpbbHQmJnUzKCJkaXYiLHtzdHlsZTp7Li4uY2FyZCxwYWRkaW5nOjQsZGlzcGxheToiZmxleCIsZ2FwOjJ9LGNoaWxkcmVuOlt1MygiYnV0dG9uIix7c3R5bGU6Z2hvc3RJY29uLHRpdGxlOiJVbmRvIChcdTIzMThaKSIsb25DbGljazooKT0+bmUoIiIpLGNoaWxkcmVuOiJcdTIxQjYifSksdTMoImJ1dHRvbiIse3N0eWxlOmdob3N0SWNvbix0aXRsZToiUmVkbyAoXHUyMUU3XHUyMzE4WikiLG9uQ2xpY2s6KCk9PmllKCIiKSxjaGlsZHJlbjoiXHUyMUI3In0pXX0pLHJlP3UzKCJidXR0b24iLHtzdHlsZTpwcmltYXJ5QnRuLG9uQ2xpY2s6WHQsdGl0bGU6IllvdSdyZSB0aGUgZmlyc3Qgb25lIGhlcmUiLGNoaWxkcmVuOlZlPyJDbGFpbSI6IkNsYWltIHRoaXMgYm9hcmQifSk6bGU/dTMoImRpdiIse3N0eWxlOnsuLi5jYXJkLHBhZGRpbmc6NCxkaXNwbGF5OiJmbGV4IixnYXA6NCxhbGlnbkl0ZW1zOiJjZW50ZXIifSxjaGlsZHJlbjpbdTMoImJ1dHRvbiIse3N0eWxlOnBpbGwocGUpLHRpdGxlOiJXaG8gY2FuIGRyYXciLG9uQ2xpY2s6KCk9PmFlKEpTT04uc3RyaW5naWZ5KHt2YWx1ZTohcGV9KSksY2hpbGRyZW46cGU/Ilx1MjcwRlx1RkUwRiBPbmx5IG1lIjoiXHUyNzBGXHVGRTBGIEFueW9uZSJ9KSx1MygiYnV0dG9uIix7c3R5bGU6cGlsbCh3ZSksdGl0bGU6IkxvY2sgdmlld2luZyB3aXRoIGEgcGFzc2NvZGUiLG9uQ2xpY2s6UXQsY2hpbGRyZW46d2U/Ilx1ezFGNTEyfSBWaWV3IGxvY2tlZCI6Ilx1ezFGMzEwfSBWaWV3IG9wZW4ifSldfSk6cGU/dTMoInNwYW4iLHtzdHlsZTp7Li4uY2FyZCxwYWRkaW5nOiI3cHggMTJweCIsZm9udFNpemU6MTIuNSxjb2xvcjoidmFyKC0tc3ViKSJ9LGNoaWxkcmVuOiJcdXsxRjQ0MX0gdmlldyBvbmx5In0pOm51bGwsIVZlJiYoVy5pc0d1ZXN0P3UzKFNpZ25JbldpdGhHb29nbGUse3N0eWxlOnsuLi5naG9zdEJ0bn19KTp1MygiYnV0dG9uIix7c3R5bGU6Z2hvc3RCdG4sb25DbGljazooKT0+c2lnbk91dCgpLGNoaWxkcmVuOiJTaWduIG91dCJ9KSldfSksdTMoImRpdiIse3N0eWxlOntwb3NpdGlvbjoiYWJzb2x1dGUiLGJvdHRvbToxNCxsZWZ0OjE0LC4uLmNhcmQscGFkZGluZzozLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjF9LGNoaWxkcmVuOlt1MygiYnV0dG9uIix7c3R5bGU6Z2hvc3RJY29uLG9uQ2xpY2s6KCk9PktlKGVlPT4oey4uLmVlLHpvb206TWF0aC5tYXgoLjE1LGVlLnpvb20qLjkpfSkpLGNoaWxkcmVuOiJcdTIyMTIifSksdTMoImJ1dHRvbiIse3N0eWxlOnsuLi5naG9zdEljb24sd2lkdGg6NTAsZm9udFNpemU6MTIsZm9udFdlaWdodDo2MDB9LG9uQ2xpY2s6KCk9PktlKGVlPT4oey4uLmVlLHpvb206MX0pKSxjaGlsZHJlbjpbTWF0aC5yb3VuZChrZS56b29tKjEwMCksIiUiXX0pLHUzKCJidXR0b24iLHtzdHlsZTpnaG9zdEljb24sb25DbGljazooKT0+S2UoZWU9Pih7Li4uZWUsem9vbTpNYXRoLm1pbig2LGVlLnpvb20qMS4xKX0pKSxjaGlsZHJlbjoiKyJ9KV19KSx1MygiZGl2Iix7c3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsYm90dG9tOjE4LHJpZ2h0OjE2LGZvbnRTaXplOjExLGNvbG9yOiJ2YXIoLS1zdWIpIn0sY2hpbGRyZW46WyJsaXZlIFx4Qjcgc2hhcmUgdGhlIFVSTCBceEI3ICIsVS5sZW5ndGgsIiBzaGFwZXMiXX0pXX0pLHl0JiZ1MygiZGl2Iix7c3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsYm90dG9tOjU2LGxlZnQ6IjUwJSIsdHJhbnNmb3JtOiJ0cmFuc2xhdGVYKC01MCUpIiwuLi5jYXJkLHBhZGRpbmc6IjlweCAxNnB4Iixmb250U2l6ZToxMyxjb2xvcjoidmFyKC0taW5rKSIsekluZGV4Ojk1fSxjaGlsZHJlbjp5dH0pXX0pfXZhciBjYXJkPXtiYWNrZ3JvdW5kOiJ2YXIoLS1wYW5lbCkiLGJvcmRlcjoiMXB4IHNvbGlkIHZhcigtLWxpbmUpIixib3JkZXJSYWRpdXM6MTIsYm94U2hhZG93OiJ2YXIoLS1zaGFkb3cpIn0saW5wPXtwYWRkaW5nOiI5cHggMTJweCIsYm9yZGVyUmFkaXVzOjksYm9yZGVyOiIxcHggc29saWQgdmFyKC0tbGluZSkiLGZvbnRTaXplOjE0LG91dGxpbmU6Im5vbmUiLGJhY2tncm91bmQ6InZhcigtLXBhbmVsKSIsY29sb3I6InZhcigtLWluaykifSxwcmltYXJ5QnRuPXtwYWRkaW5nOiI5cHggMTRweCIsYm9yZGVyUmFkaXVzOjEwLGJvcmRlcjoibm9uZSIsY3Vyc29yOiJwb2ludGVyIixiYWNrZ3JvdW5kOlBVUlBMRSxjb2xvcjoiI2ZmZiIsZm9udFNpemU6MTMuNSxmb250V2VpZ2h0OjYwMH0sZ2hvc3RCdG49e3BhZGRpbmc6IjhweCAxMnB4Iixib3JkZXJSYWRpdXM6OSxib3JkZXI6Im5vbmUiLGN1cnNvcjoicG9pbnRlciIsYmFja2dyb3VuZDoidmFyKC0tcGFuZWwpIixjb2xvcjoidmFyKC0taW5rKSIsZm9udFNpemU6MTMsZm9udFdlaWdodDo1MDAsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6Nixib3hTaGFkb3c6InZhcigtLXNoYWRvdykifSxnaG9zdEljb249e21pbldpZHRoOjMwLGhlaWdodDozMCxwYWRkaW5nOiIwIDdweCIsYm9yZGVyUmFkaXVzOjcsYm9yZGVyOiJub25lIixjdXJzb3I6InBvaW50ZXIiLGJhY2tncm91bmQ6InRyYW5zcGFyZW50Iixjb2xvcjoidmFyKC0taW5rKSIsZm9udFNpemU6MTV9O2Z1bmN0aW9uIHBpbGwoVSl7cmV0dXJue3BhZGRpbmc6IjZweCAxMHB4Iixib3JkZXJSYWRpdXM6OCxib3JkZXI6Im5vbmUiLGN1cnNvcjoicG9pbnRlciIsYmFja2dyb3VuZDpVP1NFTEJHOiJ2YXIoLS1zb2Z0KSIsY29sb3I6VT9TRUxGRzoidmFyKC0taW5rKSIsZm9udFNpemU6MTIsZm9udFdlaWdodDo2MDB9fWZ1bmN0aW9uIFJvdyh7bGFiZWw6VSxjaGlsZHJlbjpNfSl7cmV0dXJuIHUzKCJkaXYiLHtjaGlsZHJlbjpbdTMoImRpdiIse3N0eWxlOntmb250U2l6ZToxMSxjb2xvcjoidmFyKC0tc3ViKSIsbWFyZ2luQm90dG9tOjZ9LGNoaWxkcmVuOlV9KSx1MygiZGl2Iix7c3R5bGU6e2Rpc3BsYXk6ImZsZXgiLGdhcDo2LGZsZXhXcmFwOiJ3cmFwIixhbGlnbkl0ZW1zOiJjZW50ZXIifSxjaGlsZHJlbjpNfSldfSl9ZnVuY3Rpb24gU3coe2M6VSxvbjpNLG9uQ2xpY2s6V30pe3JldHVybiB1MygiYnV0dG9uIix7b25DbGljazpXLHRpdGxlOlUsc3R5bGU6e3dpZHRoOjI2LGhlaWdodDoyNixib3JkZXJSYWRpdXM6NyxjdXJzb3I6InBvaW50ZXIiLGJhY2tncm91bmQ6VT09PSJ0cmFuc3BhcmVudCI/InJlcGVhdGluZy1jb25pYy1ncmFkaWVudCgjY2ZjZmQ0IDAlIDI1JSwgI2ZmZiAwJSA1MCUpIDUwJSAvIDEwcHggMTBweCI6VSxib3JkZXI6TT9gMnB4IHNvbGlkICR7UFVSUExFfWA6IjFweCBzb2xpZCAjMDAwMDAwMjIifX0pfWZ1bmN0aW9uIENvbG9ySW5wdXQoe3ZhbHVlOlUsb25DaGFuZ2U6TX0pe3JldHVybiB1MygibGFiZWwiLHt0aXRsZToiQ3VzdG9tIGNvbG91ciIsc3R5bGU6e3Bvc2l0aW9uOiJyZWxhdGl2ZSIsd2lkdGg6MjYsaGVpZ2h0OjI2LGJvcmRlclJhZGl1czo3LG92ZXJmbG93OiJoaWRkZW4iLGN1cnNvcjoicG9pbnRlciIsYm9yZGVyOiIxcHggc29saWQgIzAwMDAwMDIyIixkaXNwbGF5OiJpbmxpbmUtZmxleCJ9LGNoaWxkcmVuOlt1Mygic3BhbiIse3N0eWxlOntwb3NpdGlvbjoiYWJzb2x1dGUiLGluc2V0OjAsYmFja2dyb3VuZDoiY29uaWMtZ3JhZGllbnQoZnJvbSAuMjV0dXJuLCAjZmY1MjUyLCAjZmZkMTY2LCAjMDZkNmEwLCAjNGNjOWYwLCAjN2I2MWZmLCAjZmY1MjUyKSJ9fSksdTMoInNwYW4iLHtzdHlsZTp7cG9zaXRpb246ImFic29sdXRlIixpbnNldDowLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsZm9udFNpemU6MTMsZm9udFdlaWdodDo3MDAsY29sb3I6IiNmZmYiLHRleHRTaGFkb3c6IjAgMXB4IDJweCAjMDAwNyJ9LGNoaWxkcmVuOiIrIn0pLHUzKCJpbnB1dCIse3R5cGU6ImNvbG9yIix2YWx1ZTpVLG9uSW5wdXQ6Vz0+TShXLnRhcmdldC52YWx1ZSksc3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsaW5zZXQ6MCxvcGFjaXR5OjAsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsY3Vyc29yOiJwb2ludGVyIixib3JkZXI6Im5vbmUiLHBhZGRpbmc6MH19KV19KX1mdW5jdGlvbiBta0RyYWZ0KFUsTSxXLEYsWSxaKXtjb25zdCBuZT17aWQ6ImRyYWZ0Iixjb2xvcjpGLHN0cm9rZVdpZHRoOlN0cmluZyhZKSx0ZXh0OiIiLGZpbGw6Wixyb3RhdGlvbjoiMCIsejoiMCIsY3JlYXRlZEJ5OiIiLGNyZWF0ZWRBdDoiIn07cmV0dXJuIFU9PT0ibGluZSJ8fFU9PT0iYXJyb3ciP3suLi5uZSx0eXBlOlUscG9pbnRzOkpTT04uc3RyaW5naWZ5KFtNLFddKSx4OiIwIix5OiIwIix3OiIwIixoOiIwIn06ey4uLm5lLHR5cGU6VSx4OlN0cmluZyhNYXRoLm1pbihNWzBdLFdbMF0pKSx5OlN0cmluZyhNYXRoLm1pbihNWzFdLFdbMV0pKSx3OlN0cmluZyhNYXRoLmFicyhXWzBdLU1bMF0pKSxoOlN0cmluZyhNYXRoLmFicyhXWzFdLU1bMV0pKSxwb2ludHM6IiJ9fWZ1bmN0aW9uIG1rUGF0aChVLE0sVyxGLFkpe3JldHVybntpZDoiZHJhZnQiLHR5cGU6VSxwb2ludHM6SlNPTi5zdHJpbmdpZnkoTSksY29sb3I6VyxzdHJva2VXaWR0aDpTdHJpbmcoRikseDoiMCIseToiMCIsdzoiMCIsaDoiMCIsdGV4dDoiIixmaWxsOlkscm90YXRpb246IjAiLHo6IjAiLGNyZWF0ZWRCeToiIixjcmVhdGVkQXQ6IiJ9fWZ1bmN0aW9uIHN0cmlwRHJhZnQoVSl7cmV0dXJue3R5cGU6VS50eXBlLHg6VS54LHk6VS55LHc6VS53LGg6VS5oLHBvaW50czpVLnBvaW50cyxjb2xvcjpVLmNvbG9yLHN0cm9rZVdpZHRoOlUuc3Ryb2tlV2lkdGgsdGV4dDpVLnRleHQsZmlsbDpVLmZpbGwscm90YXRpb246VS5yb3RhdGlvbix6OlUuen19ZnVuY3Rpb24gbW92ZVNoYXBlKFUsTSxXKXtpZihVLnR5cGU9PT0iZHJhdyJ8fFUudHlwZT09PSJsaW5lInx8VS50eXBlPT09ImFycm93Iil7Y29uc3QgRj1KU09OLnBhcnNlKFUucG9pbnRzfHwiW10iKS5tYXAoWT0+W1lbMF0rTSxZWzFdK1ddKTtyZXR1cm57Li4uVSxpZDoiZHJhZnQiLHBvaW50czpKU09OLnN0cmluZ2lmeShGKX19cmV0dXJuey4uLlUsaWQ6ImRyYWZ0Iix4OlN0cmluZyhOMihVLngpK00pLHk6U3RyaW5nKE4yKFUueSkrVyl9fVIoayhFcnJvckJvdW5kYXJ5LHt9LGsoQXBwLHt9KSksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFwcCIpKTsK","clientVersion":"0.0.30-staging.29292788364","inspectPolicy":"private"}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment