@codingame/monaco-editor-wrapper 1.14.4 → 1.14.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/JavaScript.tmLanguage.js +64 -10
- package/dist/JavaScriptReact.tmLanguage.js +64 -10
- package/dist/Scala.tmLanguage.js +8 -4
- package/dist/TypeScript.tmLanguage.js +64 -10
- package/dist/TypeScriptReact.tmLanguage.js +64 -10
- package/dist/angular.js +7 -1
- package/dist/c.tmLanguage.js +650 -432
- package/dist/cpp.tmLanguage.js +72 -84
- package/dist/cpptools.js +81 -5
- package/dist/css.tmLanguage.js +5 -5
- package/dist/css.worker.js +1 -1
- package/dist/dart3.js +40 -21
- package/dist/fsharp.tmLanguage.js +2 -2
- package/dist/html.worker.js +1 -1
- package/dist/index.js +4 -3
- package/dist/java.js +1 -1
- package/dist/java2.js +35 -11
- package/dist/javascript-javascript.code-snippets.js +9 -0
- package/dist/javascript.js +1 -1
- package/dist/javascriptreact.js +1 -1
- package/dist/json.js +1 -3
- package/dist/json.worker.js +1 -1
- package/dist/jsonc.js +1 -3
- package/dist/lua2.js +184 -63
- package/dist/main.js +10626 -10608
- package/dist/markdown.tmLanguage.js +56 -17
- package/dist/objective-c.tmLanguage.js +276 -131
- package/dist/omnisharp-csharp.js +11 -11
- package/dist/omnisharp.js +24 -49
- package/dist/php.tmLanguage.js +280 -128
- package/dist/scalameta.js +19 -2
- package/dist/scss.js +12 -2
- package/dist/services/MultiEditorStandaloneCodeEditorService.d.ts +2 -2
- package/dist/solidity2.js +1 -1
- package/dist/theme-defaults~dark_vs.js +1 -1
- package/dist/theme-defaults~hc_light.js +36 -36
- package/dist/ts.worker.js +1 -1
- package/dist/typescript-language-features.js +17 -2
- package/dist/typescript.js +1 -1
- package/dist/typescriptreact.js +1 -1
- package/dist/vscode-R-rmarkdown.js +3 -3
- package/dist/vscode-R.js +9 -9
- package/dist/vscode-python.js +16 -6
- package/dist/worker.js +1 -1
- package/dist/xml.js +1 -2
- package/dist/xsl.js +1 -2
- package/package.json +22 -25
- package/stats.html +1 -1
package/dist/html.worker.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { c as createBase64WorkerFactory } from './worker.js';
|
|
2
2
|
|
|
3
|
-
var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y2xhc3Mgc3tjb25zdHJ1Y3Rvcigpe3RoaXMubGlzdGVuZXJzPVtdLHRoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcj1mdW5jdGlvbihlKXtzZXRUaW1lb3V0KCgpPT57aWYoZS5zdGFjayl0aHJvdyBuZXcgRXJyb3IoZS5tZXNzYWdlKyJcblxuIitlLnN0YWNrKTt0aHJvdyBlfSwwKX19YWRkTGlzdGVuZXIoZSl7cmV0dXJuIHRoaXMubGlzdGVuZXJzLnB1c2goZSksKCk9Pnt0aGlzLl9yZW1vdmVMaXN0ZW5lcihlKX19ZW1pdCh0KXt0aGlzLmxpc3RlbmVycy5mb3JFYWNoKGU9PntlKHQpfSl9X3JlbW92ZUxpc3RlbmVyKGUpe3RoaXMubGlzdGVuZXJzLnNwbGljZSh0aGlzLmxpc3RlbmVycy5pbmRleE9mKGUpLDEpfXNldFVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoZSl7dGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyPWV9Z2V0VW5leHBlY3RlZEVycm9ySGFuZGxlcigpe3JldHVybiB0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXJ9b25VbmV4cGVjdGVkRXJyb3IoZSl7dGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyKGUpLHRoaXMuZW1pdChlKX1vblVuZXhwZWN0ZWRFeHRlcm5hbEVycm9yKGUpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcihlKX19Y29uc3QgbD1uZXcgcztmdW5jdGlvbiBoKGUpeyFmdW5jdGlvbihlKXtpZihlIGluc3RhbmNlb2YgcClyZXR1cm4hMDtyZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yJiZlLm5hbWU9PT1kJiZlLm1lc3NhZ2U9PT1kfShlKSYmbC5vblVuZXhwZWN0ZWRFcnJvcihlKX1mdW5jdGlvbiBjKGUpe3ZhciB0LG47cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvcj8oe25hbWU6dCxtZXNzYWdlOm59PWUseyRpc0Vycm9yOiEwLG5hbWU6dCxtZXNzYWdlOm4sc3RhY2s6ZS5zdGFja3RyYWNlfHxlLnN0YWNrfSk6ZX1jb25zdCBkPSJDYW5jZWxlZCI7Y2xhc3MgcCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoZCksdGhpcy5uYW1lPXRoaXMubWVzc2FnZX19dmFyIG07e3ZhciBmPW09bXx8e307Zi5pcz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZVtTeW1ib2wuaXRlcmF0b3JdfTtjb25zdCBoYT1PYmplY3QuZnJlZXplKFtdKTtmLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIGhhfSxmLnNpbmdsZT1mdW5jdGlvbiooZSl7eWllbGQgZX0sZi5mcm9tPWZ1bmN0aW9uKGUpe3JldHVybiBlfHxoYX0sZi5pc0VtcHR5PWZ1bmN0aW9uKGUpe3JldHVybiFlfHwhMD09PWVbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQoKS5kb25lfSxmLmZpcnN0PWZ1bmN0aW9uKGUpe3JldHVybiBlW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KCkudmFsdWV9LGYuc29tZT1mdW5jdGlvbihlLHQpe2Zvcihjb25zdCBuIG9mIGUpaWYodChuKSlyZXR1cm4hMDtyZXR1cm4hMX0sZi5maW5kPWZ1bmN0aW9uKGUsdCl7Zm9yKGNvbnN0IG4gb2YgZSlpZih0KG4pKXJldHVybiBufSxmLmZpbHRlcj1mdW5jdGlvbiooZSx0KXtmb3IoY29uc3QgbiBvZiBlKXQobikmJih5aWVsZCBuKX0sZi5tYXA9ZnVuY3Rpb24qKGUsdCl7bGV0IG49MDtmb3IoY29uc3QgciBvZiBlKXlpZWxkIHQocixuKyspfSxmLmNvbmNhdD1mdW5jdGlvbiooLi4uZSl7Zm9yKGNvbnN0IHQgb2YgZSlmb3IoY29uc3QgbiBvZiB0KXlpZWxkIG59LGYuY29uY2F0TmVzdGVkPWZ1bmN0aW9uKihlKXtmb3IoY29uc3QgdCBvZiBlKWZvcihjb25zdCBuIG9mIHQpeWllbGQgbn0sZi5yZWR1Y2U9ZnVuY3Rpb24oZSx0LG4pe2xldCByPW47Zm9yKGNvbnN0IGkgb2YgZSlyPXQocixpKTtyZXR1cm4gcn0sZi5zbGljZT1mdW5jdGlvbiooZSx0LG49ZS5sZW5ndGgpe2Zvcih0PDAmJih0Kz1lLmxlbmd0aCksbjwwP24rPWUubGVuZ3RoOm4+ZS5sZW5ndGgmJihuPWUubGVuZ3RoKTt0PG47dCsrKXlpZWxkIGVbdF19LGYuY29uc3VtZT1mdW5jdGlvbihlLHQ9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKXtjb25zdCBuPVtdO2lmKDA9PT10KXJldHVybltuLGVdO2NvbnN0IHI9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7Zm9yKGxldCBlPTA7ZTx0O2UrKyl7dmFyIGk9ci5uZXh0KCk7aWYoaS5kb25lKXJldHVybltuLGYuZW1wdHkoKV07bi5wdXNoKGkudmFsdWUpfXJldHVybltuLHtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiByfX1dfSxmLmVxdWFscz1mdW5jdGlvbihlLHQsbj0oZSx0KT0+ZT09PXQpe2NvbnN0IHI9ZVtTeW1ib2wuaXRlcmF0b3JdKCksaT10W1N5bWJvbC5pdGVyYXRvcl0oKTtmb3IoOzspe3ZhciBhPXIubmV4dCgpLG89aS5uZXh0KCk7aWYoYS5kb25lIT09by5kb25lKXJldHVybiExO2lmKGEuZG9uZSlyZXR1cm4hMDtpZighbihhLnZhbHVlLG8udmFsdWUpKXJldHVybiExfX19Y2xhc3MgZyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGBFbmNvdW50ZXJlZCBlcnJvcnMgd2hpbGUgZGlzcG9zaW5nIG9mIHN0b3JlLiBFcnJvcnM6IFske2Uuam9pbigiLCAiKX1dYCksdGhpcy5lcnJvcnM9ZX19ZnVuY3Rpb24gYihlKXtpZihtLmlzKGUpKXtsZXQgdD1bXTtmb3IoY29uc3QgbiBvZiBlKWlmKG4pdHJ5e24uZGlzcG9zZSgpfWNhdGNoKGUpe3QucHVzaChlKX1pZigxPT09dC5sZW5ndGgpdGhyb3cgdFswXTtpZigxPHQubGVuZ3RoKXRocm93IG5ldyBnKHQpO3JldHVybiBBcnJheS5pc0FycmF5KGUpP1tdOmV9aWYoZSlyZXR1cm4gZS5kaXNwb3NlKCksZX1mdW5jdGlvbiBfKGUpe3JldHVybntkaXNwb3NlOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9dGhpcztsZXQgbj0hMSxyO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuP3I6KG49ITAscj1lLmFwcGx5KHQsYXJndW1lbnRzKSl9fSgoKT0+e2UoKX0pfX1jbGFzcyB3e2NvbnN0cnVjdG9yKCl7dGhpcy5fdG9EaXNwb3NlPW5ldyBTZXQsdGhpcy5faXNEaXNwb3NlZD0hMX1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZHx8KHRoaXMuX2lzRGlzcG9zZWQ9ITAsdGhpcy5jbGVhcigpKX1nZXQgaXNEaXNwb3NlZCgpe3JldHVybiB0aGlzLl9pc0Rpc3Bvc2VkfWNsZWFyKCl7dHJ5e2IodGhpcy5fdG9EaXNwb3NlLnZhbHVlcygpKX1maW5hbGx5e3RoaXMuX3RvRGlzcG9zZS5jbGVhcigpfX1hZGQoZSl7aWYoIWUpcmV0dXJuIGU7aWYoZT09PXRoaXMpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVnaXN0ZXIgYSBkaXNwb3NhYmxlIG9uIGl0c2VsZiEiKTtyZXR1cm4gdGhpcy5faXNEaXNwb3NlZD93LkRJU0FCTEVfRElTUE9TRURfV0FSTklOR3x8Y29uc29sZS53YXJuKG5ldyBFcnJvcigiVHJ5aW5nIHRvIGFkZCBhIGRpc3Bvc2FibGUgdG8gYSBEaXNwb3NhYmxlU3RvcmUgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRpc3Bvc2VkIG9mLiBUaGUgYWRkZWQgb2JqZWN0IHdpbGwgYmUgbGVha2VkISIpLnN0YWNrKTp0aGlzLl90b0Rpc3Bvc2UuYWRkKGUpLGV9fXcuRElTQUJMRV9ESVNQT1NFRF9XQVJOSU5HPSExO2NsYXNzIHZ7Y29uc3RydWN0b3IoKXt0aGlzLl9zdG9yZT1uZXcgdyx0aGlzLl9zdG9yZX1kaXNwb3NlKCl7dGhpcy5fc3RvcmUuZGlzcG9zZSgpfV9yZWdpc3RlcihlKXtpZihlPT09dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBhIGRpc3Bvc2FibGUgb24gaXRzZWxmISIpO3JldHVybiB0aGlzLl9zdG9yZS5hZGQoZSl9fXYuTm9uZT1PYmplY3QuZnJlZXplKHtkaXNwb3NlKCl7fX0pO2NsYXNzIHl7Y29uc3RydWN0b3IoKXt0aGlzLmRpc3Bvc2U9KCk9Pnt9LHRoaXMudW5zZXQ9KCk9Pnt9LHRoaXMuaXNzZXQ9KCk9PiExfXNldChlKXtsZXQgdD1lO3JldHVybiB0aGlzLnVuc2V0PSgpPT50PXZvaWQgMCx0aGlzLmlzc2V0PSgpPT52b2lkIDAhPT10LHRoaXMuZGlzcG9zZT0oKT0+e3QmJih0KCksdD12b2lkIDApfSx0aGlzfX1jbGFzcyBUe2NvbnN0cnVjdG9yKGUpe3RoaXMuZWxlbWVudD1lLHRoaXMubmV4dD1ULlVuZGVmaW5lZCx0aGlzLnByZXY9VC5VbmRlZmluZWR9fVQuVW5kZWZpbmVkPW5ldyBUKHZvaWQgMCk7Y2xhc3Mga3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2ZpcnN0PVQuVW5kZWZpbmVkLHRoaXMuX2xhc3Q9VC5VbmRlZmluZWQsdGhpcy5fc2l6ZT0wfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3NpemV9aXNFbXB0eSgpe3JldHVybiB0aGlzLl9maXJzdD09PVQuVW5kZWZpbmVkfWNsZWFyKCl7bGV0IGU9dGhpcy5fZmlyc3Q7Zm9yKDtlIT09VC5VbmRlZmluZWQ7KXt2YXIgdD1lLm5leHQ7ZS5wcmV2PVQuVW5kZWZpbmVkLGUubmV4dD1ULlVuZGVmaW5lZCxlPXR9dGhpcy5fZmlyc3Q9VC5VbmRlZmluZWQsdGhpcy5fbGFzdD1ULlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9dW5zaGlmdChlKXtyZXR1cm4gdGhpcy5faW5zZXJ0KGUsITEpfXB1c2goZSl7cmV0dXJuIHRoaXMuX2luc2VydChlLCEwKX1faW5zZXJ0KGUsdCl7Y29uc3Qgbj1uZXcgVChlKTtpZih0aGlzLl9maXJzdD09PVQuVW5kZWZpbmVkKXRoaXMuX2ZpcnN0PW4sdGhpcy5fbGFzdD1uO2Vsc2UgaWYodCl7Y29uc3QgaT10aGlzLl9sYXN0OygodGhpcy5fbGFzdD1uKS5wcmV2PWkpLm5leHQ9bn1lbHNle2NvbnN0IGE9dGhpcy5fZmlyc3Q7KCh0aGlzLl9maXJzdD1uKS5uZXh0PWEpLnByZXY9bn10aGlzLl9zaXplKz0xO2xldCByPSExO3JldHVybigpPT57cnx8KHI9ITAsdGhpcy5fcmVtb3ZlKG4pKX19c2hpZnQoKXt2YXIgZTtpZih0aGlzLl9maXJzdCE9PVQuVW5kZWZpbmVkKXJldHVybiBlPXRoaXMuX2ZpcnN0LmVsZW1lbnQsdGhpcy5fcmVtb3ZlKHRoaXMuX2ZpcnN0KSxlfXBvcCgpe3ZhciBlO2lmKHRoaXMuX2xhc3QhPT1ULlVuZGVmaW5lZClyZXR1cm4gZT10aGlzLl9sYXN0LmVsZW1lbnQsdGhpcy5fcmVtb3ZlKHRoaXMuX2xhc3QpLGV9X3JlbW92ZShlKXtpZihlLnByZXYhPT1ULlVuZGVmaW5lZCYmZS5uZXh0IT09VC5VbmRlZmluZWQpe2NvbnN0IHQ9ZS5wcmV2O3QubmV4dD1lLm5leHQsZS5uZXh0LnByZXY9dH1lbHNlIGUucHJldj09PVQuVW5kZWZpbmVkJiZlLm5leHQ9PT1ULlVuZGVmaW5lZD8odGhpcy5fZmlyc3Q9VC5VbmRlZmluZWQsdGhpcy5fbGFzdD1ULlVuZGVmaW5lZCk6ZS5uZXh0PT09VC5VbmRlZmluZWQ/KHRoaXMuX2xhc3Q9dGhpcy5fbGFzdC5wcmV2LHRoaXMuX2xhc3QubmV4dD1ULlVuZGVmaW5lZCk6ZS5wcmV2PT09VC5VbmRlZmluZWQmJih0aGlzLl9maXJzdD10aGlzLl9maXJzdC5uZXh0LHRoaXMuX2ZpcnN0LnByZXY9VC5VbmRlZmluZWQpOy0tdGhpcy5fc2l6ZX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1ULlVuZGVmaW5lZDspeWllbGQgZS5lbGVtZW50LGU9ZS5uZXh0fX12YXIgUz0iZW4iO2xldCBDPSExLHg9ITEsTD0hMSxFPSExLEE9dm9pZCAwLEk9UztsZXQgTj12b2lkIDA7Y29uc3QgVT0ib2JqZWN0Ij09dHlwZW9mIHNlbGY/c2VsZjoib2JqZWN0Ij09dHlwZW9mIGdsb2JhbD9nbG9iYWw6e307bGV0IHo9dm9pZCAwO3ZvaWQgMCE9PVUudnNjb2RlJiZ2b2lkIDAhPT1VLnZzY29kZS5wcm9jZXNzP3o9VS52c2NvZGUucHJvY2VzczoidW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJih6PXByb2Nlc3MpO3ZhciBlPSJzdHJpbmciPT10eXBlb2YobnVsbD09PShlPW51bGw9PT16fHx2b2lkIDA9PT16P3ZvaWQgMDp6LnZlcnNpb25zKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5lbGVjdHJvbikmJiJyZW5kZXJlciI9PT0obnVsbD09PXp8fHZvaWQgMD09PXo/dm9pZCAwOnoudHlwZSk7aWYoIm9iamVjdCIhPXR5cGVvZiBuYXZpZ2F0b3J8fGUpaWYoIm9iamVjdCI9PXR5cGVvZiB6KXtDPSJ3aW4zMiI9PT16LnBsYXRmb3JtLHg9ImRhcndpbiI9PT16LnBsYXRmb3JtLChMPSJsaW51eCI9PT16LnBsYXRmb3JtKSYmei5lbnYuU05BUCYmei5lbnYuU05BUF9SRVZJU0lPTix6LmVudi5DSXx8ei5lbnYuQlVJTERfQVJUSUZBQ1RTVEFHSU5HRElSRUNUT1JZLEE9UyxJPVM7ZT16LmVudi5WU0NPREVfTkxTX0NPTkZJRztpZihlKXRyeXt2YXIgSD1KU09OLnBhcnNlKGUpLHQ9SC5hdmFpbGFibGVMYW5ndWFnZXNbIioiXTtBPUgubG9jYWxlLEk9dHx8UyxILl90cmFuc2xhdGlvbnNDb25maWdGaWxlfWNhdGNoKGUpe319ZWxzZSBjb25zb2xlLmVycm9yKCJVbmFibGUgdG8gcmVzb2x2ZSBwbGF0Zm9ybS4iKTtlbHNlIE49bmF2aWdhdG9yLnVzZXJBZ2VudCxDPTA8PU4uaW5kZXhPZigiV2luZG93cyIpLHg9MDw9Ti5pbmRleE9mKCJNYWNpbnRvc2giKSwoMDw9Ti5pbmRleE9mKCJNYWNpbnRvc2giKXx8MDw9Ti5pbmRleE9mKCJpUGFkIil8fDA8PU4uaW5kZXhPZigiaVBob25lIikpJiZuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyxMPTA8PU4uaW5kZXhPZigiTGludXgiKSxFPSEwLEE9bmF2aWdhdG9yLmxhbmd1YWdlLEk9QTtjb25zdCBEPUMsVz14LFA9KEUmJlUuaW1wb3J0U2NyaXB0cyxOKTsoKCk9PntpZigiZnVuY3Rpb24iIT10eXBlb2YgVS5wb3N0TWVzc2FnZXx8VS5pbXBvcnRTY3JpcHRzKXJldHVybjt7bGV0IGk9W10sZT0oVS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixuPT57aWYobi5kYXRhJiZuLmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspZm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCByPWlbZV07aWYoci5pZD09PW4uZGF0YS52c2NvZGVTY2hlZHVsZUFzeW5jV29yaylyZXR1cm4gaS5zcGxpY2UoZSwxKSx2b2lkIHIuY2FsbGJhY2soKX19KSwwKX19KSgpO3ZhciBPLGU9ISEoUCYmMDw9UC5pbmRleE9mKCJDaHJvbWUiKSk7UCYmUC5pbmRleE9mKCJGaXJlZm94IiksIWUmJlAmJlAuaW5kZXhPZigiU2FmYXJpIiksUCYmUC5pbmRleE9mKCJFZGcvIiksUCYmUC5pbmRleE9mKCJBbmRyb2lkIik7Y29uc3QgcT1VLnBlcmZvcm1hbmNlJiYiZnVuY3Rpb24iPT10eXBlb2YgVS5wZXJmb3JtYW5jZS5ub3c7Y2xhc3MgRntjb25zdHJ1Y3RvcihlKXt0aGlzLl9oaWdoUmVzb2x1dGlvbj1xJiZlLHRoaXMuX3N0YXJ0VGltZT10aGlzLl9ub3coKSx0aGlzLl9zdG9wVGltZT0tMX1zdGF0aWMgY3JlYXRlKGU9ITApe3JldHVybiBuZXcgRihlKX1zdG9wKCl7dGhpcy5fc3RvcFRpbWU9dGhpcy5fbm93KCl9ZWxhcHNlZCgpe3JldHVybi0xIT09dGhpcy5fc3RvcFRpbWU/dGhpcy5fc3RvcFRpbWUtdGhpcy5fc3RhcnRUaW1lOnRoaXMuX25vdygpLXRoaXMuX3N0YXJ0VGltZX1fbm93KCl7cmV0dXJuKHRoaXMuX2hpZ2hSZXNvbHV0aW9uP1UucGVyZm9ybWFuY2U6RGF0ZSkubm93KCl9fXt2YXIgVj1hPWF8fHt9O2Z1bmN0aW9uIEIoYSl7cmV0dXJuKHQsbj1udWxsLGUpPT57bGV0IHI9ITEsaTtyZXR1cm4gaT1hKGU9PntpZighcilyZXR1cm4gaT9pLmRpc3Bvc2UoKTpyPSEwLHQuY2FsbChuLGUpfSxudWxsLGUpLHImJmkuZGlzcG9zZSgpLGl9fWZ1bmN0aW9uIEsocixpLGUpe3JldHVybiBKKCh0LG49bnVsbCxlKT0+cihlPT50LmNhbGwobixpKGUpKSxudWxsLGUpLGUpfWZ1bmN0aW9uIGoocixpLGUpe3JldHVybiBKKCh0LG49bnVsbCxlKT0+cihlPT57aShlKSx0LmNhbGwobixlKX0sbnVsbCxlKSxlKX1mdW5jdGlvbiBHKHIsaSxlKXtyZXR1cm4gSigodCxuPW51bGwsZSk9PnIoZT0+aShlKSYmdC5jYWxsKG4sZSksbnVsbCxlKSxlKX1mdW5jdGlvbiAkKGUsdCxuLHIpe2xldCBpPW47cmV0dXJuIEsoZSxlPT5pPXQoaSxlKSxyKX1mdW5jdGlvbiBKKGUsdCl7bGV0IG47dmFyIHI9e29uRmlyc3RMaXN0ZW5lckFkZCgpe249ZShpLmZpcmUsaSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlKCl7bi5kaXNwb3NlKCl9fTtjb25zdCBpPW5ldyB0ZShyKTtyZXR1cm4gdCYmdC5hZGQoaSksaS5ldmVudH1mdW5jdGlvbiBYKGUsdCxjPTEwMCxuPSExLHIsaSl7bGV0IGEsbz12b2lkIDAscz12b2lkIDAsbD0wO3I9e2xlYWtXYXJuaW5nVGhyZXNob2xkOnIsb25GaXJzdExpc3RlbmVyQWRkKCl7YT1lKGU9PntsKyssbz10KG8sZSksbiYmIXMmJihoLmZpcmUobyksbz12b2lkIDApLGNsZWFyVGltZW91dChzKSxzPXNldFRpbWVvdXQoKCk9Pnt2YXIgZT1vO289dm9pZCAwLHM9dm9pZCAwLCghbnx8MTxsKSYmaC5maXJlKGUpLGw9MH0sYyl9KX0sb25MYXN0TGlzdGVuZXJSZW1vdmUoKXthLmRpc3Bvc2UoKX19O2NvbnN0IGg9bmV3IHRlKHIpO3JldHVybiBpJiZpLmFkZChoKSxoLmV2ZW50fWZ1bmN0aW9uIFkoZSxuPShlLHQpPT5lPT09dCx0KXtsZXQgcj0hMCxpO3JldHVybiBHKGUsZT0+e3ZhciB0PXJ8fCFuKGUsaSk7cmV0dXJuIHI9ITEsaT1lLHR9LHQpfVYuTm9uZT0oKT0+di5Ob25lLFYub25jZT1CLFYubWFwPUssVi5mb3JFYWNoPWosVi5maWx0ZXI9RyxWLnNpZ25hbD1mdW5jdGlvbihlKXtyZXR1cm4gZX0sVi5hbnk9ZnVuY3Rpb24oLi4uaSl7cmV0dXJuKHQsbj1udWxsLHIpPT57dmFyWy4uLmVdPVsuLi5pLm1hcChlPT5lKGU9PnQuY2FsbChuLGUpLG51bGwscikpXTtyZXR1cm4gXygoKT0+YihlKSl9fSxWLnJlZHVjZT0kLFYuZGVib3VuY2U9WCxWLmxhdGNoPVksVi5zcGxpdD1mdW5jdGlvbihlLHQsbil7cmV0dXJuW1YuZmlsdGVyKGUsdCxuKSxWLmZpbHRlcihlLGU9PiF0KGUpLG4pXX0sVi5idWZmZXI9ZnVuY3Rpb24oZSx0PSExLG49W10pe2xldCByPW4uc2xpY2UoKSxpPWUoZT0+e3I/ci5wdXNoKGUpOm8uZmlyZShlKX0pO2NvbnN0IGE9KCk9PntyJiZyLmZvckVhY2goZT0+by5maXJlKGUpKSxyPW51bGx9LG89bmV3IHRlKHtvbkZpcnN0TGlzdGVuZXJBZGQoKXtpPWl8fGUoZT0+by5maXJlKGUpKX0sb25GaXJzdExpc3RlbmVyRGlkQWRkKCl7ciYmKHQ/c2V0VGltZW91dChhKTphKCkpfSxvbkxhc3RMaXN0ZW5lclJlbW92ZSgpe2kmJmkuZGlzcG9zZSgpLGk9bnVsbH19KTtyZXR1cm4gby5ldmVudH07Y2xhc3MgY2F7Y29uc3RydWN0b3IoZSl7dGhpcy5ldmVudD1lfW1hcChlKXtyZXR1cm4gbmV3IGNhKEsodGhpcy5ldmVudCxlKSl9Zm9yRWFjaChlKXtyZXR1cm4gbmV3IGNhKGoodGhpcy5ldmVudCxlKSl9ZmlsdGVyKGUpe3JldHVybiBuZXcgY2EoRyh0aGlzLmV2ZW50LGUpKX1yZWR1Y2UoZSx0KXtyZXR1cm4gbmV3IGNhKCQodGhpcy5ldmVudCxlLHQpKX1sYXRjaCgpe3JldHVybiBuZXcgY2EoWSh0aGlzLmV2ZW50KSl9ZGVib3VuY2UoZSx0PTEwMCxuPSExLHIpe3JldHVybiBuZXcgY2EoWCh0aGlzLmV2ZW50LGUsdCxuLHIpKX1vbihlLHQsbil7cmV0dXJuIHRoaXMuZXZlbnQoZSx0LG4pfW9uY2UoZSx0LG4pe3JldHVybiBCKHRoaXMuZXZlbnQpKGUsdCxuKX19Vi5jaGFpbj1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IGNhKGUpfSxWLmZyb21Ob2RlRXZlbnRFbWl0dGVyPWZ1bmN0aW9uKGUsdCxuPWU9PmUpe2NvbnN0IHI9KC4uLmUpPT5pLmZpcmUobiguLi5lKSksaT1uZXcgdGUoe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+ZS5vbih0LHIpLG9uTGFzdExpc3RlbmVyUmVtb3ZlOigpPT5lLnJlbW92ZUxpc3RlbmVyKHQscil9KTtyZXR1cm4gaS5ldmVudH0sVi5mcm9tRE9NRXZlbnRFbWl0dGVyPWZ1bmN0aW9uKGUsdCxuPWU9PmUpe2NvbnN0IHI9KC4uLmUpPT5pLmZpcmUobiguLi5lKSksaT1uZXcgdGUoe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+ZS5hZGRFdmVudExpc3RlbmVyKHQsciksb25MYXN0TGlzdGVuZXJSZW1vdmU6KCk9PmUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHIpfSk7cmV0dXJuIGkuZXZlbnR9LFYudG9Qcm9taXNlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZShlPT5CKHQpKGUpKX0sVi5ydW5BbmRTdWJzY3JpYmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCh2b2lkIDApLGUoZT0+dChlKSl9LFYucnVuQW5kU3Vic2NyaWJlV2l0aFN0b3JlPWZ1bmN0aW9uKGUsdCl7bGV0IG49bnVsbDtmdW5jdGlvbiByKGUpe251bGwhPT1uJiZ2b2lkIDAhPT1uJiZuLmRpc3Bvc2UoKSxuPW5ldyB3LHQoZSxuKX1yKHZvaWQgMCk7Y29uc3QgaT1lKGU9PnIoZSkpO3JldHVybiBfKCgpPT57aS5kaXNwb3NlKCksbnVsbCE9PW4mJnZvaWQgMCE9PW4mJm4uZGlzcG9zZSgpfSl9fWNsYXNzIFF7Y29uc3RydWN0b3IoZSl7dGhpcy5fbGlzdGVuZXJDb3VudD0wLHRoaXMuX2ludm9jYXRpb25Db3VudD0wLHRoaXMuX2VsYXBzZWRPdmVyYWxsPTAsdGhpcy5fbmFtZT1lKyJfIitRLl9pZFBvb2wrK31zdGFydChlKXt0aGlzLl9zdG9wV2F0Y2g9bmV3IEYoITApLHRoaXMuX2xpc3RlbmVyQ291bnQ9ZX1zdG9wKCl7aWYodGhpcy5fc3RvcFdhdGNoKXtjb25zdCBlPXRoaXMuX3N0b3BXYXRjaC5lbGFwc2VkKCk7dGhpcy5fZWxhcHNlZE92ZXJhbGwrPWUsdGhpcy5faW52b2NhdGlvbkNvdW50Kz0xLGNvbnNvbGUuaW5mbyhgZGlkIEZJUkUgJHt0aGlzLl9uYW1lfTogZWxhcHNlZF9tczogJHtlLnRvRml4ZWQoNSl9LCBsaXN0ZW5lcjogJHt0aGlzLl9saXN0ZW5lckNvdW50fSAoZWxhcHNlZF9vdmVyYWxsOiAke3RoaXMuX2VsYXBzZWRPdmVyYWxsLnRvRml4ZWQoMil9LCBpbnZvY2F0aW9uczogJHt0aGlzLl9pbnZvY2F0aW9uQ291bnR9KWApLHRoaXMuX3N0b3BXYXRjaD12b2lkIDB9fX1RLl9pZFBvb2w9MDtjbGFzcyBae2NvbnN0cnVjdG9yKGUpe3RoaXMudmFsdWU9ZX1zdGF0aWMgY3JlYXRlKCl7dmFyIGU7cmV0dXJuIG5ldyBaKG51bGwhPT0oZT0obmV3IEVycm9yKS5zdGFjaykmJnZvaWQgMCE9PWU/ZToiIil9cHJpbnQoKXtjb25zb2xlLndhcm4odGhpcy52YWx1ZS5zcGxpdCgiXG4iKS5zbGljZSgyKS5qb2luKCJcbiIpKX19Y2xhc3MgZWV7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuY2FsbGJhY2s9ZSx0aGlzLmNhbGxiYWNrVGhpcz10LHRoaXMuc3RhY2s9bix0aGlzLnN1YnNjcmlwdGlvbj1uZXcgeX1pbnZva2UoZSl7dGhpcy5jYWxsYmFjay5jYWxsKHRoaXMuY2FsbGJhY2tUaGlzLGUpfX1jbGFzcyB0ZXtjb25zdHJ1Y3RvcihlKXt0aGlzLl9kaXNwb3NlZD0hMSx0aGlzLl9vcHRpb25zPWUsdGhpcy5fbGVha2FnZU1vbj12b2lkIDAsdGhpcy5fcGVyZk1vbj1udWxsIT09KGU9dGhpcy5fb3B0aW9ucykmJnZvaWQgMCE9PWUmJmUuX3Byb2ZOYW1lP25ldyBRKHRoaXMuX29wdGlvbnMuX3Byb2ZOYW1lKTp2b2lkIDB9ZGlzcG9zZSgpe3ZhciBlLHQ7dGhpcy5fZGlzcG9zZWR8fCh0aGlzLl9kaXNwb3NlZD0hMCx0aGlzLl9saXN0ZW5lcnMmJnRoaXMuX2xpc3RlbmVycy5jbGVhcigpLG51bGwhPT0oZT10aGlzLl9kZWxpdmVyeVF1ZXVlKSYmdm9pZCAwIT09ZSYmZS5jbGVhcigpLG51bGwhPT0odD1udWxsPT09KGU9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PWU/dm9pZCAwOmUub25MYXN0TGlzdGVuZXJSZW1vdmUpJiZ2b2lkIDAhPT10JiZ0LmNhbGwoZSksbnVsbCE9PSh0PXRoaXMuX2xlYWthZ2VNb24pJiZ2b2lkIDAhPT10JiZ0LmRpc3Bvc2UoKSl9Z2V0IGV2ZW50KCl7cmV0dXJuIHRoaXMuX2V2ZW50fHwodGhpcy5fZXZlbnQ9KGUsdCxuKT0+e3RoaXMuX2xpc3RlbmVyc3x8KHRoaXMuX2xpc3RlbmVycz1uZXcgayk7dmFyIHIsaSxhPXRoaXMuX2xpc3RlbmVycy5pc0VtcHR5KCk7YSYmbnVsbCE9PShpPXRoaXMuX29wdGlvbnMpJiZ2b2lkIDAhPT1pJiZpLm9uRmlyc3RMaXN0ZW5lckFkZCYmdGhpcy5fb3B0aW9ucy5vbkZpcnN0TGlzdGVuZXJBZGQodGhpcyk7bGV0IG8sczt0aGlzLl9sZWFrYWdlTW9uJiYzMDw9dGhpcy5fbGlzdGVuZXJzLnNpemUmJihzPVouY3JlYXRlKCksbz10aGlzLl9sZWFrYWdlTW9uLmNoZWNrKHMsdGhpcy5fbGlzdGVuZXJzLnNpemUrMSkpO2NvbnN0IGw9bmV3IGVlKGUsdCxzKSxoPXRoaXMuX2xpc3RlbmVycy5wdXNoKGwpO2EmJm51bGwhPT0ocj10aGlzLl9vcHRpb25zKSYmdm9pZCAwIT09ciYmci5vbkZpcnN0TGlzdGVuZXJEaWRBZGQmJnRoaXMuX29wdGlvbnMub25GaXJzdExpc3RlbmVyRGlkQWRkKHRoaXMpLG51bGwhPT0oaT10aGlzLl9vcHRpb25zKSYmdm9pZCAwIT09aSYmaS5vbkxpc3RlbmVyRGlkQWRkJiZ0aGlzLl9vcHRpb25zLm9uTGlzdGVuZXJEaWRBZGQodGhpcyxlLHQpO2E9bC5zdWJzY3JpcHRpb24uc2V0KCgpPT57byYmbygpLHRoaXMuX2Rpc3Bvc2VkfHwoaCgpLHRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMub25MYXN0TGlzdGVuZXJSZW1vdmUmJih0aGlzLl9saXN0ZW5lcnMmJiF0aGlzLl9saXN0ZW5lcnMuaXNFbXB0eSgpfHx0aGlzLl9vcHRpb25zLm9uTGFzdExpc3RlbmVyUmVtb3ZlKHRoaXMpKSl9KTtyZXR1cm4gbiBpbnN0YW5jZW9mIHc/bi5hZGQoYSk6QXJyYXkuaXNBcnJheShuKSYmbi5wdXNoKGEpLGF9KSx0aGlzLl9ldmVudH1maXJlKGUpe3ZhciB0O2lmKHRoaXMuX2xpc3RlbmVycyl7dGhpcy5fZGVsaXZlcnlRdWV1ZXx8KHRoaXMuX2RlbGl2ZXJ5UXVldWU9bmV3IGspO2Zvcih2YXIgbiBvZiB0aGlzLl9saXN0ZW5lcnMpdGhpcy5fZGVsaXZlcnlRdWV1ZS5wdXNoKFtuLGVdKTtmb3IobnVsbCE9PSh0PXRoaXMuX3BlcmZNb24pJiZ2b2lkIDAhPT10JiZ0LnN0YXJ0KHRoaXMuX2RlbGl2ZXJ5UXVldWUuc2l6ZSk7MDx0aGlzLl9kZWxpdmVyeVF1ZXVlLnNpemU7KXtjb25zdFtyLGVdPXRoaXMuX2RlbGl2ZXJ5UXVldWUuc2hpZnQoKTt0cnl7ci5pbnZva2UoZSl9Y2F0Y2goZSl7aChlKX19bnVsbCE9PSh0PXRoaXMuX3BlcmZNb24pJiZ2b2lkIDAhPT10JiZ0LnN0b3AoKX19fWZ1bmN0aW9uIG5lKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2YgZnVuY3Rpb24oZSl7bGV0IHQ9W10sbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7Zm9yKDtPYmplY3QucHJvdG90eXBlIT09bjspdD10LmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhuKSksbj1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobik7cmV0dXJuIHR9KGUpKSJmdW5jdGlvbiI9PXR5cGVvZiBlW25dJiZ0LnB1c2gobik7cmV0dXJuIHR9ZnVuY3Rpb24gcmUoZSxuKXtsZXQgdD17fTtmb3IoY29uc3QgciBvZiBlKXRbcl09KHQ9PmZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiBuKHQsZSl9KShyKTtyZXR1cm4gdH1jbGFzcyBpZXtjb25zdHJ1Y3RvcihlKXt0aGlzLmV4ZWN1dG9yPWUsdGhpcy5fZGlkUnVuPSExfWdldFZhbHVlKCl7aWYoIXRoaXMuX2RpZFJ1bil0cnl7dGhpcy5fdmFsdWU9dGhpcy5leGVjdXRvcigpfWNhdGNoKGUpe3RoaXMuX2Vycm9yPWV9ZmluYWxseXt0aGlzLl9kaWRSdW49ITB9aWYodGhpcy5fZXJyb3IpdGhyb3cgdGhpcy5fZXJyb3I7cmV0dXJuIHRoaXMuX3ZhbHVlfWdldCByYXdWYWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZX19ZnVuY3Rpb24gYWUobixyLGk9MCxhPW4ubGVuZ3RoLG89MCxzPXIubGVuZ3RoKXtmb3IoO2k8YSYmbzxzO2krKyxvKyspe2xldCBlPW4uY2hhckNvZGVBdChpKSx0PXIuY2hhckNvZGVBdChvKTtpZihlIT09dCl7aWYoMTI4PD1lfHwxMjg8PXQpcmV0dXJuIGZ1bmN0aW9uKGUsdCxuPTAscj1lLmxlbmd0aCxpPTAsYT10Lmxlbmd0aCl7Zm9yKDtuPHImJmk8YTtuKyssaSsrKXt2YXIgbz1lLmNoYXJDb2RlQXQobikscz10LmNoYXJDb2RlQXQoaSk7aWYobzxzKXJldHVybi0xO2lmKHM8bylyZXR1cm4gMX12YXIgbD1yLW4saD1hLWk7cmV0dXJuIGw8aD8tMTpoPGw/MTowfShuLnRvTG93ZXJDYXNlKCksci50b0xvd2VyQ2FzZSgpLGksYSxvLHMpO29lKGUpJiYoZS09MzIpLG9lKHQpJiYodC09MzIpO3ZhciBsPWUtdDtpZigwIT1sKXJldHVybiBsfX12YXIgZT1hLWksdD1zLW87cmV0dXJuIGU8dD8tMTp0PGU/MTowfWZ1bmN0aW9uIG9lKGUpe3JldHVybiA5Nzw9ZSYmZTw9MTIyfWZ1bmN0aW9uIHNlKGUpe3JldHVybiA2NTw9ZSYmZTw9OTB9ZnVuY3Rpb24gbGUoZSl7cmV0dXJuIDU1Mjk2PD1lJiZlPD01NjMxOX1jb25zdCBoZT0vXltcdFxuXHJceDIwLVx4N0VdKiQvO2NsYXNzIGNle2NvbnN0cnVjdG9yKGUpe3RoaXMuY29uZnVzYWJsZURpY3Rpb25hcnk9ZX1zdGF0aWMgZ2V0SW5zdGFuY2UoZSl7cmV0dXJuIGNlLmNhY2hlLmdldChBcnJheS5mcm9tKGUpKX1zdGF0aWMgZ2V0TG9jYWxlcygpe3JldHVybiBjZS5fbG9jYWxlcy5nZXRWYWx1ZSgpfWlzQW1iaWd1b3VzKGUpe3JldHVybiB0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmhhcyhlKX1nZXRQcmltYXJ5Q29uZnVzYWJsZShlKXtyZXR1cm4gdGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5nZXQoZSl9Z2V0Q29uZnVzYWJsZUNvZGVQb2ludHMoKXtyZXR1cm4gbmV3IFNldCh0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmtleXMoKSl9fShPPWNlKS5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhPW5ldyBpZSgoKT0+SlNPTi5wYXJzZSgneyJfY29tbW9uIjpbODIzMiwzMiw4MjMzLDMyLDU3NjAsMzIsODE5MiwzMiw4MTkzLDMyLDgxOTQsMzIsODE5NSwzMiw4MTk2LDMyLDgxOTcsMzIsODE5OCwzMiw4MjAwLDMyLDgyMDEsMzIsODIwMiwzMiw4Mjg3LDMyLDgxOTksMzIsODIzOSwzMiwyMDQyLDk1LDY1MTAxLDk1LDY1MTAyLDk1LDY1MTAzLDk1LDgyMDgsNDUsODIwOSw0NSw4MjEwLDQ1LDY1MTEyLDQ1LDE3NDgsNDUsODI1OSw0NSw3MjcsNDUsODcyMiw0NSwxMDEzNCw0NSwxMTQ1MCw0NSwxNTQ5LDQ0LDE2NDMsNDQsODIxOCw0NCwxODQsNDQsNDIyMzMsNDQsODk0LDU5LDIzMDcsNTgsMjY5MSw1OCwxNDE3LDU4LDE3OTUsNTgsMTc5Niw1OCw1ODY4LDU4LDY1MDcyLDU4LDYxNDcsNTgsNjE1Myw1OCw4MjgyLDU4LDE0NzUsNTgsNzYwLDU4LDQyODg5LDU4LDg3NTgsNTgsNzIwLDU4LDQyMjM3LDU4LDQ1MSwzMywxMTYwMSwzMyw2NjAsNjMsNTc3LDYzLDI0MjksNjMsNTAzOCw2Myw0MjczMSw2MywxMTkxNDksNDYsODIyOCw0NiwxNzkzLDQ2LDE3OTQsNDYsNDI1MTAsNDYsNjgxNzYsNDYsMTYzMiw0NiwxNzc2LDQ2LDQyMjMyLDQ2LDEzNzMsOTYsNjUyODcsOTYsODIxOSw5Niw4MjQyLDk2LDEzNzAsOTYsMTUyMyw5Niw4MTc1LDk2LDY1MzQ0LDk2LDkwMCw5Niw4MTg5LDk2LDgxMjUsOTYsODEyNyw5Niw4MTkwLDk2LDY5Nyw5Niw4ODQsOTYsNzEyLDk2LDcxNCw5Niw3MTUsOTYsNzU2LDk2LDY5OSw5Niw3MDEsOTYsNzAwLDk2LDcwMiw5Niw0Mjg5Miw5NiwxNDk3LDk2LDIwMzYsOTYsMjAzNyw5Niw1MTk0LDk2LDU4MzYsOTYsOTQwMzMsOTYsOTQwMzQsOTYsNjUzMzksOTEsMTAwODgsNDAsMTAwOTgsNDAsMTIzMDgsNDAsNjQ4MzAsNDAsNjUzNDEsOTMsMTAwODksNDEsMTAwOTksNDEsMTIzMDksNDEsNjQ4MzEsNDEsMTAxMDAsMTIzLDExOTA2MCwxMjMsMTAxMDEsMTI1LDY1MzQyLDk0LDgyNzAsNDIsMTY0NSw0Miw4NzI3LDQyLDY2MzM1LDQyLDU5NDEsNDcsODI1Nyw0Nyw4NzI1LDQ3LDgyNjAsNDcsOTU4NSw0NywxMDE4Nyw0NywxMDc0NCw0NywxMTkzNTQsNDcsMTI3NTUsNDcsMTIzMzksNDcsMTE0NjIsNDcsMjAwMzEsNDcsMTIwMzUsNDcsNjUzNDAsOTIsNjUxMjgsOTIsODcyNiw5MiwxMDE4OSw5MiwxMDc0MSw5MiwxMDc0NSw5MiwxMTkzMTEsOTIsMTE5MzU1LDkyLDEyNzU2LDkyLDIwMDIyLDkyLDEyMDM0LDkyLDQyODcyLDM4LDcwOCw5NCw3MTAsOTQsNTg2OSw0MywxMDEzMyw0Myw2NjIwMyw0Myw4MjQ5LDYwLDEwMDk0LDYwLDcwNiw2MCwxMTkzNTAsNjAsNTE3Niw2MCw1ODEwLDYwLDUxMjAsNjEsMTE4NDAsNjEsMTI0NDgsNjEsNDIyMzksNjEsODI1MCw2MiwxMDA5NSw2Miw3MDcsNjIsMTE5MzUxLDYyLDUxNzEsNjIsOTQwMTUsNjIsODI3NSwxMjYsNzMyLDEyNiw4MTI4LDEyNiw4NzY0LDEyNiw2NTM3MiwxMjQsNjUyOTMsNDUsMTIwNzg0LDUwLDEyMDc5NCw1MCwxMjA4MDQsNTAsMTIwODE0LDUwLDEyMDgyNCw1MCwxMzAwMzQsNTAsNDI4NDIsNTAsNDIzLDUwLDEwMDAsNTAsNDI1NjQsNTAsNTMxMSw1MCw0MjczNSw1MCwxMTkzMDIsNTEsMTIwNzg1LDUxLDEyMDc5NSw1MSwxMjA4MDUsNTEsMTIwODE1LDUxLDEyMDgyNSw1MSwxMzAwMzUsNTEsNDI5MjMsNTEsNTQwLDUxLDQzOSw1MSw0Mjg1OCw1MSwxMTQ2OCw1MSwxMjQ4LDUxLDk0MDExLDUxLDcxODgyLDUxLDEyMDc4Niw1MiwxMjA3OTYsNTIsMTIwODA2LDUyLDEyMDgxNiw1MiwxMjA4MjYsNTIsMTMwMDM2LDUyLDUwNzAsNTIsNzE4NTUsNTIsMTIwNzg3LDUzLDEyMDc5Nyw1MywxMjA4MDcsNTMsMTIwODE3LDUzLDEyMDgyNyw1MywxMzAwMzcsNTMsNDQ0LDUzLDcxODY3LDUzLDEyMDc4OCw1NCwxMjA3OTgsNTQsMTIwODA4LDU0LDEyMDgxOCw1NCwxMjA4MjgsNTQsMTMwMDM4LDU0LDExNDc0LDU0LDUxMDIsNTQsNzE4OTMsNTQsMTE5MzE0LDU1LDEyMDc4OSw1NSwxMjA3OTksNTUsMTIwODA5LDU1LDEyMDgxOSw1NSwxMjA4MjksNTUsMTMwMDM5LDU1LDY2NzcwLDU1LDcxODc4LDU1LDI4MTksNTYsMjUzOCw1NiwyNjY2LDU2LDEyNTEzMSw1NiwxMjA3OTAsNTYsMTIwODAwLDU2LDEyMDgxMCw1NiwxMjA4MjAsNTYsMTIwODMwLDU2LDEzMDA0MCw1Niw1NDcsNTYsNTQ2LDU2LDY2MzMwLDU2LDI2NjMsNTcsMjkyMCw1NywyNTQxLDU3LDM0MzcsNTcsMTIwNzkxLDU3LDEyMDgwMSw1NywxMjA4MTEsNTcsMTIwODIxLDU3LDEyMDgzMSw1NywxMzAwNDEsNTcsNDI4NjIsNTcsMTE0NjYsNTcsNzE4ODQsNTcsNzE4NTIsNTcsNzE4OTQsNTcsOTA4Miw5Nyw2NTM0NSw5NywxMTk4MzQsOTcsMTE5ODg2LDk3LDExOTkzOCw5NywxMTk5OTAsOTcsMTIwMDQyLDk3LDEyMDA5NCw5NywxMjAxNDYsOTcsMTIwMTk4LDk3LDEyMDI1MCw5NywxMjAzMDIsOTcsMTIwMzU0LDk3LDEyMDQwNiw5NywxMjA0NTgsOTcsNTkzLDk3LDk0NSw5NywxMjA1MTQsOTcsMTIwNTcyLDk3LDEyMDYzMCw5NywxMjA2ODgsOTcsMTIwNzQ2LDk3LDY1MzEzLDY1LDExOTgwOCw2NSwxMTk4NjAsNjUsMTE5OTEyLDY1LDExOTk2NCw2NSwxMjAwMTYsNjUsMTIwMDY4LDY1LDEyMDEyMCw2NSwxMjAxNzIsNjUsMTIwMjI0LDY1LDEyMDI3Niw2NSwxMjAzMjgsNjUsMTIwMzgwLDY1LDEyMDQzMiw2NSw5MTMsNjUsMTIwNDg4LDY1LDEyMDU0Niw2NSwxMjA2MDQsNjUsMTIwNjYyLDY1LDEyMDcyMCw2NSw1MDM0LDY1LDU1NzMsNjUsNDIyMjIsNjUsOTQwMTYsNjUsNjYyMDgsNjUsMTE5ODM1LDk4LDExOTg4Nyw5OCwxMTk5MzksOTgsMTE5OTkxLDk4LDEyMDA0Myw5OCwxMjAwOTUsOTgsMTIwMTQ3LDk4LDEyMDE5OSw5OCwxMjAyNTEsOTgsMTIwMzAzLDk4LDEyMDM1NSw5OCwxMjA0MDcsOTgsMTIwNDU5LDk4LDM4OCw5OCw1MDcxLDk4LDUyMzQsOTgsNTU1MSw5OCw2NTMxNCw2Niw4NDkyLDY2LDExOTgwOSw2NiwxMTk4NjEsNjYsMTE5OTEzLDY2LDEyMDAxNyw2NiwxMjAwNjksNjYsMTIwMTIxLDY2LDEyMDE3Myw2NiwxMjAyMjUsNjYsMTIwMjc3LDY2LDEyMDMyOSw2NiwxMjAzODEsNjYsMTIwNDMzLDY2LDQyOTMyLDY2LDkxNCw2NiwxMjA0ODksNjYsMTIwNTQ3LDY2LDEyMDYwNSw2NiwxMjA2NjMsNjYsMTIwNzIxLDY2LDUxMDgsNjYsNTYyMyw2Niw0MjE5Miw2Niw2NjE3OCw2Niw2NjIwOSw2Niw2NjMwNSw2Niw2NTM0Nyw5OSw4NTczLDk5LDExOTgzNiw5OSwxMTk4ODgsOTksMTE5OTQwLDk5LDExOTk5Miw5OSwxMjAwNDQsOTksMTIwMDk2LDk5LDEyMDE0OCw5OSwxMjAyMDAsOTksMTIwMjUyLDk5LDEyMDMwNCw5OSwxMjAzNTYsOTksMTIwNDA4LDk5LDEyMDQ2MCw5OSw3NDI4LDk5LDEwMTAsOTksMTE0MjksOTksNDM5NTEsOTksNjY2MjEsOTksMTI4ODQ0LDY3LDcxOTIyLDY3LDcxOTEzLDY3LDY1MzE1LDY3LDg1NTcsNjcsODQ1MCw2Nyw4NDkzLDY3LDExOTgxMCw2NywxMTk4NjIsNjcsMTE5OTE0LDY3LDExOTk2Niw2NywxMjAwMTgsNjcsMTIwMTc0LDY3LDEyMDIyNiw2NywxMjAyNzgsNjcsMTIwMzMwLDY3LDEyMDM4Miw2NywxMjA0MzQsNjcsMTAxNyw2NywxMTQyOCw2Nyw1MDg3LDY3LDQyMjAyLDY3LDY2MjEwLDY3LDY2MzA2LDY3LDY2NTgxLDY3LDY2ODQ0LDY3LDg1NzQsMTAwLDg1MTgsMTAwLDExOTgzNywxMDAsMTE5ODg5LDEwMCwxMTk5NDEsMTAwLDExOTk5MywxMDAsMTIwMDQ1LDEwMCwxMjAwOTcsMTAwLDEyMDE0OSwxMDAsMTIwMjAxLDEwMCwxMjAyNTMsMTAwLDEyMDMwNSwxMDAsMTIwMzU3LDEwMCwxMjA0MDksMTAwLDEyMDQ2MSwxMDAsMTI4MSwxMDAsNTA5NSwxMDAsNTIzMSwxMDAsNDIxOTQsMTAwLDg1NTgsNjgsODUxNyw2OCwxMTk4MTEsNjgsMTE5ODYzLDY4LDExOTkxNSw2OCwxMTk5NjcsNjgsMTIwMDE5LDY4LDEyMDA3MSw2OCwxMjAxMjMsNjgsMTIwMTc1LDY4LDEyMDIyNyw2OCwxMjAyNzksNjgsMTIwMzMxLDY4LDEyMDM4Myw2OCwxMjA0MzUsNjgsNTAyNCw2OCw1NTk4LDY4LDU2MTAsNjgsNDIxOTUsNjgsODQ5NCwxMDEsNjUzNDksMTAxLDg0OTUsMTAxLDg1MTksMTAxLDExOTgzOCwxMDEsMTE5ODkwLDEwMSwxMTk5NDIsMTAxLDEyMDA0NiwxMDEsMTIwMDk4LDEwMSwxMjAxNTAsMTAxLDEyMDIwMiwxMDEsMTIwMjU0LDEwMSwxMjAzMDYsMTAxLDEyMDM1OCwxMDEsMTIwNDEwLDEwMSwxMjA0NjIsMTAxLDQzODI2LDEwMSwxMjEzLDEwMSw4OTU5LDY5LDY1MzE3LDY5LDg0OTYsNjksMTE5ODEyLDY5LDExOTg2NCw2OSwxMTk5MTYsNjksMTIwMDIwLDY5LDEyMDA3Miw2OSwxMjAxMjQsNjksMTIwMTc2LDY5LDEyMDIyOCw2OSwxMjAyODAsNjksMTIwMzMyLDY5LDEyMDM4NCw2OSwxMjA0MzYsNjksOTE3LDY5LDEyMDQ5Miw2OSwxMjA1NTAsNjksMTIwNjA4LDY5LDEyMDY2Niw2OSwxMjA3MjQsNjksMTE1NzcsNjksNTAzNiw2OSw0MjIyNCw2OSw3MTg0Niw2OSw3MTg1NCw2OSw2NjE4Miw2OSwxMTk4MzksMTAyLDExOTg5MSwxMDIsMTE5OTQzLDEwMiwxMTk5OTUsMTAyLDEyMDA0NywxMDIsMTIwMDk5LDEwMiwxMjAxNTEsMTAyLDEyMDIwMywxMDIsMTIwMjU1LDEwMiwxMjAzMDcsMTAyLDEyMDM1OSwxMDIsMTIwNDExLDEwMiwxMjA0NjMsMTAyLDQzODI5LDEwMiw0MjkwNSwxMDIsMzgzLDEwMiw3ODM3LDEwMiwxNDEyLDEwMiwxMTkzMTUsNzAsODQ5Nyw3MCwxMTk4MTMsNzAsMTE5ODY1LDcwLDExOTkxNyw3MCwxMjAwMjEsNzAsMTIwMDczLDcwLDEyMDEyNSw3MCwxMjAxNzcsNzAsMTIwMjI5LDcwLDEyMDI4MSw3MCwxMjAzMzMsNzAsMTIwMzg1LDcwLDEyMDQzNyw3MCw0MjkwNCw3MCw5ODgsNzAsMTIwNzc4LDcwLDU1NTYsNzAsNDIyMDUsNzAsNzE4NzQsNzAsNzE4NDIsNzAsNjYxODMsNzAsNjYyMTMsNzAsNjY4NTMsNzAsNjUzNTEsMTAzLDg0NTgsMTAzLDExOTg0MCwxMDMsMTE5ODkyLDEwMywxMTk5NDQsMTAzLDEyMDA0OCwxMDMsMTIwMTAwLDEwMywxMjAxNTIsMTAzLDEyMDIwNCwxMDMsMTIwMjU2LDEwMywxMjAzMDgsMTAzLDEyMDM2MCwxMDMsMTIwNDEyLDEwMywxMjA0NjQsMTAzLDYwOSwxMDMsNzU1NSwxMDMsMzk3LDEwMywxNDA5LDEwMywxMTk4MTQsNzEsMTE5ODY2LDcxLDExOTkxOCw3MSwxMTk5NzAsNzEsMTIwMDIyLDcxLDEyMDA3NCw3MSwxMjAxMjYsNzEsMTIwMTc4LDcxLDEyMDIzMCw3MSwxMjAyODIsNzEsMTIwMzM0LDcxLDEyMDM4Niw3MSwxMjA0MzgsNzEsMTI5Miw3MSw1MDU2LDcxLDUxMDcsNzEsNDIxOTgsNzEsNjUzNTIsMTA0LDg0NjIsMTA0LDExOTg0MSwxMDQsMTE5OTQ1LDEwNCwxMTk5OTcsMTA0LDEyMDA0OSwxMDQsMTIwMTAxLDEwNCwxMjAxNTMsMTA0LDEyMDIwNSwxMDQsMTIwMjU3LDEwNCwxMjAzMDksMTA0LDEyMDM2MSwxMDQsMTIwNDEzLDEwNCwxMjA0NjUsMTA0LDEyMTEsMTA0LDEzOTIsMTA0LDUwNTgsMTA0LDY1MzIwLDcyLDg0NTksNzIsODQ2MCw3Miw4NDYxLDcyLDExOTgxNSw3MiwxMTk4NjcsNzIsMTE5OTE5LDcyLDEyMDAyMyw3MiwxMjAxNzksNzIsMTIwMjMxLDcyLDEyMDI4Myw3MiwxMjAzMzUsNzIsMTIwMzg3LDcyLDEyMDQzOSw3Miw5MTksNzIsMTIwNDk0LDcyLDEyMDU1Miw3MiwxMjA2MTAsNzIsMTIwNjY4LDcyLDEyMDcyNiw3MiwxMTQwNiw3Miw1MDUxLDcyLDU1MDAsNzIsNDIyMTUsNzIsNjYyNTUsNzIsNzMxLDEwNSw5MDc1LDEwNSw2NTM1MywxMDUsODU2MCwxMDUsODUwNSwxMDUsODUyMCwxMDUsMTE5ODQyLDEwNSwxMTk4OTQsMTA1LDExOTk0NiwxMDUsMTE5OTk4LDEwNSwxMjAwNTAsMTA1LDEyMDEwMiwxMDUsMTIwMTU0LDEwNSwxMjAyMDYsMTA1LDEyMDI1OCwxMDUsMTIwMzEwLDEwNSwxMjAzNjIsMTA1LDEyMDQxNCwxMDUsMTIwNDY2LDEwNSwxMjA0ODQsMTA1LDYxOCwxMDUsNjE3LDEwNSw5NTMsMTA1LDgxMjYsMTA1LDg5MCwxMDUsMTIwNTIyLDEwNSwxMjA1ODAsMTA1LDEyMDYzOCwxMDUsMTIwNjk2LDEwNSwxMjA3NTQsMTA1LDExMTAsMTA1LDQyNTY3LDEwNSwxMjMxLDEwNSw0Mzg5MywxMDUsNTAyOSwxMDUsNzE4NzUsMTA1LDY1MzU0LDEwNiw4NTIxLDEwNiwxMTk4NDMsMTA2LDExOTg5NSwxMDYsMTE5OTQ3LDEwNiwxMTk5OTksMTA2LDEyMDA1MSwxMDYsMTIwMTAzLDEwNiwxMjAxNTUsMTA2LDEyMDIwNywxMDYsMTIwMjU5LDEwNiwxMjAzMTEsMTA2LDEyMDM2MywxMDYsMTIwNDE1LDEwNiwxMjA0NjcsMTA2LDEwMTEsMTA2LDExMTIsMTA2LDY1MzIyLDc0LDExOTgxNyw3NCwxMTk4NjksNzQsMTE5OTIxLDc0LDExOTk3Myw3NCwxMjAwMjUsNzQsMTIwMDc3LDc0LDEyMDEyOSw3NCwxMjAxODEsNzQsMTIwMjMzLDc0LDEyMDI4NSw3NCwxMjAzMzcsNzQsMTIwMzg5LDc0LDEyMDQ0MSw3NCw0MjkzMCw3NCw4OTUsNzQsMTAzMiw3NCw1MDM1LDc0LDUyNjEsNzQsNDIyMDEsNzQsMTE5ODQ0LDEwNywxMTk4OTYsMTA3LDExOTk0OCwxMDcsMTIwMDAwLDEwNywxMjAwNTIsMTA3LDEyMDEwNCwxMDcsMTIwMTU2LDEwNywxMjAyMDgsMTA3LDEyMDI2MCwxMDcsMTIwMzEyLDEwNywxMjAzNjQsMTA3LDEyMDQxNiwxMDcsMTIwNDY4LDEwNyw4NDkwLDc1LDY1MzIzLDc1LDExOTgxOCw3NSwxMTk4NzAsNzUsMTE5OTIyLDc1LDExOTk3NCw3NSwxMjAwMjYsNzUsMTIwMDc4LDc1LDEyMDEzMCw3NSwxMjAxODIsNzUsMTIwMjM0LDc1LDEyMDI4Niw3NSwxMjAzMzgsNzUsMTIwMzkwLDc1LDEyMDQ0Miw3NSw5MjIsNzUsMTIwNDk3LDc1LDEyMDU1NSw3NSwxMjA2MTMsNzUsMTIwNjcxLDc1LDEyMDcyOSw3NSwxMTQxMiw3NSw1MDk0LDc1LDU4NDUsNzUsNDIxOTksNzUsNjY4NDAsNzUsMTQ3MiwxMDgsODczOSw3Myw5MjEzLDczLDY1NTEyLDczLDE2MzMsMTA4LDE3NzcsNzMsNjYzMzYsMTA4LDEyNTEyNywxMDgsMTIwNzgzLDczLDEyMDc5Myw3MywxMjA4MDMsNzMsMTIwODEzLDczLDEyMDgyMyw3MywxMzAwMzMsNzMsNjUzMjEsNzMsODU0NCw3Myw4NDY0LDczLDg0NjUsNzMsMTE5ODE2LDczLDExOTg2OCw3MywxMTk5MjAsNzMsMTIwMDI0LDczLDEyMDEyOCw3MywxMjAxODAsNzMsMTIwMjMyLDczLDEyMDI4NCw3MywxMjAzMzYsNzMsMTIwMzg4LDczLDEyMDQ0MCw3Myw2NTM1NiwxMDgsODU3Miw3Myw4NDY3LDEwOCwxMTk4NDUsMTA4LDExOTg5NywxMDgsMTE5OTQ5LDEwOCwxMjAwMDEsMTA4LDEyMDA1MywxMDgsMTIwMTA1LDczLDEyMDE1Nyw3MywxMjAyMDksNzMsMTIwMjYxLDczLDEyMDMxMyw3MywxMjAzNjUsNzMsMTIwNDE3LDczLDEyMDQ2OSw3Myw0NDgsNzMsMTIwNDk2LDczLDEyMDU1NCw3MywxMjA2MTIsNzMsMTIwNjcwLDczLDEyMDcyOCw3MywxMTQxMCw3MywxMDMwLDczLDEyMTYsNzMsMTQ5MywxMDgsMTUwMywxMDgsMTU3NSwxMDgsMTI2NDY0LDEwOCwxMjY1OTIsMTA4LDY1MTY2LDEwOCw2NTE2NSwxMDgsMTk5NCwxMDgsMTE1OTksNzMsNTgyNSw3Myw0MjIyNiw3Myw5Mzk5Miw3Myw2NjE4NiwxMjQsNjYzMTMsMTI0LDExOTMzOCw3Niw4NTU2LDc2LDg0NjYsNzYsMTE5ODE5LDc2LDExOTg3MSw3NiwxMTk5MjMsNzYsMTIwMDI3LDc2LDEyMDA3OSw3NiwxMjAxMzEsNzYsMTIwMTgzLDc2LDEyMDIzNSw3NiwxMjAyODcsNzYsMTIwMzM5LDc2LDEyMDM5MSw3NiwxMjA0NDMsNzYsMTE0NzIsNzYsNTA4Niw3Niw1MjkwLDc2LDQyMjA5LDc2LDkzOTc0LDc2LDcxODQzLDc2LDcxODU4LDc2LDY2NTg3LDc2LDY2ODU0LDc2LDY1MzI1LDc3LDg1NTksNzcsODQ5OSw3NywxMTk4MjAsNzcsMTE5ODcyLDc3LDExOTkyNCw3NywxMjAwMjgsNzcsMTIwMDgwLDc3LDEyMDEzMiw3NywxMjAxODQsNzcsMTIwMjM2LDc3LDEyMDI4OCw3NywxMjAzNDAsNzcsMTIwMzkyLDc3LDEyMDQ0NCw3Nyw5MjQsNzcsMTIwNDk5LDc3LDEyMDU1Nyw3NywxMjA2MTUsNzcsMTIwNjczLDc3LDEyMDczMSw3NywxMDE4LDc3LDExNDE2LDc3LDUwNDcsNzcsNTYxNiw3Nyw1ODQ2LDc3LDQyMjA3LDc3LDY2MjI0LDc3LDY2MzIxLDc3LDExOTg0NywxMTAsMTE5ODk5LDExMCwxMTk5NTEsMTEwLDEyMDAwMywxMTAsMTIwMDU1LDExMCwxMjAxMDcsMTEwLDEyMDE1OSwxMTAsMTIwMjExLDExMCwxMjAyNjMsMTEwLDEyMDMxNSwxMTAsMTIwMzY3LDExMCwxMjA0MTksMTEwLDEyMDQ3MSwxMTAsMTQwMCwxMTAsMTQwNCwxMTAsNjUzMjYsNzgsODQ2OSw3OCwxMTk4MjEsNzgsMTE5ODczLDc4LDExOTkyNSw3OCwxMTk5NzcsNzgsMTIwMDI5LDc4LDEyMDA4MSw3OCwxMjAxODUsNzgsMTIwMjM3LDc4LDEyMDI4OSw3OCwxMjAzNDEsNzgsMTIwMzkzLDc4LDEyMDQ0NSw3OCw5MjUsNzgsMTIwNTAwLDc4LDEyMDU1OCw3OCwxMjA2MTYsNzgsMTIwNjc0LDc4LDEyMDczMiw3OCwxMTQxOCw3OCw0MjIwOCw3OCw2NjgzNSw3OCwzMDc0LDExMSwzMjAyLDExMSwzMzMwLDExMSwzNDU4LDExMSwyNDA2LDExMSwyNjYyLDExMSwyNzkwLDExMSwzMDQ2LDExMSwzMTc0LDExMSwzMzAyLDExMSwzNDMwLDExMSwzNjY0LDExMSwzNzkyLDExMSw0MTYwLDExMSwxNjM3LDExMSwxNzgxLDExMSw2NTM1OSwxMTEsODUwMCwxMTEsMTE5ODQ4LDExMSwxMTk5MDAsMTExLDExOTk1MiwxMTEsMTIwMDU2LDExMSwxMjAxMDgsMTExLDEyMDE2MCwxMTEsMTIwMjEyLDExMSwxMjAyNjQsMTExLDEyMDMxNiwxMTEsMTIwMzY4LDExMSwxMjA0MjAsMTExLDEyMDQ3MiwxMTEsNzQzOSwxMTEsNzQ0MSwxMTEsNDM4MzcsMTExLDk1OSwxMTEsMTIwNTI4LDExMSwxMjA1ODYsMTExLDEyMDY0NCwxMTEsMTIwNzAyLDExMSwxMjA3NjAsMTExLDk2MywxMTEsMTIwNTMyLDExMSwxMjA1OTAsMTExLDEyMDY0OCwxMTEsMTIwNzA2LDExMSwxMjA3NjQsMTExLDExNDIzLDExMSw0MzUxLDExMSwxNDEzLDExMSwxNTA1LDExMSwxNjA3LDExMSwxMjY1MDAsMTExLDEyNjU2NCwxMTEsMTI2NTk2LDExMSw2NTI1OSwxMTEsNjUyNjAsMTExLDY1MjU4LDExMSw2NTI1NywxMTEsMTcyNiwxMTEsNjQ0MjgsMTExLDY0NDI5LDExMSw2NDQyNywxMTEsNjQ0MjYsMTExLDE3MjksMTExLDY0NDI0LDExMSw2NDQyNSwxMTEsNjQ0MjMsMTExLDY0NDIyLDExMSwxNzQ5LDExMSwzMzYwLDExMSw0MTI1LDExMSw2Njc5NCwxMTEsNzE4ODAsMTExLDcxODk1LDExMSw2NjYwNCwxMTEsMTk4NCw3OSwyNTM0LDc5LDI5MTgsNzksMTIyOTUsNzksNzA4NjQsNzksNzE5MDQsNzksMTIwNzgyLDc5LDEyMDc5Miw3OSwxMjA4MDIsNzksMTIwODEyLDc5LDEyMDgyMiw3OSwxMzAwMzIsNzksNjUzMjcsNzksMTE5ODIyLDc5LDExOTg3NCw3OSwxMTk5MjYsNzksMTE5OTc4LDc5LDEyMDAzMCw3OSwxMjAwODIsNzksMTIwMTM0LDc5LDEyMDE4Niw3OSwxMjAyMzgsNzksMTIwMjkwLDc5LDEyMDM0Miw3OSwxMjAzOTQsNzksMTIwNDQ2LDc5LDkyNyw3OSwxMjA1MDIsNzksMTIwNTYwLDc5LDEyMDYxOCw3OSwxMjA2NzYsNzksMTIwNzM0LDc5LDExNDIyLDc5LDEzNjUsNzksMTE2MDQsNzksNDgxNiw3OSwyODQ4LDc5LDY2NzU0LDc5LDQyMjI3LDc5LDcxODYxLDc5LDY2MTk0LDc5LDY2MjE5LDc5LDY2NTY0LDc5LDY2ODM4LDc5LDkwNzYsMTEyLDY1MzYwLDExMiwxMTk4NDksMTEyLDExOTkwMSwxMTIsMTE5OTUzLDExMiwxMjAwMDUsMTEyLDEyMDA1NywxMTIsMTIwMTA5LDExMiwxMjAxNjEsMTEyLDEyMDIxMywxMTIsMTIwMjY1LDExMiwxMjAzMTcsMTEyLDEyMDM2OSwxMTIsMTIwNDIxLDExMiwxMjA0NzMsMTEyLDk2MSwxMTIsMTIwNTMwLDExMiwxMjA1NDQsMTEyLDEyMDU4OCwxMTIsMTIwNjAyLDExMiwxMjA2NDYsMTEyLDEyMDY2MCwxMTIsMTIwNzA0LDExMiwxMjA3MTgsMTEyLDEyMDc2MiwxMTIsMTIwNzc2LDExMiwxMTQyNywxMTIsNjUzMjgsODAsODQ3Myw4MCwxMTk4MjMsODAsMTE5ODc1LDgwLDExOTkyNyw4MCwxMTk5NzksODAsMTIwMDMxLDgwLDEyMDA4Myw4MCwxMjAxODcsODAsMTIwMjM5LDgwLDEyMDI5MSw4MCwxMjAzNDMsODAsMTIwMzk1LDgwLDEyMDQ0Nyw4MCw5MjksODAsMTIwNTA0LDgwLDEyMDU2Miw4MCwxMjA2MjAsODAsMTIwNjc4LDgwLDEyMDczNiw4MCwxMTQyNiw4MCw1MDkwLDgwLDUyMjksODAsNDIxOTMsODAsNjYxOTcsODAsMTE5ODUwLDExMywxMTk5MDIsMTEzLDExOTk1NCwxMTMsMTIwMDA2LDExMywxMjAwNTgsMTEzLDEyMDExMCwxMTMsMTIwMTYyLDExMywxMjAyMTQsMTEzLDEyMDI2NiwxMTMsMTIwMzE4LDExMywxMjAzNzAsMTEzLDEyMDQyMiwxMTMsMTIwNDc0LDExMywxMzA3LDExMywxMzc5LDExMywxMzgyLDExMyw4NDc0LDgxLDExOTgyNCw4MSwxMTk4NzYsODEsMTE5OTI4LDgxLDExOTk4MCw4MSwxMjAwMzIsODEsMTIwMDg0LDgxLDEyMDE4OCw4MSwxMjAyNDAsODEsMTIwMjkyLDgxLDEyMDM0NCw4MSwxMjAzOTYsODEsMTIwNDQ4LDgxLDExNjA1LDgxLDExOTg1MSwxMTQsMTE5OTAzLDExNCwxMTk5NTUsMTE0LDEyMDAwNywxMTQsMTIwMDU5LDExNCwxMjAxMTEsMTE0LDEyMDE2MywxMTQsMTIwMjE1LDExNCwxMjAyNjcsMTE0LDEyMDMxOSwxMTQsMTIwMzcxLDExNCwxMjA0MjMsMTE0LDEyMDQ3NSwxMTQsNDM4NDcsMTE0LDQzODQ4LDExNCw3NDYyLDExNCwxMTM5NywxMTQsNDM5MDUsMTE0LDExOTMxOCw4Miw4NDc1LDgyLDg0NzYsODIsODQ3Nyw4MiwxMTk4MjUsODIsMTE5ODc3LDgyLDExOTkyOSw4MiwxMjAwMzMsODIsMTIwMTg5LDgyLDEyMDI0MSw4MiwxMjAyOTMsODIsMTIwMzQ1LDgyLDEyMDM5Nyw4MiwxMjA0NDksODIsNDIyLDgyLDUwMjUsODIsNTA3NCw4Miw2Njc0MCw4Miw1NTExLDgyLDQyMjExLDgyLDk0MDA1LDgyLDY1MzYzLDExNSwxMTk4NTIsMTE1LDExOTkwNCwxMTUsMTE5OTU2LDExNSwxMjAwMDgsMTE1LDEyMDA2MCwxMTUsMTIwMTEyLDExNSwxMjAxNjQsMTE1LDEyMDIxNiwxMTUsMTIwMjY4LDExNSwxMjAzMjAsMTE1LDEyMDM3MiwxMTUsMTIwNDI0LDExNSwxMjA0NzYsMTE1LDQyODAxLDExNSw0NDUsMTE1LDExMDksMTE1LDQzOTQ2LDExNSw3MTg3MywxMTUsNjY2MzIsMTE1LDY1MzMxLDgzLDExOTgyNiw4MywxMTk4NzgsODMsMTE5OTMwLDgzLDExOTk4Miw4MywxMjAwMzQsODMsMTIwMDg2LDgzLDEyMDEzOCw4MywxMjAxOTAsODMsMTIwMjQyLDgzLDEyMDI5NCw4MywxMjAzNDYsODMsMTIwMzk4LDgzLDEyMDQ1MCw4MywxMDI5LDgzLDEzNTksODMsNTA3Nyw4Myw1MDgyLDgzLDQyMjEwLDgzLDk0MDEwLDgzLDY2MTk4LDgzLDY2NTkyLDgzLDExOTg1MywxMTYsMTE5OTA1LDExNiwxMTk5NTcsMTE2LDEyMDAwOSwxMTYsMTIwMDYxLDExNiwxMjAxMTMsMTE2LDEyMDE2NSwxMTYsMTIwMjE3LDExNiwxMjAyNjksMTE2LDEyMDMyMSwxMTYsMTIwMzczLDExNiwxMjA0MjUsMTE2LDEyMDQ3NywxMTYsODg2OCw4NCwxMDIwMSw4NCwxMjg4NzIsODQsNjUzMzIsODQsMTE5ODI3LDg0LDExOTg3OSw4NCwxMTk5MzEsODQsMTE5OTgzLDg0LDEyMDAzNSw4NCwxMjAwODcsODQsMTIwMTM5LDg0LDEyMDE5MSw4NCwxMjAyNDMsODQsMTIwMjk1LDg0LDEyMDM0Nyw4NCwxMjAzOTksODQsMTIwNDUxLDg0LDkzMiw4NCwxMjA1MDcsODQsMTIwNTY1LDg0LDEyMDYyMyw4NCwxMjA2ODEsODQsMTIwNzM5LDg0LDExNDMwLDg0LDUwMjYsODQsNDIxOTYsODQsOTM5NjIsODQsNzE4NjgsODQsNjYxOTksODQsNjYyMjUsODQsNjYzMjUsODQsMTE5ODU0LDExNywxMTk5MDYsMTE3LDExOTk1OCwxMTcsMTIwMDEwLDExNywxMjAwNjIsMTE3LDEyMDExNCwxMTcsMTIwMTY2LDExNywxMjAyMTgsMTE3LDEyMDI3MCwxMTcsMTIwMzIyLDExNywxMjAzNzQsMTE3LDEyMDQyNiwxMTcsMTIwNDc4LDExNyw0MjkxMSwxMTcsNzQ1MiwxMTcsNDM4NTQsMTE3LDQzODU4LDExNyw2NTEsMTE3LDk2NSwxMTcsMTIwNTM0LDExNywxMjA1OTIsMTE3LDEyMDY1MCwxMTcsMTIwNzA4LDExNywxMjA3NjYsMTE3LDE0MDUsMTE3LDY2ODA2LDExNyw3MTg5NiwxMTcsODc0Niw4NSw4ODk5LDg1LDExOTgyOCw4NSwxMTk4ODAsODUsMTE5OTMyLDg1LDExOTk4NCw4NSwxMjAwMzYsODUsMTIwMDg4LDg1LDEyMDE0MCw4NSwxMjAxOTIsODUsMTIwMjQ0LDg1LDEyMDI5Niw4NSwxMjAzNDgsODUsMTIwNDAwLDg1LDEyMDQ1Miw4NSwxMzU3LDg1LDQ2MDgsODUsNjY3NjYsODUsNTE5Niw4NSw0MjIyOCw4NSw5NDAxOCw4NSw3MTg2NCw4NSw4NzQ0LDExOCw4ODk3LDExOCw2NTM2NiwxMTgsODU2NCwxMTgsMTE5ODU1LDExOCwxMTk5MDcsMTE4LDExOTk1OSwxMTgsMTIwMDExLDExOCwxMjAwNjMsMTE4LDEyMDExNSwxMTgsMTIwMTY3LDExOCwxMjAyMTksMTE4LDEyMDI3MSwxMTgsMTIwMzIzLDExOCwxMjAzNzUsMTE4LDEyMDQyNywxMTgsMTIwNDc5LDExOCw3NDU2LDExOCw5NTcsMTE4LDEyMDUyNiwxMTgsMTIwNTg0LDExOCwxMjA2NDIsMTE4LDEyMDcwMCwxMTgsMTIwNzU4LDExOCwxMTQxLDExOCwxNDk2LDExOCw3MTQzMCwxMTgsNDM5NDUsMTE4LDcxODcyLDExOCwxMTkzMDksODYsMTYzOSw4NiwxNzgzLDg2LDg1NDgsODYsMTE5ODI5LDg2LDExOTg4MSw4NiwxMTk5MzMsODYsMTE5OTg1LDg2LDEyMDAzNyw4NiwxMjAwODksODYsMTIwMTQxLDg2LDEyMDE5Myw4NiwxMjAyNDUsODYsMTIwMjk3LDg2LDEyMDM0OSw4NiwxMjA0MDEsODYsMTIwNDUzLDg2LDExNDAsODYsMTE1NzYsODYsNTA4MSw4Niw1MTY3LDg2LDQyNzE5LDg2LDQyMjE0LDg2LDkzOTYwLDg2LDcxODQwLDg2LDY2ODQ1LDg2LDYyMywxMTksMTE5ODU2LDExOSwxMTk5MDgsMTE5LDExOTk2MCwxMTksMTIwMDEyLDExOSwxMjAwNjQsMTE5LDEyMDExNiwxMTksMTIwMTY4LDExOSwxMjAyMjAsMTE5LDEyMDI3MiwxMTksMTIwMzI0LDExOSwxMjAzNzYsMTE5LDEyMDQyOCwxMTksMTIwNDgwLDExOSw3NDU3LDExOSwxMTIxLDExOSwxMzA5LDExOSwxMzc3LDExOSw3MTQzNCwxMTksNzE0MzgsMTE5LDcxNDM5LDExOSw0MzkwNywxMTksNzE5MTksODcsNzE5MTAsODcsMTE5ODMwLDg3LDExOTg4Miw4NywxMTk5MzQsODcsMTE5OTg2LDg3LDEyMDAzOCw4NywxMjAwOTAsODcsMTIwMTQyLDg3LDEyMDE5NCw4NywxMjAyNDYsODcsMTIwMjk4LDg3LDEyMDM1MCw4NywxMjA0MDIsODcsMTIwNDU0LDg3LDEzMDgsODcsNTA0Myw4Nyw1MDc2LDg3LDQyMjE4LDg3LDU3NDIsMTIwLDEwNTM5LDEyMCwxMDU0MCwxMjAsMTA3OTksMTIwLDY1MzY4LDEyMCw4NTY5LDEyMCwxMTk4NTcsMTIwLDExOTkwOSwxMjAsMTE5OTYxLDEyMCwxMjAwMTMsMTIwLDEyMDA2NSwxMjAsMTIwMTE3LDEyMCwxMjAxNjksMTIwLDEyMDIyMSwxMjAsMTIwMjczLDEyMCwxMjAzMjUsMTIwLDEyMDM3NywxMjAsMTIwNDI5LDEyMCwxMjA0ODEsMTIwLDU0NDEsMTIwLDU1MDEsMTIwLDU3NDEsODgsOTU4Nyw4OCw2NjMzOCw4OCw3MTkxNiw4OCw2NTMzNiw4OCw4NTUzLDg4LDExOTgzMSw4OCwxMTk4ODMsODgsMTE5OTM1LDg4LDExOTk4Nyw4OCwxMjAwMzksODgsMTIwMDkxLDg4LDEyMDE0Myw4OCwxMjAxOTUsODgsMTIwMjQ3LDg4LDEyMDI5OSw4OCwxMjAzNTEsODgsMTIwNDAzLDg4LDEyMDQ1NSw4OCw0MjkzMSw4OCw5MzUsODgsMTIwNTEwLDg4LDEyMDU2OCw4OCwxMjA2MjYsODgsMTIwNjg0LDg4LDEyMDc0Miw4OCwxMTQzNiw4OCwxMTYxMyw4OCw1ODE1LDg4LDQyMjE5LDg4LDY2MTkyLDg4LDY2MjI4LDg4LDY2MzI3LDg4LDY2ODU1LDg4LDYxMSwxMjEsNzU2NCwxMjEsNjUzNjksMTIxLDExOTg1OCwxMjEsMTE5OTEwLDEyMSwxMTk5NjIsMTIxLDEyMDAxNCwxMjEsMTIwMDY2LDEyMSwxMjAxMTgsMTIxLDEyMDE3MCwxMjEsMTIwMjIyLDEyMSwxMjAyNzQsMTIxLDEyMDMyNiwxMjEsMTIwMzc4LDEyMSwxMjA0MzAsMTIxLDEyMDQ4MiwxMjEsNjU1LDEyMSw3OTM1LDEyMSw0Mzg2NiwxMjEsOTQ3LDEyMSw4NTA5LDEyMSwxMjA1MTYsMTIxLDEyMDU3NCwxMjEsMTIwNjMyLDEyMSwxMjA2OTAsMTIxLDEyMDc0OCwxMjEsMTE5OSwxMjEsNDMyNywxMjEsNzE5MDAsMTIxLDY1MzM3LDg5LDExOTgzMiw4OSwxMTk4ODQsODksMTE5OTM2LDg5LDExOTk4OCw4OSwxMjAwNDAsODksMTIwMDkyLDg5LDEyMDE0NCw4OSwxMjAxOTYsODksMTIwMjQ4LDg5LDEyMDMwMCw4OSwxMjAzNTIsODksMTIwNDA0LDg5LDEyMDQ1Niw4OSw5MzMsODksOTc4LDg5LDEyMDUwOCw4OSwxMjA1NjYsODksMTIwNjI0LDg5LDEyMDY4Miw4OSwxMjA3NDAsODksMTE0MzIsODksMTE5OCw4OSw1MDMzLDg5LDUwNTMsODksNDIyMjAsODksOTQwMTksODksNzE4NDQsODksNjYyMjYsODksMTE5ODU5LDEyMiwxMTk5MTEsMTIyLDExOTk2MywxMjIsMTIwMDE1LDEyMiwxMjAwNjcsMTIyLDEyMDExOSwxMjIsMTIwMTcxLDEyMiwxMjAyMjMsMTIyLDEyMDI3NSwxMjIsMTIwMzI3LDEyMiwxMjAzNzksMTIyLDEyMDQzMSwxMjIsMTIwNDgzLDEyMiw3NDU4LDEyMiw0MzkyMywxMjIsNzE4NzYsMTIyLDY2MjkzLDkwLDcxOTA5LDkwLDY1MzM4LDkwLDg0ODQsOTAsODQ4OCw5MCwxMTk4MzMsOTAsMTE5ODg1LDkwLDExOTkzNyw5MCwxMTk5ODksOTAsMTIwMDQxLDkwLDEyMDE5Nyw5MCwxMjAyNDksOTAsMTIwMzAxLDkwLDEyMDM1Myw5MCwxMjA0MDUsOTAsMTIwNDU3LDkwLDkxOCw5MCwxMjA0OTMsOTAsMTIwNTUxLDkwLDEyMDYwOSw5MCwxMjA2NjcsOTAsMTIwNzI1LDkwLDUwNTksOTAsNDIyMDQsOTAsNzE4NDksOTAsNjUyODIsMzQsNjUyODQsMzYsNjUyODUsMzcsNjUyODYsMzgsNjUyOTAsNDIsNjUyOTEsNDMsNjUyOTQsNDYsNjUyOTUsNDcsNjUyOTYsNDgsNjUyOTcsNDksNjUyOTgsNTAsNjUyOTksNTEsNjUzMDAsNTIsNjUzMDEsNTMsNjUzMDIsNTQsNjUzMDMsNTUsNjUzMDQsNTYsNjUzMDUsNTcsNjUzMDgsNjAsNjUzMDksNjEsNjUzMTAsNjIsNjUzMTIsNjQsNjUzMTYsNjgsNjUzMTgsNzAsNjUzMTksNzEsNjUzMjQsNzYsNjUzMjksODEsNjUzMzAsODIsNjUzMzMsODUsNjUzMzQsODYsNjUzMzUsODcsNjUzNDMsOTUsNjUzNDYsOTgsNjUzNDgsMTAwLDY1MzUwLDEwMiw2NTM1NSwxMDcsNjUzNTcsMTA5LDY1MzU4LDExMCw2NTM2MSwxMTMsNjUzNjIsMTE0LDY1MzY0LDExNiw2NTM2NSwxMTcsNjUzNjcsMTE5LDY1MzcwLDEyMiw2NTM3MSwxMjMsNjUzNzMsMTI1XSwiX2RlZmF1bHQiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiY3MiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImRlIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJlcyI6WzgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJmciI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyNDUsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJpdCI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiamEiOls4MjExLDQ1LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI5Miw0NCw2NTMwNyw1OV0sImtvIjpbODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJwbCI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJwdC1CUiI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJxcHMtcGxvYyI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJydSI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMzA1LDEwNSw5MjEsNzMsMTAwOSwxMTIsMjE1LDEyMCw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInRyIjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInpoLWhhbnMiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODgsNDAsNjUyODksNDFdLCJ6aC1oYW50IjpbODIxMSw0NSw2NTM3NCwxMjYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1MzA3LDU5XX0nKSksY2UuY2FjaGU9bmV3IGNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuY29tcHV0ZUZuPWUsdGhpcy5sYXN0Q2FjaGU9dm9pZCAwLHRoaXMubGFzdEFyZ0tleT12b2lkIDB9Z2V0KGUpe3ZhciB0PUpTT04uc3RyaW5naWZ5KGUpO3JldHVybiB0aGlzLmxhc3RBcmdLZXkhPT10JiYodGhpcy5sYXN0QXJnS2V5PXQsdGhpcy5sYXN0Q2FjaGU9dGhpcy5jb21wdXRlRm4oZSkpLHRoaXMubGFzdENhY2hlfX0oZT0+e2Z1bmN0aW9uIHQodCl7Y29uc3Qgbj1uZXcgTWFwO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9MiluLnNldCh0W2VdLHRbZSsxXSk7cmV0dXJuIG59Y29uc3Qgbj1PLmFtYmlndW91c0NoYXJhY3RlckRhdGEuZ2V0VmFsdWUoKTtsZXQgcj1lLmZpbHRlcihlPT4hZS5zdGFydHNXaXRoKCJfIikmJmUgaW4gbiksaT12b2lkIDA7Zm9yKGNvbnN0IG8gb2Ygcj0wPT09ci5sZW5ndGg/WyJfZGVmYXVsdCJdOnIpe2NvbnN0IGE9dChuW29dKTtpPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuIHQ7Y29uc3Qgbj1uZXcgTWFwO2Zvcih2YXJbcixpXW9mIGUpdC5oYXMocikmJm4uc2V0KHIsaSk7cmV0dXJuIG59KGksYSl9Y29uc3QgYT1mdW5jdGlvbihlLHQpe2NvbnN0IG49bmV3IE1hcChlKTtmb3IodmFyW3IsaV1vZiB0KW4uc2V0KHIsaSk7cmV0dXJuIG59KHQobi5fY29tbW9uKSxpKTtyZXR1cm4gbmV3IGNlKGEpfSksY2UuX2xvY2FsZXM9bmV3IGllKCgpPT5PYmplY3Qua2V5cyhjZS5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhLmdldFZhbHVlKCkpLmZpbHRlcihlPT4hZS5zdGFydHNXaXRoKCJfIikpKTtjbGFzcyBkZXtzdGF0aWMgZ2V0UmF3RGF0YSgpe3JldHVybiBKU09OLnBhcnNlKCJbOSwxMCwxMSwxMiwxMywzMiwxMjcsMTYwLDE3Myw4NDcsMTU2NCw0NDQ3LDQ0NDgsNjA2OCw2MDY5LDYxNTUsNjE1Niw2MTU3LDYxNTgsNzM1NSw3MzU2LDgxOTIsODE5Myw4MTk0LDgxOTUsODE5Niw4MTk3LDgxOTgsODE5OSw4MjAwLDgyMDEsODIwMiw4MjAzLDgyMDQsODIwNSw4MjA2LDgyMDcsODIzNCw4MjM1LDgyMzYsODIzNyw4MjM4LDgyMzksODI4Nyw4Mjg4LDgyODksODI5MCw4MjkxLDgyOTIsODI5Myw4Mjk0LDgyOTUsODI5Niw4Mjk3LDgyOTgsODI5OSw4MzAwLDgzMDEsODMwMiw4MzAzLDEwMjQwLDEyMjg4LDEyNjQ0LDY1MDI0LDY1MDI1LDY1MDI2LDY1MDI3LDY1MDI4LDY1MDI5LDY1MDMwLDY1MDMxLDY1MDMyLDY1MDMzLDY1MDM0LDY1MDM1LDY1MDM2LDY1MDM3LDY1MDM4LDY1MDM5LDY1Mjc5LDY1NDQwLDY1NTIwLDY1NTIxLDY1NTIyLDY1NTIzLDY1NTI0LDY1NTI1LDY1NTI2LDY1NTI3LDY1NTI4LDY1NTMyLDc4ODQ0LDExOTE1NSwxMTkxNTYsMTE5MTU3LDExOTE1OCwxMTkxNTksMTE5MTYwLDExOTE2MSwxMTkxNjIsOTE3NTA0LDkxNzUwNSw5MTc1MDYsOTE3NTA3LDkxNzUwOCw5MTc1MDksOTE3NTEwLDkxNzUxMSw5MTc1MTIsOTE3NTEzLDkxNzUxNCw5MTc1MTUsOTE3NTE2LDkxNzUxNyw5MTc1MTgsOTE3NTE5LDkxNzUyMCw5MTc1MjEsOTE3NTIyLDkxNzUyMyw5MTc1MjQsOTE3NTI1LDkxNzUyNiw5MTc1MjcsOTE3NTI4LDkxNzUyOSw5MTc1MzAsOTE3NTMxLDkxNzUzMiw5MTc1MzMsOTE3NTM0LDkxNzUzNSw5MTc1MzYsOTE3NTM3LDkxNzUzOCw5MTc1MzksOTE3NTQwLDkxNzU0MSw5MTc1NDIsOTE3NTQzLDkxNzU0NCw5MTc1NDUsOTE3NTQ2LDkxNzU0Nyw5MTc1NDgsOTE3NTQ5LDkxNzU1MCw5MTc1NTEsOTE3NTUyLDkxNzU1Myw5MTc1NTQsOTE3NTU1LDkxNzU1Niw5MTc1NTcsOTE3NTU4LDkxNzU1OSw5MTc1NjAsOTE3NTYxLDkxNzU2Miw5MTc1NjMsOTE3NTY0LDkxNzU2NSw5MTc1NjYsOTE3NTY3LDkxNzU2OCw5MTc1NjksOTE3NTcwLDkxNzU3MSw5MTc1NzIsOTE3NTczLDkxNzU3NCw5MTc1NzUsOTE3NTc2LDkxNzU3Nyw5MTc1NzgsOTE3NTc5LDkxNzU4MCw5MTc1ODEsOTE3NTgyLDkxNzU4Myw5MTc1ODQsOTE3NTg1LDkxNzU4Niw5MTc1ODcsOTE3NTg4LDkxNzU4OSw5MTc1OTAsOTE3NTkxLDkxNzU5Miw5MTc1OTMsOTE3NTk0LDkxNzU5NSw5MTc1OTYsOTE3NTk3LDkxNzU5OCw5MTc1OTksOTE3NjAwLDkxNzYwMSw5MTc2MDIsOTE3NjAzLDkxNzYwNCw5MTc2MDUsOTE3NjA2LDkxNzYwNyw5MTc2MDgsOTE3NjA5LDkxNzYxMCw5MTc2MTEsOTE3NjEyLDkxNzYxMyw5MTc2MTQsOTE3NjE1LDkxNzYxNiw5MTc2MTcsOTE3NjE4LDkxNzYxOSw5MTc2MjAsOTE3NjIxLDkxNzYyMiw5MTc2MjMsOTE3NjI0LDkxNzYyNSw5MTc2MjYsOTE3NjI3LDkxNzYyOCw5MTc2MjksOTE3NjMwLDkxNzYzMSw5MTc3NjAsOTE3NzYxLDkxNzc2Miw5MTc3NjMsOTE3NzY0LDkxNzc2NSw5MTc3NjYsOTE3NzY3LDkxNzc2OCw5MTc3NjksOTE3NzcwLDkxNzc3MSw5MTc3NzIsOTE3NzczLDkxNzc3NCw5MTc3NzUsOTE3Nzc2LDkxNzc3Nyw5MTc3NzgsOTE3Nzc5LDkxNzc4MCw5MTc3ODEsOTE3NzgyLDkxNzc4Myw5MTc3ODQsOTE3Nzg1LDkxNzc4Niw5MTc3ODcsOTE3Nzg4LDkxNzc4OSw5MTc3OTAsOTE3NzkxLDkxNzc5Miw5MTc3OTMsOTE3Nzk0LDkxNzc5NSw5MTc3OTYsOTE3Nzk3LDkxNzc5OCw5MTc3OTksOTE3ODAwLDkxNzgwMSw5MTc4MDIsOTE3ODAzLDkxNzgwNCw5MTc4MDUsOTE3ODA2LDkxNzgwNyw5MTc4MDgsOTE3ODA5LDkxNzgxMCw5MTc4MTEsOTE3ODEyLDkxNzgxMyw5MTc4MTQsOTE3ODE1LDkxNzgxNiw5MTc4MTcsOTE3ODE4LDkxNzgxOSw5MTc4MjAsOTE3ODIxLDkxNzgyMiw5MTc4MjMsOTE3ODI0LDkxNzgyNSw5MTc4MjYsOTE3ODI3LDkxNzgyOCw5MTc4MjksOTE3ODMwLDkxNzgzMSw5MTc4MzIsOTE3ODMzLDkxNzgzNCw5MTc4MzUsOTE3ODM2LDkxNzgzNyw5MTc4MzgsOTE3ODM5LDkxNzg0MCw5MTc4NDEsOTE3ODQyLDkxNzg0Myw5MTc4NDQsOTE3ODQ1LDkxNzg0Niw5MTc4NDcsOTE3ODQ4LDkxNzg0OSw5MTc4NTAsOTE3ODUxLDkxNzg1Miw5MTc4NTMsOTE3ODU0LDkxNzg1NSw5MTc4NTYsOTE3ODU3LDkxNzg1OCw5MTc4NTksOTE3ODYwLDkxNzg2MSw5MTc4NjIsOTE3ODYzLDkxNzg2NCw5MTc4NjUsOTE3ODY2LDkxNzg2Nyw5MTc4NjgsOTE3ODY5LDkxNzg3MCw5MTc4NzEsOTE3ODcyLDkxNzg3Myw5MTc4NzQsOTE3ODc1LDkxNzg3Niw5MTc4NzcsOTE3ODc4LDkxNzg3OSw5MTc4ODAsOTE3ODgxLDkxNzg4Miw5MTc4ODMsOTE3ODg0LDkxNzg4NSw5MTc4ODYsOTE3ODg3LDkxNzg4OCw5MTc4ODksOTE3ODkwLDkxNzg5MSw5MTc4OTIsOTE3ODkzLDkxNzg5NCw5MTc4OTUsOTE3ODk2LDkxNzg5Nyw5MTc4OTgsOTE3ODk5LDkxNzkwMCw5MTc5MDEsOTE3OTAyLDkxNzkwMyw5MTc5MDQsOTE3OTA1LDkxNzkwNiw5MTc5MDcsOTE3OTA4LDkxNzkwOSw5MTc5MTAsOTE3OTExLDkxNzkxMiw5MTc5MTMsOTE3OTE0LDkxNzkxNSw5MTc5MTYsOTE3OTE3LDkxNzkxOCw5MTc5MTksOTE3OTIwLDkxNzkyMSw5MTc5MjIsOTE3OTIzLDkxNzkyNCw5MTc5MjUsOTE3OTI2LDkxNzkyNyw5MTc5MjgsOTE3OTI5LDkxNzkzMCw5MTc5MzEsOTE3OTMyLDkxNzkzMyw5MTc5MzQsOTE3OTM1LDkxNzkzNiw5MTc5MzcsOTE3OTM4LDkxNzkzOSw5MTc5NDAsOTE3OTQxLDkxNzk0Miw5MTc5NDMsOTE3OTQ0LDkxNzk0NSw5MTc5NDYsOTE3OTQ3LDkxNzk0OCw5MTc5NDksOTE3OTUwLDkxNzk1MSw5MTc5NTIsOTE3OTUzLDkxNzk1NCw5MTc5NTUsOTE3OTU2LDkxNzk1Nyw5MTc5NTgsOTE3OTU5LDkxNzk2MCw5MTc5NjEsOTE3OTYyLDkxNzk2Myw5MTc5NjQsOTE3OTY1LDkxNzk2Niw5MTc5NjcsOTE3OTY4LDkxNzk2OSw5MTc5NzAsOTE3OTcxLDkxNzk3Miw5MTc5NzMsOTE3OTc0LDkxNzk3NSw5MTc5NzYsOTE3OTc3LDkxNzk3OCw5MTc5NzksOTE3OTgwLDkxNzk4MSw5MTc5ODIsOTE3OTgzLDkxNzk4NCw5MTc5ODUsOTE3OTg2LDkxNzk4Nyw5MTc5ODgsOTE3OTg5LDkxNzk5MCw5MTc5OTEsOTE3OTkyLDkxNzk5Myw5MTc5OTQsOTE3OTk1LDkxNzk5Niw5MTc5OTcsOTE3OTk4LDkxNzk5OV0iKX1zdGF0aWMgZ2V0RGF0YSgpe3JldHVybiB0aGlzLl9kYXRhfHwodGhpcy5fZGF0YT1uZXcgU2V0KGRlLmdldFJhd0RhdGEoKSkpLHRoaXMuX2RhdGF9c3RhdGljIGlzSW52aXNpYmxlQ2hhcmFjdGVyKGUpe3JldHVybiBkZS5nZXREYXRhKCkuaGFzKGUpfXN0YXRpYyBnZXQgY29kZVBvaW50cygpe3JldHVybiBkZS5nZXREYXRhKCl9fWRlLl9kYXRhPXZvaWQgMDtjbGFzcyB1ZXtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLm1ldGhvZD1uLHRoaXMuYXJncz1yLHRoaXMudHlwZT0wfX1jbGFzcyBwZXtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5zZXE9dCx0aGlzLnJlcz1uLHRoaXMuZXJyPXIsdGhpcy50eXBlPTF9fWNsYXNzIG1le2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMudnNXb3JrZXI9ZSx0aGlzLnJlcT10LHRoaXMuZXZlbnROYW1lPW4sdGhpcy5hcmc9cix0aGlzLnR5cGU9Mn19Y2xhc3MgZmV7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMudnNXb3JrZXI9ZSx0aGlzLnJlcT10LHRoaXMuZXZlbnQ9bix0aGlzLnR5cGU9M319Y2xhc3MgZ2V7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLnR5cGU9NH19Y2xhc3MgYmV7Y29uc3RydWN0b3IoZSl7dGhpcy5fd29ya2VySWQ9LTEsdGhpcy5faGFuZGxlcj1lLHRoaXMuX2xhc3RTZW50UmVxPTAsdGhpcy5fcGVuZGluZ1JlcGxpZXM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9wZW5kaW5nRW1pdHRlcnM9bmV3IE1hcCx0aGlzLl9wZW5kaW5nRXZlbnRzPW5ldyBNYXB9c2V0V29ya2VySWQoZSl7dGhpcy5fd29ya2VySWQ9ZX1zZW5kTWVzc2FnZShuLHIpe2NvbnN0IGk9U3RyaW5nKCsrdGhpcy5fbGFzdFNlbnRSZXEpO3JldHVybiBuZXcgUHJvbWlzZSgoZSx0KT0+e3RoaXMuX3BlbmRpbmdSZXBsaWVzW2ldPXtyZXNvbHZlOmUscmVqZWN0OnR9LHRoaXMuX3NlbmQobmV3IHVlKHRoaXMuX3dvcmtlcklkLGksbixyKSl9KX1saXN0ZW4oZSx0KXtsZXQgbj1udWxsO2NvbnN0IHI9bmV3IHRlKHtvbkZpcnN0TGlzdGVuZXJBZGQ6KCk9PntuPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKSx0aGlzLl9wZW5kaW5nRW1pdHRlcnMuc2V0KG4sciksdGhpcy5fc2VuZChuZXcgbWUodGhpcy5fd29ya2VySWQsbixlLHQpKX0sb25MYXN0TGlzdGVuZXJSZW1vdmU6KCk9Pnt0aGlzLl9wZW5kaW5nRW1pdHRlcnMuZGVsZXRlKG4pLHRoaXMuX3NlbmQobmV3IGdlKHRoaXMuX3dvcmtlcklkLG4pKSxuPW51bGx9fSk7cmV0dXJuIHIuZXZlbnR9aGFuZGxlTWVzc2FnZShlKXtlJiZlLnZzV29ya2VyJiYoLTEhPT10aGlzLl93b3JrZXJJZCYmZS52c1dvcmtlciE9PXRoaXMuX3dvcmtlcklkfHx0aGlzLl9oYW5kbGVNZXNzYWdlKGUpKX1faGFuZGxlTWVzc2FnZShlKXtzd2l0Y2goZS50eXBlKXtjYXNlIDE6cmV0dXJuIHRoaXMuX2hhbmRsZVJlcGx5TWVzc2FnZShlKTtjYXNlIDA6cmV0dXJuIHRoaXMuX2hhbmRsZVJlcXVlc3RNZXNzYWdlKGUpO2Nhc2UgMjpyZXR1cm4gdGhpcy5faGFuZGxlU3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpO2Nhc2UgMzpyZXR1cm4gdGhpcy5faGFuZGxlRXZlbnRNZXNzYWdlKGUpO2Nhc2UgNDpyZXR1cm4gdGhpcy5faGFuZGxlVW5zdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSl9fV9oYW5kbGVSZXBseU1lc3NhZ2Uobil7aWYodGhpcy5fcGVuZGluZ1JlcGxpZXNbbi5zZXFdKXtsZXQgdD10aGlzLl9wZW5kaW5nUmVwbGllc1tuLnNlcV07aWYoZGVsZXRlIHRoaXMuX3BlbmRpbmdSZXBsaWVzW24uc2VxXSxuLmVycil7bGV0IGU9bi5lcnI7cmV0dXJuIG4uZXJyLiRpc0Vycm9yJiYoKGU9bmV3IEVycm9yKS5uYW1lPW4uZXJyLm5hbWUsZS5tZXNzYWdlPW4uZXJyLm1lc3NhZ2UsZS5zdGFjaz1uLmVyci5zdGFjayksdm9pZCB0LnJlamVjdChlKX10LnJlc29sdmUobi5yZXMpfWVsc2UgY29uc29sZS53YXJuKCJHb3QgcmVwbHkgdG8gdW5rbm93biBzZXEiKX1faGFuZGxlUmVxdWVzdE1lc3NhZ2UoZSl7bGV0IHQ9ZS5yZXEsbj10aGlzLl9oYW5kbGVyLmhhbmRsZU1lc3NhZ2UoZS5tZXRob2QsZS5hcmdzKTtuLnRoZW4oZT0+e3RoaXMuX3NlbmQobmV3IHBlKHRoaXMuX3dvcmtlcklkLHQsZSx2b2lkIDApKX0sZT0+e2UuZGV0YWlsIGluc3RhbmNlb2YgRXJyb3ImJihlLmRldGFpbD1jKGUuZGV0YWlsKSksdGhpcy5fc2VuZChuZXcgcGUodGhpcy5fd29ya2VySWQsdCx2b2lkIDAsYyhlKSkpfSl9X2hhbmRsZVN1YnNjcmliZUV2ZW50TWVzc2FnZShlKXtjb25zdCB0PWUucmVxO2U9dGhpcy5faGFuZGxlci5oYW5kbGVFdmVudChlLmV2ZW50TmFtZSxlLmFyZykoZT0+e3RoaXMuX3NlbmQobmV3IGZlKHRoaXMuX3dvcmtlcklkLHQsZSkpfSk7dGhpcy5fcGVuZGluZ0V2ZW50cy5zZXQodCxlKX1faGFuZGxlRXZlbnRNZXNzYWdlKGUpe3RoaXMuX3BlbmRpbmdFbWl0dGVycy5oYXMoZS5yZXEpP3RoaXMuX3BlbmRpbmdFbWl0dGVycy5nZXQoZS5yZXEpLmZpcmUoZS5ldmVudCk6Y29uc29sZS53YXJuKCJHb3QgZXZlbnQgZm9yIHVua25vd24gcmVxIil9X2hhbmRsZVVuc3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpe3RoaXMuX3BlbmRpbmdFdmVudHMuaGFzKGUucmVxKT8odGhpcy5fcGVuZGluZ0V2ZW50cy5nZXQoZS5yZXEpLmRpc3Bvc2UoKSx0aGlzLl9wZW5kaW5nRXZlbnRzLmRlbGV0ZShlLnJlcSkpOmNvbnNvbGUud2FybigiR290IHVuc3Vic2NyaWJlIGZvciB1bmtub3duIHJlcSIpfV9zZW5kKHQpe2xldCBuPVtdO2lmKDA9PT10LnR5cGUpZm9yKGxldCBlPTA7ZTx0LmFyZ3MubGVuZ3RoO2UrKyl0LmFyZ3NbZV1pbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZuLnB1c2godC5hcmdzW2VdKTtlbHNlIDE9PT10LnR5cGUmJnQucmVzIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJm4ucHVzaCh0LnJlcyk7dGhpcy5faGFuZGxlci5zZW5kTWVzc2FnZSh0LG4pfX1mdW5jdGlvbiBfZShlKXtyZXR1cm4ibyI9PT1lWzBdJiYibiI9PT1lWzFdJiZzZShlLmNoYXJDb2RlQXQoMikpfWZ1bmN0aW9uIHdlKGUpe3JldHVybi9eb25EeW5hbWljLy50ZXN0KGUpJiZzZShlLmNoYXJDb2RlQXQoOSkpfWZ1bmN0aW9uIHZlKGUsbixyKXtsZXQgdD17fTtmb3IoY29uc3QgaSBvZiBlKXdlKGkpP3RbaV09KHQ9PmZ1bmN0aW9uKGUpe3JldHVybiByKHQsZSl9KShpKTpfZShpKT90W2ldPXIoaSx2b2lkIDApOnRbaV09KHQ9PmZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiBuKHQsZSl9KShpKTtyZXR1cm4gdH1jbGFzcyB5ZXtjb25zdHJ1Y3RvcihuLGUpe3RoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT1lLHRoaXMuX3JlcXVlc3RIYW5kbGVyPW51bGwsdGhpcy5fcHJvdG9jb2w9bmV3IGJlKHtzZW5kTWVzc2FnZTooZSx0KT0+e24oZSx0KX0saGFuZGxlTWVzc2FnZTooZSx0KT0+dGhpcy5faGFuZGxlTWVzc2FnZShlLHQpLGhhbmRsZUV2ZW50OihlLHQpPT50aGlzLl9oYW5kbGVFdmVudChlLHQpfSl9b25tZXNzYWdlKGUpe3RoaXMuX3Byb3RvY29sLmhhbmRsZU1lc3NhZ2UoZSl9X2hhbmRsZU1lc3NhZ2UoZSx0KXtpZigiJGluaXRpYWxpemUiPT09ZSlyZXR1cm4gdGhpcy5pbml0aWFsaXplKHRbMF0sdFsxXSx0WzJdLHRbM10pO2lmKCF0aGlzLl9yZXF1ZXN0SGFuZGxlcnx8ImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK2UpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9yZXF1ZXN0SGFuZGxlcltlXS5hcHBseSh0aGlzLl9yZXF1ZXN0SGFuZGxlcix0KSl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfX1faGFuZGxlRXZlbnQoZSx0KXtpZighdGhpcy5fcmVxdWVzdEhhbmRsZXIpdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIik7aWYod2UoZSkpe3Q9dGhpcy5fcmVxdWVzdEhhbmRsZXJbZV0uY2FsbCh0aGlzLl9yZXF1ZXN0SGFuZGxlcix0KTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZHluYW1pYyBldmVudCAke2V9IG9uIHJlcXVlc3QgaGFuZGxlci5gKTtyZXR1cm4gdH1pZihfZShlKSl7dD10aGlzLl9yZXF1ZXN0SGFuZGxlcltlXTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZXZlbnQgJHtlfSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIHR9dGhyb3cgbmV3IEVycm9yKCJNYWxmb3JtZWQgZXZlbnQgbmFtZSAiK2UpfWluaXRpYWxpemUoZSx0LHIsbil7dGhpcy5fcHJvdG9jb2wuc2V0V29ya2VySWQoZSk7Y29uc3QgaT12ZShuLChlLHQpPT50aGlzLl9wcm90b2NvbC5zZW5kTWVzc2FnZShlLHQpLChlLHQpPT50aGlzLl9wcm90b2NvbC5saXN0ZW4oZSx0KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT8odGhpcy5fcmVxdWVzdEhhbmRsZXI9dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5KGkpLFByb21pc2UucmVzb2x2ZShuZSh0aGlzLl9yZXF1ZXN0SGFuZGxlcikpKToodCYmKHZvaWQgMCE9PXQuYmFzZVVybCYmZGVsZXRlIHQuYmFzZVVybCx2b2lkIDAhPT10LnBhdGhzJiZ2b2lkIDAhPT10LnBhdGhzLnZzJiZkZWxldGUgdC5wYXRocy52cyx0LnRydXN0ZWRUeXBlc1BvbGljeSxkZWxldGUgdC50cnVzdGVkVHlwZXNQb2xpY3ksdC5jYXRjaEVycm9yPSEwLFUucmVxdWlyZS5jb25maWcodCkpLG5ldyBQcm9taXNlKCh0LG4pPT57Y29uc3QgZT1VLnJlcXVpcmU7ZShbcl0sZT0+e3RoaXMuX3JlcXVlc3RIYW5kbGVyPWUuY3JlYXRlKGkpLHRoaXMuX3JlcXVlc3RIYW5kbGVyP3QobmUodGhpcy5fcmVxdWVzdEhhbmRsZXIpKTpuKG5ldyBFcnJvcigiTm8gUmVxdWVzdEhhbmRsZXIhIikpfSxuKX0pKX19Y2xhc3MgVGV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy5vcmlnaW5hbFN0YXJ0PWUsdGhpcy5vcmlnaW5hbExlbmd0aD10LHRoaXMubW9kaWZpZWRTdGFydD1uLHRoaXMubW9kaWZpZWRMZW5ndGg9cn1nZXRPcmlnaW5hbEVuZCgpe3JldHVybiB0aGlzLm9yaWdpbmFsU3RhcnQrdGhpcy5vcmlnaW5hbExlbmd0aH1nZXRNb2RpZmllZEVuZCgpe3JldHVybiB0aGlzLm1vZGlmaWVkU3RhcnQrdGhpcy5tb2RpZmllZExlbmd0aH19ZnVuY3Rpb24ga2UoZSx0KXtyZXR1cm4odDw8NSktdCtlfDB9Y2xhc3MgU2V7Y29uc3RydWN0b3IoZSl7dGhpcy5zb3VyY2U9ZX1nZXRFbGVtZW50cygpe2NvbnN0IG49dGhpcy5zb3VyY2Uscj1uZXcgSW50MzJBcnJheShuLmxlbmd0aCk7Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKXJbZV09bi5jaGFyQ29kZUF0KGUpO3JldHVybiByfX1jbGFzcyBDZXtzdGF0aWMgQXNzZXJ0KGUsdCl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKHQpfX1jbGFzcyB4ZXtzdGF0aWMgQ29weSh0LG4scixpLGEpe2ZvcihsZXQgZT0wO2U8YTtlKyspcltpK2VdPXRbbitlXX1zdGF0aWMgQ29weTIodCxuLHIsaSxhKXtmb3IobGV0IGU9MDtlPGE7ZSsrKXJbaStlXT10W24rZV19fWNsYXNzIExle2NvbnN0cnVjdG9yKCl7dGhpcy5tX2NoYW5nZXM9W10sdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0LHRoaXMubV9vcmlnaW5hbENvdW50PTAsdGhpcy5tX21vZGlmaWVkQ291bnQ9MH1NYXJrTmV4dENoYW5nZSgpeygwPHRoaXMubV9vcmlnaW5hbENvdW50fHwwPHRoaXMubV9tb2RpZmllZENvdW50KSYmdGhpcy5tX2NoYW5nZXMucHVzaChuZXcgVGUodGhpcy5tX29yaWdpbmFsU3RhcnQsdGhpcy5tX29yaWdpbmFsQ291bnQsdGhpcy5tX21vZGlmaWVkU3RhcnQsdGhpcy5tX21vZGlmaWVkQ291bnQpKSx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTAsdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0fUFkZE9yaWdpbmFsRWxlbWVudChlLHQpe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LGUpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LHQpLHRoaXMubV9vcmlnaW5hbENvdW50Kyt9QWRkTW9kaWZpZWRFbGVtZW50KGUsdCl7dGhpcy5tX29yaWdpbmFsU3RhcnQ9TWF0aC5taW4odGhpcy5tX29yaWdpbmFsU3RhcnQsZSksdGhpcy5tX21vZGlmaWVkU3RhcnQ9TWF0aC5taW4odGhpcy5tX21vZGlmaWVkU3RhcnQsdCksdGhpcy5tX21vZGlmaWVkQ291bnQrK31nZXRDaGFuZ2VzKCl7cmV0dXJuKDA8dGhpcy5tX29yaWdpbmFsQ291bnR8fDA8dGhpcy5tX21vZGlmaWVkQ291bnQpJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXN9Z2V0UmV2ZXJzZUNoYW5nZXMoKXtyZXR1cm4oMDx0aGlzLm1fb3JpZ2luYWxDb3VudHx8MDx0aGlzLm1fbW9kaWZpZWRDb3VudCkmJnRoaXMuTWFya05leHRDaGFuZ2UoKSx0aGlzLm1fY2hhbmdlcy5yZXZlcnNlKCksdGhpcy5tX2NoYW5nZXN9fWNsYXNzIEVle2NvbnN0cnVjdG9yKGUsdCxuPW51bGwpe3RoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlPW4sdGhpcy5fb3JpZ2luYWxTZXF1ZW5jZT1lLHRoaXMuX21vZGlmaWVkU2VxdWVuY2U9dDt2YXJbbixlLHJdPUVlLl9nZXRFbGVtZW50cyhlKSxbdCxpLGFdPUVlLl9nZXRFbGVtZW50cyh0KTt0aGlzLl9oYXNTdHJpbmdzPXImJmEsdGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50cz1uLHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2g9ZSx0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzPXQsdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaD1pLHRoaXMubV9mb3J3YXJkSGlzdG9yeT1bXSx0aGlzLm1fcmV2ZXJzZUhpc3Rvcnk9W119c3RhdGljIF9pc1N0cmluZ0FycmF5KGUpe3JldHVybiAwPGUubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mIGVbMF19c3RhdGljIF9nZXRFbGVtZW50cyhlKXt2YXIgbj1lLmdldEVsZW1lbnRzKCk7aWYoRWUuX2lzU3RyaW5nQXJyYXkobikpe2NvbnN0IHI9bmV3IEludDMyQXJyYXkobi5sZW5ndGgpO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKylyW2VdPWZ1bmN0aW9uKG4scil7cj1rZSgxNDk0MTcscik7Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKXI9a2Uobi5jaGFyQ29kZUF0KGUpLHIpO3JldHVybiByfShuW2VdLDApO3JldHVybltuLHIsITBdfXJldHVybiBuIGluc3RhbmNlb2YgSW50MzJBcnJheT9bW10sbiwhMV06W1tdLG5ldyBJbnQzMkFycmF5KG4pLCExXX1FbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1FbGVtZW50c0FyZVN0cmljdEVxdWFsKGUsdCl7cmV0dXJuISF0aGlzLkVsZW1lbnRzQXJlRXF1YWwoZSx0KSYmRWUuX2dldFN0cmljdEVsZW1lbnQodGhpcy5fb3JpZ2luYWxTZXF1ZW5jZSxlKT09PUVlLl9nZXRTdHJpY3RFbGVtZW50KHRoaXMuX21vZGlmaWVkU2VxdWVuY2UsdCl9c3RhdGljIF9nZXRTdHJpY3RFbGVtZW50KGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0U3RyaWN0RWxlbWVudD9lLmdldFN0cmljdEVsZW1lbnQodCk6bnVsbH1PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwoZSx0KXtyZXR1cm4gdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaFtlXT09PXRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbdF0mJighdGhpcy5faGFzU3RyaW5nc3x8dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1tlXT09PXRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbdF0pfU1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbChlLHQpe3JldHVybiB0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW2VdPT09dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFt0XSYmKCF0aGlzLl9oYXNTdHJpbmdzfHx0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW2VdPT09dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1t0XSl9Q29tcHV0ZURpZmYoZSl7cmV0dXJuIHRoaXMuX0NvbXB1dGVEaWZmKDAsdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgtMSwwLHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLTEsZSl9X0NvbXB1dGVEaWZmKGUsdCxuLHIsaSl7dmFyIGE9WyExXTtsZXQgbz10aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKGUsdCxuLHIsYSk7cmV0dXJuIGkmJihvPXRoaXMuUHJldHRpZnlDaGFuZ2VzKG8pKSx7cXVpdEVhcmx5OmFbMF0sY2hhbmdlczpvfX1Db21wdXRlRGlmZlJlY3Vyc2l2ZSh0LG4scixpLGEpe2ZvcihhWzBdPSExO3Q8PW4mJnI8PWkmJnRoaXMuRWxlbWVudHNBcmVFcXVhbCh0LHIpOyl0KysscisrO2Zvcig7dDw9biYmcjw9aSYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKG4saSk7KW4tLSxpLS07aWYobjx0fHxpPHIpe2xldCBlO3JldHVybiBlPXI8PWk/KENlLkFzc2VydCh0PT09bisxLCJvcmlnaW5hbFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gb3JpZ2luYWxFbmQiKSxbbmV3IFRlKHQsMCxyLGktcisxKV0pOnQ8PW4/KENlLkFzc2VydChyPT09aSsxLCJtb2RpZmllZFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gbW9kaWZpZWRFbmQiKSxbbmV3IFRlKHQsbi10KzEsciwwKV0pOihDZS5Bc3NlcnQodD09PW4rMSwib3JpZ2luYWxTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG9yaWdpbmFsRW5kIiksQ2UuQXNzZXJ0KHI9PT1pKzEsIm1vZGlmaWVkU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBtb2RpZmllZEVuZCIpLFtdKX12YXIgbz1bMF0scz1bMF0sbD10aGlzLkNvbXB1dGVSZWN1cnNpb25Qb2ludCh0LG4scixpLG8scyxhKSxvPW9bMF0scz1zWzBdO2lmKG51bGwhPT1sKXJldHVybiBsO2lmKGFbMF0pcmV0dXJuW25ldyBUZSh0LG4tdCsxLHIsaS1yKzEpXTt7bD10aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKHQsbyxyLHMsYSk7bGV0IGU9W107cmV0dXJuIGU9YVswXT9bbmV3IFRlKG8rMSxuLShvKzEpKzEscysxLGktKHMrMSkrMSldOnRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUobysxLG4scysxLGksYSksdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXMobCxlKX19V0FMS1RSQUNFKGMsbixkLHUscCxtLGYsZyxlLGIsdCxfLHcscix2LHksVCxrKXtsZXQgUz1udWxsLGk9bmV3IExlLEM9bix4PWQsYT13WzBdLXlbMF0tdSxvPS0xMDczNzQxODI0LHM9dGhpcy5tX2ZvcndhcmRIaXN0b3J5Lmxlbmd0aC0xO2Rve3ZhciBsPWErYzthPWw9PT1DfHxsPHgmJmVbbC0xXTxlW2wrMV0/KHI9KHQ9ZVtsKzFdKS1hLXUsdDxvJiZpLk1hcmtOZXh0Q2hhbmdlKCksbz10LGkuQWRkTW9kaWZpZWRFbGVtZW50KHQrMSxyKSxsKzEtYyk6KHI9KHQ9ZVtsLTFdKzEpLWEtdSx0PG8mJmkuTWFya05leHRDaGFuZ2UoKSxvPXQtMSxpLkFkZE9yaWdpbmFsRWxlbWVudCh0LHIrMSksbC0xLWMpLDA8PXMmJihjPShlPXRoaXMubV9mb3J3YXJkSGlzdG9yeVtzXSlbMF0sQz0xLHg9ZS5sZW5ndGgtMSl9d2hpbGUoLTE8PS0tcyk7aWYobj1pLmdldFJldmVyc2VDaGFuZ2VzKCksa1swXSl7bGV0IGU9d1swXSsxLHQ9eVswXSsxO2lmKG51bGwhPT1uJiYwPG4ubGVuZ3RoKXtjb25zdCBMPW5bbi5sZW5ndGgtMV07ZT1NYXRoLm1heChlLEwuZ2V0T3JpZ2luYWxFbmQoKSksdD1NYXRoLm1heCh0LEwuZ2V0TW9kaWZpZWRFbmQoKSl9Uz1bbmV3IFRlKGUsXy1lKzEsdCx2LXQrMSldfWVsc2V7aT1uZXcgTGUsQz1tLHg9ZixhPXdbMF0teVswXS1nLG89MTA3Mzc0MTgyNCxzPVQ/dGhpcy5tX3JldmVyc2VIaXN0b3J5Lmxlbmd0aC0xOnRoaXMubV9yZXZlcnNlSGlzdG9yeS5sZW5ndGgtMjtkb3t2YXIgaD1hK3A7YT1oPT09Q3x8aDx4JiZiW2gtMV0+PWJbaCsxXT8ocj0odD1iW2grMV0tMSktYS1nLHQ+byYmaS5NYXJrTmV4dENoYW5nZSgpLG89dCsxLGkuQWRkT3JpZ2luYWxFbGVtZW50KHQrMSxyKzEpLGgrMS1wKToocj0odD1iW2gtMV0pLWEtZyx0Pm8mJmkuTWFya05leHRDaGFuZ2UoKSxvPXQsaS5BZGRNb2RpZmllZEVsZW1lbnQodCsxLHIrMSksaC0xLXApLDA8PXMmJihwPShiPXRoaXMubV9yZXZlcnNlSGlzdG9yeVtzXSlbMF0sQz0xLHg9Yi5sZW5ndGgtMSl9d2hpbGUoLTE8PS0tcyk7Uz1pLmdldENoYW5nZXMoKX1yZXR1cm4gdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXMobixTKX1Db21wdXRlUmVjdXJzaW9uUG9pbnQoaSxhLG0sZixnLGIsXyl7bGV0IG89MCxzPTAsbD0wLHc9MCxoPTAsdj0wO2ktLSxtLS0sYltnWzBdPTBdPTAsdGhpcy5tX2ZvcndhcmRIaXN0b3J5PVtdLHRoaXMubV9yZXZlcnNlSGlzdG9yeT1bXTt2YXIgZT1hLWkrKGYtbSkseT0xK2U7Y29uc3QgYz1uZXcgSW50MzJBcnJheSh5KSxkPW5ldyBJbnQzMkFycmF5KHkpO3ZhciB1PWYtbSxwPWEtaSxUPWktbSxrPWEtZixTPShwLXUpJTI9PTA7Y1t1XT1pLGRbcF09YSxfWzBdPSExO2ZvcihsZXQgcj0xO3I8PWUvMisxO3IrKyl7bGV0IHQ9MCxuPTA7bD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHUtcixyLHUseSksdz10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHUrcixyLHUseSk7Zm9yKGxldCBlPWw7ZTw9dztlKz0yKXtvPWU9PT1sfHxlPHcmJmNbZS0xXTxjW2UrMV0/Y1tlKzFdOmNbZS0xXSsxLHM9by0oZS11KS1UO2Zvcih2YXIgQz1vO288YSYmczxmJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwobysxLHMrMSk7KW8rKyxzKys7aWYoKGNbZV09bykrcz50K24mJih0PW8sbj1zKSwhUyYmTWF0aC5hYnMoZS1wKTw9ci0xJiZvPj1kW2VdKXJldHVybiBnWzBdPW8sYlswXT1zLEM8PWRbZV0mJnI8PTE0NDg/dGhpcy5XQUxLVFJBQ0UodSxsLHcsVCxwLGgsdixrLGMsZCxvLGEsZyxzLGYsYixTLF8pOm51bGx9dmFyIHg9KHQtaSsobi1tKS1yKS8yO2lmKG51bGwhPT10aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZSYmIXRoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlKHQseCkpcmV0dXJuIF9bMF09ITAsZ1swXT10LGJbMF09biwwPHgmJnI8PTE0NDg/dGhpcy5XQUxLVFJBQ0UodSxsLHcsVCxwLGgsdixrLGMsZCxvLGEsZyxzLGYsYixTLF8pOihpKyssbSsrLFtuZXcgVGUoaSxhLWkrMSxtLGYtbSsxKV0pO2g9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChwLXIscixwLHkpLHY9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChwK3IscixwLHkpO2ZvcihsZXQgZT1oO2U8PXY7ZSs9Mil7bz1lPT09aHx8ZTx2JiZkW2UtMV0+PWRbZSsxXT9kW2UrMV0tMTpkW2UtMV0scz1vLShlLXApLWs7Zm9yKHZhciBMPW87bz5pJiZzPm0mJnRoaXMuRWxlbWVudHNBcmVFcXVhbChvLHMpOylvLS0scy0tO2lmKGRbZV09byxTJiZNYXRoLmFicyhlLXUpPD1yJiZvPD1jW2VdKXJldHVybiBnWzBdPW8sYlswXT1zLEw+PWNbZV0mJnI8PTE0NDg/dGhpcy5XQUxLVFJBQ0UodSxsLHcsVCxwLGgsdixrLGMsZCxvLGEsZyxzLGYsYixTLF8pOm51bGx9aWYocjw9MTQ0Nyl7bGV0IGU9bmV3IEludDMyQXJyYXkody1sKzIpO2VbMF09dS1sKzEseGUuQ29weTIoYyxsLGUsMSx3LWwrMSksdGhpcy5tX2ZvcndhcmRIaXN0b3J5LnB1c2goZSksKGU9bmV3IEludDMyQXJyYXkodi1oKzIpKVswXT1wLWgrMSx4ZS5Db3B5MihkLGgsZSwxLHYtaCsxKSx0aGlzLm1fcmV2ZXJzZUhpc3RvcnkucHVzaChlKX19cmV0dXJuIHRoaXMuV0FMS1RSQUNFKHUsbCx3LFQscCxoLHYsayxjLGQsbyxhLGcscyxmLGIsUyxfKX1QcmV0dGlmeUNoYW5nZXMoYSl7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKyspe2NvbnN0IHQ9YVtlXTtmb3IodmFyIGQ9ZTxhLmxlbmd0aC0xP2FbZSsxXS5vcmlnaW5hbFN0YXJ0OnRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLHU9ZTxhLmxlbmd0aC0xP2FbZSsxXS5tb2RpZmllZFN0YXJ0OnRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLHA9MDx0Lm9yaWdpbmFsTGVuZ3RoLG09MDx0Lm1vZGlmaWVkTGVuZ3RoO3Qub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoPGQmJnQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoPHUmJighcHx8dGhpcy5PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwodC5vcmlnaW5hbFN0YXJ0LHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoKSkmJighbXx8dGhpcy5Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwodC5tb2RpZmllZFN0YXJ0LHQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoKSk7KXt2YXIgZj10aGlzLkVsZW1lbnRzQXJlU3RyaWN0RXF1YWwodC5vcmlnaW5hbFN0YXJ0LHQubW9kaWZpZWRTdGFydCk7aWYodGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoLHQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoKSYmIWYpYnJlYWs7dC5vcmlnaW5hbFN0YXJ0KyssdC5tb2RpZmllZFN0YXJ0Kyt9dmFyIGc9W251bGxdO2U8YS5sZW5ndGgtMSYmdGhpcy5DaGFuZ2VzT3ZlcmxhcChhW2VdLGFbZSsxXSxnKSYmKGFbZV09Z1swXSxhLnNwbGljZShlKzEsMSksZS0tKX1mb3IobGV0IGU9YS5sZW5ndGgtMTswPD1lO2UtLSl7Y29uc3QgaD1hW2VdO2xldCB0PTAsbj0wOzA8ZSYmKGw9YVtlLTFdLHQ9bC5vcmlnaW5hbFN0YXJ0K2wub3JpZ2luYWxMZW5ndGgsbj1sLm1vZGlmaWVkU3RhcnQrbC5tb2RpZmllZExlbmd0aCk7dmFyIGI9MDxoLm9yaWdpbmFsTGVuZ3RoLF89MDxoLm1vZGlmaWVkTGVuZ3RoO2xldCByPTAsaT10aGlzLl9ib3VuZGFyeVNjb3JlKGgub3JpZ2luYWxTdGFydCxoLm9yaWdpbmFsTGVuZ3RoLGgubW9kaWZpZWRTdGFydCxoLm1vZGlmaWVkTGVuZ3RoKTtmb3IobGV0IGU9MTs7ZSsrKXt2YXIgbz1oLm9yaWdpbmFsU3RhcnQtZSxzPWgubW9kaWZpZWRTdGFydC1lO2lmKG88dHx8czxuKWJyZWFrO2lmKGImJiF0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChvLG8raC5vcmlnaW5hbExlbmd0aCkpYnJlYWs7aWYoXyYmIXRoaXMuTW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKHMscytoLm1vZGlmaWVkTGVuZ3RoKSlicmVhaztvPShvPT09dCYmcz09PW4/NTowKSt0aGlzLl9ib3VuZGFyeVNjb3JlKG8saC5vcmlnaW5hbExlbmd0aCxzLGgubW9kaWZpZWRMZW5ndGgpO28+aSYmKGk9byxyPWUpfWgub3JpZ2luYWxTdGFydC09cixoLm1vZGlmaWVkU3RhcnQtPXI7dmFyIGw9W251bGxdOzA8ZSYmdGhpcy5DaGFuZ2VzT3ZlcmxhcChhW2UtMV0sYVtlXSxsKSYmKGFbZS0xXT1sWzBdLGEuc3BsaWNlKGUsMSksZSsrKX1pZih0aGlzLl9oYXNTdHJpbmdzKWZvcihsZXQgZT0xLHQ9YS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgaT1hW2UtMV0sYz1hW2VdO3ZhciB3PWMub3JpZ2luYWxTdGFydC1pLm9yaWdpbmFsU3RhcnQtaS5vcmlnaW5hbExlbmd0aCx2PWkub3JpZ2luYWxTdGFydCx5PWMub3JpZ2luYWxTdGFydCtjLm9yaWdpbmFsTGVuZ3RoLG49eS12LHI9aS5tb2RpZmllZFN0YXJ0LFQ9Yy5tb2RpZmllZFN0YXJ0K2MubW9kaWZpZWRMZW5ndGgsaz1ULXI7dzw1JiZuPDIwJiZrPDIwJiYoKHY9dGhpcy5fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZSh2LG4scixrLHcpKSYmKFtuLHJdPXYsbj09PWkub3JpZ2luYWxTdGFydCtpLm9yaWdpbmFsTGVuZ3RoJiZyPT09aS5tb2RpZmllZFN0YXJ0K2kubW9kaWZpZWRMZW5ndGh8fChpLm9yaWdpbmFsTGVuZ3RoPW4taS5vcmlnaW5hbFN0YXJ0LGkubW9kaWZpZWRMZW5ndGg9ci1pLm1vZGlmaWVkU3RhcnQsYy5vcmlnaW5hbFN0YXJ0PW4rdyxjLm1vZGlmaWVkU3RhcnQ9cit3LGMub3JpZ2luYWxMZW5ndGg9eS1jLm9yaWdpbmFsU3RhcnQsYy5tb2RpZmllZExlbmd0aD1ULWMubW9kaWZpZWRTdGFydCkpKX1yZXR1cm4gYX1fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZShlLHQsbixyLGkpe2lmKHQ8aXx8cjxpKXJldHVybiBudWxsO3ZhciBhPWUrdC1pKzEsYz1uK3ItaSsxO2xldCBvPTAscz0wLGw9MDtmb3IobGV0IHQ9ZTt0PGE7dCsrKWZvcihsZXQgZT1uO2U8YztlKyspe3ZhciBoPXRoaXMuX2NvbnRpZ3VvdXNTZXF1ZW5jZVNjb3JlKHQsZSxpKTswPGgmJmg+byYmKG89aCxzPXQsbD1lKX1yZXR1cm4gMDxvP1tzLGxdOm51bGx9X2NvbnRpZ3VvdXNTZXF1ZW5jZVNjb3JlKHQsbixyKXtsZXQgaT0wO2ZvcihsZXQgZT0wO2U8cjtlKyspe2lmKCF0aGlzLkVsZW1lbnRzQXJlRXF1YWwodCtlLG4rZSkpcmV0dXJuIDA7aSs9dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1t0K2VdLmxlbmd0aH1yZXR1cm4gaX1fT3JpZ2luYWxJc0JvdW5kYXJ5KGUpe3JldHVybiBlPD0wfHxlPj10aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xfHx0aGlzLl9oYXNTdHJpbmdzJiYvXlxzKiQvLnRlc3QodGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1tlXSl9X09yaWdpbmFsUmVnaW9uSXNCb3VuZGFyeShlLHQpe2lmKHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShlKXx8dGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KGUtMSkpcmV0dXJuITA7aWYoMDx0KXtlPWUrdDtpZih0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkoZS0xKXx8dGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KGUpKXJldHVybiEwfXJldHVybiExfV9Nb2RpZmllZElzQm91bmRhcnkoZSl7cmV0dXJuIGU8PTB8fGU+PXRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLTF8fHRoaXMuX2hhc1N0cmluZ3MmJi9eXHMqJC8udGVzdCh0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW2VdKX1fTW9kaWZpZWRSZWdpb25Jc0JvdW5kYXJ5KGUsdCl7aWYodGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KGUpfHx0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoZS0xKSlyZXR1cm4hMDtpZigwPHQpe2U9ZSt0O2lmKHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShlLTEpfHx0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoZSkpcmV0dXJuITB9cmV0dXJuITF9X2JvdW5kYXJ5U2NvcmUoZSx0LG4scil7cmV0dXJuKHRoaXMuX09yaWdpbmFsUmVnaW9uSXNCb3VuZGFyeShlLHQpPzE6MCkrKHRoaXMuX01vZGlmaWVkUmVnaW9uSXNCb3VuZGFyeShuLHIpPzE6MCl9Q29uY2F0ZW5hdGVDaGFuZ2VzKGUsdCl7dmFyIG49W107aWYoMD09PWUubGVuZ3RofHwwPT09dC5sZW5ndGgpcmV0dXJuIDA8dC5sZW5ndGg/dDplO2lmKHRoaXMuQ2hhbmdlc092ZXJsYXAoZVtlLmxlbmd0aC0xXSx0WzBdLG4pKXtjb25zdCByPW5ldyBBcnJheShlLmxlbmd0aCt0Lmxlbmd0aC0xKTtyZXR1cm4geGUuQ29weShlLDAsciwwLGUubGVuZ3RoLTEpLHJbZS5sZW5ndGgtMV09blswXSx4ZS5Db3B5KHQsMSxyLGUubGVuZ3RoLHQubGVuZ3RoLTEpLHJ9cmV0dXJuIG49bmV3IEFycmF5KGUubGVuZ3RoK3QubGVuZ3RoKSx4ZS5Db3B5KGUsMCxuLDAsZS5sZW5ndGgpLHhlLkNvcHkodCwwLG4sZS5sZW5ndGgsdC5sZW5ndGgpLG59Q2hhbmdlc092ZXJsYXAobixyLGkpe2lmKENlLkFzc2VydChuLm9yaWdpbmFsU3RhcnQ8PXIub3JpZ2luYWxTdGFydCwiTGVmdCBjaGFuZ2UgaXMgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byByaWdodCBjaGFuZ2UiKSxDZS5Bc3NlcnQobi5tb2RpZmllZFN0YXJ0PD1yLm1vZGlmaWVkU3RhcnQsIkxlZnQgY2hhbmdlIGlzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmlnaHQgY2hhbmdlIiksbi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGg+PXIub3JpZ2luYWxTdGFydHx8bi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGg+PXIubW9kaWZpZWRTdGFydCl7dmFyIGE9bi5vcmlnaW5hbFN0YXJ0O2xldCBlPW4ub3JpZ2luYWxMZW5ndGg7dmFyIG89bi5tb2RpZmllZFN0YXJ0O2xldCB0PW4ubW9kaWZpZWRMZW5ndGg7cmV0dXJuIG4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoPj1yLm9yaWdpbmFsU3RhcnQmJihlPXIub3JpZ2luYWxTdGFydCtyLm9yaWdpbmFsTGVuZ3RoLW4ub3JpZ2luYWxTdGFydCksbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGg+PXIubW9kaWZpZWRTdGFydCYmKHQ9ci5tb2RpZmllZFN0YXJ0K3IubW9kaWZpZWRMZW5ndGgtbi5tb2RpZmllZFN0YXJ0KSxpWzBdPW5ldyBUZShhLGUsbyx0KSwhMH1yZXR1cm4gaVswXT1udWxsLCExfUNsaXBEaWFnb25hbEJvdW5kKGUsdCxuLHIpe2lmKDA8PWUmJmU8cilyZXR1cm4gZTt0PXQlMj09MDtyZXR1cm4gZTwwP3Q9PShuJTI9PTApPzA6MTp0PT0oKHItbi0xKSUyPT0wKT9yLTE6ci0yfX1sZXQgQWU7aWYodm9pZCAwIT09VS52c2NvZGUmJnZvaWQgMCE9PVUudnNjb2RlLnByb2Nlc3Mpe2NvbnN0IGRhPVUudnNjb2RlLnByb2Nlc3M7QWU9e2dldCBwbGF0Zm9ybSgpe3JldHVybiBkYS5wbGF0Zm9ybX0sZ2V0IGFyY2goKXtyZXR1cm4gZGEuYXJjaH0sZ2V0IGVudigpe3JldHVybiBkYS5lbnZ9LGN3ZCgpe3JldHVybiBkYS5jd2QoKX19fWVsc2UgQWU9InVuZGVmaW5lZCIhPXR5cGVvZiBwcm9jZXNzP3tnZXQgcGxhdGZvcm0oKXtyZXR1cm4gcHJvY2Vzcy5wbGF0Zm9ybX0sZ2V0IGFyY2goKXtyZXR1cm4gcHJvY2Vzcy5hcmNofSxnZXQgZW52KCl7cmV0dXJuIHByb2Nlc3MuZW52fSxjd2QoKXtyZXR1cm4gcHJvY2Vzcy5lbnYuVlNDT0RFX0NXRHx8cHJvY2Vzcy5jd2QoKX19OntnZXQgcGxhdGZvcm0oKXtyZXR1cm4gRD8id2luMzIiOlc/ImRhcndpbiI6ImxpbnV4In0sZ2V0IGFyY2goKXt9LGdldCBlbnYoKXtyZXR1cm57fX0sY3dkKCl7cmV0dXJuIi8ifX07Y29uc3QgTWU9QWUuY3dkLFJlPUFlLmVudjt2YXIgSWUsTmUsdD1BZS5wbGF0Zm9ybTtjbGFzcyBVZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsdCxuKXtsZXQgcjsic3RyaW5nIj09dHlwZW9mIHQmJjA9PT10LmluZGV4T2YoIm5vdCAiKT8ocj0ibXVzdCBub3QgYmUiLHQ9dC5yZXBsYWNlKC9ebm90IC8sIiIpKTpyPSJtdXN0IGJlIjt2YXIgaT0tMSE9PWUuaW5kZXhPZigiLiIpPyJwcm9wZXJ0eSI6ImFyZ3VtZW50IixlPWBUaGUgIiR7ZX0iICR7aX0gJHtyfSBvZiB0eXBlIGArdDtzdXBlcihlKz0iLiBSZWNlaXZlZCB0eXBlICIrdHlwZW9mIG4pLHRoaXMuY29kZT0iRVJSX0lOVkFMSURfQVJHX1RZUEUifX1mdW5jdGlvbiB6ZShlLHQpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgVWUodCwic3RyaW5nIixlKX1mdW5jdGlvbiB1KGUpe3JldHVybiA0Nz09PWV8fDkyPT09ZX1mdW5jdGlvbiBIZShlKXtyZXR1cm4gNDc9PT1lfWZ1bmN0aW9uIERlKGUpe3JldHVybiA2NTw9ZSYmZTw9OTB8fDk3PD1lJiZlPD0xMjJ9ZnVuY3Rpb24gV2UodCxuLHIsaSl7bGV0IGE9IiIsbz0wLHM9LTEsbD0wLGg9MDtmb3IobGV0IGU9MDtlPD10Lmxlbmd0aDsrK2Upe2lmKGU8dC5sZW5ndGgpaD10LmNoYXJDb2RlQXQoZSk7ZWxzZXtpZihpKGgpKWJyZWFrO2g9NDd9aWYoaShoKSl7aWYocyE9PWUtMSYmMSE9PWwpaWYoMj09PWwpe2lmKGEubGVuZ3RoPDJ8fDIhPT1vfHw0NiE9PWEuY2hhckNvZGVBdChhLmxlbmd0aC0xKXx8NDYhPT1hLmNoYXJDb2RlQXQoYS5sZW5ndGgtMikpe2lmKDI8YS5sZW5ndGgpe3ZhciBjPWEubGFzdEluZGV4T2Yocik7bz0tMT09PWM/KGE9IiIsMCk6KGE9YS5zbGljZSgwLGMpKS5sZW5ndGgtMS1hLmxhc3RJbmRleE9mKHIpLHM9ZSxsPTA7Y29udGludWV9aWYoMCE9PWEubGVuZ3RoKXthPSIiLG89MCxzPWUsbD0wO2NvbnRpbnVlfX1uJiYoYSs9MDxhLmxlbmd0aD9yKyIuLiI6Ii4uIixvPTIpfWVsc2UgMDxhLmxlbmd0aD9hKz0iIityK3Quc2xpY2UocysxLGUpOmE9dC5zbGljZShzKzEsZSksbz1lLXMtMTtzPWUsbD0wfWVsc2UgNDY9PT1oJiYtMSE9PWw/KytsOmw9LTF9cmV0dXJuIGF9ZnVuY3Rpb24gUGUoZSx0KXtpZihudWxsPT09dHx8Im9iamVjdCIhPXR5cGVvZiB0KXRocm93IG5ldyBVZSgicGF0aE9iamVjdCIsIk9iamVjdCIsdCk7dmFyIG49dC5kaXJ8fHQucm9vdCxyPXQuYmFzZXx8IiIrKHQubmFtZXx8IiIpKyh0LmV4dHx8IiIpO3JldHVybiBuP249PT10LnJvb3Q/IiIrbityOiIiK24rZStyOnJ9Y29uc3QgT2U9e3Jlc29sdmUoLi4uYSl7bGV0IG89IiIscz0iIixsPSExO2ZvcihsZXQgdD1hLmxlbmd0aC0xOy0xPD10O3QtLSl7bGV0IG47aWYoMDw9dCl7aWYoemUobj1hW3RdLCJwYXRoIiksMD09PW4ubGVuZ3RoKWNvbnRpbnVlfWVsc2UgMD09PW8ubGVuZ3RoP249TWUoKToodm9pZCAwPT09KG49UmVbIj0iK29dfHxNZSgpKXx8bi5zbGljZSgwLDIpLnRvTG93ZXJDYXNlKCkhPT1vLnRvTG93ZXJDYXNlKCkmJjkyPT09bi5jaGFyQ29kZUF0KDIpKSYmKG49bysiXFwiKTt2YXIgaD1uLmxlbmd0aDtsZXQgcj0wLGk9IiIsZT0hMTt2YXIgYz1uLmNoYXJDb2RlQXQoMCk7aWYoMT09PWgpdShjKSYmKHI9MSxlPSEwKTtlbHNlIGlmKHUoYykpaWYoZT0hMCx1KG4uY2hhckNvZGVBdCgxKSkpe2xldCBlPTIsdD1lO2Zvcig7ZTxoJiYhdShuLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxoJiZlIT09dCl7dmFyIGQ9bi5zbGljZSh0LGUpO2Zvcih0PWU7ZTxoJiZ1KG4uY2hhckNvZGVBdChlKSk7KWUrKztpZihlPGgmJmUhPT10KXtmb3IodD1lO2U8aCYmIXUobi5jaGFyQ29kZUF0KGUpKTspZSsrO2UhPT1oJiZlPT09dHx8KGk9YFxcXFwke2R9XFxgK24uc2xpY2UodCxlKSxyPWUpfX19ZWxzZSByPTE7ZWxzZSBEZShjKSYmNTg9PT1uLmNoYXJDb2RlQXQoMSkmJihpPW4uc2xpY2UoMCwyKSwocj0yKTxoJiZ1KG4uY2hhckNvZGVBdCgyKSkmJihlPSEwLHI9MykpO2lmKDA8aS5sZW5ndGgpaWYoMDxvLmxlbmd0aCl7aWYoaS50b0xvd2VyQ2FzZSgpIT09by50b0xvd2VyQ2FzZSgpKWNvbnRpbnVlfWVsc2Ugbz1pO2lmKGwpe2lmKDA8by5sZW5ndGgpYnJlYWt9ZWxzZSBpZihzPW4uc2xpY2UocikrIlxcIitzLChsPWUpJiYwPG8ubGVuZ3RoKWJyZWFrfXJldHVybiBzPVdlKHMsIWwsIlxcIix1KSxsP28rIlxcIitzOiIiK28rc3x8Ii4ifSxub3JtYWxpemUobil7emUobiwicGF0aCIpO3ZhciByPW4ubGVuZ3RoO2lmKDA9PT1yKXJldHVybiIuIjtsZXQgaT0wLGEsZT0hMTt2YXIgdD1uLmNoYXJDb2RlQXQoMCk7aWYoMT09PXIpcmV0dXJuIEhlKHQpPyJcXCI6bjtpZih1KHQpKWlmKGU9ITAsdShuLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8ciYmIXUobi5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8ciYmZSE9PXQpe3ZhciBvPW4uc2xpY2UodCxlKTtmb3IodD1lO2U8ciYmdShuLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxyJiZlIT09dCl7Zm9yKHQ9ZTtlPHImJiF1KG4uY2hhckNvZGVBdChlKSk7KWUrKztpZihlPT09cilyZXR1cm5gXFxcXCR7b31cXCR7bi5zbGljZSh0KX1cXGA7ZSE9PXQmJihhPWBcXFxcJHtvfVxcYCtuLnNsaWNlKHQsZSksaT1lKX19fWVsc2UgaT0xO2Vsc2UgRGUodCkmJjU4PT09bi5jaGFyQ29kZUF0KDEpJiYoYT1uLnNsaWNlKDAsMiksKGk9Mik8ciYmdShuLmNoYXJDb2RlQXQoMikpJiYoZT0hMCxpPTMpKTtsZXQgcz1pPHI/V2Uobi5zbGljZShpKSwhZSwiXFwiLHUpOiIiO3JldHVybiAwPChzPTAhPT1zLmxlbmd0aHx8ZT9zOiIuIikubGVuZ3RoJiZ1KG4uY2hhckNvZGVBdChyLTEpKSYmKHMrPSJcXCIpLHZvaWQgMD09PWE/ZT8iXFwiK3M6czplP2ErIlxcIitzOiIiK2Erc30saXNBYnNvbHV0ZShlKXt6ZShlLCJwYXRoIik7dmFyIHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuITE7dmFyIG49ZS5jaGFyQ29kZUF0KDApO3JldHVybiB1KG4pfHwyPHQmJkRlKG4pJiY1OD09PWUuY2hhckNvZGVBdCgxKSYmdShlLmNoYXJDb2RlQXQoMikpfSxqb2luKC4uLnQpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4iLiI7bGV0IG4scjtmb3IobGV0IGU9MDtlPHQubGVuZ3RoOysrZSl7dmFyIGk9dFtlXTt6ZShpLCJwYXRoIiksMDxpLmxlbmd0aCYmKHZvaWQgMD09PW4/bj1yPWk6bis9IlxcIitpKX1pZih2b2lkIDA9PT1uKXJldHVybiIuIjtsZXQgZT0hMCxhPTA7dmFyIG87aWYoInN0cmluZyI9PXR5cGVvZiByJiZ1KHIuY2hhckNvZGVBdCgwKSkmJigrK2EsMTwobz1yLmxlbmd0aCkmJnUoci5jaGFyQ29kZUF0KDEpKSYmKCsrYSwyPG8mJih1KHIuY2hhckNvZGVBdCgyKSk/KythOmU9ITEpKSksZSl7Zm9yKDthPG4ubGVuZ3RoJiZ1KG4uY2hhckNvZGVBdChhKSk7KWErKzsyPD1hJiYobj0iXFwiK24uc2xpY2UoYSkpfXJldHVybiBPZS5ub3JtYWxpemUobil9LHJlbGF0aXZlKGUsdCl7aWYoemUoZSwiZnJvbSIpLHplKHQsInRvIiksZT09PXQpcmV0dXJuIiI7Y29uc3QgYz1PZS5yZXNvbHZlKGUpLG49T2UucmVzb2x2ZSh0KTtpZihjPT09bilyZXR1cm4iIjtpZigoZT1jLnRvTG93ZXJDYXNlKCkpPT09KHQ9bi50b0xvd2VyQ2FzZSgpKSlyZXR1cm4iIjtsZXQgcj0wO2Zvcig7cjxlLmxlbmd0aCYmOTI9PT1lLmNoYXJDb2RlQXQocik7KXIrKztsZXQgaT1lLmxlbmd0aDtmb3IoO2ktMT5yJiY5Mj09PWUuY2hhckNvZGVBdChpLTEpOylpLS07dmFyIGQ9aS1yO2xldCBhPTA7Zm9yKDthPHQubGVuZ3RoJiY5Mj09PXQuY2hhckNvZGVBdChhKTspYSsrO2xldCBvPXQubGVuZ3RoO2Zvcig7by0xPmEmJjkyPT09dC5jaGFyQ29kZUF0KG8tMSk7KW8tLTt2YXIgdT1vLWEscz1kPHU/ZDp1O2xldCBsPS0xLGg9MDtmb3IoO2g8cztoKyspe3ZhciBwPWUuY2hhckNvZGVBdChyK2gpO2lmKHAhPT10LmNoYXJDb2RlQXQoYStoKSlicmVhazs5Mj09PXAmJihsPWgpfWlmKGghPT1zKXtpZigtMT09PWwpcmV0dXJuIG59ZWxzZXtpZihzPHUpe2lmKDkyPT09dC5jaGFyQ29kZUF0KGEraCkpcmV0dXJuIG4uc2xpY2UoYStoKzEpO2lmKDI9PT1oKXJldHVybiBuLnNsaWNlKGEraCl9czxkJiYoOTI9PT1lLmNoYXJDb2RlQXQocitoKT9sPWg6Mj09PWgmJihsPTMpKSwtMT09PWwmJihsPTApfWxldCBtPSIiO2ZvcihoPXIrbCsxO2g8PWk7KytoKWghPT1pJiY5MiE9PWUuY2hhckNvZGVBdChoKXx8KG0rPTA9PT1tLmxlbmd0aD8iLi4iOiJcXC4uIik7cmV0dXJuIGErPWwsMDxtLmxlbmd0aD8iIittK24uc2xpY2UoYSxvKTooOTI9PT1uLmNoYXJDb2RlQXQoYSkmJisrYSxuLnNsaWNlKGEsbykpfSx0b05hbWVzcGFjZWRQYXRoKGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gZTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIiI7Y29uc3QgdD1PZS5yZXNvbHZlKGUpO2lmKHQubGVuZ3RoPD0yKXJldHVybiBlO2lmKDkyPT09dC5jaGFyQ29kZUF0KDApKXtpZig5Mj09PXQuY2hhckNvZGVBdCgxKSl7dmFyIG49dC5jaGFyQ29kZUF0KDIpO2lmKDYzIT09biYmNDYhPT1uKXJldHVybiJcXFxcP1xcVU5DXFwiK3Quc2xpY2UoMil9fWVsc2UgaWYoRGUodC5jaGFyQ29kZUF0KDApKSYmNTg9PT10LmNoYXJDb2RlQXQoMSkmJjkyPT09dC5jaGFyQ29kZUF0KDIpKXJldHVybiJcXFxcP1xcIit0O3JldHVybiBlfSxkaXJuYW1lKG4pe3plKG4sInBhdGgiKTt2YXIgcj1uLmxlbmd0aDtpZigwPT09cilyZXR1cm4iLiI7bGV0IGk9LTEsYT0wO3ZhciBlPW4uY2hhckNvZGVBdCgwKTtpZigxPT09cilyZXR1cm4gdShlKT9uOiIuIjtpZih1KGUpKXtpZihpPWE9MSx1KG4uY2hhckNvZGVBdCgxKSkpe2xldCBlPTIsdD1lO2Zvcig7ZTxyJiYhdShuLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxyJiZlIT09dCl7Zm9yKHQ9ZTtlPHImJnUobi5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8ciYmZSE9PXQpe2Zvcih0PWU7ZTxyJiYhdShuLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZT09PXIpcmV0dXJuIG47ZSE9PXQmJihpPWE9ZSsxKX19fX1lbHNlIERlKGUpJiY1OD09PW4uY2hhckNvZGVBdCgxKSYmKGk9MjxyJiZ1KG4uY2hhckNvZGVBdCgyKSk/MzoyLGE9aSk7bGV0IHQ9LTEsbz0hMDtmb3IobGV0IGU9ci0xO2U+PWE7LS1lKWlmKHUobi5jaGFyQ29kZUF0KGUpKSl7aWYoIW8pe3Q9ZTticmVha319ZWxzZSBvPSExO2lmKC0xPT09dCl7aWYoLTE9PT1pKXJldHVybiIuIjt0PWl9cmV0dXJuIG4uc2xpY2UoMCx0KX0sYmFzZW5hbWUobixyKXt2b2lkIDAhPT1yJiZ6ZShyLCJleHQiKSx6ZShuLCJwYXRoIik7bGV0IGk9MCxhPS0xLG89ITAscztpZigyPD1uLmxlbmd0aCYmRGUobi5jaGFyQ29kZUF0KDApKSYmNTg9PT1uLmNoYXJDb2RlQXQoMSkmJihpPTIpLHZvaWQgMCE9PXImJjA8ci5sZW5ndGgmJnIubGVuZ3RoPD1uLmxlbmd0aCl7aWYocj09PW4pcmV0dXJuIiI7bGV0IGU9ci5sZW5ndGgtMSx0PS0xO2ZvcihzPW4ubGVuZ3RoLTE7cz49aTstLXMpe3ZhciBsPW4uY2hhckNvZGVBdChzKTtpZih1KGwpKXtpZighbyl7aT1zKzE7YnJlYWt9fWVsc2UtMT09PXQmJihvPSExLHQ9cysxKSwwPD1lJiYobD09PXIuY2hhckNvZGVBdChlKT8tMT09LS1lJiYoYT1zKTooZT0tMSxhPXQpKX1yZXR1cm4gaT09PWE/YT10Oi0xPT09YSYmKGE9bi5sZW5ndGgpLG4uc2xpY2UoaSxhKX1mb3Iocz1uLmxlbmd0aC0xO3M+PWk7LS1zKWlmKHUobi5jaGFyQ29kZUF0KHMpKSl7aWYoIW8pe2k9cysxO2JyZWFrfX1lbHNlLTE9PT1hJiYobz0hMSxhPXMrMSk7cmV0dXJuLTE9PT1hPyIiOm4uc2xpY2UoaSxhKX0sZXh0bmFtZSh0KXt6ZSh0LCJwYXRoIik7bGV0IG49MCxyPS0xLGk9MCxhPS0xLG89ITAscz0wOzI8PXQubGVuZ3RoJiY1OD09PXQuY2hhckNvZGVBdCgxKSYmRGUodC5jaGFyQ29kZUF0KDApKSYmKG49aT0yKTtmb3IobGV0IGU9dC5sZW5ndGgtMTtlPj1uOy0tZSl7dmFyIGw9dC5jaGFyQ29kZUF0KGUpO2lmKHUobCkpe2lmKG8pY29udGludWU7aT1lKzE7YnJlYWt9LTE9PT1hJiYobz0hMSxhPWUrMSksNDY9PT1sPy0xPT09cj9yPWU6MSE9PXMmJihzPTEpOi0xIT09ciYmKHM9LTEpfXJldHVybi0xPT09cnx8LTE9PT1hfHwwPT09c3x8MT09PXMmJnI9PT1hLTEmJnI9PT1pKzE/IiI6dC5zbGljZShyLGEpfSxmb3JtYXQ6UGUuYmluZChudWxsLCJcXCIpLHBhcnNlKG4pe3plKG4sInBhdGgiKTtjb25zdCBlPXtyb290OiIiLGRpcjoiIixiYXNlOiIiLGV4dDoiIixuYW1lOiIifTtpZigwPT09bi5sZW5ndGgpcmV0dXJuIGU7dmFyIHI9bi5sZW5ndGg7bGV0IGk9MCx0PW4uY2hhckNvZGVBdCgwKTtpZigxPT09cilyZXR1cm4gdSh0KT9lLnJvb3Q9ZS5kaXI9bjplLmJhc2U9ZS5uYW1lPW4sZTtpZih1KHQpKXtpZihpPTEsdShuLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8ciYmIXUobi5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8ciYmZSE9PXQpe2Zvcih0PWU7ZTxyJiZ1KG4uY2hhckNvZGVBdChlKSk7KWUrKztpZihlPHImJmUhPT10KXtmb3IodD1lO2U8ciYmIXUobi5jaGFyQ29kZUF0KGUpKTspZSsrO2U9PT1yP2k9ZTplIT09dCYmKGk9ZSsxKX19fX1lbHNlIGlmKERlKHQpJiY1OD09PW4uY2hhckNvZGVBdCgxKSl7aWYocjw9MilyZXR1cm4gZS5yb290PWUuZGlyPW4sZTtpZihpPTIsdShuLmNoYXJDb2RlQXQoMikpKXtpZigzPT09cilyZXR1cm4gZS5yb290PWUuZGlyPW4sZTtpPTN9fTA8aSYmKGUucm9vdD1uLnNsaWNlKDAsaSkpO2xldCBhPS0xLG89aSxzPS0xLGM9ITAsbD1uLmxlbmd0aC0xLGg9MDtmb3IoO2w+PWk7LS1sKXtpZih1KHQ9bi5jaGFyQ29kZUF0KGwpKSl7aWYoYyljb250aW51ZTtvPWwrMTticmVha30tMT09PXMmJihjPSExLHM9bCsxKSw0Nj09PXQ/LTE9PT1hP2E9bDoxIT09aCYmKGg9MSk6LTEhPT1hJiYoaD0tMSl9cmV0dXJuLTEhPT1zJiYoLTE9PT1hfHwwPT09aHx8MT09PWgmJmE9PT1zLTEmJmE9PT1vKzE/ZS5iYXNlPWUubmFtZT1uLnNsaWNlKG8scyk6KGUubmFtZT1uLnNsaWNlKG8sYSksZS5iYXNlPW4uc2xpY2UobyxzKSxlLmV4dD1uLnNsaWNlKGEscykpKSwwPG8mJm8hPT1pP2UuZGlyPW4uc2xpY2UoMCxvLTEpOmUuZGlyPWUucm9vdCxlfSxzZXA6IlxcIixkZWxpbWl0ZXI6IjsiLHdpbjMyOm51bGwscG9zaXg6bnVsbH0scWU9e3Jlc29sdmUoLi4udCl7bGV0IG49IiIscj0hMTtmb3IobGV0IGU9dC5sZW5ndGgtMTstMTw9ZSYmIXI7ZS0tKXtjb25zdCBpPTA8PWU/dFtlXTpNZSgpO3plKGksInBhdGgiKSwwIT09aS5sZW5ndGgmJihuPWkrIi8iK24scj00Nz09PWkuY2hhckNvZGVBdCgwKSl9cmV0dXJuIG49V2UobiwhciwiLyIsSGUpLHI/Ii8iK246MDxuLmxlbmd0aD9uOiIuIn0sbm9ybWFsaXplKGUpe2lmKHplKGUsInBhdGgiKSwwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO3ZhciB0PTQ3PT09ZS5jaGFyQ29kZUF0KDApLG49NDc9PT1lLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSk7cmV0dXJuIDA9PT0oZT1XZShlLCF0LCIvIixIZSkpLmxlbmd0aD90PyIvIjpuPyIuLyI6Ii4iOihuJiYoZSs9Ii8iKSx0PyIvIitlOmUpfSxpc0Fic29sdXRlKGUpe3JldHVybiB6ZShlLCJwYXRoIiksMDxlLmxlbmd0aCYmNDc9PT1lLmNoYXJDb2RlQXQoMCl9LGpvaW4oLi4udCl7aWYoMD09PXQubGVuZ3RoKXJldHVybiIuIjtsZXQgbjtmb3IobGV0IGU9MDtlPHQubGVuZ3RoOysrZSl7dmFyIHI9dFtlXTt6ZShyLCJwYXRoIiksMDxyLmxlbmd0aCYmKHZvaWQgMD09PW4/bj1yOm4rPSIvIityKX1yZXR1cm4gdm9pZCAwPT09bj8iLiI6cWUubm9ybWFsaXplKG4pfSxyZWxhdGl2ZShlLHQpe2lmKHplKGUsImZyb20iKSx6ZSh0LCJ0byIpLGU9PT10KXJldHVybiIiO2lmKChlPXFlLnJlc29sdmUoZSkpPT09KHQ9cWUucmVzb2x2ZSh0KSkpcmV0dXJuIiI7dmFyIG49ZS5sZW5ndGgscj1uLTEsaT10Lmxlbmd0aC0xLGE9cjxpP3I6aTtsZXQgbz0tMSxzPTA7Zm9yKDtzPGE7cysrKXt2YXIgbD1lLmNoYXJDb2RlQXQoMStzKTtpZihsIT09dC5jaGFyQ29kZUF0KDErcykpYnJlYWs7NDc9PT1sJiYobz1zKX1pZihzPT09YSlpZihhPGkpe2lmKDQ3PT09dC5jaGFyQ29kZUF0KDErcykpcmV0dXJuIHQuc2xpY2UoMStzKzEpO2lmKDA9PT1zKXJldHVybiB0LnNsaWNlKDErcyl9ZWxzZSBhPHImJig0Nz09PWUuY2hhckNvZGVBdCgxK3MpP289czowPT09cyYmKG89MCkpO2xldCBoPSIiO2ZvcihzPTErbysxO3M8PW47KytzKXMhPT1uJiY0NyE9PWUuY2hhckNvZGVBdChzKXx8KGgrPTA9PT1oLmxlbmd0aD8iLi4iOiIvLi4iKTtyZXR1cm4iIitoK3Quc2xpY2UoMStvKX0sdG9OYW1lc3BhY2VkUGF0aChlKXtyZXR1cm4gZX0sZGlybmFtZSh0KXtpZih6ZSh0LCJwYXRoIiksMD09PXQubGVuZ3RoKXJldHVybiIuIjt2YXIgZT00Nz09PXQuY2hhckNvZGVBdCgwKTtsZXQgbj0tMSxyPSEwO2ZvcihsZXQgZT10Lmxlbmd0aC0xOzE8PWU7LS1lKWlmKDQ3PT09dC5jaGFyQ29kZUF0KGUpKXtpZighcil7bj1lO2JyZWFrfX1lbHNlIHI9ITE7cmV0dXJuLTE9PT1uP2U/Ii8iOiIuIjplJiYxPT09bj8iLy8iOnQuc2xpY2UoMCxuKX0sYmFzZW5hbWUobixyKXt2b2lkIDAhPT1yJiZ6ZShyLCJleHQiKSx6ZShuLCJwYXRoIik7bGV0IGk9MCxhPS0xLG89ITAscztpZih2b2lkIDAhPT1yJiYwPHIubGVuZ3RoJiZyLmxlbmd0aDw9bi5sZW5ndGgpe2lmKHI9PT1uKXJldHVybiIiO2xldCBlPXIubGVuZ3RoLTEsdD0tMTtmb3Iocz1uLmxlbmd0aC0xOzA8PXM7LS1zKXt2YXIgbD1uLmNoYXJDb2RlQXQocyk7aWYoNDc9PT1sKXtpZighbyl7aT1zKzE7YnJlYWt9fWVsc2UtMT09PXQmJihvPSExLHQ9cysxKSwwPD1lJiYobD09PXIuY2hhckNvZGVBdChlKT8tMT09LS1lJiYoYT1zKTooZT0tMSxhPXQpKX1yZXR1cm4gaT09PWE/YT10Oi0xPT09YSYmKGE9bi5sZW5ndGgpLG4uc2xpY2UoaSxhKX1mb3Iocz1uLmxlbmd0aC0xOzA8PXM7LS1zKWlmKDQ3PT09bi5jaGFyQ29kZUF0KHMpKXtpZighbyl7aT1zKzE7YnJlYWt9fWVsc2UtMT09PWEmJihvPSExLGE9cysxKTtyZXR1cm4tMT09PWE/IiI6bi5zbGljZShpLGEpfSxleHRuYW1lKHQpe3plKHQsInBhdGgiKTtsZXQgbj0tMSxyPTAsaT0tMSxhPSEwLG89MDtmb3IobGV0IGU9dC5sZW5ndGgtMTswPD1lOy0tZSl7dmFyIHM9dC5jaGFyQ29kZUF0KGUpO2lmKDQ3PT09cyl7aWYoYSljb250aW51ZTtyPWUrMTticmVha30tMT09PWkmJihhPSExLGk9ZSsxKSw0Nj09PXM/LTE9PT1uP249ZToxIT09byYmKG89MSk6LTEhPT1uJiYobz0tMSl9cmV0dXJuLTE9PT1ufHwtMT09PWl8fDA9PT1vfHwxPT09byYmbj09PWktMSYmbj09PXIrMT8iIjp0LnNsaWNlKG4saSl9LGZvcm1hdDpQZS5iaW5kKG51bGwsIi8iKSxwYXJzZShlKXt6ZShlLCJwYXRoIik7Y29uc3QgdD17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PWUubGVuZ3RoKXJldHVybiB0O3ZhciBuPTQ3PT09ZS5jaGFyQ29kZUF0KDApO2xldCByLGk9KHI9bj8odC5yb290PSIvIiwxKTowLC0xKSxhPTAsbz0tMSxzPSEwLGw9ZS5sZW5ndGgtMSxoPTA7Zm9yKDtsPj1yOy0tbCl7dmFyIGM9ZS5jaGFyQ29kZUF0KGwpO2lmKDQ3PT09Yyl7aWYocyljb250aW51ZTthPWwrMTticmVha30tMT09PW8mJihzPSExLG89bCsxKSw0Nj09PWM/LTE9PT1pP2k9bDoxIT09aCYmKGg9MSk6LTEhPT1pJiYoaD0tMSl9aWYoLTEhPT1vKXtjb25zdCByPTA9PT1hJiZuPzE6YTstMT09PWl8fDA9PT1ofHwxPT09aCYmaT09PW8tMSYmaT09PWErMT90LmJhc2U9dC5uYW1lPWUuc2xpY2UocixvKToodC5uYW1lPWUuc2xpY2UocixpKSx0LmJhc2U9ZS5zbGljZShyLG8pLHQuZXh0PWUuc2xpY2UoaSxvKSl9cmV0dXJuIDA8YT90LmRpcj1lLnNsaWNlKDAsYS0xKTpuJiYodC5kaXI9Ii8iKSx0fSxzZXA6Ii8iLGRlbGltaXRlcjoiOiIsd2luMzI6bnVsbCxwb3NpeDpudWxsfSxGZT0ocWUud2luMzI9T2Uud2luMzI9T2UscWUucG9zaXg9T2UucG9zaXg9cWUsKCJ3aW4zMiI9PT10P09lOnFlKS5ub3JtYWxpemUsKCJ3aW4zMiI9PT10P09lOnFlKS5yZXNvbHZlLCgid2luMzIiPT09dD9PZTpxZSkucmVsYXRpdmUsKCJ3aW4zMiI9PT10P09lOnFlKS5kaXJuYW1lLCgid2luMzIiPT09dD9PZTpxZSkuYmFzZW5hbWUsKCJ3aW4zMiI9PT10P09lOnFlKS5leHRuYW1lLCgid2luMzIiPT09dD9PZTpxZSkuc2VwLC9eXHdbXHdcZCsuLV0qJC8pLFZlPS9eXC8vLEJlPS9eXC9cLy87ZnVuY3Rpb24gS2UoZSx0KXtpZighZS5zY2hlbWUmJnQpdGhyb3cgbmV3IEVycm9yKGBbVXJpRXJyb3JdOiBTY2hlbWUgaXMgbWlzc2luZzoge3NjaGVtZTogIiIsIGF1dGhvcml0eTogIiR7ZS5hdXRob3JpdHl9IiwgcGF0aDogIiR7ZS5wYXRofSIsIHF1ZXJ5OiAiJHtlLnF1ZXJ5fSIsIGZyYWdtZW50OiAiJHtlLmZyYWdtZW50fSJ9YCk7aWYoZS5zY2hlbWUmJiFGZS50ZXN0KGUuc2NoZW1lKSl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IFNjaGVtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuIik7aWYoZS5wYXRoKWlmKGUuYXV0aG9yaXR5KXtpZighVmUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjb21wb25lbnQgbXVzdCBlaXRoZXIgYmUgZW1wdHkgb3IgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpIGNoYXJhY3RlcicpfWVsc2UgaWYoQmUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfWNvbnN0IGplPSIvIixHZT0vXigoW146Lz8jXSs/KTopPyhcL1wvKFteLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/LztjbGFzcyAkZXtjb25zdHJ1Y3RvcihlLHQsbixyLGksYT0hMSl7dmFyIG87Im9iamVjdCI9PXR5cGVvZiBlPyh0aGlzLnNjaGVtZT1lLnNjaGVtZXx8IiIsdGhpcy5hdXRob3JpdHk9ZS5hdXRob3JpdHl8fCIiLHRoaXMucGF0aD1lLnBhdGh8fCIiLHRoaXMucXVlcnk9ZS5xdWVyeXx8IiIsdGhpcy5mcmFnbWVudD1lLmZyYWdtZW50fHwiIik6KHRoaXMuc2NoZW1lPShvPWEsKGU9ZSl8fG8/ZToiZmlsZSIpLHRoaXMuYXV0aG9yaXR5PXR8fCIiLHRoaXMucGF0aD1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlImh0dHBzIjpjYXNlImh0dHAiOmNhc2UiZmlsZSI6dD90WzBdIT09amUmJih0PWplK3QpOnQ9amV9cmV0dXJuIHR9KHRoaXMuc2NoZW1lLG58fCIiKSx0aGlzLnF1ZXJ5PXJ8fCIiLHRoaXMuZnJhZ21lbnQ9aXx8IiIsS2UodGhpcyxhKSl9c3RhdGljIGlzVXJpKGUpe3JldHVybiBlIGluc3RhbmNlb2YgJGV8fCEhZSYmKCJzdHJpbmciPT10eXBlb2YgZS5hdXRob3JpdHkmJiJzdHJpbmciPT10eXBlb2YgZS5mcmFnbWVudCYmInN0cmluZyI9PXR5cGVvZiBlLnBhdGgmJiJzdHJpbmciPT10eXBlb2YgZS5xdWVyeSYmInN0cmluZyI9PXR5cGVvZiBlLnNjaGVtZSYmInN0cmluZyI9PXR5cGVvZiBlLmZzUGF0aCYmImZ1bmN0aW9uIj09dHlwZW9mIGUud2l0aCYmImZ1bmN0aW9uIj09dHlwZW9mIGUudG9TdHJpbmcpfWdldCBmc1BhdGgoKXtyZXR1cm4gZXQodGhpcywhMSl9d2l0aChlKXtpZighZSlyZXR1cm4gdGhpcztsZXR7c2NoZW1lOnQsYXV0aG9yaXR5Om4scGF0aDpyLHF1ZXJ5OmksZnJhZ21lbnQ6YX09ZTtyZXR1cm4gdm9pZCAwPT09dD90PXRoaXMuc2NoZW1lOm51bGw9PT10JiYodD0iIiksdm9pZCAwPT09bj9uPXRoaXMuYXV0aG9yaXR5Om51bGw9PT1uJiYobj0iIiksdm9pZCAwPT09cj9yPXRoaXMucGF0aDpudWxsPT09ciYmKHI9IiIpLHZvaWQgMD09PWk/aT10aGlzLnF1ZXJ5Om51bGw9PT1pJiYoaT0iIiksdm9pZCAwPT09YT9hPXRoaXMuZnJhZ21lbnQ6bnVsbD09PWEmJihhPSIiKSx0PT09dGhpcy5zY2hlbWUmJm49PT10aGlzLmF1dGhvcml0eSYmcj09PXRoaXMucGF0aCYmaT09PXRoaXMucXVlcnkmJmE9PT10aGlzLmZyYWdtZW50P3RoaXM6bmV3IFhlKHQsbixyLGksYSl9c3RhdGljIHBhcnNlKGUsdD0hMSl7ZT1HZS5leGVjKGUpO3JldHVybiBlP25ldyBYZShlWzJdfHwiIixydChlWzRdfHwiIikscnQoZVs1XXx8IiIpLHJ0KGVbN118fCIiKSxydChlWzldfHwiIiksdCk6bmV3IFhlKCIiLCIiLCIiLCIiLCIiKX1zdGF0aWMgZmlsZShlKXtsZXQgdD0iIjt2YXIgbjtyZXR1cm4oZT1EP2UucmVwbGFjZSgvXFwvZyxqZSk6ZSlbMF09PT1qZSYmZVsxXT09PWplJiYoZT0tMT09PShuPWUuaW5kZXhPZihqZSwyKSk/KHQ9ZS5zdWJzdHJpbmcoMiksamUpOih0PWUuc3Vic3RyaW5nKDIsbiksZS5zdWJzdHJpbmcobil8fGplKSksbmV3IFhlKCJmaWxlIix0LGUsIiIsIiIpfXN0YXRpYyBmcm9tKGUpe2U9bmV3IFhlKGUuc2NoZW1lLGUuYXV0aG9yaXR5LGUucGF0aCxlLnF1ZXJ5LGUuZnJhZ21lbnQpO3JldHVybiBLZShlLCEwKSxlfXN0YXRpYyBqb2luUGF0aChlLC4uLnQpe2lmKCFlLnBhdGgpdGhyb3cgbmV3IEVycm9yKCJbVXJpRXJyb3JdOiBjYW5ub3QgY2FsbCBqb2luUGF0aCBvbiBVUkkgd2l0aG91dCBwYXRoIik7bGV0IG47cmV0dXJuIG49RCYmImZpbGUiPT09ZS5zY2hlbWU/JGUuZmlsZShPZS5qb2luKGV0KGUsITApLC4uLnQpKS5wYXRoOnFlLmpvaW4oZS5wYXRoLC4uLnQpLGUud2l0aCh7cGF0aDpufSl9dG9TdHJpbmcoZT0hMSl7cmV0dXJuIHR0KHRoaXMsZSl9dG9KU09OKCl7cmV0dXJuIHRoaXN9c3RhdGljIHJldml2ZShlKXtpZihlKXtpZihlIGluc3RhbmNlb2YgJGUpcmV0dXJuIGU7e2NvbnN0IHQ9bmV3IFhlKGUpO3JldHVybiB0Ll9mb3JtYXR0ZWQ9ZS5leHRlcm5hbCx0Ll9mc1BhdGg9ZS5fc2VwPT09SmU/ZS5mc1BhdGg6bnVsbCx0fX1yZXR1cm4gZX19Y29uc3QgSmU9RD8xOnZvaWQgMDtjbGFzcyBYZSBleHRlbmRzICRle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9mb3JtYXR0ZWQ9bnVsbCx0aGlzLl9mc1BhdGg9bnVsbH1nZXQgZnNQYXRoKCl7cmV0dXJuIHRoaXMuX2ZzUGF0aHx8KHRoaXMuX2ZzUGF0aD1ldCh0aGlzLCExKSksdGhpcy5fZnNQYXRofXRvU3RyaW5nKGU9ITEpe3JldHVybiBlP3R0KHRoaXMsITApOih0aGlzLl9mb3JtYXR0ZWR8fCh0aGlzLl9mb3JtYXR0ZWQ9dHQodGhpcywhMSkpLHRoaXMuX2Zvcm1hdHRlZCl9dG9KU09OKCl7Y29uc3QgZT17JG1pZDoxfTtyZXR1cm4gdGhpcy5fZnNQYXRoJiYoZS5mc1BhdGg9dGhpcy5fZnNQYXRoLGUuX3NlcD1KZSksdGhpcy5fZm9ybWF0dGVkJiYoZS5leHRlcm5hbD10aGlzLl9mb3JtYXR0ZWQpLHRoaXMucGF0aCYmKGUucGF0aD10aGlzLnBhdGgpLHRoaXMuc2NoZW1lJiYoZS5zY2hlbWU9dGhpcy5zY2hlbWUpLHRoaXMuYXV0aG9yaXR5JiYoZS5hdXRob3JpdHk9dGhpcy5hdXRob3JpdHkpLHRoaXMucXVlcnkmJihlLnF1ZXJ5PXRoaXMucXVlcnkpLHRoaXMuZnJhZ21lbnQmJihlLmZyYWdtZW50PXRoaXMuZnJhZ21lbnQpLGV9fWNvbnN0IFllPXtbNThdOiIlM0EiLDQ3OiIlMkYiLDYzOiIlM0YiLDM1OiIlMjMiLDkxOiIlNUIiLDkzOiIlNUQiLDY0OiIlNDAiLDMzOiIlMjEiLDM2OiIlMjQiLDM4OiIlMjYiLDM5OiIlMjciLDQwOiIlMjgiLDQxOiIlMjkiLDQyOiIlMkEiLDQzOiIlMkIiLDQ0OiIlMkMiLDU5OiIlM0IiLDYxOiIlM0QiLDMyOiIlMjAifTtmdW5jdGlvbiBRZSh0LG4pe2xldCByPXZvaWQgMCxpPS0xO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgYT10LmNoYXJDb2RlQXQoZSk7OTc8PWEmJmE8PTEyMnx8NjU8PWEmJmE8PTkwfHw0ODw9YSYmYTw9NTd8fDQ1PT09YXx8NDY9PT1hfHw5NT09PWF8fDEyNj09PWF8fG4mJjQ3PT09YT8oLTEhPT1pJiYocis9ZW5jb2RlVVJJQ29tcG9uZW50KHQuc3Vic3RyaW5nKGksZSkpLGk9LTEpLHZvaWQgMCE9PXImJihyKz10LmNoYXJBdChlKSkpOih2b2lkIDA9PT1yJiYocj10LnN1YnN0cigwLGUpKSx2b2lkIDAhPT0oYT1ZZVthXSk/KC0xIT09aSYmKHIrPWVuY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZyhpLGUpKSxpPS0xKSxyKz1hKTotMT09PWkmJihpPWUpKX1yZXR1cm4tMSE9PWkmJihyKz1lbmNvZGVVUklDb21wb25lbnQodC5zdWJzdHJpbmcoaSkpKSx2b2lkIDAhPT1yP3I6dH1mdW5jdGlvbiBaZSh0KXtsZXQgbj12b2lkIDA7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciByPXQuY2hhckNvZGVBdChlKTszNT09PXJ8fDYzPT09cj8odm9pZCAwPT09biYmKG49dC5zdWJzdHIoMCxlKSksbis9WWVbcl0pOnZvaWQgMCE9PW4mJihuKz10W2VdKX1yZXR1cm4gdm9pZCAwIT09bj9uOnR9ZnVuY3Rpb24gZXQoZSx0KXtsZXQgbjtyZXR1cm4gbj1lLmF1dGhvcml0eSYmMTxlLnBhdGgubGVuZ3RoJiYiZmlsZSI9PT1lLnNjaGVtZT8iLy8iK2UuYXV0aG9yaXR5K2UucGF0aDo0Nz09PWUucGF0aC5jaGFyQ29kZUF0KDApJiYoNjU8PWUucGF0aC5jaGFyQ29kZUF0KDEpJiZlLnBhdGguY2hhckNvZGVBdCgxKTw9OTB8fDk3PD1lLnBhdGguY2hhckNvZGVBdCgxKSYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTEyMikmJjU4PT09ZS5wYXRoLmNoYXJDb2RlQXQoMik/dD9lLnBhdGguc3Vic3RyKDEpOmUucGF0aFsxXS50b0xvd2VyQ2FzZSgpK2UucGF0aC5zdWJzdHIoMik6ZS5wYXRoLG49RD9uLnJlcGxhY2UoL1wvL2csIlxcIik6bn1mdW5jdGlvbiB0dChlLHQpe2NvbnN0IG49dD9aZTpRZTtsZXQgcj0iIix7c2NoZW1lOmksYXV0aG9yaXR5OmEscGF0aDpvLHF1ZXJ5OnMsZnJhZ21lbnQ6bH09ZTtpZihpJiYocj1yK2krIjoiKSwhYSYmImZpbGUiIT09aXx8KHI9KHIrPWplKStqZSksYSl7bGV0IGU9YS5pbmRleE9mKCJAIik7aWYoLTEhPT1lKXtjb25zdCBoPWEuc3Vic3RyKDAsZSk7YT1hLnN1YnN0cihlKzEpLC0xPT09KGU9aC5pbmRleE9mKCI6IikpP3IrPW4oaCwhMSk6cj0ocj1yK24oaC5zdWJzdHIoMCxlKSwhMSkrIjoiKStuKGguc3Vic3RyKGUrMSksITEpLHIrPSJAIn1hPWEudG9Mb3dlckNhc2UoKSwtMT09PShlPWEuaW5kZXhPZigiOiIpKT9yKz1uKGEsITEpOnI9KHIrPW4oYS5zdWJzdHIoMCxlKSwhMSkpK2Euc3Vic3RyKGUpfXJldHVybiBvJiYoMzw9by5sZW5ndGgmJjQ3PT09by5jaGFyQ29kZUF0KDApJiY1OD09PW8uY2hhckNvZGVBdCgyKT82NTw9KGU9by5jaGFyQ29kZUF0KDEpKSYmZTw9OTAmJihvPWAvJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUrMzIpfTpgK28uc3Vic3RyKDMpKToyPD1vLmxlbmd0aCYmNTg9PT1vLmNoYXJDb2RlQXQoMSkmJig2NTw9KGU9by5jaGFyQ29kZUF0KDApKSYmZTw9OTAmJihvPVN0cmluZy5mcm9tQ2hhckNvZGUoZSszMikrIjoiK28uc3Vic3RyKDIpKSkscis9bihvLCEwKSkscyYmKHI9KHIrPSI/IikrbihzLCExKSkscj1sPyhyKz0iIyIpKyh0P2w6UWUobCwhMSkpOnJ9Y29uc3QgbnQ9LyglWzAtOUEtWmEtel1bMC05QS1aYS16XSkrL2c7ZnVuY3Rpb24gcnQoZSl7cmV0dXJuIGUubWF0Y2gobnQpP2UucmVwbGFjZShudCxlPT5mdW5jdGlvbiB0KG4pe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KG4pfWNhdGNoKGUpe3JldHVybiAzPG4ubGVuZ3RoP24uc3Vic3RyKDAsMykrdChuLnN1YnN0cigzKSk6bn19KGUpKTplfWNsYXNzIGl0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5saW5lTnVtYmVyPWUsdGhpcy5jb2x1bW49dH13aXRoKGU9dGhpcy5saW5lTnVtYmVyLHQ9dGhpcy5jb2x1bW4pe3JldHVybiBlPT09dGhpcy5saW5lTnVtYmVyJiZ0PT09dGhpcy5jb2x1bW4/dGhpczpuZXcgaXQoZSx0KX1kZWx0YShlPTAsdD0wKXtyZXR1cm4gdGhpcy53aXRoKHRoaXMubGluZU51bWJlcitlLHRoaXMuY29sdW1uK3QpfWVxdWFscyhlKXtyZXR1cm4gaXQuZXF1YWxzKHRoaXMsZSl9c3RhdGljIGVxdWFscyhlLHQpe3JldHVybiFlJiYhdHx8ISFlJiYhIXQmJmUubGluZU51bWJlcj09PXQubGluZU51bWJlciYmZS5jb2x1bW49PT10LmNvbHVtbn1pc0JlZm9yZShlKXtyZXR1cm4gaXQuaXNCZWZvcmUodGhpcyxlKX1zdGF0aWMgaXNCZWZvcmUoZSx0KXtyZXR1cm4gZS5saW5lTnVtYmVyPHQubGluZU51bWJlcnx8ISh0LmxpbmVOdW1iZXI8ZS5saW5lTnVtYmVyKSYmZS5jb2x1bW48dC5jb2x1bW59aXNCZWZvcmVPckVxdWFsKGUpe3JldHVybiBpdC5pc0JlZm9yZU9yRXF1YWwodGhpcyxlKX1zdGF0aWMgaXNCZWZvcmVPckVxdWFsKGUsdCl7cmV0dXJuIGUubGluZU51bWJlcjx0LmxpbmVOdW1iZXJ8fCEodC5saW5lTnVtYmVyPGUubGluZU51bWJlcikmJmUuY29sdW1uPD10LmNvbHVtbn1zdGF0aWMgY29tcGFyZShlLHQpe3ZhciBuPTB8ZS5saW5lTnVtYmVyLHI9MHx0LmxpbmVOdW1iZXI7cmV0dXJuIG4hPXI/bi1yOigwfGUuY29sdW1uKS0oMHx0LmNvbHVtbil9Y2xvbmUoKXtyZXR1cm4gbmV3IGl0KHRoaXMubGluZU51bWJlcix0aGlzLmNvbHVtbil9dG9TdHJpbmcoKXtyZXR1cm4iKCIrdGhpcy5saW5lTnVtYmVyKyIsIit0aGlzLmNvbHVtbisiKSJ9c3RhdGljIGxpZnQoZSl7cmV0dXJuIG5ldyBpdChlLmxpbmVOdW1iZXIsZS5jb2x1bW4pfXN0YXRpYyBpc0lQb3NpdGlvbihlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLmxpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5jb2x1bW59fWNsYXNzIGF0e2NvbnN0cnVjdG9yKGUsdCxuLHIpe248ZXx8ZT09PW4mJnI8dD8odGhpcy5zdGFydExpbmVOdW1iZXI9bix0aGlzLnN0YXJ0Q29sdW1uPXIsdGhpcy5lbmRMaW5lTnVtYmVyPWUsdGhpcy5lbmRDb2x1bW49dCk6KHRoaXMuc3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5zdGFydENvbHVtbj10LHRoaXMuZW5kTGluZU51bWJlcj1uLHRoaXMuZW5kQ29sdW1uPXIpfWlzRW1wdHkoKXtyZXR1cm4gYXQuaXNFbXB0eSh0aGlzKX1zdGF0aWMgaXNFbXB0eShlKXtyZXR1cm4gZS5zdGFydExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJmUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbn1jb250YWluc1Bvc2l0aW9uKGUpe3JldHVybiBhdC5jb250YWluc1Bvc2l0aW9uKHRoaXMsZSl9c3RhdGljIGNvbnRhaW5zUG9zaXRpb24oZSx0KXtyZXR1cm4hKHQubGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5saW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQubGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmNvbHVtbjxlLnN0YXJ0Q29sdW1uKSYmISh0LmxpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuY29sdW1uPmUuZW5kQ29sdW1uKSl9c3RhdGljIHN0cmljdENvbnRhaW5zUG9zaXRpb24oZSx0KXtyZXR1cm4hKHQubGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5saW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQubGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmNvbHVtbjw9ZS5zdGFydENvbHVtbikmJiEodC5saW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmNvbHVtbj49ZS5lbmRDb2x1bW4pKX1jb250YWluc1JhbmdlKGUpe3JldHVybiBhdC5jb250YWluc1JhbmdlKHRoaXMsZSl9c3RhdGljIGNvbnRhaW5zUmFuZ2UoZSx0KXtyZXR1cm4hKHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPGUuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5lbmRDb2x1bW4+ZS5lbmRDb2x1bW4pKSl9c3RyaWN0Q29udGFpbnNSYW5nZShlKXtyZXR1cm4gYXQuc3RyaWN0Q29udGFpbnNSYW5nZSh0aGlzLGUpfXN0YXRpYyBzdHJpY3RDb250YWluc1JhbmdlKGUsdCl7cmV0dXJuISh0LnN0YXJ0TGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5zdGFydENvbHVtbjw9ZS5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbj49ZS5lbmRDb2x1bW4pKSl9cGx1c1JhbmdlKGUpe3JldHVybiBhdC5wbHVzUmFuZ2UodGhpcyxlKX1zdGF0aWMgcGx1c1JhbmdlKGUsdCl7bGV0IG4scixpLGE7cmV0dXJuIHI9dC5zdGFydExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXI/KG49dC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbik6dC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlcj8obj10LnN0YXJ0TGluZU51bWJlcixNYXRoLm1pbih0LnN0YXJ0Q29sdW1uLGUuc3RhcnRDb2x1bW4pKToobj1lLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKSxhPXQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXI/KGk9dC5lbmRMaW5lTnVtYmVyLHQuZW5kQ29sdW1uKTp0LmVuZExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXI/KGk9dC5lbmRMaW5lTnVtYmVyLE1hdGgubWF4KHQuZW5kQ29sdW1uLGUuZW5kQ29sdW1uKSk6KGk9ZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKSxuZXcgYXQobixyLGksYSl9aW50ZXJzZWN0UmFuZ2VzKGUpe3JldHVybiBhdC5pbnRlcnNlY3RSYW5nZXModGhpcyxlKX1zdGF0aWMgaW50ZXJzZWN0UmFuZ2VzKGUsdCl7bGV0IG49ZS5zdGFydExpbmVOdW1iZXIscj1lLnN0YXJ0Q29sdW1uLGk9ZS5lbmRMaW5lTnVtYmVyLGE9ZS5lbmRDb2x1bW47dmFyIGU9dC5zdGFydExpbmVOdW1iZXIsbz10LnN0YXJ0Q29sdW1uLHM9dC5lbmRMaW5lTnVtYmVyLHQ9dC5lbmRDb2x1bW47cmV0dXJuIG48ZT8obj1lLHI9byk6bj09PWUmJihyPU1hdGgubWF4KHIsbykpLGk+cz8oaT1zLGE9dCk6aT09PXMmJihhPU1hdGgubWluKGEsdCkpLG4+aXx8bj09PWkmJnI+YT9udWxsOm5ldyBhdChuLHIsaSxhKX1lcXVhbHNSYW5nZShlKXtyZXR1cm4gYXQuZXF1YWxzUmFuZ2UodGhpcyxlKX1zdGF0aWMgZXF1YWxzUmFuZ2UoZSx0KXtyZXR1cm4hIWUmJiEhdCYmZS5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5zdGFydENvbHVtbj09PXQuc3RhcnRDb2x1bW4mJmUuZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlciYmZS5lbmRDb2x1bW49PT10LmVuZENvbHVtbn1nZXRFbmRQb3NpdGlvbigpe3JldHVybiBhdC5nZXRFbmRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0RW5kUG9zaXRpb24oZSl7cmV0dXJuIG5ldyBpdChlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pfWdldFN0YXJ0UG9zaXRpb24oKXtyZXR1cm4gYXQuZ2V0U3RhcnRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0U3RhcnRQb3NpdGlvbihlKXtyZXR1cm4gbmV3IGl0KGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLmVuZExpbmVOdW1iZXIrIiwiK3RoaXMuZW5kQ29sdW1uKyJdIn1zZXRFbmRQb3NpdGlvbihlLHQpe3JldHVybiBuZXcgYXQodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbixlLHQpfXNldFN0YXJ0UG9zaXRpb24oZSx0KXtyZXR1cm4gbmV3IGF0KGUsdCx0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4pfWNvbGxhcHNlVG9TdGFydCgpe3JldHVybiBhdC5jb2xsYXBzZVRvU3RhcnQodGhpcyl9c3RhdGljIGNvbGxhcHNlVG9TdGFydChlKXtyZXR1cm4gbmV3IGF0KGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbil9c3RhdGljIGZyb21Qb3NpdGlvbnMoZSx0PWUpe3JldHVybiBuZXcgYXQoZS5saW5lTnVtYmVyLGUuY29sdW1uLHQubGluZU51bWJlcix0LmNvbHVtbil9c3RhdGljIGxpZnQoZSl7cmV0dXJuIGU/bmV3IGF0KGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKTpudWxsfXN0YXRpYyBpc0lSYW5nZShlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0TGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0Q29sdW1uJiYibnVtYmVyIj09dHlwZW9mIGUuZW5kTGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLmVuZENvbHVtbn1zdGF0aWMgYXJlSW50ZXJzZWN0aW5nT3JUb3VjaGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48dC5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5lbmRDb2x1bW48ZS5zdGFydENvbHVtbil9c3RhdGljIGFyZUludGVyc2VjdGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48PXQuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPD1lLnN0YXJ0Q29sdW1uKX1zdGF0aWMgY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKGUsdCl7dmFyIG4scixpLGEsbyxzO3JldHVybiBlJiZ0PyhuPTB8ZS5zdGFydExpbmVOdW1iZXIpPT0ocj0wfHQuc3RhcnRMaW5lTnVtYmVyKT8oaT0wfGUuc3RhcnRDb2x1bW4pPT0oYT0wfHQuc3RhcnRDb2x1bW4pPyhvPTB8ZS5lbmRMaW5lTnVtYmVyKSE9KHM9MHx0LmVuZExpbmVOdW1iZXIpP28tczooMHxlLmVuZENvbHVtbiktKDB8dC5lbmRDb2x1bW4pOmktYTpuLXI6KGU/MTowKS0odD8xOjApfXN0YXRpYyBjb21wYXJlUmFuZ2VzVXNpbmdFbmRzKGUsdCl7cmV0dXJuIGUuZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlcj9lLmVuZENvbHVtbj09PXQuZW5kQ29sdW1uP2Uuc3RhcnRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXI/ZS5zdGFydENvbHVtbi10LnN0YXJ0Q29sdW1uOmUuc3RhcnRMaW5lTnVtYmVyLXQuc3RhcnRMaW5lTnVtYmVyOmUuZW5kQ29sdW1uLXQuZW5kQ29sdW1uOmUuZW5kTGluZU51bWJlci10LmVuZExpbmVOdW1iZXJ9c3RhdGljIHNwYW5zTXVsdGlwbGVMaW5lcyhlKXtyZXR1cm4gZS5lbmRMaW5lTnVtYmVyPmUuc3RhcnRMaW5lTnVtYmVyfXRvSlNPTigpe3JldHVybiB0aGlzfX1mdW5jdGlvbiBvdChlLHQsbixyKXtjb25zdCBpPW5ldyBFZShlLHQsbik7cmV0dXJuIGkuQ29tcHV0ZURpZmYocil9Y2xhc3Mgc3R7Y29uc3RydWN0b3Iobil7Y29uc3Qgcj1bXSxpPVtdO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKylyW2VdPXV0KG5bZV0sMSksaVtlXT1wdChuW2VdLDEpO3RoaXMubGluZXM9bix0aGlzLl9zdGFydENvbHVtbnM9cix0aGlzLl9lbmRDb2x1bW5zPWl9Z2V0RWxlbWVudHMoKXtjb25zdCBuPVtdO2ZvcihsZXQgZT0wLHQ9dGhpcy5saW5lcy5sZW5ndGg7ZTx0O2UrKyluW2VdPXRoaXMubGluZXNbZV0uc3Vic3RyaW5nKHRoaXMuX3N0YXJ0Q29sdW1uc1tlXS0xLHRoaXMuX2VuZENvbHVtbnNbZV0tMSk7cmV0dXJuIG59Z2V0U3RyaWN0RWxlbWVudChlKXtyZXR1cm4gdGhpcy5saW5lc1tlXX1nZXRTdGFydExpbmVOdW1iZXIoZSl7cmV0dXJuIGUrMX1nZXRFbmRMaW5lTnVtYmVyKGUpe3JldHVybiBlKzF9Y3JlYXRlQ2hhclNlcXVlbmNlKGUsbixyKXtjb25zdCBpPVtdLGE9W10sbz1bXTtsZXQgcz0wO2ZvcihsZXQgdD1uO3Q8PXI7dCsrKXtjb25zdCBjPXRoaXMubGluZXNbdF07dmFyIGw9ZT90aGlzLl9zdGFydENvbHVtbnNbdF06MSxoPWU/dGhpcy5fZW5kQ29sdW1uc1t0XTpjLmxlbmd0aCsxO2ZvcihsZXQgZT1sO2U8aDtlKyspaVtzXT1jLmNoYXJDb2RlQXQoZS0xKSxhW3NdPXQrMSxvW3NdPWUscysrfXJldHVybiBuZXcgbHQoaSxhLG8pfX1jbGFzcyBsdHtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5fY2hhckNvZGVzPWUsdGhpcy5fbGluZU51bWJlcnM9dCx0aGlzLl9jb2x1bW5zPW59Z2V0RWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fY2hhckNvZGVzfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gdGhpcy5fbGluZU51bWJlcnNbZV19Z2V0U3RhcnRDb2x1bW4oZSl7cmV0dXJuIHRoaXMuX2NvbHVtbnNbZV19Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4gdGhpcy5fbGluZU51bWJlcnNbZV19Z2V0RW5kQ29sdW1uKGUpe3JldHVybiB0aGlzLl9jb2x1bW5zW2VdKzF9fWNsYXNzIGh0e2NvbnN0cnVjdG9yKGUsdCxuLHIsaSxhLG8scyl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxTdGFydENvbHVtbj10LHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPW4sdGhpcy5vcmlnaW5hbEVuZENvbHVtbj1yLHRoaXMubW9kaWZpZWRTdGFydExpbmVOdW1iZXI9aSx0aGlzLm1vZGlmaWVkU3RhcnRDb2x1bW49YSx0aGlzLm1vZGlmaWVkRW5kTGluZU51bWJlcj1vLHRoaXMubW9kaWZpZWRFbmRDb2x1bW49c31zdGF0aWMgY3JlYXRlRnJvbURpZmZDaGFuZ2UoZSx0LG4pe2xldCByLGksYSxvLHMsbCxoLGM7cmV0dXJuIG89MD09PWUub3JpZ2luYWxMZW5ndGg/KHI9MCxpPTAsYT0wKToocj10LmdldFN0YXJ0TGluZU51bWJlcihlLm9yaWdpbmFsU3RhcnQpLGk9dC5nZXRTdGFydENvbHVtbihlLm9yaWdpbmFsU3RhcnQpLGE9dC5nZXRFbmRMaW5lTnVtYmVyKGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoLTEpLHQuZ2V0RW5kQ29sdW1uKGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoLTEpKSxjPTA9PT1lLm1vZGlmaWVkTGVuZ3RoPyhzPTAsbD0wLGg9MCk6KHM9bi5nZXRTdGFydExpbmVOdW1iZXIoZS5tb2RpZmllZFN0YXJ0KSxsPW4uZ2V0U3RhcnRDb2x1bW4oZS5tb2RpZmllZFN0YXJ0KSxoPW4uZ2V0RW5kTGluZU51bWJlcihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKSxuLmdldEVuZENvbHVtbihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKSksbmV3IGh0KHIsaSxhLG8scyxsLGgsYyl9fWNsYXNzIGN0e2NvbnN0cnVjdG9yKGUsdCxuLHIsaSl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsdGhpcy5tb2RpZmllZFN0YXJ0TGluZU51bWJlcj1uLHRoaXMubW9kaWZpZWRFbmRMaW5lTnVtYmVyPXIsdGhpcy5jaGFyQ2hhbmdlcz1pfXN0YXRpYyBjcmVhdGVGcm9tRGlmZlJlc3VsdChlLHQscixpLGEsYyxkKXtsZXQgbixvLHMsbCxoPXZvaWQgMDtpZihvPTA9PT10Lm9yaWdpbmFsTGVuZ3RoPyhuPXIuZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCktMSwwKToobj1yLmdldFN0YXJ0TGluZU51bWJlcih0Lm9yaWdpbmFsU3RhcnQpLHIuZ2V0RW5kTGluZU51bWJlcih0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC0xKSksbD0wPT09dC5tb2RpZmllZExlbmd0aD8ocz1pLmdldFN0YXJ0TGluZU51bWJlcih0Lm1vZGlmaWVkU3RhcnQpLTEsMCk6KHM9aS5nZXRTdGFydExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0KSxpLmdldEVuZExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSkpLGMmJjA8dC5vcmlnaW5hbExlbmd0aCYmdC5vcmlnaW5hbExlbmd0aDwyMCYmMDx0Lm1vZGlmaWVkTGVuZ3RoJiZ0Lm1vZGlmaWVkTGVuZ3RoPDIwJiZhKCkpe3ZhciB1PXIuY3JlYXRlQ2hhclNlcXVlbmNlKGUsdC5vcmlnaW5hbFN0YXJ0LHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoLTEpLHA9aS5jcmVhdGVDaGFyU2VxdWVuY2UoZSx0Lm1vZGlmaWVkU3RhcnQsdC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSk7bGV0IG49b3QodSxwLGEsITApLmNoYW5nZXM7ZCYmKG49ZnVuY3Rpb24obil7aWYobi5sZW5ndGg8PTEpcmV0dXJuIG47Y29uc3Qgcj1bblswXV07bGV0IGk9clswXTtmb3IobGV0IGU9MSx0PW4ubGVuZ3RoO2U8dDtlKyspe3ZhciBhPW5bZV0sbz1hLm9yaWdpbmFsU3RhcnQtKGkub3JpZ2luYWxTdGFydCtpLm9yaWdpbmFsTGVuZ3RoKSxzPWEubW9kaWZpZWRTdGFydC0oaS5tb2RpZmllZFN0YXJ0K2kubW9kaWZpZWRMZW5ndGgpO01hdGgubWluKG8scyk8Mz8oaS5vcmlnaW5hbExlbmd0aD1hLm9yaWdpbmFsU3RhcnQrYS5vcmlnaW5hbExlbmd0aC1pLm9yaWdpbmFsU3RhcnQsaS5tb2RpZmllZExlbmd0aD1hLm1vZGlmaWVkU3RhcnQrYS5tb2RpZmllZExlbmd0aC1pLm1vZGlmaWVkU3RhcnQpOihyLnB1c2goYSksaT1hKX1yZXR1cm4gcn0obikpLGg9W107Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKWgucHVzaChodC5jcmVhdGVGcm9tRGlmZkNoYW5nZShuW2VdLHUscCkpfXJldHVybiBuZXcgY3QobixvLHMsbCxoKX19Y2xhc3MgZHR7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzPW4uc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcz1uLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZT1uLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmY9bi5zaG91bGRNYWtlUHJldHR5RGlmZix0aGlzLm9yaWdpbmFsTGluZXM9ZSx0aGlzLm1vZGlmaWVkTGluZXM9dCx0aGlzLm9yaWdpbmFsPW5ldyBzdChlKSx0aGlzLm1vZGlmaWVkPW5ldyBzdCh0KSx0aGlzLmNvbnRpbnVlTGluZURpZmY9bXQobi5tYXhDb21wdXRhdGlvblRpbWUpLHRoaXMuY29udGludWVDaGFyRGlmZj1tdCgwPT09bi5tYXhDb21wdXRhdGlvblRpbWU/MDpNYXRoLm1pbihuLm1heENvbXB1dGF0aW9uVGltZSw1ZTMpKX1jb21wdXRlRGlmZigpe2lmKDE9PT10aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMub3JpZ2luYWwubGluZXNbMF0ubGVuZ3RoKXJldHVybiAxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aD97cXVpdEVhcmx5OiExLGNoYW5nZXM6W119OntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjEsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgsY2hhckNoYW5nZXM6W3ttb2RpZmllZEVuZENvbHVtbjowLG1vZGlmaWVkRW5kTGluZU51bWJlcjowLG1vZGlmaWVkU3RhcnRDb2x1bW46MCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjowLG9yaWdpbmFsRW5kQ29sdW1uOjAsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjAsb3JpZ2luYWxTdGFydENvbHVtbjowLG9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjB9XX1dfTtpZigxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aClyZXR1cm57cXVpdEVhcmx5OiExLGNoYW5nZXM6W3tvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjoxLG9yaWdpbmFsRW5kTGluZU51bWJlcjp0aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjoxLG1vZGlmaWVkRW5kTGluZU51bWJlcjoxLGNoYXJDaGFuZ2VzOlt7bW9kaWZpZWRFbmRDb2x1bW46MCxtb2RpZmllZEVuZExpbmVOdW1iZXI6MCxtb2RpZmllZFN0YXJ0Q29sdW1uOjAsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MCxvcmlnaW5hbEVuZENvbHVtbjowLG9yaWdpbmFsRW5kTGluZU51bWJlcjowLG9yaWdpbmFsU3RhcnRDb2x1bW46MCxvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjowfV19XX07dmFyIGU9b3QodGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVMaW5lRGlmZix0aGlzLnNob3VsZE1ha2VQcmV0dHlEaWZmKSxuPWUuY2hhbmdlcyxlPWUucXVpdEVhcmx5O2lmKHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Upe2NvbnN0IHA9W107Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKXAucHVzaChjdC5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLG5bZV0sdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKTtyZXR1cm57cXVpdEVhcmx5OmUsY2hhbmdlczpwfX1jb25zdCByPVtdO2xldCBpPTAsYT0wO2ZvcihsZXQgZT0tMSx0PW4ubGVuZ3RoO2U8dDtlKyspe2Zvcih2YXIgbz1lKzE8dD9uW2UrMV06bnVsbCxkPW8/by5vcmlnaW5hbFN0YXJ0OnRoaXMub3JpZ2luYWxMaW5lcy5sZW5ndGgsdT1vP28ubW9kaWZpZWRTdGFydDp0aGlzLm1vZGlmaWVkTGluZXMubGVuZ3RoO2k8ZCYmYTx1Oyl7Y29uc3QgaD10aGlzLm9yaWdpbmFsTGluZXNbaV0sYz10aGlzLm1vZGlmaWVkTGluZXNbYV07aWYoaCE9PWMpe3tsZXQgZT11dChoLDEpLHQ9dXQoYywxKTtmb3IoOzE8ZSYmMTx0Oyl7aWYoaC5jaGFyQ29kZUF0KGUtMikhPT1jLmNoYXJDb2RlQXQodC0yKSlicmVhaztlLS0sdC0tfSgxPGV8fDE8dCkmJnRoaXMuX3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UocixpKzEsMSxlLGErMSwxLHQpfXtsZXQgZT1wdChoLDEpLHQ9cHQoYywxKTtmb3IodmFyIHM9aC5sZW5ndGgrMSxsPWMubGVuZ3RoKzE7ZTxzJiZ0PGw7KXtpZihoLmNoYXJDb2RlQXQoZS0xKSE9PWguY2hhckNvZGVBdCh0LTEpKWJyZWFrO2UrKyx0Kyt9KGU8c3x8dDxsKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShyLGkrMSxlLHMsYSsxLHQsbCl9fWkrKyxhKyt9byYmKHIucHVzaChjdC5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLG8sdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKSxpKz1vLm9yaWdpbmFsTGVuZ3RoLGErPW8ubW9kaWZpZWRMZW5ndGgpfXJldHVybntxdWl0RWFybHk6ZSxjaGFuZ2VzOnJ9fV9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHQsbixyLGksYSxvLHMpe2lmKCF0aGlzLl9tZXJnZVRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZSh0LG4scixpLGEsbyxzKSl7bGV0IGU9dm9pZCAwO3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiYoZT1bbmV3IGh0KG4scixuLGksYSxvLGEscyldKSx0LnB1c2gobmV3IGN0KG4sbixhLGEsZSkpfX1fbWVyZ2VUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4scixpLGEsbyl7dmFyIHM9ZS5sZW5ndGg7aWYoMD09PXMpcmV0dXJuITE7Y29uc3QgbD1lW3MtMV07cmV0dXJuIDAhPT1sLm9yaWdpbmFsRW5kTGluZU51bWJlciYmMCE9PWwubW9kaWZpZWRFbmRMaW5lTnVtYmVyJiYobC5vcmlnaW5hbEVuZExpbmVOdW1iZXIrMT09PXQmJmwubW9kaWZpZWRFbmRMaW5lTnVtYmVyKzE9PT1pJiYobC5vcmlnaW5hbEVuZExpbmVOdW1iZXI9dCxsLm1vZGlmaWVkRW5kTGluZU51bWJlcj1pLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiZsLmNoYXJDaGFuZ2VzJiZsLmNoYXJDaGFuZ2VzLnB1c2gobmV3IGh0KHQsbix0LHIsaSxhLGksbykpLCEwKSl9fWZ1bmN0aW9uIHV0KGUsdCl7ZT1mdW5jdGlvbihuKXtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspe3ZhciByPW4uY2hhckNvZGVBdChlKTtpZigzMiE9PXImJjkhPT1yKXJldHVybiBlfXJldHVybi0xfShlKTtyZXR1cm4tMT09PWU/dDplKzF9ZnVuY3Rpb24gcHQoZSx0KXtlPWZ1bmN0aW9uKHQsbj10Lmxlbmd0aC0xKXtmb3IobGV0IGU9bjswPD1lO2UtLSl7dmFyIHI9dC5jaGFyQ29kZUF0KGUpO2lmKDMyIT09ciYmOSE9PXIpcmV0dXJuIGV9cmV0dXJuLTF9KGUpO3JldHVybi0xPT09ZT90OmUrMn1mdW5jdGlvbiBtdChlKXtpZigwPT09ZSlyZXR1cm4oKT0+ITA7Y29uc3QgdD1EYXRlLm5vdygpO3JldHVybigpPT5EYXRlLm5vdygpLXQ8ZX1mdW5jdGlvbiBmdChlKXtyZXR1cm4gZTwwPzA6MjU1PGU/MjU1OjB8ZX1mdW5jdGlvbiBndChlKXtyZXR1cm4gZTwwPzA6NDI5NDk2NzI5NTxlPzQyOTQ5NjcyOTU6MHxlfWNsYXNzIGJ0e2NvbnN0cnVjdG9yKGUpe3RoaXMudmFsdWVzPWUsdGhpcy5wcmVmaXhTdW09bmV3IFVpbnQzMkFycmF5KGUubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXg9bmV3IEludDMyQXJyYXkoMSksdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPS0xfWluc2VydFZhbHVlcyhlLHQpe2U9Z3QoZSk7Y29uc3Qgbj10aGlzLnZhbHVlcyxyPXRoaXMucHJlZml4U3VtO3ZhciBpPXQubGVuZ3RoO3JldHVybiAwIT09aSYmKHRoaXMudmFsdWVzPW5ldyBVaW50MzJBcnJheShuLmxlbmd0aCtpKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheSgwLGUpLDApLHRoaXMudmFsdWVzLnNldChuLnN1YmFycmF5KGUpLGUraSksdGhpcy52YWx1ZXMuc2V0KHQsZSksZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLDA8PXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmdGhpcy5wcmVmaXhTdW0uc2V0KHIuc3ViYXJyYXkoMCx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMSkpLCEwKX1zZXRWYWx1ZShlLHQpe3JldHVybiBlPWd0KGUpLHQ9Z3QodCksdGhpcy52YWx1ZXNbZV0hPT10JiYodGhpcy52YWx1ZXNbZV09dCxlLTE8dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdJiYodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPWUtMSksITApfXJlbW92ZVZhbHVlcyhlLHQpe2U9Z3QoZSksdD1ndCh0KTtjb25zdCBuPXRoaXMudmFsdWVzLHI9dGhpcy5wcmVmaXhTdW07aWYoZT49bi5sZW5ndGgpcmV0dXJuITE7dmFyIGk9bi5sZW5ndGgtZTtyZXR1cm4gMCE9PSh0PWk8PXQ/aTp0KSYmKHRoaXMudmFsdWVzPW5ldyBVaW50MzJBcnJheShuLmxlbmd0aC10KSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheSgwLGUpLDApLHRoaXMudmFsdWVzLnNldChuLnN1YmFycmF5KGUrdCksZSksdGhpcy5wcmVmaXhTdW09bmV3IFVpbnQzMkFycmF5KHRoaXMudmFsdWVzLmxlbmd0aCksZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLDA8PXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmdGhpcy5wcmVmaXhTdW0uc2V0KHIuc3ViYXJyYXkoMCx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMSkpLCEwKX1nZXRUb3RhbFN1bSgpe3JldHVybiAwPT09dGhpcy52YWx1ZXMubGVuZ3RoPzA6dGhpcy5fZ2V0UHJlZml4U3VtKHRoaXMudmFsdWVzLmxlbmd0aC0xKX1nZXRQcmVmaXhTdW0oZSl7cmV0dXJuIGU8MD8wOihlPWd0KGUpLHRoaXMuX2dldFByZWZpeFN1bShlKSl9X2dldFByZWZpeFN1bSh0KXtpZih0PD10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0pcmV0dXJuIHRoaXMucHJlZml4U3VtW3RdO2xldCBuPXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSsxOzA9PT1uJiYodGhpcy5wcmVmaXhTdW1bMF09dGhpcy52YWx1ZXNbMF0sbisrKSx0Pj10aGlzLnZhbHVlcy5sZW5ndGgmJih0PXRoaXMudmFsdWVzLmxlbmd0aC0xKTtmb3IobGV0IGU9bjtlPD10O2UrKyl0aGlzLnByZWZpeFN1bVtlXT10aGlzLnByZWZpeFN1bVtlLTFdK3RoaXMudmFsdWVzW2VdO3JldHVybiB0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09TWF0aC5tYXgodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdLHQpLHRoaXMucHJlZml4U3VtW3RdfWdldEluZGV4T2YoZSl7ZT1NYXRoLmZsb29yKGUpLHRoaXMuZ2V0VG90YWxTdW0oKTtsZXQgdD0wLG49dGhpcy52YWx1ZXMubGVuZ3RoLTEscj0wO3ZhciBpO2xldCBhPTA7Zm9yKDt0PD1uOylpZihyPXQrKG4tdCkvMnwwLGk9dGhpcy5wcmVmaXhTdW1bcl0sZTwoYT1pLXRoaXMudmFsdWVzW3JdKSluPXItMTtlbHNle2lmKCEoaTw9ZSkpYnJlYWs7dD1yKzF9cmV0dXJuIG5ldyBfdChyLGUtYSl9fWNsYXNzIF90e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5pbmRleD1lLHRoaXMucmVtYWluZGVyPXQsdGhpcy5fcHJlZml4U3VtSW5kZXhPZlJlc3VsdEJyYW5kPXZvaWQgMCx0aGlzLmluZGV4PWUsdGhpcy5yZW1haW5kZXI9dH19Y29uc3Qgd3Q9ZnVuY3Rpb24oZT0iIil7bGV0IHQ9IigtP1xcZCpcXC5cXGRcXHcqKXwoW14iO2Zvcihjb25zdCBuIG9mImB+IUAjJCVeJiooKS09K1t7XX1cXHw7OidcIiwuPD4vPyIpMDw9ZS5pbmRleE9mKG4pfHwodCs9IlxcIituKTtyZXR1cm4gdCs9Ilxcc10rKSIsbmV3IFJlZ0V4cCh0LCJnIil9KCk7Y29uc3QgdnQ9e21heExlbjoxZTMsd2luZG93U2l6ZToxNSx0aW1lQnVkZ2V0OjE1MH07ZnVuY3Rpb24geXQodCxuLHIsaSxhPXZ0KXtpZihyLmxlbmd0aD5hLm1heExlbil7bGV0IGU9dC1hLm1heExlbi8yO3JldHVybiBlPDA/ZT0wOmkrPWUseXQodCxuLHI9ci5zdWJzdHJpbmcoZSx0K2EubWF4TGVuLzIpLGksYSl9dmFyIGQ9RGF0ZS5ub3coKSxvPXQtMS1pO2xldCBzPS0xLGw9bnVsbDtmb3IobGV0IGU9MTshKERhdGUubm93KCktZD49YS50aW1lQnVkZ2V0KTtlKyspe3ZhciBoPW8tYS53aW5kb3dTaXplKmUsYz0obi5sYXN0SW5kZXg9TWF0aC5tYXgoMCxoKSxmdW5jdGlvbihlLHQsbixyKXt2YXIgaTtmb3IoO2k9ZS5leGVjKHQpOyl7dmFyIGE9aS5pbmRleHx8MDtpZihhPD1uJiZlLmxhc3RJbmRleD49bilyZXR1cm4gaTtpZigwPHImJnI8YSlyZXR1cm4gbnVsbH1yZXR1cm4gbnVsbH0obixyLG8scykpO2lmKCFjJiZsKWJyZWFrO2lmKGw9YyxoPD0wKWJyZWFrO3M9aH1yZXR1cm4gbD8odD17d29yZDpsWzBdLHN0YXJ0Q29sdW1uOmkrMStsLmluZGV4LGVuZENvbHVtbjppKzErbC5pbmRleCtsWzBdLmxlbmd0aH0sbi5sYXN0SW5kZXg9MCx0KTpudWxsfWNsYXNzIFR0e2NvbnN0cnVjdG9yKGUpe2U9ZnQoZSk7dGhpcy5fZGVmYXVsdFZhbHVlPWUsdGhpcy5fYXNjaWlNYXA9VHQuX2NyZWF0ZUFzY2lpTWFwKGUpLHRoaXMuX21hcD1uZXcgTWFwfXN0YXRpYyBfY3JlYXRlQXNjaWlNYXAodCl7Y29uc3Qgbj1uZXcgVWludDhBcnJheSgyNTYpO2ZvcihsZXQgZT0wO2U8MjU2O2UrKyluW2VdPXQ7cmV0dXJuIG59c2V0KGUsdCl7dD1mdCh0KTswPD1lJiZlPDI1Nj90aGlzLl9hc2NpaU1hcFtlXT10OnRoaXMuX21hcC5zZXQoZSx0KX1nZXQoZSl7cmV0dXJuIDA8PWUmJmU8MjU2P3RoaXMuX2FzY2lpTWFwW2VdOnRoaXMuX21hcC5nZXQoZSl8fHRoaXMuX2RlZmF1bHRWYWx1ZX19Y2xhc3Mga3R7Y29uc3RydWN0b3IobixyLGkpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkobipyKTtmb3IobGV0IGU9MCx0PW4qcjtlPHQ7ZSsrKWFbZV09aTt0aGlzLl9kYXRhPWEsdGhpcy5yb3dzPW4sdGhpcy5jb2xzPXJ9Z2V0KGUsdCl7cmV0dXJuIHRoaXMuX2RhdGFbZSp0aGlzLmNvbHMrdF19c2V0KGUsdCxuKXt0aGlzLl9kYXRhW2UqdGhpcy5jb2xzK3RdPW59fWNsYXNzIFN0e2NvbnN0cnVjdG9yKG4pe2xldCByPTAsaT0wO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7dmFyW2EsbyxzXT1uW2VdO28+ciYmKHI9bykscz4oaT1hPmk/YTppKSYmKGk9cyl9cisrLGkrKztjb25zdCBsPW5ldyBrdChpLHIsMCk7Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKXt2YXJbaCxjLGRdPW5bZV07bC5zZXQoaCxjLGQpfXRoaXMuX3N0YXRlcz1sLHRoaXMuX21heENoYXJDb2RlPXJ9bmV4dFN0YXRlKGUsdCl7cmV0dXJuIHQ8MHx8dD49dGhpcy5fbWF4Q2hhckNvZGU/MDp0aGlzLl9zdGF0ZXMuZ2V0KGUsdCl9fWxldCBDdD1udWxsO2xldCB4dD1udWxsO2NsYXNzIEx0e3N0YXRpYyBfY3JlYXRlTGluayhlLHQsbixyLGkpe2xldCBhPWktMTtkb3t2YXIgbz10LmNoYXJDb2RlQXQoYSk7aWYoMiE9PWUuZ2V0KG8pKWJyZWFrfXdoaWxlKC0tYT5yKTt2YXIgcztyZXR1cm4gMDxyJiYoaT10LmNoYXJDb2RlQXQoci0xKSxzPXQuY2hhckNvZGVBdChhKSwoNDA9PT1pJiY0MT09PXN8fDkxPT09aSYmOTM9PT1zfHwxMjM9PT1pJiYxMjU9PT1zKSYmYS0tKSx7cmFuZ2U6e3N0YXJ0TGluZU51bWJlcjpuLHN0YXJ0Q29sdW1uOnIrMSxlbmRMaW5lTnVtYmVyOm4sZW5kQ29sdW1uOmErMn0sdXJsOnQuc3Vic3RyaW5nKHIsYSsxKX19c3RhdGljIGNvbXB1dGVMaW5rcyh0LGQ9Q3Q9bnVsbD09PUN0P25ldyBTdChbWzEsMTA0LDJdLFsxLDcyLDJdLFsxLDEwMiw2XSxbMSw3MCw2XSxbMiwxMTYsM10sWzIsODQsM10sWzMsMTE2LDRdLFszLDg0LDRdLFs0LDExMiw1XSxbNCw4MCw1XSxbNSwxMTUsOV0sWzUsODMsOV0sWzUsNTgsMTBdLFs2LDEwNSw3XSxbNiw3Myw3XSxbNywxMDgsOF0sWzcsNzYsOF0sWzgsMTAxLDldLFs4LDY5LDldLFs5LDU4LDEwXSxbMTAsNDcsMTFdLFsxMSw0NywxMl1dKTpDdCl7Y29uc3QgdT1mdW5jdGlvbigpe2lmKG51bGw9PT14dCl7eHQ9bmV3IFR0KDApO3ZhciB0PSIgXHQ8PidcIuOAgeOAgu+9oe+9pO+8jO+8ju+8mu+8m+KAmOOAiOOAjOOAjuOAlO+8iO+8u++9m++9ou+9o++9ne+8ve+8ieOAleOAj+OAjeOAieKAme+9gO+9nuKApiI7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspeHQuc2V0KHQuY2hhckNvZGVBdChlKSwxKTtmb3IobGV0IGU9MDtlPCIuLDsiLmxlbmd0aDtlKyspeHQuc2V0KCIuLDsiLmNoYXJDb2RlQXQoZSksMil9cmV0dXJuIHh0fSgpLHA9W107Zm9yKGxldCBjPTEsZT10LmdldExpbmVDb3VudCgpO2M8PWU7YysrKXtjb25zdCBnPXQuZ2V0TGluZUNvbnRlbnQoYyk7dmFyIG09Zy5sZW5ndGg7bGV0IG49MCxyPTAsaT0wLGE9MSxvPSExLHM9ITEsbD0hMSxoPSExO2Zvcig7bjxtOyl7bGV0IHQ9ITE7dmFyIGY9Zy5jaGFyQ29kZUF0KG4pO2lmKDEzPT09YSl7bGV0IGU7c3dpdGNoKGYpe2Nhc2UgNDA6bz0hMCxlPTA7YnJlYWs7Y2FzZSA0MTplPW8/MDoxO2JyZWFrO2Nhc2UgOTE6bD0hMCxzPSEwLGU9MDticmVhaztjYXNlIDkzOmw9ITEsZT1zPzA6MTticmVhaztjYXNlIDEyMzpoPSEwLGU9MDticmVhaztjYXNlIDEyNTplPWg/MDoxO2JyZWFrO2Nhc2UgMzk6ZT0zND09PWl8fDk2PT09aT8wOjE7YnJlYWs7Y2FzZSAzNDplPTM5PT09aXx8OTY9PT1pPzA6MTticmVhaztjYXNlIDk2OmU9Mzk9PT1pfHwzND09PWk/MDoxO2JyZWFrO2Nhc2UgNDI6ZT00Mj09PWk/MTowO2JyZWFrO2Nhc2UgMTI0OmU9MTI0PT09aT8xOjA7YnJlYWs7Y2FzZSAzMjplPWw/MDoxO2JyZWFrO2RlZmF1bHQ6ZT11LmdldChmKX0xPT09ZSYmKHAucHVzaChMdC5fY3JlYXRlTGluayh1LGcsYyxyLG4pKSx0PSEwKX1lbHNlIGlmKDEyPT09YSl7bGV0IGU7MT09PShlPTkxPT09Zj8ocz0hMCwwKTp1LmdldChmKSk/dD0hMDphPTEzfWVsc2UgMD09PShhPWQubmV4dFN0YXRlKGEsZikpJiYodD0hMCk7dCYmKGE9MSxvPSExLHM9ITEsaD0hMSxyPW4rMSxpPWYpLG4rK30xMz09PWEmJnAucHVzaChMdC5fY3JlYXRlTGluayh1LGcsYyxyLG0pKX1yZXR1cm4gcH19Y2xhc3MgRXR7Y29uc3RydWN0b3IoKXt0aGlzLl9kZWZhdWx0VmFsdWVTZXQ9W1sidHJ1ZSIsImZhbHNlIl0sWyJUcnVlIiwiRmFsc2UiXSxbIlByaXZhdGUiLCJQdWJsaWMiLCJGcmllbmQiLCJSZWFkT25seSIsIlBhcnRpYWwiLCJQcm90ZWN0ZWQiLCJXcml0ZU9ubHkiXSxbInB1YmxpYyIsInByb3RlY3RlZCIsInByaXZhdGUiXV19bmF2aWdhdGVWYWx1ZVNldChlLHQsbixyLGkpe2lmKGUmJnQpe3Q9dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQodCxpKTtpZih0KXJldHVybntyYW5nZTplLHZhbHVlOnR9fWlmKG4mJnIpe2U9dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQocixpKTtpZihlKXJldHVybntyYW5nZTpuLHZhbHVlOmV9fXJldHVybiBudWxsfWRvTmF2aWdhdGVWYWx1ZVNldChlLHQpe3ZhciBuPXRoaXMubnVtYmVyUmVwbGFjZShlLHQpO3JldHVybiBudWxsIT09bj9uOnRoaXMudGV4dFJlcGxhY2UoZSx0KX1udW1iZXJSZXBsYWNlKGUsdCl7dmFyIG49TWF0aC5wb3coMTAsZS5sZW5ndGgtKGUubGFzdEluZGV4T2YoIi4iKSsxKSk7bGV0IHI9TnVtYmVyKGUpO2U9cGFyc2VGbG9hdChlKTtyZXR1cm4haXNOYU4ocikmJiFpc05hTihlKSYmcj09PWUmJigwIT09cnx8dCk/KHI9TWF0aC5mbG9vcihyKm4pLHIrPXQ/bjotbixTdHJpbmcoci9uKSk6bnVsbH10ZXh0UmVwbGFjZShlLHQpe3JldHVybiB0aGlzLnZhbHVlU2V0c1JlcGxhY2UodGhpcy5fZGVmYXVsdFZhbHVlU2V0LGUsdCl9dmFsdWVTZXRzUmVwbGFjZShuLHIsaSl7bGV0IGE9bnVsbDtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO251bGw9PT1hJiZlPHQ7ZSsrKWE9dGhpcy52YWx1ZVNldFJlcGxhY2UobltlXSxyLGkpO3JldHVybiBhfXZhbHVlU2V0UmVwbGFjZShlLHQsbil7bGV0IHI9ZS5pbmRleE9mKHQpO3JldHVybiAwPD1yPygocis9bj8xOi0xKTwwP3I9ZS5sZW5ndGgtMTpyJT1lLmxlbmd0aCxlW3JdKTpudWxsfX1FdC5JTlNUQU5DRT1uZXcgRXQ7Y29uc3QgQXQ9T2JqZWN0LmZyZWV6ZShmdW5jdGlvbihlLHQpe2NvbnN0IG49c2V0VGltZW91dChlLmJpbmQodCksMCk7cmV0dXJue2Rpc3Bvc2UoKXtjbGVhclRpbWVvdXQobil9fX0pOyhOZT1JZT1JZXx8e30pLmlzQ2FuY2VsbGF0aW9uVG9rZW49ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1OZS5Ob25lfHxlPT09TmUuQ2FuY2VsbGVkfHwoZSBpbnN0YW5jZW9mIE10fHwhKCFlfHwib2JqZWN0IiE9dHlwZW9mIGUpJiYoImJvb2xlYW4iPT10eXBlb2YgZS5pc0NhbmNlbGxhdGlvblJlcXVlc3RlZCYmImZ1bmN0aW9uIj09dHlwZW9mIGUub25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQpKX0sTmUuTm9uZT1PYmplY3QuZnJlZXplKHtpc0NhbmNlbGxhdGlvblJlcXVlc3RlZDohMSxvbkNhbmNlbGxhdGlvblJlcXVlc3RlZDphLk5vbmV9KSxOZS5DYW5jZWxsZWQ9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITAsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6QXR9KTtjbGFzcyBNdHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2lzQ2FuY2VsbGVkPSExLHRoaXMuX2VtaXR0ZXI9bnVsbH1jYW5jZWwoKXt0aGlzLl9pc0NhbmNlbGxlZHx8KHRoaXMuX2lzQ2FuY2VsbGVkPSEwLHRoaXMuX2VtaXR0ZXImJih0aGlzLl9lbWl0dGVyLmZpcmUodm9pZCAwKSx0aGlzLmRpc3Bvc2UoKSkpfWdldCBpc0NhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZH1nZXQgb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKXtyZXR1cm4gdGhpcy5faXNDYW5jZWxsZWQ/QXQ6KHRoaXMuX2VtaXR0ZXJ8fCh0aGlzLl9lbWl0dGVyPW5ldyB0ZSksdGhpcy5fZW1pdHRlci5ldmVudCl9ZGlzcG9zZSgpe3RoaXMuX2VtaXR0ZXImJih0aGlzLl9lbWl0dGVyLmRpc3Bvc2UoKSx0aGlzLl9lbWl0dGVyPW51bGwpfX1jbGFzcyBSdHtjb25zdHJ1Y3RvcihlKXt0aGlzLl90b2tlbj12b2lkIDAsdGhpcy5fcGFyZW50TGlzdGVuZXI9dm9pZCAwLHRoaXMuX3BhcmVudExpc3RlbmVyPWUmJmUub25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQodGhpcy5jYW5jZWwsdGhpcyl9Z2V0IHRva2VuKCl7cmV0dXJuIHRoaXMuX3Rva2VufHwodGhpcy5fdG9rZW49bmV3IE10KSx0aGlzLl90b2tlbn1jYW5jZWwoKXt0aGlzLl90b2tlbj90aGlzLl90b2tlbiBpbnN0YW5jZW9mIE10JiZ0aGlzLl90b2tlbi5jYW5jZWwoKTp0aGlzLl90b2tlbj1JZS5DYW5jZWxsZWR9ZGlzcG9zZShlPSExKXtlJiZ0aGlzLmNhbmNlbCgpLHRoaXMuX3BhcmVudExpc3RlbmVyJiZ0aGlzLl9wYXJlbnRMaXN0ZW5lci5kaXNwb3NlKCksdGhpcy5fdG9rZW4/dGhpcy5fdG9rZW4gaW5zdGFuY2VvZiBNdCYmdGhpcy5fdG9rZW4uZGlzcG9zZSgpOnRoaXMuX3Rva2VuPUllLk5vbmV9fWNsYXNzIEl0e2NvbnN0cnVjdG9yKCl7dGhpcy5fa2V5Q29kZVRvU3RyPVtdLHRoaXMuX3N0clRvS2V5Q29kZT1PYmplY3QuY3JlYXRlKG51bGwpfWRlZmluZShlLHQpe3RoaXMuX2tleUNvZGVUb1N0cltlXT10LHRoaXMuX3N0clRvS2V5Q29kZVt0LnRvTG93ZXJDYXNlKCldPWV9a2V5Q29kZVRvU3RyKGUpe3JldHVybiB0aGlzLl9rZXlDb2RlVG9TdHJbZV19c3RyVG9LZXlDb2RlKGUpe3JldHVybiB0aGlzLl9zdHJUb0tleUNvZGVbZS50b0xvd2VyQ2FzZSgpXXx8MH19Y29uc3QgTnQ9bmV3IEl0LFV0PW5ldyBJdCx6dD1uZXcgSXQsSHQ9bmV3IEFycmF5KDIzMCksRHQ9e30sV3Q9W10sUHQ9T2JqZWN0LmNyZWF0ZShudWxsKSxPdD1PYmplY3QuY3JlYXRlKG51bGwpLHF0PVtdLEZ0PVtdO2ZvcihsZXQgZT0wO2U8PTE5MztlKyspcXRbZV09LTE7Zm9yKGxldCBlPTA7ZTw9MTI3O2UrKylGdFtlXT0tMTt7bGV0IGU9W10sdD1bXTtmb3IoY29uc3QgdWEgb2ZbWzAsMSwwLCJOb25lIiwwLCJ1bmtub3duIiwwLCJWS19VTktOT1dOIiwiIiwiIl0sWzAsMSwxLCJIeXBlciIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDIsIlN1cGVyIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMywiRm4iLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSw0LCJGbkxvY2siLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSw1LCJTdXNwZW5kIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsNiwiUmVzdW1lIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsNywiVHVyYm8iLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSw4LCJTbGVlcCIsMCwiIiwwLCJWS19TTEVFUCIsIiIsIiJdLFswLDEsOSwiV2FrZVVwIiwwLCIiLDAsIiIsIiIsIiJdLFszMSwwLDEwLCJLZXlBIiwzMSwiQSIsNjUsIlZLX0EiLCIiLCIiXSxbMzIsMCwxMSwiS2V5QiIsMzIsIkIiLDY2LCJWS19CIiwiIiwiIl0sWzMzLDAsMTIsIktleUMiLDMzLCJDIiw2NywiVktfQyIsIiIsIiJdLFszNCwwLDEzLCJLZXlEIiwzNCwiRCIsNjgsIlZLX0QiLCIiLCIiXSxbMzUsMCwxNCwiS2V5RSIsMzUsIkUiLDY5LCJWS19FIiwiIiwiIl0sWzM2LDAsMTUsIktleUYiLDM2LCJGIiw3MCwiVktfRiIsIiIsIiJdLFszNywwLDE2LCJLZXlHIiwzNywiRyIsNzEsIlZLX0ciLCIiLCIiXSxbMzgsMCwxNywiS2V5SCIsMzgsIkgiLDcyLCJWS19IIiwiIiwiIl0sWzM5LDAsMTgsIktleUkiLDM5LCJJIiw3MywiVktfSSIsIiIsIiJdLFs0MCwwLDE5LCJLZXlKIiw0MCwiSiIsNzQsIlZLX0oiLCIiLCIiXSxbNDEsMCwyMCwiS2V5SyIsNDEsIksiLDc1LCJWS19LIiwiIiwiIl0sWzQyLDAsMjEsIktleUwiLDQyLCJMIiw3NiwiVktfTCIsIiIsIiJdLFs0MywwLDIyLCJLZXlNIiw0MywiTSIsNzcsIlZLX00iLCIiLCIiXSxbNDQsMCwyMywiS2V5TiIsNDQsIk4iLDc4LCJWS19OIiwiIiwiIl0sWzQ1LDAsMjQsIktleU8iLDQ1LCJPIiw3OSwiVktfTyIsIiIsIiJdLFs0NiwwLDI1LCJLZXlQIiw0NiwiUCIsODAsIlZLX1AiLCIiLCIiXSxbNDcsMCwyNiwiS2V5USIsNDcsIlEiLDgxLCJWS19RIiwiIiwiIl0sWzQ4LDAsMjcsIktleVIiLDQ4LCJSIiw4MiwiVktfUiIsIiIsIiJdLFs0OSwwLDI4LCJLZXlTIiw0OSwiUyIsODMsIlZLX1MiLCIiLCIiXSxbNTAsMCwyOSwiS2V5VCIsNTAsIlQiLDg0LCJWS19UIiwiIiwiIl0sWzUxLDAsMzAsIktleVUiLDUxLCJVIiw4NSwiVktfVSIsIiIsIiJdLFs1MiwwLDMxLCJLZXlWIiw1MiwiViIsODYsIlZLX1YiLCIiLCIiXSxbNTMsMCwzMiwiS2V5VyIsNTMsIlciLDg3LCJWS19XIiwiIiwiIl0sWzU0LDAsMzMsIktleVgiLDU0LCJYIiw4OCwiVktfWCIsIiIsIiJdLFs1NSwwLDM0LCJLZXlZIiw1NSwiWSIsODksIlZLX1kiLCIiLCIiXSxbNTYsMCwzNSwiS2V5WiIsNTYsIloiLDkwLCJWS19aIiwiIiwiIl0sWzIyLDAsMzYsIkRpZ2l0MSIsMjIsIjEiLDQ5LCJWS18xIiwiIiwiIl0sWzIzLDAsMzcsIkRpZ2l0MiIsMjMsIjIiLDUwLCJWS18yIiwiIiwiIl0sWzI0LDAsMzgsIkRpZ2l0MyIsMjQsIjMiLDUxLCJWS18zIiwiIiwiIl0sWzI1LDAsMzksIkRpZ2l0NCIsMjUsIjQiLDUyLCJWS180IiwiIiwiIl0sWzI2LDAsNDAsIkRpZ2l0NSIsMjYsIjUiLDUzLCJWS181IiwiIiwiIl0sWzI3LDAsNDEsIkRpZ2l0NiIsMjcsIjYiLDU0LCJWS182IiwiIiwiIl0sWzI4LDAsNDIsIkRpZ2l0NyIsMjgsIjciLDU1LCJWS183IiwiIiwiIl0sWzI5LDAsNDMsIkRpZ2l0OCIsMjksIjgiLDU2LCJWS184IiwiIiwiIl0sWzMwLDAsNDQsIkRpZ2l0OSIsMzAsIjkiLDU3LCJWS185IiwiIiwiIl0sWzIxLDAsNDUsIkRpZ2l0MCIsMjEsIjAiLDQ4LCJWS18wIiwiIiwiIl0sWzMsMSw0NiwiRW50ZXIiLDMsIkVudGVyIiwxMywiVktfUkVUVVJOIiwiIiwiIl0sWzksMSw0NywiRXNjYXBlIiw5LCJFc2NhcGUiLDI3LCJWS19FU0NBUEUiLCIiLCIiXSxbMSwxLDQ4LCJCYWNrc3BhY2UiLDEsIkJhY2tzcGFjZSIsOCwiVktfQkFDSyIsIiIsIiJdLFsyLDEsNDksIlRhYiIsMiwiVGFiIiw5LCJWS19UQUIiLCIiLCIiXSxbMTAsMSw1MCwiU3BhY2UiLDEwLCJTcGFjZSIsMzIsIlZLX1NQQUNFIiwiIiwiIl0sWzgzLDAsNTEsIk1pbnVzIiw4MywiLSIsMTg5LCJWS19PRU1fTUlOVVMiLCItIiwiT0VNX01JTlVTIl0sWzgxLDAsNTIsIkVxdWFsIiw4MSwiPSIsMTg3LCJWS19PRU1fUExVUyIsIj0iLCJPRU1fUExVUyJdLFs4NywwLDUzLCJCcmFja2V0TGVmdCIsODcsIlsiLDIxOSwiVktfT0VNXzQiLCJbIiwiT0VNXzQiXSxbODksMCw1NCwiQnJhY2tldFJpZ2h0Iiw4OSwiXSIsMjIxLCJWS19PRU1fNiIsIl0iLCJPRU1fNiJdLFs4OCwwLDU1LCJCYWNrc2xhc2giLDg4LCJcXCIsMjIwLCJWS19PRU1fNSIsIlxcIiwiT0VNXzUiXSxbMCwwLDU2LCJJbnRsSGFzaCIsMCwiIiwwLCIiLCIiLCIiXSxbODAsMCw1NywiU2VtaWNvbG9uIiw4MCwiOyIsMTg2LCJWS19PRU1fMSIsIjsiLCJPRU1fMSJdLFs5MCwwLDU4LCJRdW90ZSIsOTAsIiciLDIyMiwiVktfT0VNXzciLCInIiwiT0VNXzciXSxbODYsMCw1OSwiQmFja3F1b3RlIiw4NiwiYCIsMTkyLCJWS19PRU1fMyIsImAiLCJPRU1fMyJdLFs4MiwwLDYwLCJDb21tYSIsODIsIiwiLDE4OCwiVktfT0VNX0NPTU1BIiwiLCIsIk9FTV9DT01NQSJdLFs4NCwwLDYxLCJQZXJpb2QiLDg0LCIuIiwxOTAsIlZLX09FTV9QRVJJT0QiLCIuIiwiT0VNX1BFUklPRCJdLFs4NSwwLDYyLCJTbGFzaCIsODUsIi8iLDE5MSwiVktfT0VNXzIiLCIvIiwiT0VNXzIiXSxbOCwxLDYzLCJDYXBzTG9jayIsOCwiQ2Fwc0xvY2siLDIwLCJWS19DQVBJVEFMIiwiIiwiIl0sWzU5LDEsNjQsIkYxIiw1OSwiRjEiLDExMiwiVktfRjEiLCIiLCIiXSxbNjAsMSw2NSwiRjIiLDYwLCJGMiIsMTEzLCJWS19GMiIsIiIsIiJdLFs2MSwxLDY2LCJGMyIsNjEsIkYzIiwxMTQsIlZLX0YzIiwiIiwiIl0sWzYyLDEsNjcsIkY0Iiw2MiwiRjQiLDExNSwiVktfRjQiLCIiLCIiXSxbNjMsMSw2OCwiRjUiLDYzLCJGNSIsMTE2LCJWS19GNSIsIiIsIiJdLFs2NCwxLDY5LCJGNiIsNjQsIkY2IiwxMTcsIlZLX0Y2IiwiIiwiIl0sWzY1LDEsNzAsIkY3Iiw2NSwiRjciLDExOCwiVktfRjciLCIiLCIiXSxbNjYsMSw3MSwiRjgiLDY2LCJGOCIsMTE5LCJWS19GOCIsIiIsIiJdLFs2NywxLDcyLCJGOSIsNjcsIkY5IiwxMjAsIlZLX0Y5IiwiIiwiIl0sWzY4LDEsNzMsIkYxMCIsNjgsIkYxMCIsMTIxLCJWS19GMTAiLCIiLCIiXSxbNjksMSw3NCwiRjExIiw2OSwiRjExIiwxMjIsIlZLX0YxMSIsIiIsIiJdLFs3MCwxLDc1LCJGMTIiLDcwLCJGMTIiLDEyMywiVktfRjEyIiwiIiwiIl0sWzAsMSw3NiwiUHJpbnRTY3JlZW4iLDAsIiIsMCwiIiwiIiwiIl0sWzc5LDEsNzcsIlNjcm9sbExvY2siLDc5LCJTY3JvbGxMb2NrIiwxNDUsIlZLX1NDUk9MTCIsIiIsIiJdLFs3LDEsNzgsIlBhdXNlIiw3LCJQYXVzZUJyZWFrIiwxOSwiVktfUEFVU0UiLCIiLCIiXSxbMTksMSw3OSwiSW5zZXJ0IiwxOSwiSW5zZXJ0Iiw0NSwiVktfSU5TRVJUIiwiIiwiIl0sWzE0LDEsODAsIkhvbWUiLDE0LCJIb21lIiwzNiwiVktfSE9NRSIsIiIsIiJdLFsxMSwxLDgxLCJQYWdlVXAiLDExLCJQYWdlVXAiLDMzLCJWS19QUklPUiIsIiIsIiJdLFsyMCwxLDgyLCJEZWxldGUiLDIwLCJEZWxldGUiLDQ2LCJWS19ERUxFVEUiLCIiLCIiXSxbMTMsMSw4MywiRW5kIiwxMywiRW5kIiwzNSwiVktfRU5EIiwiIiwiIl0sWzEyLDEsODQsIlBhZ2VEb3duIiwxMiwiUGFnZURvd24iLDM0LCJWS19ORVhUIiwiIiwiIl0sWzE3LDEsODUsIkFycm93UmlnaHQiLDE3LCJSaWdodEFycm93IiwzOSwiVktfUklHSFQiLCJSaWdodCIsIiJdLFsxNSwxLDg2LCJBcnJvd0xlZnQiLDE1LCJMZWZ0QXJyb3ciLDM3LCJWS19MRUZUIiwiTGVmdCIsIiJdLFsxOCwxLDg3LCJBcnJvd0Rvd24iLDE4LCJEb3duQXJyb3ciLDQwLCJWS19ET1dOIiwiRG93biIsIiJdLFsxNiwxLDg4LCJBcnJvd1VwIiwxNiwiVXBBcnJvdyIsMzgsIlZLX1VQIiwiVXAiLCIiXSxbNzgsMSw4OSwiTnVtTG9jayIsNzgsIk51bUxvY2siLDE0NCwiVktfTlVNTE9DSyIsIiIsIiJdLFsxMDgsMSw5MCwiTnVtcGFkRGl2aWRlIiwxMDgsIk51bVBhZF9EaXZpZGUiLDExMSwiVktfRElWSURFIiwiIiwiIl0sWzEwMywxLDkxLCJOdW1wYWRNdWx0aXBseSIsMTAzLCJOdW1QYWRfTXVsdGlwbHkiLDEwNiwiVktfTVVMVElQTFkiLCIiLCIiXSxbMTA2LDEsOTIsIk51bXBhZFN1YnRyYWN0IiwxMDYsIk51bVBhZF9TdWJ0cmFjdCIsMTA5LCJWS19TVUJUUkFDVCIsIiIsIiJdLFsxMDQsMSw5MywiTnVtcGFkQWRkIiwxMDQsIk51bVBhZF9BZGQiLDEwNywiVktfQUREIiwiIiwiIl0sWzMsMSw5NCwiTnVtcGFkRW50ZXIiLDMsIiIsMCwiIiwiIiwiIl0sWzk0LDEsOTUsIk51bXBhZDEiLDk0LCJOdW1QYWQxIiw5NywiVktfTlVNUEFEMSIsIiIsIiJdLFs5NSwxLDk2LCJOdW1wYWQyIiw5NSwiTnVtUGFkMiIsOTgsIlZLX05VTVBBRDIiLCIiLCIiXSxbOTYsMSw5NywiTnVtcGFkMyIsOTYsIk51bVBhZDMiLDk5LCJWS19OVU1QQUQzIiwiIiwiIl0sWzk3LDEsOTgsIk51bXBhZDQiLDk3LCJOdW1QYWQ0IiwxMDAsIlZLX05VTVBBRDQiLCIiLCIiXSxbOTgsMSw5OSwiTnVtcGFkNSIsOTgsIk51bVBhZDUiLDEwMSwiVktfTlVNUEFENSIsIiIsIiJdLFs5OSwxLDEwMCwiTnVtcGFkNiIsOTksIk51bVBhZDYiLDEwMiwiVktfTlVNUEFENiIsIiIsIiJdLFsxMDAsMSwxMDEsIk51bXBhZDciLDEwMCwiTnVtUGFkNyIsMTAzLCJWS19OVU1QQUQ3IiwiIiwiIl0sWzEwMSwxLDEwMiwiTnVtcGFkOCIsMTAxLCJOdW1QYWQ4IiwxMDQsIlZLX05VTVBBRDgiLCIiLCIiXSxbMTAyLDEsMTAzLCJOdW1wYWQ5IiwxMDIsIk51bVBhZDkiLDEwNSwiVktfTlVNUEFEOSIsIiIsIiJdLFs5MywxLDEwNCwiTnVtcGFkMCIsOTMsIk51bVBhZDAiLDk2LCJWS19OVU1QQUQwIiwiIiwiIl0sWzEwNywxLDEwNSwiTnVtcGFkRGVjaW1hbCIsMTA3LCJOdW1QYWRfRGVjaW1hbCIsMTEwLCJWS19ERUNJTUFMIiwiIiwiIl0sWzkyLDAsMTA2LCJJbnRsQmFja3NsYXNoIiw5MiwiT0VNXzEwMiIsMjI2LCJWS19PRU1fMTAyIiwiIiwiIl0sWzU4LDEsMTA3LCJDb250ZXh0TWVudSIsNTgsIkNvbnRleHRNZW51Iiw5MywiIiwiIiwiIl0sWzAsMSwxMDgsIlBvd2VyIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTA5LCJOdW1wYWRFcXVhbCIsMCwiIiwwLCIiLCIiLCIiXSxbNzEsMSwxMTAsIkYxMyIsNzEsIkYxMyIsMTI0LCJWS19GMTMiLCIiLCIiXSxbNzIsMSwxMTEsIkYxNCIsNzIsIkYxNCIsMTI1LCJWS19GMTQiLCIiLCIiXSxbNzMsMSwxMTIsIkYxNSIsNzMsIkYxNSIsMTI2LCJWS19GMTUiLCIiLCIiXSxbNzQsMSwxMTMsIkYxNiIsNzQsIkYxNiIsMTI3LCJWS19GMTYiLCIiLCIiXSxbNzUsMSwxMTQsIkYxNyIsNzUsIkYxNyIsMTI4LCJWS19GMTciLCIiLCIiXSxbNzYsMSwxMTUsIkYxOCIsNzYsIkYxOCIsMTI5LCJWS19GMTgiLCIiLCIiXSxbNzcsMSwxMTYsIkYxOSIsNzcsIkYxOSIsMTMwLCJWS19GMTkiLCIiLCIiXSxbMCwxLDExNywiRjIwIiwwLCIiLDAsIlZLX0YyMCIsIiIsIiJdLFswLDEsMTE4LCJGMjEiLDAsIiIsMCwiVktfRjIxIiwiIiwiIl0sWzAsMSwxMTksIkYyMiIsMCwiIiwwLCJWS19GMjIiLCIiLCIiXSxbMCwxLDEyMCwiRjIzIiwwLCIiLDAsIlZLX0YyMyIsIiIsIiJdLFswLDEsMTIxLCJGMjQiLDAsIiIsMCwiVktfRjI0IiwiIiwiIl0sWzAsMSwxMjIsIk9wZW4iLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMjMsIkhlbHAiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMjQsIlNlbGVjdCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyNSwiQWdhaW4iLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMjYsIlVuZG8iLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMjcsIkN1dCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyOCwiQ29weSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyOSwiUGFzdGUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMzAsIkZpbmQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMzEsIkF1ZGlvVm9sdW1lTXV0ZSIsMTEyLCJBdWRpb1ZvbHVtZU11dGUiLDE3MywiVktfVk9MVU1FX01VVEUiLCIiLCIiXSxbMCwxLDEzMiwiQXVkaW9Wb2x1bWVVcCIsMTEzLCJBdWRpb1ZvbHVtZVVwIiwxNzUsIlZLX1ZPTFVNRV9VUCIsIiIsIiJdLFswLDEsMTMzLCJBdWRpb1ZvbHVtZURvd24iLDExNCwiQXVkaW9Wb2x1bWVEb3duIiwxNzQsIlZLX1ZPTFVNRV9ET1dOIiwiIiwiIl0sWzEwNSwxLDEzNCwiTnVtcGFkQ29tbWEiLDEwNSwiTnVtUGFkX1NlcGFyYXRvciIsMTA4LCJWS19TRVBBUkFUT1IiLCIiLCIiXSxbMTEwLDAsMTM1LCJJbnRsUm8iLDExMCwiQUJOVF9DMSIsMTkzLCJWS19BQk5UX0MxIiwiIiwiIl0sWzAsMSwxMzYsIkthbmFNb2RlIiwwLCIiLDAsIiIsIiIsIiJdLFswLDAsMTM3LCJJbnRsWWVuIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTM4LCJDb252ZXJ0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTM5LCJOb25Db252ZXJ0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQwLCJMYW5nMSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0MSwiTGFuZzIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDIsIkxhbmczIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQzLCJMYW5nNCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0NCwiTGFuZzUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDUsIkFib3J0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQ2LCJQcm9wcyIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0NywiTnVtcGFkUGFyZW5MZWZ0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQ4LCJOdW1wYWRQYXJlblJpZ2h0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQ5LCJOdW1wYWRCYWNrc3BhY2UiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTAsIk51bXBhZE1lbW9yeVN0b3JlIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTUxLCJOdW1wYWRNZW1vcnlSZWNhbGwiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTIsIk51bXBhZE1lbW9yeUNsZWFyIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTUzLCJOdW1wYWRNZW1vcnlBZGQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTQsIk51bXBhZE1lbW9yeVN1YnRyYWN0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTU1LCJOdW1wYWRDbGVhciIsMTI2LCJDbGVhciIsMTIsIlZLX0NMRUFSIiwiIiwiIl0sWzAsMSwxNTYsIk51bXBhZENsZWFyRW50cnkiLDAsIiIsMCwiIiwiIiwiIl0sWzUsMSwwLCIiLDUsIkN0cmwiLDE3LCJWS19DT05UUk9MIiwiIiwiIl0sWzQsMSwwLCIiLDQsIlNoaWZ0IiwxNiwiVktfU0hJRlQiLCIiLCIiXSxbNiwxLDAsIiIsNiwiQWx0IiwxOCwiVktfTUVOVSIsIiIsIiJdLFs1NywxLDAsIiIsNTcsIk1ldGEiLDAsIlZLX0NPTU1BTkQiLCIiLCIiXSxbNSwxLDE1NywiQ29udHJvbExlZnQiLDUsIiIsMCwiVktfTENPTlRST0wiLCIiLCIiXSxbNCwxLDE1OCwiU2hpZnRMZWZ0Iiw0LCIiLDAsIlZLX0xTSElGVCIsIiIsIiJdLFs2LDEsMTU5LCJBbHRMZWZ0Iiw2LCIiLDAsIlZLX0xNRU5VIiwiIiwiIl0sWzU3LDEsMTYwLCJNZXRhTGVmdCIsNTcsIiIsMCwiVktfTFdJTiIsIiIsIiJdLFs1LDEsMTYxLCJDb250cm9sUmlnaHQiLDUsIiIsMCwiVktfUkNPTlRST0wiLCIiLCIiXSxbNCwxLDE2MiwiU2hpZnRSaWdodCIsNCwiIiwwLCJWS19SU0hJRlQiLCIiLCIiXSxbNiwxLDE2MywiQWx0UmlnaHQiLDYsIiIsMCwiVktfUk1FTlUiLCIiLCIiXSxbNTcsMSwxNjQsIk1ldGFSaWdodCIsNTcsIiIsMCwiVktfUldJTiIsIiIsIiJdLFswLDEsMTY1LCJCcmlnaHRuZXNzVXAiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNjYsIkJyaWdodG5lc3NEb3duIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTY3LCJNZWRpYVBsYXkiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNjgsIk1lZGlhUmVjb3JkIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTY5LCJNZWRpYUZhc3RGb3J3YXJkIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTcwLCJNZWRpYVJld2luZCIsMCwiIiwwLCIiLCIiLCIiXSxbMTE0LDEsMTcxLCJNZWRpYVRyYWNrTmV4dCIsMTE5LCJNZWRpYVRyYWNrTmV4dCIsMTc2LCJWS19NRURJQV9ORVhUX1RSQUNLIiwiIiwiIl0sWzExNSwxLDE3MiwiTWVkaWFUcmFja1ByZXZpb3VzIiwxMjAsIk1lZGlhVHJhY2tQcmV2aW91cyIsMTc3LCJWS19NRURJQV9QUkVWX1RSQUNLIiwiIiwiIl0sWzExNiwxLDE3MywiTWVkaWFTdG9wIiwxMjEsIk1lZGlhU3RvcCIsMTc4LCJWS19NRURJQV9TVE9QIiwiIiwiIl0sWzAsMSwxNzQsIkVqZWN0IiwwLCIiLDAsIiIsIiIsIiJdLFsxMTcsMSwxNzUsIk1lZGlhUGxheVBhdXNlIiwxMjIsIk1lZGlhUGxheVBhdXNlIiwxNzksIlZLX01FRElBX1BMQVlfUEFVU0UiLCIiLCIiXSxbMCwxLDE3NiwiTWVkaWFTZWxlY3QiLDEyMywiTGF1bmNoTWVkaWFQbGF5ZXIiLDE4MSwiVktfTUVESUFfTEFVTkNIX01FRElBX1NFTEVDVCIsIiIsIiJdLFswLDEsMTc3LCJMYXVuY2hNYWlsIiwxMjQsIkxhdW5jaE1haWwiLDE4MCwiVktfTUVESUFfTEFVTkNIX01BSUwiLCIiLCIiXSxbMCwxLDE3OCwiTGF1bmNoQXBwMiIsMTI1LCJMYXVuY2hBcHAyIiwxODMsIlZLX01FRElBX0xBVU5DSF9BUFAyIiwiIiwiIl0sWzAsMSwxNzksIkxhdW5jaEFwcDEiLDAsIiIsMCwiVktfTUVESUFfTEFVTkNIX0FQUDEiLCIiLCIiXSxbMCwxLDE4MCwiU2VsZWN0VGFzayIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE4MSwiTGF1bmNoU2NyZWVuU2F2ZXIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxODIsIkJyb3dzZXJTZWFyY2giLDExNSwiQnJvd3NlclNlYXJjaCIsMTcwLCJWS19CUk9XU0VSX1NFQVJDSCIsIiIsIiJdLFswLDEsMTgzLCJCcm93c2VySG9tZSIsMTE2LCJCcm93c2VySG9tZSIsMTcyLCJWS19CUk9XU0VSX0hPTUUiLCIiLCIiXSxbMTEyLDEsMTg0LCJCcm93c2VyQmFjayIsMTE3LCJCcm93c2VyQmFjayIsMTY2LCJWS19CUk9XU0VSX0JBQ0siLCIiLCIiXSxbMTEzLDEsMTg1LCJCcm93c2VyRm9yd2FyZCIsMTE4LCJCcm93c2VyRm9yd2FyZCIsMTY3LCJWS19CUk9XU0VSX0ZPUldBUkQiLCIiLCIiXSxbMCwxLDE4NiwiQnJvd3NlclN0b3AiLDAsIiIsMCwiVktfQlJPV1NFUl9TVE9QIiwiIiwiIl0sWzAsMSwxODcsIkJyb3dzZXJSZWZyZXNoIiwwLCIiLDAsIlZLX0JST1dTRVJfUkVGUkVTSCIsIiIsIiJdLFswLDEsMTg4LCJCcm93c2VyRmF2b3JpdGVzIiwwLCIiLDAsIlZLX0JST1dTRVJfRkFWT1JJVEVTIiwiIiwiIl0sWzAsMSwxODksIlpvb21Ub2dnbGUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxOTAsIk1haWxSZXBseSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE5MSwiTWFpbEZvcndhcmQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxOTIsIk1haWxTZW5kIiwwLCIiLDAsIiIsIiIsIiJdLFsxMDksMSwwLCIiLDEwOSwiS2V5SW5Db21wb3NpdGlvbiIsMjI5LCIiLCIiLCIiXSxbMTExLDEsMCwiIiwxMTEsIkFCTlRfQzIiLDE5NCwiVktfQUJOVF9DMiIsIiIsIiJdLFs5MSwxLDAsIiIsOTEsIk9FTV84IiwyMjMsIlZLX09FTV84IiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfS0FOQSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0hBTkdVTCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0pVTkpBIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfRklOQUwiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19IQU5KQSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0tBTkpJIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfQ09OVkVSVCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX05PTkNPTlZFUlQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19BQ0NFUFQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19NT0RFQ0hBTkdFIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfU0VMRUNUIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfUFJJTlQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19FWEVDVVRFIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfU05BUFNIT1QiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19IRUxQIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfQVBQUyIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX1BST0NFU1NLRVkiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19QQUNLRVQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19EQkVfU0JDU0NIQVIiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19EQkVfREJDU0NIQVIiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19BVFROIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfQ1JTRUwiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19FWFNFTCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0VSRU9GIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfUExBWSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX1pPT00iLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19OT05BTUUiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19QQTEiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19PRU1fQ0xFQVIiLCIiLCIiXV0pe2NvbnN0WyxwYSxtYSxmYSxnYSxiYSxfYSx3YSx2YSx5YV09dWE7aWYodFttYV18fCh0W21hXT0hMCxXdFttYV09ZmEsUHRbZmFdPW1hLE90W2ZhLnRvTG93ZXJDYXNlKCldPW1hLHBhJiYwIT09KHF0W21hXT1nYSkmJjMhPT1nYSYmNSE9PWdhJiY0IT09Z2EmJjYhPT1nYSYmNTchPT1nYSYmKEZ0W2dhXT1tYSkpLCFlW2dhXSl7aWYoZVtnYV09ITAsIWJhKXRocm93IG5ldyBFcnJvcihgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG1pc3NpbmcgZm9yIGtleSBjb2RlICR7Z2F9IGFyb3VuZCBzY2FuIGNvZGUgYCtmYSk7TnQuZGVmaW5lKGdhLGJhKSxVdC5kZWZpbmUoZ2EsdmF8fGJhKSx6dC5kZWZpbmUoZ2EseWF8fHZhfHxiYSl9X2EmJihIdFtfYV09Z2EpLHdhJiYoRHRbd2FdPWdhKX1GdFszXT00Nn1jbGFzcyBWdCBleHRlbmRzIGF0e2NvbnN0cnVjdG9yKGUsdCxuLHIpe3N1cGVyKGUsdCxuLHIpLHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbj10LHRoaXMucG9zaXRpb25MaW5lTnVtYmVyPW4sdGhpcy5wb3NpdGlvbkNvbHVtbj1yfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLnBvc2l0aW9uTGluZU51bWJlcisiLCIrdGhpcy5wb3NpdGlvbkNvbHVtbisiXSJ9ZXF1YWxzU2VsZWN0aW9uKGUpe3JldHVybiBWdC5zZWxlY3Rpb25zRXF1YWwodGhpcyxlKX1zdGF0aWMgc2VsZWN0aW9uc0VxdWFsKGUsdCl7cmV0dXJuIGUuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPT09dC5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXImJmUuc2VsZWN0aW9uU3RhcnRDb2x1bW49PT10LnNlbGVjdGlvblN0YXJ0Q29sdW1uJiZlLnBvc2l0aW9uTGluZU51bWJlcj09PXQucG9zaXRpb25MaW5lTnVtYmVyJiZlLnBvc2l0aW9uQ29sdW1uPT09dC5wb3NpdGlvbkNvbHVtbn1nZXREaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9PT10aGlzLnN0YXJ0TGluZU51bWJlciYmdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbj09PXRoaXMuc3RhcnRDb2x1bW4/MDoxfXNldEVuZFBvc2l0aW9uKGUsdCl7cmV0dXJuIDA9PT10aGlzLmdldERpcmVjdGlvbigpP25ldyBWdCh0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uLGUsdCk6bmV3IFZ0KGUsdCx0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uKX1nZXRQb3NpdGlvbigpe3JldHVybiBuZXcgaXQodGhpcy5wb3NpdGlvbkxpbmVOdW1iZXIsdGhpcy5wb3NpdGlvbkNvbHVtbil9Z2V0U2VsZWN0aW9uU3RhcnQoKXtyZXR1cm4gbmV3IGl0KHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyLHRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW4pfXNldFN0YXJ0UG9zaXRpb24oZSx0KXtyZXR1cm4gMD09PXRoaXMuZ2V0RGlyZWN0aW9uKCk/bmV3IFZ0KGUsdCx0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4pOm5ldyBWdCh0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4sZSx0KX1zdGF0aWMgZnJvbVBvc2l0aW9ucyhlLHQ9ZSl7cmV0dXJuIG5ldyBWdChlLmxpbmVOdW1iZXIsZS5jb2x1bW4sdC5saW5lTnVtYmVyLHQuY29sdW1uKX1zdGF0aWMgZnJvbVJhbmdlKGUsdCl7cmV0dXJuIDA9PT10P25ldyBWdChlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uLGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbik6bmV3IFZ0KGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbixlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKX1zdGF0aWMgbGlmdFNlbGVjdGlvbihlKXtyZXR1cm4gbmV3IFZ0KGUuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyLGUuc2VsZWN0aW9uU3RhcnRDb2x1bW4sZS5wb3NpdGlvbkxpbmVOdW1iZXIsZS5wb3NpdGlvbkNvbHVtbil9c3RhdGljIHNlbGVjdGlvbnNBcnJFcXVhbChuLHIpe2lmKG4mJiFyfHwhbiYmcilyZXR1cm4hMTtpZighbiYmIXIpcmV0dXJuITA7aWYobi5sZW5ndGghPT1yLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspaWYoIXRoaXMuc2VsZWN0aW9uc0VxdWFsKG5bZV0scltlXSkpcmV0dXJuITE7cmV0dXJuITB9c3RhdGljIGlzSVNlbGVjdGlvbihlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnNlbGVjdGlvblN0YXJ0Q29sdW1uJiYibnVtYmVyIj09dHlwZW9mIGUucG9zaXRpb25MaW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUucG9zaXRpb25Db2x1bW59c3RhdGljIGNyZWF0ZVdpdGhEaXJlY3Rpb24oZSx0LG4scixpKXtyZXR1cm4gMD09PWk/bmV3IFZ0KGUsdCxuLHIpOm5ldyBWdChuLHIsZSx0KX19dmFyIEJ0LEt0PWZ1bmN0aW9uKGUsbyxzLGwpe3JldHVybiBuZXcocz1zfHxQcm9taXNlKShmdW5jdGlvbihuLHQpe2Z1bmN0aW9uIHIoZSl7dHJ5e2EobC5uZXh0KGUpKX1jYXRjaChlKXt0KGUpfX1mdW5jdGlvbiBpKGUpe3RyeXthKGwudGhyb3coZSkpfWNhdGNoKGUpe3QoZSl9fWZ1bmN0aW9uIGEoZSl7dmFyIHQ7ZS5kb25lP24oZS52YWx1ZSk6KCh0PWUudmFsdWUpaW5zdGFuY2VvZiBzP3Q6bmV3IHMoZnVuY3Rpb24oZSl7ZSh0KX0pKS50aGVuKHIsaSl9YSgobD1sLmFwcGx5KGUsb3x8W10pKS5uZXh0KCkpfSl9O2NsYXNzIGp0IGV4dGVuZHMgdntjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoKSx0aGlzLl9yZWdpc3RyeT1lLHRoaXMuX2xhbmd1YWdlSWQ9dCx0aGlzLl9mYWN0b3J5PW4sdGhpcy5faXNEaXNwb3NlZD0hMSx0aGlzLl9yZXNvbHZlUHJvbWlzZT1udWxsLHRoaXMuX2lzUmVzb2x2ZWQ9ITF9Z2V0IGlzUmVzb2x2ZWQoKXtyZXR1cm4gdGhpcy5faXNSZXNvbHZlZH1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZD0hMCxzdXBlci5kaXNwb3NlKCl9cmVzb2x2ZSgpe3JldHVybiBLdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVQcm9taXNlfHwodGhpcy5fcmVzb2x2ZVByb21pc2U9dGhpcy5fY3JlYXRlKCkpLHRoaXMuX3Jlc29sdmVQcm9taXNlfSl9X2NyZWF0ZSgpe3JldHVybiBLdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dmFyIGU9eWllbGQgUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2ZhY3RvcnkuY3JlYXRlVG9rZW5pemF0aW9uU3VwcG9ydCgpKTt0aGlzLl9pc1Jlc29sdmVkPSEwLGUmJiF0aGlzLl9pc0Rpc3Bvc2VkJiZ0aGlzLl9yZWdpc3Rlcih0aGlzLl9yZWdpc3RyeS5yZWdpc3Rlcih0aGlzLl9sYW5ndWFnZUlkLGUpKX0pfX1jbGFzcyBpe2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmlkPWUsdGhpcy5kZWZpbml0aW9uPXQsdGhpcy5kZXNjcmlwdGlvbj1uLGkuX2FsbENvZGljb25zLnB1c2godGhpcyl9Z2V0IGNsYXNzTmFtZXMoKXtyZXR1cm4iY29kaWNvbiBjb2RpY29uLSIrdGhpcy5pZH1nZXQgY2xhc3NOYW1lc0FycmF5KCl7cmV0dXJuWyJjb2RpY29uIiwiY29kaWNvbi0iK3RoaXMuaWRdfWdldCBjc3NTZWxlY3Rvcigpe3JldHVybiIuY29kaWNvbi5jb2RpY29uLSIrdGhpcy5pZH1zdGF0aWMgZ2V0QWxsKCl7cmV0dXJuIGkuX2FsbENvZGljb25zfX1pLl9hbGxDb2RpY29ucz1bXSxpLmFkZD1uZXcgaSgiYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTYwIn0pLGkucGx1cz1uZXcgaSgicGx1cyIsaS5hZGQuZGVmaW5pdGlvbiksaS5naXN0TmV3PW5ldyBpKCJnaXN0LW5ldyIsaS5hZGQuZGVmaW5pdGlvbiksaS5yZXBvQ3JlYXRlPW5ldyBpKCJyZXBvLWNyZWF0ZSIsaS5hZGQuZGVmaW5pdGlvbiksaS5saWdodGJ1bGI9bmV3IGkoImxpZ2h0YnVsYiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MSJ9KSxpLmxpZ2h0QnVsYj1uZXcgaSgibGlnaHQtYnVsYiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MSJ9KSxpLnJlcG89bmV3IGkoInJlcG8iLHtmb250Q2hhcmFjdGVyOiJcXGVhNjIifSksaS5yZXBvRGVsZXRlPW5ldyBpKCJyZXBvLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MiJ9KSxpLmdpc3RGb3JrPW5ldyBpKCJnaXN0LWZvcmsiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjMifSksaS5yZXBvRm9ya2VkPW5ldyBpKCJyZXBvLWZvcmtlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MyJ9KSxpLmdpdFB1bGxSZXF1ZXN0PW5ldyBpKCJnaXQtcHVsbC1yZXF1ZXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTY0In0pLGkuZ2l0UHVsbFJlcXVlc3RBYmFuZG9uZWQ9bmV3IGkoImdpdC1wdWxsLXJlcXVlc3QtYWJhbmRvbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY0In0pLGkucmVjb3JkS2V5cz1uZXcgaSgicmVjb3JkLWtleXMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjUifSksaS5rZXlib2FyZD1uZXcgaSgia2V5Ym9hcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjUifSksaS50YWc9bmV3IGkoInRhZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NiJ9KSxpLnRhZ0FkZD1uZXcgaSgidGFnLWFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NiJ9KSxpLnRhZ1JlbW92ZT1uZXcgaSgidGFnLXJlbW92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NiJ9KSxpLnBlcnNvbj1uZXcgaSgicGVyc29uIix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLGkucGVyc29uRm9sbG93PW5ldyBpKCJwZXJzb24tZm9sbG93Iix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLGkucGVyc29uT3V0bGluZT1uZXcgaSgicGVyc29uLW91dGxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksaS5wZXJzb25GaWxsZWQ9bmV3IGkoInBlcnNvbi1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksaS5naXRCcmFuY2g9bmV3IGkoImdpdC1icmFuY2giLHtmb250Q2hhcmFjdGVyOiJcXGVhNjgifSksaS5naXRCcmFuY2hDcmVhdGU9bmV3IGkoImdpdC1icmFuY2gtY3JlYXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTY4In0pLGkuZ2l0QnJhbmNoRGVsZXRlPW5ldyBpKCJnaXQtYnJhbmNoLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxpLnNvdXJjZUNvbnRyb2w9bmV3IGkoInNvdXJjZS1jb250cm9sIix7Zm9udENoYXJhY3RlcjoiXFxlYTY4In0pLGkubWlycm9yPW5ldyBpKCJtaXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjkifSksaS5taXJyb3JQdWJsaWM9bmV3IGkoIm1pcnJvci1wdWJsaWMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjkifSksaS5zdGFyPW5ldyBpKCJzdGFyIix7Zm9udENoYXJhY3RlcjoiXFxlYTZhIn0pLGkuc3RhckFkZD1uZXcgaSgic3Rhci1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmEifSksaS5zdGFyRGVsZXRlPW5ldyBpKCJzdGFyLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YSJ9KSxpLnN0YXJFbXB0eT1uZXcgaSgic3Rhci1lbXB0eSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YSJ9KSxpLmNvbW1lbnQ9bmV3IGkoImNvbW1lbnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmIifSksaS5jb21tZW50QWRkPW5ldyBpKCJjb21tZW50LWFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YiJ9KSxpLmFsZXJ0PW5ldyBpKCJhbGVydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YyJ9KSxpLndhcm5pbmc9bmV3IGkoIndhcm5pbmciLHtmb250Q2hhcmFjdGVyOiJcXGVhNmMifSksaS5zZWFyY2g9bmV3IGkoInNlYXJjaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZCJ9KSxpLnNlYXJjaFNhdmU9bmV3IGkoInNlYXJjaC1zYXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYTZkIn0pLGkubG9nT3V0PW5ldyBpKCJsb2ctb3V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZlIn0pLGkuc2lnbk91dD1uZXcgaSgic2lnbi1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmUifSksaS5sb2dJbj1uZXcgaSgibG9nLWluIix7Zm9udENoYXJhY3RlcjoiXFxlYTZmIn0pLGkuc2lnbkluPW5ldyBpKCJzaWduLWluIix7Zm9udENoYXJhY3RlcjoiXFxlYTZmIn0pLGkuZXllPW5ldyBpKCJleWUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzAifSksaS5leWVVbndhdGNoPW5ldyBpKCJleWUtdW53YXRjaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MCJ9KSxpLmV5ZVdhdGNoPW5ldyBpKCJleWUtd2F0Y2giLHtmb250Q2hhcmFjdGVyOiJcXGVhNzAifSksaS5jaXJjbGVGaWxsZWQ9bmV3IGkoImNpcmNsZS1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksaS5wcmltaXRpdmVEb3Q9bmV3IGkoInByaW1pdGl2ZS1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksaS5jbG9zZURpcnR5PW5ldyBpKCJjbG9zZS1kaXJ0eSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxpLmRlYnVnQnJlYWtwb2ludD1uZXcgaSgiZGVidWctYnJlYWtwb2ludCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxpLmRlYnVnQnJlYWtwb2ludERpc2FibGVkPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLGkuZGVidWdIaW50PW5ldyBpKCJkZWJ1Zy1oaW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLGkucHJpbWl0aXZlU3F1YXJlPW5ldyBpKCJwcmltaXRpdmUtc3F1YXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYTcyIn0pLGkuZWRpdD1uZXcgaSgiZWRpdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MyJ9KSxpLnBlbmNpbD1uZXcgaSgicGVuY2lsIix7Zm9udENoYXJhY3RlcjoiXFxlYTczIn0pLGkuaW5mbz1uZXcgaSgiaW5mbyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NCJ9KSxpLmlzc3VlT3BlbmVkPW5ldyBpKCJpc3N1ZS1vcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzQifSksaS5naXN0UHJpdmF0ZT1uZXcgaSgiZ2lzdC1wcml2YXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLGkuZ2l0Rm9ya1ByaXZhdGU9bmV3IGkoImdpdC1mb3JrLXByaXZhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzUifSksaS5sb2NrPW5ldyBpKCJsb2NrIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLGkubWlycm9yUHJpdmF0ZT1uZXcgaSgibWlycm9yLXByaXZhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzUifSksaS5jbG9zZT1uZXcgaSgiY2xvc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksaS5yZW1vdmVDbG9zZT1uZXcgaSgicmVtb3ZlLWNsb3NlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc2In0pLGkueD1uZXcgaSgieCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NiJ9KSxpLnJlcG9TeW5jPW5ldyBpKCJyZXBvLXN5bmMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzcifSksaS5zeW5jPW5ldyBpKCJzeW5jIix7Zm9udENoYXJhY3RlcjoiXFxlYTc3In0pLGkuY2xvbmU9bmV3IGkoImNsb25lIix7Zm9udENoYXJhY3RlcjoiXFxlYTc4In0pLGkuZGVza3RvcERvd25sb2FkPW5ldyBpKCJkZXNrdG9wLWRvd25sb2FkIix7Zm9udENoYXJhY3RlcjoiXFxlYTc4In0pLGkuYmVha2VyPW5ldyBpKCJiZWFrZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzkifSksaS5taWNyb3Njb3BlPW5ldyBpKCJtaWNyb3Njb3BlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc5In0pLGkudm09bmV3IGkoInZtIix7Zm9udENoYXJhY3RlcjoiXFxlYTdhIn0pLGkuZGV2aWNlRGVza3RvcD1uZXcgaSgiZGV2aWNlLWRlc2t0b3AiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2EifSksaS5maWxlPW5ldyBpKCJmaWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTdiIn0pLGkuZmlsZVRleHQ9bmV3IGkoImZpbGUtdGV4dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YiJ9KSxpLm1vcmU9bmV3IGkoIm1vcmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2MifSksaS5lbGxpcHNpcz1uZXcgaSgiZWxsaXBzaXMiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2MifSksaS5rZWJhYkhvcml6b250YWw9bmV3IGkoImtlYmFiLWhvcml6b250YWwiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2MifSksaS5tYWlsUmVwbHk9bmV3IGkoIm1haWwtcmVwbHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2QifSksaS5yZXBseT1uZXcgaSgicmVwbHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2QifSksaS5vcmdhbml6YXRpb249bmV3IGkoIm9yZ2FuaXphdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZSJ9KSxpLm9yZ2FuaXphdGlvbkZpbGxlZD1uZXcgaSgib3JnYW5pemF0aW9uLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZSJ9KSxpLm9yZ2FuaXphdGlvbk91dGxpbmU9bmV3IGkoIm9yZ2FuaXphdGlvbi1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYTdlIn0pLGkubmV3RmlsZT1uZXcgaSgibmV3LWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2YifSksaS5maWxlQWRkPW5ldyBpKCJmaWxlLWFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZiJ9KSxpLm5ld0ZvbGRlcj1uZXcgaSgibmV3LWZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MCJ9KSxpLmZpbGVEaXJlY3RvcnlDcmVhdGU9bmV3IGkoImZpbGUtZGlyZWN0b3J5LWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MCJ9KSxpLnRyYXNoPW5ldyBpKCJ0cmFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MSJ9KSxpLnRyYXNoY2FuPW5ldyBpKCJ0cmFzaGNhbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MSJ9KSxpLmhpc3Rvcnk9bmV3IGkoImhpc3RvcnkiLHtmb250Q2hhcmFjdGVyOiJcXGVhODIifSksaS5jbG9jaz1uZXcgaSgiY2xvY2siLHtmb250Q2hhcmFjdGVyOiJcXGVhODIifSksaS5mb2xkZXI9bmV3IGkoImZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MyJ9KSxpLmZpbGVEaXJlY3Rvcnk9bmV3IGkoImZpbGUtZGlyZWN0b3J5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTgzIn0pLGkuc3ltYm9sRm9sZGVyPW5ldyBpKCJzeW1ib2wtZm9sZGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTgzIn0pLGkubG9nb0dpdGh1Yj1uZXcgaSgibG9nby1naXRodWIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODQifSksaS5tYXJrR2l0aHViPW5ldyBpKCJtYXJrLWdpdGh1YiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NCJ9KSxpLmdpdGh1Yj1uZXcgaSgiZ2l0aHViIix7Zm9udENoYXJhY3RlcjoiXFxlYTg0In0pLGkudGVybWluYWw9bmV3IGkoInRlcm1pbmFsIix7Zm9udENoYXJhY3RlcjoiXFxlYTg1In0pLGkuY29uc29sZT1uZXcgaSgiY29uc29sZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxpLnJlcGw9bmV3IGkoInJlcGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhODUifSksaS56YXA9bmV3IGkoInphcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NiJ9KSxpLnN5bWJvbEV2ZW50PW5ldyBpKCJzeW1ib2wtZXZlbnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhODYifSksaS5lcnJvcj1uZXcgaSgiZXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGVhODcifSksaS5zdG9wPW5ldyBpKCJzdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYTg3In0pLGkudmFyaWFibGU9bmV3IGkoInZhcmlhYmxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTg4In0pLGkuc3ltYm9sVmFyaWFibGU9bmV3IGkoInN5bWJvbC12YXJpYWJsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4OCJ9KSxpLmFycmF5PW5ldyBpKCJhcnJheSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YSJ9KSxpLnN5bWJvbEFycmF5PW5ldyBpKCJzeW1ib2wtYXJyYXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGEifSksaS5zeW1ib2xNb2R1bGU9bmV3IGkoInN5bWJvbC1tb2R1bGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksaS5zeW1ib2xQYWNrYWdlPW5ldyBpKCJzeW1ib2wtcGFja2FnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxpLnN5bWJvbE5hbWVzcGFjZT1uZXcgaSgic3ltYm9sLW5hbWVzcGFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxpLnN5bWJvbE9iamVjdD1uZXcgaSgic3ltYm9sLW9iamVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxpLnN5bWJvbE1ldGhvZD1uZXcgaSgic3ltYm9sLW1ldGhvZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YyJ9KSxpLnN5bWJvbEZ1bmN0aW9uPW5ldyBpKCJzeW1ib2wtZnVuY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksaS5zeW1ib2xDb25zdHJ1Y3Rvcj1uZXcgaSgic3ltYm9sLWNvbnN0cnVjdG9yIix7Zm9udENoYXJhY3RlcjoiXFxlYThjIn0pLGkuc3ltYm9sQm9vbGVhbj1uZXcgaSgic3ltYm9sLWJvb2xlYW4iLHtmb250Q2hhcmFjdGVyOiJcXGVhOGYifSksaS5zeW1ib2xOdWxsPW5ldyBpKCJzeW1ib2wtbnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4ZiJ9KSxpLnN5bWJvbE51bWVyaWM9bmV3IGkoInN5bWJvbC1udW1lcmljIix7Zm9udENoYXJhY3RlcjoiXFxlYTkwIn0pLGkuc3ltYm9sTnVtYmVyPW5ldyBpKCJzeW1ib2wtbnVtYmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkwIn0pLGkuc3ltYm9sU3RydWN0dXJlPW5ldyBpKCJzeW1ib2wtc3RydWN0dXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYTkxIn0pLGkuc3ltYm9sU3RydWN0PW5ldyBpKCJzeW1ib2wtc3RydWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTkxIn0pLGkuc3ltYm9sUGFyYW1ldGVyPW5ldyBpKCJzeW1ib2wtcGFyYW1ldGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkyIn0pLGkuc3ltYm9sVHlwZVBhcmFtZXRlcj1uZXcgaSgic3ltYm9sLXR5cGUtcGFyYW1ldGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkyIn0pLGkuc3ltYm9sS2V5PW5ldyBpKCJzeW1ib2wta2V5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTkzIn0pLGkuc3ltYm9sVGV4dD1uZXcgaSgic3ltYm9sLXRleHQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTMifSksaS5zeW1ib2xSZWZlcmVuY2U9bmV3IGkoInN5bWJvbC1yZWZlcmVuY2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTQifSksaS5nb1RvRmlsZT1uZXcgaSgiZ28tdG8tZmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NCJ9KSxpLnN5bWJvbEVudW09bmV3IGkoInN5bWJvbC1lbnVtIix7Zm9udENoYXJhY3RlcjoiXFxlYTk1In0pLGkuc3ltYm9sVmFsdWU9bmV3IGkoInN5bWJvbC12YWx1ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NSJ9KSxpLnN5bWJvbFJ1bGVyPW5ldyBpKCJzeW1ib2wtcnVsZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTYifSksaS5zeW1ib2xVbml0PW5ldyBpKCJzeW1ib2wtdW5pdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NiJ9KSxpLmFjdGl2YXRlQnJlYWtwb2ludHM9bmV3IGkoImFjdGl2YXRlLWJyZWFrcG9pbnRzIix7Zm9udENoYXJhY3RlcjoiXFxlYTk3In0pLGkuYXJjaGl2ZT1uZXcgaSgiYXJjaGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5OCJ9KSxpLmFycm93Qm90aD1uZXcgaSgiYXJyb3ctYm90aCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5OSJ9KSxpLmFycm93RG93bj1uZXcgaSgiYXJyb3ctZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YSJ9KSxpLmFycm93TGVmdD1uZXcgaSgiYXJyb3ctbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YiJ9KSxpLmFycm93UmlnaHQ9bmV3IGkoImFycm93LXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTljIn0pLGkuYXJyb3dTbWFsbERvd249bmV3IGkoImFycm93LXNtYWxsLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOWQifSksaS5hcnJvd1NtYWxsTGVmdD1uZXcgaSgiYXJyb3ctc21hbGwtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5ZSJ9KSxpLmFycm93U21hbGxSaWdodD1uZXcgaSgiYXJyb3ctc21hbGwtcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOWYifSksaS5hcnJvd1NtYWxsVXA9bmV3IGkoImFycm93LXNtYWxsLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWEwIn0pLGkuYXJyb3dVcD1uZXcgaSgiYXJyb3ctdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTEifSksaS5iZWxsPW5ldyBpKCJiZWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYWEyIn0pLGkuYm9sZD1uZXcgaSgiYm9sZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMyJ9KSxpLmJvb2s9bmV3IGkoImJvb2siLHtmb250Q2hhcmFjdGVyOiJcXGVhYTQifSksaS5ib29rbWFyaz1uZXcgaSgiYm9va21hcmsiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTUifSksaS5kZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbFVudmVyaWZpZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNiJ9KSxpLmRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWNvbmRpdGlvbmFsIix7Zm9udENoYXJhY3RlcjoiXFxlYWE3In0pLGkuZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWxEaXNhYmxlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNyJ9KSxpLmRlYnVnQnJlYWtwb2ludERhdGFVbnZlcmlmaWVkPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWRhdGEtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhOCJ9KSxpLmRlYnVnQnJlYWtwb2ludERhdGE9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtZGF0YSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhOSJ9KSxpLmRlYnVnQnJlYWtwb2ludERhdGFEaXNhYmxlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1kYXRhLWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWE5In0pLGkuZGVidWdCcmVha3BvaW50TG9nVW52ZXJpZmllZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1sb2ctdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYSJ9KSxpLmRlYnVnQnJlYWtwb2ludExvZz1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1sb2ciLHtmb250Q2hhcmFjdGVyOiJcXGVhYWIifSksaS5kZWJ1Z0JyZWFrcG9pbnRMb2dEaXNhYmxlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1sb2ctZGlzYWJsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWIifSksaS5icmllZmNhc2U9bmV3IGkoImJyaWVmY2FzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYyJ9KSxpLmJyb2FkY2FzdD1uZXcgaSgiYnJvYWRjYXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWFkIn0pLGkuYnJvd3Nlcj1uZXcgaSgiYnJvd3NlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhZSJ9KSxpLmJ1Zz1uZXcgaSgiYnVnIix7Zm9udENoYXJhY3RlcjoiXFxlYWFmIn0pLGkuY2FsZW5kYXI9bmV3IGkoImNhbGVuZGFyIix7Zm9udENoYXJhY3RlcjoiXFxlYWIwIn0pLGkuY2FzZVNlbnNpdGl2ZT1uZXcgaSgiY2FzZS1zZW5zaXRpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjEifSksaS5jaGVjaz1uZXcgaSgiY2hlY2siLHtmb250Q2hhcmFjdGVyOiJcXGVhYjIifSksaS5jaGVja2xpc3Q9bmV3IGkoImNoZWNrbGlzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiMyJ9KSxpLmNoZXZyb25Eb3duPW5ldyBpKCJjaGV2cm9uLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhYjQifSksaS5kcm9wRG93bkJ1dHRvbj1uZXcgaSgiZHJvcC1kb3duLWJ1dHRvbiIsaS5jaGV2cm9uRG93bi5kZWZpbml0aW9uKSxpLmNoZXZyb25MZWZ0PW5ldyBpKCJjaGV2cm9uLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjUifSksaS5jaGV2cm9uUmlnaHQ9bmV3IGkoImNoZXZyb24tcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjYifSksaS5jaGV2cm9uVXA9bmV3IGkoImNoZXZyb24tdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjcifSksaS5jaHJvbWVDbG9zZT1uZXcgaSgiY2hyb21lLWNsb3NlIix7Zm9udENoYXJhY3RlcjoiXFxlYWI4In0pLGkuY2hyb21lTWF4aW1pemU9bmV3IGkoImNocm9tZS1tYXhpbWl6ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiOSJ9KSxpLmNocm9tZU1pbmltaXplPW5ldyBpKCJjaHJvbWUtbWluaW1pemUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmEifSksaS5jaHJvbWVSZXN0b3JlPW5ldyBpKCJjaHJvbWUtcmVzdG9yZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYiJ9KSxpLmNpcmNsZU91dGxpbmU9bmV3IGkoImNpcmNsZS1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYWJjIn0pLGkuZGVidWdCcmVha3BvaW50VW52ZXJpZmllZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWJjIn0pLGkuY2lyY2xlU2xhc2g9bmV3IGkoImNpcmNsZS1zbGFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiZCJ9KSxpLmNpcmN1aXRCb2FyZD1uZXcgaSgiY2lyY3VpdC1ib2FyZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiZSJ9KSxpLmNsZWFyQWxsPW5ldyBpKCJjbGVhci1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmYifSksaS5jbGlwcHk9bmV3IGkoImNsaXBweSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMCJ9KSxpLmNsb3NlQWxsPW5ldyBpKCJjbG9zZS1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzEifSksaS5jbG91ZERvd25sb2FkPW5ldyBpKCJjbG91ZC1kb3dubG9hZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMiJ9KSxpLmNsb3VkVXBsb2FkPW5ldyBpKCJjbG91ZC11cGxvYWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzMifSksaS5jb2RlPW5ldyBpKCJjb2RlIix7Zm9udENoYXJhY3RlcjoiXFxlYWM0In0pLGkuY29sbGFwc2VBbGw9bmV3IGkoImNvbGxhcHNlLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNSJ9KSxpLmNvbG9yTW9kZT1uZXcgaSgiY29sb3ItbW9kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNiJ9KSxpLmNvbW1lbnREaXNjdXNzaW9uPW5ldyBpKCJjb21tZW50LWRpc2N1c3Npb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhYzcifSksaS5jb21wYXJlQ2hhbmdlcz1uZXcgaSgiY29tcGFyZS1jaGFuZ2VzIix7Zm9udENoYXJhY3RlcjoiXFxlYWZkIn0pLGkuY3JlZGl0Q2FyZD1uZXcgaSgiY3JlZGl0LWNhcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzkifSksaS5kYXNoPW5ldyBpKCJkYXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYWNjIn0pLGkuZGFzaGJvYXJkPW5ldyBpKCJkYXNoYm9hcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhY2QifSksaS5kYXRhYmFzZT1uZXcgaSgiZGF0YWJhc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhY2UifSksaS5kZWJ1Z0NvbnRpbnVlPW5ldyBpKCJkZWJ1Zy1jb250aW51ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjZiJ9KSxpLmRlYnVnRGlzY29ubmVjdD1uZXcgaSgiZGVidWctZGlzY29ubmVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkMCJ9KSxpLmRlYnVnUGF1c2U9bmV3IGkoImRlYnVnLXBhdXNlIix7Zm9udENoYXJhY3RlcjoiXFxlYWQxIn0pLGkuZGVidWdSZXN0YXJ0PW5ldyBpKCJkZWJ1Zy1yZXN0YXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWQyIn0pLGkuZGVidWdTdGFydD1uZXcgaSgiZGVidWctc3RhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDMifSksaS5kZWJ1Z1N0ZXBJbnRvPW5ldyBpKCJkZWJ1Zy1zdGVwLWludG8iLHtmb250Q2hhcmFjdGVyOiJcXGVhZDQifSksaS5kZWJ1Z1N0ZXBPdXQ9bmV3IGkoImRlYnVnLXN0ZXAtb3V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWQ1In0pLGkuZGVidWdTdGVwT3Zlcj1uZXcgaSgiZGVidWctc3RlcC1vdmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ2In0pLGkuZGVidWdTdG9wPW5ldyBpKCJkZWJ1Zy1zdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ3In0pLGkuZGVidWc9bmV3IGkoImRlYnVnIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ4In0pLGkuZGV2aWNlQ2FtZXJhVmlkZW89bmV3IGkoImRldmljZS1jYW1lcmEtdmlkZW8iLHtmb250Q2hhcmFjdGVyOiJcXGVhZDkifSksaS5kZXZpY2VDYW1lcmE9bmV3IGkoImRldmljZS1jYW1lcmEiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGEifSksaS5kZXZpY2VNb2JpbGU9bmV3IGkoImRldmljZS1tb2JpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGIifSksaS5kaWZmQWRkZWQ9bmV3IGkoImRpZmYtYWRkZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGMifSksaS5kaWZmSWdub3JlZD1uZXcgaSgiZGlmZi1pZ25vcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWRkIn0pLGkuZGlmZk1vZGlmaWVkPW5ldyBpKCJkaWZmLW1vZGlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWRlIn0pLGkuZGlmZlJlbW92ZWQ9bmV3IGkoImRpZmYtcmVtb3ZlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkZiJ9KSxpLmRpZmZSZW5hbWVkPW5ldyBpKCJkaWZmLXJlbmFtZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTAifSksaS5kaWZmPW5ldyBpKCJkaWZmIix7Zm9udENoYXJhY3RlcjoiXFxlYWUxIn0pLGkuZGlzY2FyZD1uZXcgaSgiZGlzY2FyZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMiJ9KSxpLmVkaXRvckxheW91dD1uZXcgaSgiZWRpdG9yLWxheW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMyJ9KSxpLmVtcHR5V2luZG93PW5ldyBpKCJlbXB0eS13aW5kb3ciLHtmb250Q2hhcmFjdGVyOiJcXGVhZTQifSksaS5leGNsdWRlPW5ldyBpKCJleGNsdWRlIix7Zm9udENoYXJhY3RlcjoiXFxlYWU1In0pLGkuZXh0ZW5zaW9ucz1uZXcgaSgiZXh0ZW5zaW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNiJ9KSxpLmV5ZUNsb3NlZD1uZXcgaSgiZXllLWNsb3NlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNyJ9KSxpLmZpbGVCaW5hcnk9bmV3IGkoImZpbGUtYmluYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYWU4In0pLGkuZmlsZUNvZGU9bmV3IGkoImZpbGUtY29kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlOSJ9KSxpLmZpbGVNZWRpYT1uZXcgaSgiZmlsZS1tZWRpYSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlYSJ9KSxpLmZpbGVQZGY9bmV3IGkoImZpbGUtcGRmIix7Zm9udENoYXJhY3RlcjoiXFxlYWViIn0pLGkuZmlsZVN1Ym1vZHVsZT1uZXcgaSgiZmlsZS1zdWJtb2R1bGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWMifSksaS5maWxlU3ltbGlua0RpcmVjdG9yeT1uZXcgaSgiZmlsZS1zeW1saW5rLWRpcmVjdG9yeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlZCJ9KSxpLmZpbGVTeW1saW5rRmlsZT1uZXcgaSgiZmlsZS1zeW1saW5rLWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWUifSksaS5maWxlWmlwPW5ldyBpKCJmaWxlLXppcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlZiJ9KSxpLmZpbGVzPW5ldyBpKCJmaWxlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmMCJ9KSxpLmZpbHRlcj1uZXcgaSgiZmlsdGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYWYxIn0pLGkuZmxhbWU9bmV3IGkoImZsYW1lIix7Zm9udENoYXJhY3RlcjoiXFxlYWYyIn0pLGkuZm9sZERvd249bmV3IGkoImZvbGQtZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmMyJ9KSxpLmZvbGRVcD1uZXcgaSgiZm9sZC11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmNCJ9KSxpLmZvbGQ9bmV3IGkoImZvbGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjUifSksaS5mb2xkZXJBY3RpdmU9bmV3IGkoImZvbGRlci1hY3RpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjYifSksaS5mb2xkZXJPcGVuZWQ9bmV3IGkoImZvbGRlci1vcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjcifSksaS5nZWFyPW5ldyBpKCJnZWFyIix7Zm9udENoYXJhY3RlcjoiXFxlYWY4In0pLGkuZ2lmdD1uZXcgaSgiZ2lmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmOSJ9KSxpLmdpc3RTZWNyZXQ9bmV3IGkoImdpc3Qtc2VjcmV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWZhIn0pLGkuZ2lzdD1uZXcgaSgiZ2lzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmYiJ9KSxpLmdpdENvbW1pdD1uZXcgaSgiZ2l0LWNvbW1pdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmYyJ9KSxpLmdpdENvbXBhcmU9bmV3IGkoImdpdC1jb21wYXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYWZkIn0pLGkuZ2l0TWVyZ2U9bmV3IGkoImdpdC1tZXJnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZSJ9KSxpLmdpdGh1YkFjdGlvbj1uZXcgaSgiZ2l0aHViLWFjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZiJ9KSxpLmdpdGh1YkFsdD1uZXcgaSgiZ2l0aHViLWFsdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwMCJ9KSxpLmdsb2JlPW5ldyBpKCJnbG9iZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwMSJ9KSxpLmdyYWJiZXI9bmV3IGkoImdyYWJiZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViMDIifSksaS5ncmFwaD1uZXcgaSgiZ3JhcGgiLHtmb250Q2hhcmFjdGVyOiJcXGViMDMifSksaS5ncmlwcGVyPW5ldyBpKCJncmlwcGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjA0In0pLGkuaGVhcnQ9bmV3IGkoImhlYXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjA1In0pLGkuaG9tZT1uZXcgaSgiaG9tZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwNiJ9KSxpLmhvcml6b250YWxSdWxlPW5ldyBpKCJob3Jpem9udGFsLXJ1bGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMDcifSksaS5odWJvdD1uZXcgaSgiaHVib3QiLHtmb250Q2hhcmFjdGVyOiJcXGViMDgifSksaS5pbmJveD1uZXcgaSgiaW5ib3giLHtmb250Q2hhcmFjdGVyOiJcXGViMDkifSksaS5pc3N1ZUNsb3NlZD1uZXcgaSgiaXNzdWUtY2xvc2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYmE0In0pLGkuaXNzdWVSZW9wZW5lZD1uZXcgaSgiaXNzdWUtcmVvcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViMGIifSksaS5pc3N1ZXM9bmV3IGkoImlzc3VlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwYyJ9KSxpLml0YWxpYz1uZXcgaSgiaXRhbGljIix7Zm9udENoYXJhY3RlcjoiXFxlYjBkIn0pLGkuamVyc2V5PW5ldyBpKCJqZXJzZXkiLHtmb250Q2hhcmFjdGVyOiJcXGViMGUifSksaS5qc29uPW5ldyBpKCJqc29uIix7Zm9udENoYXJhY3RlcjoiXFxlYjBmIn0pLGkua2ViYWJWZXJ0aWNhbD1uZXcgaSgia2ViYWItdmVydGljYWwiLHtmb250Q2hhcmFjdGVyOiJcXGViMTAifSksaS5rZXk9bmV3IGkoImtleSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxMSJ9KSxpLmxhdz1uZXcgaSgibGF3Iix7Zm9udENoYXJhY3RlcjoiXFxlYjEyIn0pLGkubGlnaHRidWxiQXV0b2ZpeD1uZXcgaSgibGlnaHRidWxiLWF1dG9maXgiLHtmb250Q2hhcmFjdGVyOiJcXGViMTMifSksaS5saW5rRXh0ZXJuYWw9bmV3IGkoImxpbmstZXh0ZXJuYWwiLHtmb250Q2hhcmFjdGVyOiJcXGViMTQifSksaS5saW5rPW5ldyBpKCJsaW5rIix7Zm9udENoYXJhY3RlcjoiXFxlYjE1In0pLGkubGlzdE9yZGVyZWQ9bmV3IGkoImxpc3Qtb3JkZXJlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNiJ9KSxpLmxpc3RVbm9yZGVyZWQ9bmV3IGkoImxpc3QtdW5vcmRlcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjE3In0pLGkubGl2ZVNoYXJlPW5ldyBpKCJsaXZlLXNoYXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYjE4In0pLGkubG9hZGluZz1uZXcgaSgibG9hZGluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxOSJ9KSxpLmxvY2F0aW9uPW5ldyBpKCJsb2NhdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxYSJ9KSxpLm1haWxSZWFkPW5ldyBpKCJtYWlsLXJlYWQiLHtmb250Q2hhcmFjdGVyOiJcXGViMWIifSksaS5tYWlsPW5ldyBpKCJtYWlsIix7Zm9udENoYXJhY3RlcjoiXFxlYjFjIn0pLGkubWFya2Rvd249bmV3IGkoIm1hcmtkb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYjFkIn0pLGkubWVnYXBob25lPW5ldyBpKCJtZWdhcGhvbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMWUifSksaS5tZW50aW9uPW5ldyBpKCJtZW50aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjFmIn0pLGkubWlsZXN0b25lPW5ldyBpKCJtaWxlc3RvbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjAifSksaS5tb3J0YXJCb2FyZD1uZXcgaSgibW9ydGFyLWJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYjIxIn0pLGkubW92ZT1uZXcgaSgibW92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMiJ9KSxpLm11bHRpcGxlV2luZG93cz1uZXcgaSgibXVsdGlwbGUtd2luZG93cyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMyJ9KSxpLm11dGU9bmV3IGkoIm11dGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjQifSksaS5ub05ld2xpbmU9bmV3IGkoIm5vLW5ld2xpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjUifSksaS5ub3RlPW5ldyBpKCJub3RlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI2In0pLGkub2N0b2ZhY2U9bmV3IGkoIm9jdG9mYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI3In0pLGkub3BlblByZXZpZXc9bmV3IGkoIm9wZW4tcHJldmlldyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyOCJ9KSxpLnBhY2thZ2VfPW5ldyBpKCJwYWNrYWdlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI5In0pLGkucGFpbnRjYW49bmV3IGkoInBhaW50Y2FuIix7Zm9udENoYXJhY3RlcjoiXFxlYjJhIn0pLGkucGluPW5ldyBpKCJwaW4iLHtmb250Q2hhcmFjdGVyOiJcXGViMmIifSksaS5wbGF5PW5ldyBpKCJwbGF5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjJjIn0pLGkucnVuPW5ldyBpKCJydW4iLHtmb250Q2hhcmFjdGVyOiJcXGViMmMifSksaS5wbHVnPW5ldyBpKCJwbHVnIix7Zm9udENoYXJhY3RlcjoiXFxlYjJkIn0pLGkucHJlc2VydmVDYXNlPW5ldyBpKCJwcmVzZXJ2ZS1jYXNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjJlIn0pLGkucHJldmlldz1uZXcgaSgicHJldmlldyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyZiJ9KSxpLnByb2plY3Q9bmV3IGkoInByb2plY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViMzAifSksaS5wdWxzZT1uZXcgaSgicHVsc2UiLHtmb250Q2hhcmFjdGVyOiJcXGViMzEifSksaS5xdWVzdGlvbj1uZXcgaSgicXVlc3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViMzIifSksaS5xdW90ZT1uZXcgaSgicXVvdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMzMifSksaS5yYWRpb1Rvd2VyPW5ldyBpKCJyYWRpby10b3dlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNCJ9KSxpLnJlYWN0aW9ucz1uZXcgaSgicmVhY3Rpb25zIix7Zm9udENoYXJhY3RlcjoiXFxlYjM1In0pLGkucmVmZXJlbmNlcz1uZXcgaSgicmVmZXJlbmNlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNiJ9KSxpLnJlZnJlc2g9bmV3IGkoInJlZnJlc2giLHtmb250Q2hhcmFjdGVyOiJcXGViMzcifSksaS5yZWdleD1uZXcgaSgicmVnZXgiLHtmb250Q2hhcmFjdGVyOiJcXGViMzgifSksaS5yZW1vdGVFeHBsb3Jlcj1uZXcgaSgicmVtb3RlLWV4cGxvcmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjM5In0pLGkucmVtb3RlPW5ldyBpKCJyZW1vdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2EifSksaS5yZW1vdmU9bmV3IGkoInJlbW92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzYiJ9KSxpLnJlcGxhY2VBbGw9bmV3IGkoInJlcGxhY2UtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjNjIn0pLGkucmVwbGFjZT1uZXcgaSgicmVwbGFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzZCJ9KSxpLnJlcG9DbG9uZT1uZXcgaSgicmVwby1jbG9uZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzZSJ9KSxpLnJlcG9Gb3JjZVB1c2g9bmV3IGkoInJlcG8tZm9yY2UtcHVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzZiJ9KSxpLnJlcG9QdWxsPW5ldyBpKCJyZXBvLXB1bGwiLHtmb250Q2hhcmFjdGVyOiJcXGViNDAifSksaS5yZXBvUHVzaD1uZXcgaSgicmVwby1wdXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYjQxIn0pLGkucmVwb3J0PW5ldyBpKCJyZXBvcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDIifSksaS5yZXF1ZXN0Q2hhbmdlcz1uZXcgaSgicmVxdWVzdC1jaGFuZ2VzIix7Zm9udENoYXJhY3RlcjoiXFxlYjQzIn0pLGkucm9ja2V0PW5ldyBpKCJyb2NrZXQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDQifSksaS5yb290Rm9sZGVyT3BlbmVkPW5ldyBpKCJyb290LWZvbGRlci1vcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDUifSksaS5yb290Rm9sZGVyPW5ldyBpKCJyb290LWZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0NiJ9KSxpLnJzcz1uZXcgaSgicnNzIix7Zm9udENoYXJhY3RlcjoiXFxlYjQ3In0pLGkucnVieT1uZXcgaSgicnVieSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0OCJ9KSxpLnNhdmVBbGw9bmV3IGkoInNhdmUtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjQ5In0pLGkuc2F2ZUFzPW5ldyBpKCJzYXZlLWFzIix7Zm9udENoYXJhY3RlcjoiXFxlYjRhIn0pLGkuc2F2ZT1uZXcgaSgic2F2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YiJ9KSxpLnNjcmVlbkZ1bGw9bmV3IGkoInNjcmVlbi1mdWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjRjIn0pLGkuc2NyZWVuTm9ybWFsPW5ldyBpKCJzY3JlZW4tbm9ybWFsIix7Zm9udENoYXJhY3RlcjoiXFxlYjRkIn0pLGkuc2VhcmNoU3RvcD1uZXcgaSgic2VhcmNoLXN0b3AiLHtmb250Q2hhcmFjdGVyOiJcXGViNGUifSksaS5zZXJ2ZXI9bmV3IGkoInNlcnZlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MCJ9KSxpLnNldHRpbmdzR2Vhcj1uZXcgaSgic2V0dGluZ3MtZ2VhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MSJ9KSxpLnNldHRpbmdzPW5ldyBpKCJzZXR0aW5ncyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MiJ9KSxpLnNoaWVsZD1uZXcgaSgic2hpZWxkIix7Zm9udENoYXJhY3RlcjoiXFxlYjUzIn0pLGkuc21pbGV5PW5ldyBpKCJzbWlsZXkiLHtmb250Q2hhcmFjdGVyOiJcXGViNTQifSksaS5zb3J0UHJlY2VkZW5jZT1uZXcgaSgic29ydC1wcmVjZWRlbmNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjU1In0pLGkuc3BsaXRIb3Jpem9udGFsPW5ldyBpKCJzcGxpdC1ob3Jpem9udGFsIix7Zm9udENoYXJhY3RlcjoiXFxlYjU2In0pLGkuc3BsaXRWZXJ0aWNhbD1uZXcgaSgic3BsaXQtdmVydGljYWwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTcifSksaS5zcXVpcnJlbD1uZXcgaSgic3F1aXJyZWwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTgifSksaS5zdGFyRnVsbD1uZXcgaSgic3Rhci1mdWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjU5In0pLGkuc3RhckhhbGY9bmV3IGkoInN0YXItaGFsZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1YSJ9KSxpLnN5bWJvbENsYXNzPW5ldyBpKCJzeW1ib2wtY2xhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViNWIifSksaS5zeW1ib2xDb2xvcj1uZXcgaSgic3ltYm9sLWNvbG9yIix7Zm9udENoYXJhY3RlcjoiXFxlYjVjIn0pLGkuc3ltYm9sQ3VzdG9tQ29sb3I9bmV3IGkoInN5bWJvbC1jdXN0b21jb2xvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1YyJ9KSxpLnN5bWJvbENvbnN0YW50PW5ldyBpKCJzeW1ib2wtY29uc3RhbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNWQifSksaS5zeW1ib2xFbnVtTWVtYmVyPW5ldyBpKCJzeW1ib2wtZW51bS1tZW1iZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNWUifSksaS5zeW1ib2xGaWVsZD1uZXcgaSgic3ltYm9sLWZpZWxkIix7Zm9udENoYXJhY3RlcjoiXFxlYjVmIn0pLGkuc3ltYm9sRmlsZT1uZXcgaSgic3ltYm9sLWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGViNjAifSksaS5zeW1ib2xJbnRlcmZhY2U9bmV3IGkoInN5bWJvbC1pbnRlcmZhY2UiLHtmb250Q2hhcmFjdGVyOiJcXGViNjEifSksaS5zeW1ib2xLZXl3b3JkPW5ldyBpKCJzeW1ib2wta2V5d29yZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2MiJ9KSxpLnN5bWJvbE1pc2M9bmV3IGkoInN5bWJvbC1taXNjIix7Zm9udENoYXJhY3RlcjoiXFxlYjYzIn0pLGkuc3ltYm9sT3BlcmF0b3I9bmV3IGkoInN5bWJvbC1vcGVyYXRvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NCJ9KSxpLnN5bWJvbFByb3BlcnR5PW5ldyBpKCJzeW1ib2wtcHJvcGVydHkiLHtmb250Q2hhcmFjdGVyOiJcXGViNjUifSksaS53cmVuY2g9bmV3IGkoIndyZW5jaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NSJ9KSxpLndyZW5jaFN1YmFjdGlvbj1uZXcgaSgid3JlbmNoLXN1YmFjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NSJ9KSxpLnN5bWJvbFNuaXBwZXQ9bmV3IGkoInN5bWJvbC1zbmlwcGV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY2In0pLGkudGFza2xpc3Q9bmV3IGkoInRhc2tsaXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY3In0pLGkudGVsZXNjb3BlPW5ldyBpKCJ0ZWxlc2NvcGUiLHtmb250Q2hhcmFjdGVyOiJcXGViNjgifSksaS50ZXh0U2l6ZT1uZXcgaSgidGV4dC1zaXplIix7Zm9udENoYXJhY3RlcjoiXFxlYjY5In0pLGkudGhyZWVCYXJzPW5ldyBpKCJ0aHJlZS1iYXJzIix7Zm9udENoYXJhY3RlcjoiXFxlYjZhIn0pLGkudGh1bWJzZG93bj1uZXcgaSgidGh1bWJzZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2YiJ9KSxpLnRodW1ic3VwPW5ldyBpKCJ0aHVtYnN1cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2YyJ9KSxpLnRvb2xzPW5ldyBpKCJ0b29scyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2ZCJ9KSxpLnRyaWFuZ2xlRG93bj1uZXcgaSgidHJpYW5nbGUtZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2ZSJ9KSxpLnRyaWFuZ2xlTGVmdD1uZXcgaSgidHJpYW5nbGUtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2ZiJ9KSxpLnRyaWFuZ2xlUmlnaHQ9bmV3IGkoInRyaWFuZ2xlLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjcwIn0pLGkudHJpYW5nbGVVcD1uZXcgaSgidHJpYW5nbGUtdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViNzEifSksaS50d2l0dGVyPW5ldyBpKCJ0d2l0dGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjcyIn0pLGkudW5mb2xkPW5ldyBpKCJ1bmZvbGQiLHtmb250Q2hhcmFjdGVyOiJcXGViNzMifSksaS51bmxvY2s9bmV3IGkoInVubG9jayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NCJ9KSxpLnVubXV0ZT1uZXcgaSgidW5tdXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYjc1In0pLGkudW52ZXJpZmllZD1uZXcgaSgidW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NiJ9KSxpLnZlcmlmaWVkPW5ldyBpKCJ2ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NyJ9KSxpLnZlcnNpb25zPW5ldyBpKCJ2ZXJzaW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3OCJ9KSxpLnZtQWN0aXZlPW5ldyBpKCJ2bS1hY3RpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViNzkifSksaS52bU91dGxpbmU9bmV3IGkoInZtLW91dGxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViN2EifSksaS52bVJ1bm5pbmc9bmV3IGkoInZtLXJ1bm5pbmciLHtmb250Q2hhcmFjdGVyOiJcXGViN2IifSksaS53YXRjaD1uZXcgaSgid2F0Y2giLHtmb250Q2hhcmFjdGVyOiJcXGViN2MifSksaS53aGl0ZXNwYWNlPW5ldyBpKCJ3aGl0ZXNwYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjdkIn0pLGkud2hvbGVXb3JkPW5ldyBpKCJ3aG9sZS13b3JkIix7Zm9udENoYXJhY3RlcjoiXFxlYjdlIn0pLGkud2luZG93PW5ldyBpKCJ3aW5kb3ciLHtmb250Q2hhcmFjdGVyOiJcXGViN2YifSksaS53b3JkV3JhcD1uZXcgaSgid29yZC13cmFwIix7Zm9udENoYXJhY3RlcjoiXFxlYjgwIn0pLGkuem9vbUluPW5ldyBpKCJ6b29tLWluIix7Zm9udENoYXJhY3RlcjoiXFxlYjgxIn0pLGkuem9vbU91dD1uZXcgaSgiem9vbS1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViODIifSksaS5saXN0RmlsdGVyPW5ldyBpKCJsaXN0LWZpbHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MyJ9KSxpLmxpc3RGbGF0PW5ldyBpKCJsaXN0LWZsYXQiLHtmb250Q2hhcmFjdGVyOiJcXGViODQifSksaS5saXN0U2VsZWN0aW9uPW5ldyBpKCJsaXN0LXNlbGVjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NSJ9KSxpLnNlbGVjdGlvbj1uZXcgaSgic2VsZWN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjg1In0pLGkubGlzdFRyZWU9bmV3IGkoImxpc3QtdHJlZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NiJ9KSxpLmRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uVW52ZXJpZmllZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjg3In0pLGkuZGVidWdCcmVha3BvaW50RnVuY3Rpb249bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViODgifSksaS5kZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvbkRpc2FibGVkPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWZ1bmN0aW9uLWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjg4In0pLGkuZGVidWdTdGFja2ZyYW1lQWN0aXZlPW5ldyBpKCJkZWJ1Zy1zdGFja2ZyYW1lLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OSJ9KSxpLmRlYnVnU3RhY2tmcmFtZURvdD1uZXcgaSgiZGVidWctc3RhY2tmcmFtZS1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViOGEifSksaS5kZWJ1Z1N0YWNrZnJhbWU9bmV3IGkoImRlYnVnLXN0YWNrZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOGIifSksaS5kZWJ1Z1N0YWNrZnJhbWVGb2N1c2VkPW5ldyBpKCJkZWJ1Zy1zdGFja2ZyYW1lLWZvY3VzZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOGIifSksaS5kZWJ1Z0JyZWFrcG9pbnRVbnN1cHBvcnRlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC11bnN1cHBvcnRlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4YyJ9KSxpLnN5bWJvbFN0cmluZz1uZXcgaSgic3ltYm9sLXN0cmluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZCJ9KSxpLmRlYnVnUmV2ZXJzZUNvbnRpbnVlPW5ldyBpKCJkZWJ1Zy1yZXZlcnNlLWNvbnRpbnVlIix7Zm9udENoYXJhY3RlcjoiXFxlYjhlIn0pLGkuZGVidWdTdGVwQmFjaz1uZXcgaSgiZGVidWctc3RlcC1iYWNrIix7Zm9udENoYXJhY3RlcjoiXFxlYjhmIn0pLGkuZGVidWdSZXN0YXJ0RnJhbWU9bmV3IGkoImRlYnVnLXJlc3RhcnQtZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOTAifSksaS5jYWxsSW5jb21pbmc9bmV3IGkoImNhbGwtaW5jb21pbmciLHtmb250Q2hhcmFjdGVyOiJcXGViOTIifSksaS5jYWxsT3V0Z29pbmc9bmV3IGkoImNhbGwtb3V0Z29pbmciLHtmb250Q2hhcmFjdGVyOiJcXGViOTMifSksaS5tZW51PW5ldyBpKCJtZW51Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk0In0pLGkuZXhwYW5kQWxsPW5ldyBpKCJleHBhbmQtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjk1In0pLGkuZmVlZGJhY2s9bmV3IGkoImZlZWRiYWNrIix7Zm9udENoYXJhY3RlcjoiXFxlYjk2In0pLGkuZ3JvdXBCeVJlZlR5cGU9bmV3IGkoImdyb3VwLWJ5LXJlZi10eXBlIix7Zm9udENoYXJhY3RlcjoiXFxlYjk3In0pLGkudW5ncm91cEJ5UmVmVHlwZT1uZXcgaSgidW5ncm91cC1ieS1yZWYtdHlwZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5OCJ9KSxpLmFjY291bnQ9bmV3IGkoImFjY291bnQiLHtmb250Q2hhcmFjdGVyOiJcXGViOTkifSksaS5iZWxsRG90PW5ldyBpKCJiZWxsLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5YSJ9KSxpLmRlYnVnQ29uc29sZT1uZXcgaSgiZGVidWctY29uc29sZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5YiJ9KSxpLmxpYnJhcnk9bmV3IGkoImxpYnJhcnkiLHtmb250Q2hhcmFjdGVyOiJcXGViOWMifSksaS5vdXRwdXQ9bmV3IGkoIm91dHB1dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5ZCJ9KSxpLnJ1bkFsbD1uZXcgaSgicnVuLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5ZSJ9KSxpLnN5bmNJZ25vcmVkPW5ldyBpKCJzeW5jLWlnbm9yZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOWYifSksaS5waW5uZWQ9bmV3IGkoInBpbm5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMCJ9KSxpLmdpdGh1YkludmVydGVkPW5ldyBpKCJnaXRodWItaW52ZXJ0ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTEifSksaS5kZWJ1Z0FsdD1uZXcgaSgiZGVidWctYWx0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjkxIn0pLGkuc2VydmVyUHJvY2Vzcz1uZXcgaSgic2VydmVyLXByb2Nlc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTIifSksaS5zZXJ2ZXJFbnZpcm9ubWVudD1uZXcgaSgic2VydmVyLWVudmlyb25tZW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYmEzIn0pLGkucGFzcz1uZXcgaSgicGFzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNCJ9KSxpLnN0b3BDaXJjbGU9bmV3IGkoInN0b3AtY2lyY2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYmE1In0pLGkucGxheUNpcmNsZT1uZXcgaSgicGxheS1jaXJjbGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYTYifSksaS5yZWNvcmQ9bmV3IGkoInJlY29yZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNyJ9KSxpLmRlYnVnQWx0U21hbGw9bmV3IGkoImRlYnVnLWFsdC1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhOCJ9KSxpLnZtQ29ubmVjdD1uZXcgaSgidm0tY29ubmVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhOSJ9KSxpLmNsb3VkPW5ldyBpKCJjbG91ZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhYSJ9KSxpLm1lcmdlPW5ldyBpKCJtZXJnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhYiJ9KSxpLmV4cG9ydEljb249bmV3IGkoImV4cG9ydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhYyJ9KSxpLmdyYXBoTGVmdD1uZXcgaSgiZ3JhcGgtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhZCJ9KSxpLm1hZ25ldD1uZXcgaSgibWFnbmV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmFlIn0pLGkubm90ZWJvb2s9bmV3IGkoIm5vdGVib29rIix7Zm9udENoYXJhY3RlcjoiXFxlYmFmIn0pLGkucmVkbz1uZXcgaSgicmVkbyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiMCJ9KSxpLmNoZWNrQWxsPW5ldyBpKCJjaGVjay1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViYjEifSksaS5waW5uZWREaXJ0eT1uZXcgaSgicGlubmVkLWRpcnR5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmIyIn0pLGkucGFzc0ZpbGxlZD1uZXcgaSgicGFzcy1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYjMifSksaS5jaXJjbGVMYXJnZUZpbGxlZD1uZXcgaSgiY2lyY2xlLWxhcmdlLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNCJ9KSxpLmNpcmNsZUxhcmdlT3V0bGluZT1uZXcgaSgiY2lyY2xlLWxhcmdlLW91dGxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViYjUifSksaS5jb21iaW5lPW5ldyBpKCJjb21iaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmI2In0pLGkuZ2F0aGVyPW5ldyBpKCJnYXRoZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYjYifSksaS50YWJsZT1uZXcgaSgidGFibGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYjcifSksaS52YXJpYWJsZUdyb3VwPW5ldyBpKCJ2YXJpYWJsZS1ncm91cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiOCJ9KSxpLnR5cGVIaWVyYXJjaHk9bmV3IGkoInR5cGUtaGllcmFyY2h5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmI5In0pLGkudHlwZUhpZXJhcmNoeVN1Yj1uZXcgaSgidHlwZS1oaWVyYXJjaHktc3ViIix7Zm9udENoYXJhY3RlcjoiXFxlYmJhIn0pLGkudHlwZUhpZXJhcmNoeVN1cGVyPW5ldyBpKCJ0eXBlLWhpZXJhcmNoeS1zdXBlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiYiJ9KSxpLmdpdFB1bGxSZXF1ZXN0Q3JlYXRlPW5ldyBpKCJnaXQtcHVsbC1yZXF1ZXN0LWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiYyJ9KSxpLnJ1bkFib3ZlPW5ldyBpKCJydW4tYWJvdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViYmQifSksaS5ydW5CZWxvdz1uZXcgaSgicnVuLWJlbG93Iix7Zm9udENoYXJhY3RlcjoiXFxlYmJlIn0pLGkubm90ZWJvb2tUZW1wbGF0ZT1uZXcgaSgibm90ZWJvb2stdGVtcGxhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYmYifSksaS5kZWJ1Z1JlcnVuPW5ldyBpKCJkZWJ1Zy1yZXJ1biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMCJ9KSxpLndvcmtzcGFjZVRydXN0ZWQ9bmV3IGkoIndvcmtzcGFjZS10cnVzdGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMxIn0pLGkud29ya3NwYWNlVW50cnVzdGVkPW5ldyBpKCJ3b3Jrc3BhY2UtdW50cnVzdGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMyIn0pLGkud29ya3NwYWNlVW5zcGVjaWZpZWQ9bmV3IGkoIndvcmtzcGFjZS11bnNwZWNpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMyJ9KSxpLnRlcm1pbmFsQ21kPW5ldyBpKCJ0ZXJtaW5hbC1jbWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYzQifSksaS50ZXJtaW5hbERlYmlhbj1uZXcgaSgidGVybWluYWwtZGViaWFuIix7Zm9udENoYXJhY3RlcjoiXFxlYmM1In0pLGkudGVybWluYWxMaW51eD1uZXcgaSgidGVybWluYWwtbGludXgiLHtmb250Q2hhcmFjdGVyOiJcXGViYzYifSksaS50ZXJtaW5hbFBvd2Vyc2hlbGw9bmV3IGkoInRlcm1pbmFsLXBvd2Vyc2hlbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViYzcifSksaS50ZXJtaW5hbFRtdXg9bmV3IGkoInRlcm1pbmFsLXRtdXgiLHtmb250Q2hhcmFjdGVyOiJcXGViYzgifSksaS50ZXJtaW5hbFVidW50dT1uZXcgaSgidGVybWluYWwtdWJ1bnR1Iix7Zm9udENoYXJhY3RlcjoiXFxlYmM5In0pLGkudGVybWluYWxCYXNoPW5ldyBpKCJ0ZXJtaW5hbC1iYXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYmNhIn0pLGkuYXJyb3dTd2FwPW5ldyBpKCJhcnJvdy1zd2FwIix7Zm9udENoYXJhY3RlcjoiXFxlYmNiIn0pLGkuY29weT1uZXcgaSgiY29weSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjYyJ9KSxpLnBlcnNvbkFkZD1uZXcgaSgicGVyc29uLWFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZCJ9KSxpLmZpbHRlckZpbGxlZD1uZXcgaSgiZmlsdGVyLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZSJ9KSxpLndhbmQ9bmV3IGkoIndhbmQiLHtmb250Q2hhcmFjdGVyOiJcXGViY2YifSksaS5kZWJ1Z0xpbmVCeUxpbmU9bmV3IGkoImRlYnVnLWxpbmUtYnktbGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkMCJ9KSxpLmluc3BlY3Q9bmV3IGkoImluc3BlY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDEifSksaS5sYXllcnM9bmV3IGkoImxheWVycyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkMiJ9KSxpLmxheWVyc0RvdD1uZXcgaSgibGF5ZXJzLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkMyJ9KSxpLmxheWVyc0FjdGl2ZT1uZXcgaSgibGF5ZXJzLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNCJ9KSxpLmNvbXBhc3M9bmV3IGkoImNvbXBhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViZDUifSksaS5jb21wYXNzRG90PW5ldyBpKCJjb21wYXNzLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNiJ9KSxpLmNvbXBhc3NBY3RpdmU9bmV3IGkoImNvbXBhc3MtYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYmQ3In0pLGkuYXp1cmU9bmV3IGkoImF6dXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYmQ4In0pLGkuaXNzdWVEcmFmdD1uZXcgaSgiaXNzdWUtZHJhZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZDkifSksaS5naXRQdWxsUmVxdWVzdENsb3NlZD1uZXcgaSgiZ2l0LXB1bGwtcmVxdWVzdC1jbG9zZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZGEifSksaS5naXRQdWxsUmVxdWVzdERyYWZ0PW5ldyBpKCJnaXQtcHVsbC1yZXF1ZXN0LWRyYWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmRiIn0pLGkuZGVidWdBbGw9bmV3IGkoImRlYnVnLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkYyJ9KSxpLmRlYnVnQ292ZXJhZ2U9bmV3IGkoImRlYnVnLWNvdmVyYWdlIix7Zm9udENoYXJhY3RlcjoiXFxlYmRkIn0pLGkucnVuRXJyb3JzPW5ldyBpKCJydW4tZXJyb3JzIix7Zm9udENoYXJhY3RlcjoiXFxlYmRlIn0pLGkuZm9sZGVyTGlicmFyeT1uZXcgaSgiZm9sZGVyLWxpYnJhcnkiLHtmb250Q2hhcmFjdGVyOiJcXGViZGYifSksaS5kZWJ1Z0NvbnRpbnVlU21hbGw9bmV3IGkoImRlYnVnLWNvbnRpbnVlLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmUwIn0pLGkuYmVha2VyU3RvcD1uZXcgaSgiYmVha2VyLXN0b3AiLHtmb250Q2hhcmFjdGVyOiJcXGViZTEifSksaS5ncmFwaExpbmU9bmV3IGkoImdyYXBoLWxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZTIifSksaS5ncmFwaFNjYXR0ZXI9bmV3IGkoImdyYXBoLXNjYXR0ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZTMifSksaS5waWVDaGFydD1uZXcgaSgicGllLWNoYXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmU0In0pLGkuYnJhY2tldD1uZXcgaSgiYnJhY2tldCIsaS5qc29uLmRlZmluaXRpb24pLGkuYnJhY2tldERvdD1uZXcgaSgiYnJhY2tldC1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZTUifSksaS5icmFja2V0RXJyb3I9bmV3IGkoImJyYWNrZXQtZXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViZTYifSksaS5sb2NrU21hbGw9bmV3IGkoImxvY2stc21hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZTcifSksaS5henVyZURldm9wcz1uZXcgaSgiYXp1cmUtZGV2b3BzIix7Zm9udENoYXJhY3RlcjoiXFxlYmU4In0pLGkudmVyaWZpZWRGaWxsZWQ9bmV3IGkoInZlcmlmaWVkLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOSJ9KSxpLm5ld0xpbmU9bmV3IGkoIm5ld2xpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZWEifSksaS5sYXlvdXQ9bmV3IGkoImxheW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlYiJ9KSxpLmxheW91dEFjdGl2aXR5YmFyTGVmdD1uZXcgaSgibGF5b3V0LWFjdGl2aXR5YmFyLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWMifSksaS5sYXlvdXRBY3Rpdml0eWJhclJpZ2h0PW5ldyBpKCJsYXlvdXQtYWN0aXZpdHliYXItcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWQifSksaS5sYXlvdXRQYW5lbExlZnQ9bmV3IGkoImxheW91dC1wYW5lbC1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmVlIn0pLGkubGF5b3V0UGFuZWxDZW50ZXI9bmV3IGkoImxheW91dC1wYW5lbC1jZW50ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZWYifSksaS5sYXlvdXRQYW5lbEp1c3RpZnk9bmV3IGkoImxheW91dC1wYW5lbC1qdXN0aWZ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmYwIn0pLGkubGF5b3V0UGFuZWxSaWdodD1uZXcgaSgibGF5b3V0LXBhbmVsLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmYxIn0pLGkubGF5b3V0UGFuZWw9bmV3IGkoImxheW91dC1wYW5lbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMiJ9KSxpLmxheW91dFNpZGViYXJMZWZ0PW5ldyBpKCJsYXlvdXQtc2lkZWJhci1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmYzIn0pLGkubGF5b3V0U2lkZWJhclJpZ2h0PW5ldyBpKCJsYXlvdXQtc2lkZWJhci1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNCJ9KSxpLmxheW91dFN0YXR1c2Jhcj1uZXcgaSgibGF5b3V0LXN0YXR1c2JhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNSJ9KSxpLmxheW91dE1lbnViYXI9bmV3IGkoImxheW91dC1tZW51YmFyIix7Zm9udENoYXJhY3RlcjoiXFxlYmY2In0pLGkubGF5b3V0Q2VudGVyZWQ9bmV3IGkoImxheW91dC1jZW50ZXJlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNyJ9KSxpLnRhcmdldD1uZXcgaSgidGFyZ2V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmY4In0pLGkuaW5kZW50PW5ldyBpKCJpbmRlbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjkifSksaS5yZWNvcmRTbWFsbD1uZXcgaSgicmVjb3JkLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmZhIn0pLGkuZXJyb3JTbWFsbD1uZXcgaSgiZXJyb3Itc21hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZmIifSksaS5hcnJvd0NpcmNsZURvd249bmV3IGkoImFycm93LWNpcmNsZS1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYmZjIn0pLGkuYXJyb3dDaXJjbGVMZWZ0PW5ldyBpKCJhcnJvdy1jaXJjbGUtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmZCJ9KSxpLmFycm93Q2lyY2xlUmlnaHQ9bmV3IGkoImFycm93LWNpcmNsZS1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmZSJ9KSxpLmFycm93Q2lyY2xlVXA9bmV3IGkoImFycm93LWNpcmNsZS11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmZiJ9KSxpLmRpYWxvZ0Vycm9yPW5ldyBpKCJkaWFsb2ctZXJyb3IiLGkuZXJyb3IuZGVmaW5pdGlvbiksaS5kaWFsb2dXYXJuaW5nPW5ldyBpKCJkaWFsb2ctd2FybmluZyIsaS53YXJuaW5nLmRlZmluaXRpb24pLGkuZGlhbG9nSW5mbz1uZXcgaSgiZGlhbG9nLWluZm8iLGkuaW5mby5kZWZpbml0aW9uKSxpLmRpYWxvZ0Nsb3NlPW5ldyBpKCJkaWFsb2ctY2xvc2UiLGkuY2xvc2UuZGVmaW5pdGlvbiksaS50cmVlSXRlbUV4cGFuZGVkPW5ldyBpKCJ0cmVlLWl0ZW0tZXhwYW5kZWQiLGkuY2hldnJvbkRvd24uZGVmaW5pdGlvbiksaS50cmVlRmlsdGVyT25UeXBlT249bmV3IGkoInRyZWUtZmlsdGVyLW9uLXR5cGUtb24iLGkubGlzdEZpbHRlci5kZWZpbml0aW9uKSxpLnRyZWVGaWx0ZXJPblR5cGVPZmY9bmV3IGkoInRyZWUtZmlsdGVyLW9uLXR5cGUtb2ZmIixpLmxpc3RTZWxlY3Rpb24uZGVmaW5pdGlvbiksaS50cmVlRmlsdGVyQ2xlYXI9bmV3IGkoInRyZWUtZmlsdGVyLWNsZWFyIixpLmNsb3NlLmRlZmluaXRpb24pLGkudHJlZUl0ZW1Mb2FkaW5nPW5ldyBpKCJ0cmVlLWl0ZW0tbG9hZGluZyIsaS5sb2FkaW5nLmRlZmluaXRpb24pLGkubWVudVNlbGVjdGlvbj1uZXcgaSgibWVudS1zZWxlY3Rpb24iLGkuY2hlY2suZGVmaW5pdGlvbiksaS5tZW51U3VibWVudT1uZXcgaSgibWVudS1zdWJtZW51IixpLmNoZXZyb25SaWdodC5kZWZpbml0aW9uKSxpLm1lbnVCYXJNb3JlPW5ldyBpKCJtZW51YmFyLW1vcmUiLGkubW9yZS5kZWZpbml0aW9uKSxpLnNjcm9sbGJhckJ1dHRvbkxlZnQ9bmV3IGkoInNjcm9sbGJhci1idXR0b24tbGVmdCIsaS50cmlhbmdsZUxlZnQuZGVmaW5pdGlvbiksaS5zY3JvbGxiYXJCdXR0b25SaWdodD1uZXcgaSgic2Nyb2xsYmFyLWJ1dHRvbi1yaWdodCIsaS50cmlhbmdsZVJpZ2h0LmRlZmluaXRpb24pLGkuc2Nyb2xsYmFyQnV0dG9uVXA9bmV3IGkoInNjcm9sbGJhci1idXR0b24tdXAiLGkudHJpYW5nbGVVcC5kZWZpbml0aW9uKSxpLnNjcm9sbGJhckJ1dHRvbkRvd249bmV3IGkoInNjcm9sbGJhci1idXR0b24tZG93biIsaS50cmlhbmdsZURvd24uZGVmaW5pdGlvbiksaS50b29sQmFyTW9yZT1uZXcgaSgidG9vbGJhci1tb3JlIixpLm1vcmUuZGVmaW5pdGlvbiksaS5xdWlja0lucHV0QmFjaz1uZXcgaSgicXVpY2staW5wdXQtYmFjayIsaS5hcnJvd0xlZnQuZGVmaW5pdGlvbik7e3ZhciBTOyhTPUlpPUlpfHx7fSkuaWNvbk5hbWVTZWdtZW50PSJbQS1aYS16MC05XSsiLFMuaWNvbk5hbWVFeHByZXNzaW9uPSJbQS1aYS16MC05LV0rIixTLmljb25Nb2RpZmllckV4cHJlc3Npb249In5bQS1aYS16XSsiLFMuaWNvbk5hbWVDaGFyYWN0ZXI9IltBLVphLXowLTl+LV0iO2NvbnN0IFRhPW5ldyBSZWdFeHAoYF4oJHtTLmljb25OYW1lRXhwcmVzc2lvbn0pKCR7Uy5pY29uTW9kaWZpZXJFeHByZXNzaW9ufSk/JGApO2Z1bmN0aW9uIEd0KGUpe2lmKGUgaW5zdGFuY2VvZiBpKXJldHVyblsiY29kaWNvbiIsImNvZGljb24tIitlLmlkXTtlPVRhLmV4ZWMoZS5pZCk7aWYoIWUpcmV0dXJuIEd0KGkuZXJyb3IpO2xldFssdCxuXT1lO2NvbnN0IHI9WyJjb2RpY29uIiwiY29kaWNvbi0iK3RdO3JldHVybiBuJiZyLnB1c2goImNvZGljb24tbW9kaWZpZXItIituLnN1YnN0cigxKSkscn1TLmFzQ2xhc3NOYW1lQXJyYXk9R3QsUy5hc0NsYXNzTmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gR3QoZSkuam9pbigiICIpfSxTLmFzQ1NTU2VsZWN0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIi4iK0d0KGUpLmpvaW4oIi4iKX19Y2xhc3MgJHR7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuX3Rva2VuQnJhbmQ9dm9pZCAwLHRoaXMub2Zmc2V0PWUsdGhpcy50eXBlPXQsdGhpcy5sYW5ndWFnZT1ufXRvU3RyaW5nKCl7cmV0dXJuIigiK3RoaXMub2Zmc2V0KyIsICIrdGhpcy50eXBlKyIpIn19Y2xhc3MgSnR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl90b2tlbml6YXRpb25SZXN1bHRCcmFuZD12b2lkIDAsdGhpcy50b2tlbnM9ZSx0aGlzLmVuZFN0YXRlPXR9fWNsYXNzIFh0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fZW5jb2RlZFRva2VuaXphdGlvblJlc3VsdEJyYW5kPXZvaWQgMCx0aGlzLnRva2Vucz1lLHRoaXMuZW5kU3RhdGU9dH19e0g9e307Y29uc3Qga2E9bmV3IE1hcCxTYT0oa2Euc2V0KDAsaS5zeW1ib2xNZXRob2QpLGthLnNldCgxLGkuc3ltYm9sRnVuY3Rpb24pLGthLnNldCgyLGkuc3ltYm9sQ29uc3RydWN0b3IpLGthLnNldCgzLGkuc3ltYm9sRmllbGQpLGthLnNldCg0LGkuc3ltYm9sVmFyaWFibGUpLGthLnNldCg1LGkuc3ltYm9sQ2xhc3MpLGthLnNldCg2LGkuc3ltYm9sU3RydWN0KSxrYS5zZXQoNyxpLnN5bWJvbEludGVyZmFjZSksa2Euc2V0KDgsaS5zeW1ib2xNb2R1bGUpLGthLnNldCg5LGkuc3ltYm9sUHJvcGVydHkpLGthLnNldCgxMCxpLnN5bWJvbEV2ZW50KSxrYS5zZXQoMTEsaS5zeW1ib2xPcGVyYXRvciksa2Euc2V0KDEyLGkuc3ltYm9sVW5pdCksa2Euc2V0KDEzLGkuc3ltYm9sVmFsdWUpLGthLnNldCgxNSxpLnN5bWJvbEVudW0pLGthLnNldCgxNCxpLnN5bWJvbENvbnN0YW50KSxrYS5zZXQoMTUsaS5zeW1ib2xFbnVtKSxrYS5zZXQoMTYsaS5zeW1ib2xFbnVtTWVtYmVyKSxrYS5zZXQoMTcsaS5zeW1ib2xLZXl3b3JkKSxrYS5zZXQoMjcsaS5zeW1ib2xTbmlwcGV0KSxrYS5zZXQoMTgsaS5zeW1ib2xUZXh0KSxrYS5zZXQoMTksaS5zeW1ib2xDb2xvciksa2Euc2V0KDIwLGkuc3ltYm9sRmlsZSksa2Euc2V0KDIxLGkuc3ltYm9sUmVmZXJlbmNlKSxrYS5zZXQoMjIsaS5zeW1ib2xDdXN0b21Db2xvciksa2Euc2V0KDIzLGkuc3ltYm9sRm9sZGVyKSxrYS5zZXQoMjQsaS5zeW1ib2xUeXBlUGFyYW1ldGVyKSxrYS5zZXQoMjUsaS5hY2NvdW50KSxrYS5zZXQoMjYsaS5pc3N1ZXMpLEgudG9JY29uPWZ1bmN0aW9uKGUpe2xldCB0PWthLmdldChlKTtyZXR1cm4gdHx8KGNvbnNvbGUuaW5mbygiTm8gY29kaWNvbiBmb3VuZCBmb3IgQ29tcGxldGlvbkl0ZW1LaW5kICIrZSksdD1pLnN5bWJvbFByb3BlcnR5KSx0fSxuZXcgTWFwKTtTYS5zZXQoIm1ldGhvZCIsMCksU2Euc2V0KCJmdW5jdGlvbiIsMSksU2Euc2V0KCJjb25zdHJ1Y3RvciIsMiksU2Euc2V0KCJmaWVsZCIsMyksU2Euc2V0KCJ2YXJpYWJsZSIsNCksU2Euc2V0KCJjbGFzcyIsNSksU2Euc2V0KCJzdHJ1Y3QiLDYpLFNhLnNldCgiaW50ZXJmYWNlIiw3KSxTYS5zZXQoIm1vZHVsZSIsOCksU2Euc2V0KCJwcm9wZXJ0eSIsOSksU2Euc2V0KCJldmVudCIsMTApLFNhLnNldCgib3BlcmF0b3IiLDExKSxTYS5zZXQoInVuaXQiLDEyKSxTYS5zZXQoInZhbHVlIiwxMyksU2Euc2V0KCJjb25zdGFudCIsMTQpLFNhLnNldCgiZW51bSIsMTUpLFNhLnNldCgiZW51bS1tZW1iZXIiLDE2KSxTYS5zZXQoImVudW1NZW1iZXIiLDE2KSxTYS5zZXQoImtleXdvcmQiLDE3KSxTYS5zZXQoInNuaXBwZXQiLDI3KSxTYS5zZXQoInRleHQiLDE4KSxTYS5zZXQoImNvbG9yIiwxOSksU2Euc2V0KCJmaWxlIiwyMCksU2Euc2V0KCJyZWZlcmVuY2UiLDIxKSxTYS5zZXQoImN1c3RvbWNvbG9yIiwyMiksU2Euc2V0KCJmb2xkZXIiLDIzKSxTYS5zZXQoInR5cGUtcGFyYW1ldGVyIiwyNCksU2Euc2V0KCJ0eXBlUGFyYW1ldGVyIiwyNCksU2Euc2V0KCJhY2NvdW50IiwyNSksU2Euc2V0KCJpc3N1ZSIsMjYpLEguZnJvbVN0cmluZz1mdW5jdGlvbihlLHQpe2xldCBuPVNhLmdldChlKTtyZXR1cm4gbj12b2lkIDAhPT1ufHx0P246OX19e2U9e307Y29uc3QgQ2E9bmV3IE1hcDtDYS5zZXQoMCxpLnN5bWJvbEZpbGUpLENhLnNldCgxLGkuc3ltYm9sTW9kdWxlKSxDYS5zZXQoMixpLnN5bWJvbE5hbWVzcGFjZSksQ2Euc2V0KDMsaS5zeW1ib2xQYWNrYWdlKSxDYS5zZXQoNCxpLnN5bWJvbENsYXNzKSxDYS5zZXQoNSxpLnN5bWJvbE1ldGhvZCksQ2Euc2V0KDYsaS5zeW1ib2xQcm9wZXJ0eSksQ2Euc2V0KDcsaS5zeW1ib2xGaWVsZCksQ2Euc2V0KDgsaS5zeW1ib2xDb25zdHJ1Y3RvciksQ2Euc2V0KDksaS5zeW1ib2xFbnVtKSxDYS5zZXQoMTAsaS5zeW1ib2xJbnRlcmZhY2UpLENhLnNldCgxMSxpLnN5bWJvbEZ1bmN0aW9uKSxDYS5zZXQoMTIsaS5zeW1ib2xWYXJpYWJsZSksQ2Euc2V0KDEzLGkuc3ltYm9sQ29uc3RhbnQpLENhLnNldCgxNCxpLnN5bWJvbFN0cmluZyksQ2Euc2V0KDE1LGkuc3ltYm9sTnVtYmVyKSxDYS5zZXQoMTYsaS5zeW1ib2xCb29sZWFuKSxDYS5zZXQoMTcsaS5zeW1ib2xBcnJheSksQ2Euc2V0KDE4LGkuc3ltYm9sT2JqZWN0KSxDYS5zZXQoMTksaS5zeW1ib2xLZXkpLENhLnNldCgyMCxpLnN5bWJvbE51bGwpLENhLnNldCgyMSxpLnN5bWJvbEVudW1NZW1iZXIpLENhLnNldCgyMixpLnN5bWJvbFN0cnVjdCksQ2Euc2V0KDIzLGkuc3ltYm9sRXZlbnQpLENhLnNldCgyNCxpLnN5bWJvbE9wZXJhdG9yKSxDYS5zZXQoMjUsaS5zeW1ib2xUeXBlUGFyYW1ldGVyKSxlLnRvSWNvbj1mdW5jdGlvbihlKXtsZXQgdD1DYS5nZXQoZSk7cmV0dXJuIHR8fChjb25zb2xlLmluZm8oIk5vIGNvZGljb24gZm91bmQgZm9yIFN5bWJvbEtpbmQgIitlKSx0PWkuc3ltYm9sUHJvcGVydHkpLHR9fShyfHx7fSkuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8Im9iamVjdCIhPXR5cGVvZiBlKSYmKCJzdHJpbmciPT10eXBlb2YgZS5pZCYmInN0cmluZyI9PXR5cGVvZiBlLnRpdGxlKX0sbmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXAsdGhpcy5fZmFjdG9yaWVzPW5ldyBNYXAsdGhpcy5fb25EaWRDaGFuZ2U9bmV3IHRlLHRoaXMub25EaWRDaGFuZ2U9dGhpcy5fb25EaWRDaGFuZ2UuZXZlbnQsdGhpcy5fY29sb3JNYXA9bnVsbH1maXJlKGUpe3RoaXMuX29uRGlkQ2hhbmdlLmZpcmUoe2NoYW5nZWRMYW5ndWFnZXM6ZSxjaGFuZ2VkQ29sb3JNYXA6ITF9KX1yZWdpc3RlcihlLHQpe3JldHVybiB0aGlzLl9tYXAuc2V0KGUsdCksdGhpcy5maXJlKFtlXSksXygoKT0+e3RoaXMuX21hcC5nZXQoZSk9PT10JiYodGhpcy5fbWFwLmRlbGV0ZShlKSx0aGlzLmZpcmUoW2VdKSl9KX1yZWdpc3RlckZhY3RvcnkodCxlKXt2YXIgbjtudWxsIT09KG49dGhpcy5fZmFjdG9yaWVzLmdldCh0KSkmJnZvaWQgMCE9PW4mJm4uZGlzcG9zZSgpO2NvbnN0IHI9bmV3IGp0KHRoaXMsdCxlKTtyZXR1cm4gdGhpcy5fZmFjdG9yaWVzLnNldCh0LHIpLF8oKCk9Pntjb25zdCBlPXRoaXMuX2ZhY3Rvcmllcy5nZXQodCk7ZSYmZT09PXImJih0aGlzLl9mYWN0b3JpZXMuZGVsZXRlKHQpLGUuZGlzcG9zZSgpKX0pfWdldE9yQ3JlYXRlKG4pe3JldHVybiBLdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dmFyIGU9dGhpcy5nZXQobik7aWYoZSlyZXR1cm4gZTtjb25zdCB0PXRoaXMuX2ZhY3Rvcmllcy5nZXQobik7cmV0dXJuIXR8fHQuaXNSZXNvbHZlZD9udWxsOih5aWVsZCB0LnJlc29sdmUoKSx0aGlzLmdldChuKSl9KX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcC5nZXQoZSl8fG51bGx9aXNSZXNvbHZlZChlKXtpZih0aGlzLmdldChlKSlyZXR1cm4hMDtlPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSk7cmV0dXJuIShlJiYhZS5pc1Jlc29sdmVkKX1zZXRDb2xvck1hcChlKXt0aGlzLl9jb2xvck1hcD1lLHRoaXMuX29uRGlkQ2hhbmdlLmZpcmUoe2NoYW5nZWRMYW5ndWFnZXM6QXJyYXkuZnJvbSh0aGlzLl9tYXAua2V5cygpKSxjaGFuZ2VkQ29sb3JNYXA6ITB9KX1nZXRDb2xvck1hcCgpe3JldHVybiB0aGlzLl9jb2xvck1hcH1nZXREZWZhdWx0QmFja2dyb3VuZCgpe3JldHVybiB0aGlzLl9jb2xvck1hcCYmMjx0aGlzLl9jb2xvck1hcC5sZW5ndGg/dGhpcy5fY29sb3JNYXBbMl06bnVsbH19LCh0PUJuPUJufHx7fSlbdC5EZXBlbmRzT25LYkxheW91dD0tMV09IkRlcGVuZHNPbktiTGF5b3V0Iix0W3QuVW5rbm93bj0wXT0iVW5rbm93biIsdFt0LkJhY2tzcGFjZT0xXT0iQmFja3NwYWNlIix0W3QuVGFiPTJdPSJUYWIiLHRbdC5FbnRlcj0zXT0iRW50ZXIiLHRbdC5TaGlmdD00XT0iU2hpZnQiLHRbdC5DdHJsPTVdPSJDdHJsIix0W3QuQWx0PTZdPSJBbHQiLHRbdC5QYXVzZUJyZWFrPTddPSJQYXVzZUJyZWFrIix0W3QuQ2Fwc0xvY2s9OF09IkNhcHNMb2NrIix0W3QuRXNjYXBlPTldPSJFc2NhcGUiLHRbdC5TcGFjZT0xMF09IlNwYWNlIix0W3QuUGFnZVVwPTExXT0iUGFnZVVwIix0W3QuUGFnZURvd249MTJdPSJQYWdlRG93biIsdFt0LkVuZD0xM109IkVuZCIsdFt0LkhvbWU9MTRdPSJIb21lIix0W3QuTGVmdEFycm93PTE1XT0iTGVmdEFycm93Iix0W3QuVXBBcnJvdz0xNl09IlVwQXJyb3ciLHRbdC5SaWdodEFycm93PTE3XT0iUmlnaHRBcnJvdyIsdFt0LkRvd25BcnJvdz0xOF09IkRvd25BcnJvdyIsdFt0Lkluc2VydD0xOV09Ikluc2VydCIsdFt0LkRlbGV0ZT0yMF09IkRlbGV0ZSIsdFt0LkRpZ2l0MD0yMV09IkRpZ2l0MCIsdFt0LkRpZ2l0MT0yMl09IkRpZ2l0MSIsdFt0LkRpZ2l0Mj0yM109IkRpZ2l0MiIsdFt0LkRpZ2l0Mz0yNF09IkRpZ2l0MyIsdFt0LkRpZ2l0ND0yNV09IkRpZ2l0NCIsdFt0LkRpZ2l0NT0yNl09IkRpZ2l0NSIsdFt0LkRpZ2l0Nj0yN109IkRpZ2l0NiIsdFt0LkRpZ2l0Nz0yOF09IkRpZ2l0NyIsdFt0LkRpZ2l0OD0yOV09IkRpZ2l0OCIsdFt0LkRpZ2l0OT0zMF09IkRpZ2l0OSIsdFt0LktleUE9MzFdPSJLZXlBIix0W3QuS2V5Qj0zMl09IktleUIiLHRbdC5LZXlDPTMzXT0iS2V5QyIsdFt0LktleUQ9MzRdPSJLZXlEIix0W3QuS2V5RT0zNV09IktleUUiLHRbdC5LZXlGPTM2XT0iS2V5RiIsdFt0LktleUc9MzddPSJLZXlHIix0W3QuS2V5SD0zOF09IktleUgiLHRbdC5LZXlJPTM5XT0iS2V5SSIsdFt0LktleUo9NDBdPSJLZXlKIix0W3QuS2V5Sz00MV09IktleUsiLHRbdC5LZXlMPTQyXT0iS2V5TCIsdFt0LktleU09NDNdPSJLZXlNIix0W3QuS2V5Tj00NF09IktleU4iLHRbdC5LZXlPPTQ1XT0iS2V5TyIsdFt0LktleVA9NDZdPSJLZXlQIix0W3QuS2V5UT00N109IktleVEiLHRbdC5LZXlSPTQ4XT0iS2V5UiIsdFt0LktleVM9NDldPSJLZXlTIix0W3QuS2V5VD01MF09IktleVQiLHRbdC5LZXlVPTUxXT0iS2V5VSIsdFt0LktleVY9NTJdPSJLZXlWIix0W3QuS2V5Vz01M109IktleVciLHRbdC5LZXlYPTU0XT0iS2V5WCIsdFt0LktleVk9NTVdPSJLZXlZIix0W3QuS2V5Wj01Nl09IktleVoiLHRbdC5NZXRhPTU3XT0iTWV0YSIsdFt0LkNvbnRleHRNZW51PTU4XT0iQ29udGV4dE1lbnUiLHRbdC5GMT01OV09IkYxIix0W3QuRjI9NjBdPSJGMiIsdFt0LkYzPTYxXT0iRjMiLHRbdC5GND02Ml09IkY0Iix0W3QuRjU9NjNdPSJGNSIsdFt0LkY2PTY0XT0iRjYiLHRbdC5GNz02NV09IkY3Iix0W3QuRjg9NjZdPSJGOCIsdFt0LkY5PTY3XT0iRjkiLHRbdC5GMTA9NjhdPSJGMTAiLHRbdC5GMTE9NjldPSJGMTEiLHRbdC5GMTI9NzBdPSJGMTIiLHRbdC5GMTM9NzFdPSJGMTMiLHRbdC5GMTQ9NzJdPSJGMTQiLHRbdC5GMTU9NzNdPSJGMTUiLHRbdC5GMTY9NzRdPSJGMTYiLHRbdC5GMTc9NzVdPSJGMTciLHRbdC5GMTg9NzZdPSJGMTgiLHRbdC5GMTk9NzddPSJGMTkiLHRbdC5OdW1Mb2NrPTc4XT0iTnVtTG9jayIsdFt0LlNjcm9sbExvY2s9NzldPSJTY3JvbGxMb2NrIix0W3QuU2VtaWNvbG9uPTgwXT0iU2VtaWNvbG9uIix0W3QuRXF1YWw9ODFdPSJFcXVhbCIsdFt0LkNvbW1hPTgyXT0iQ29tbWEiLHRbdC5NaW51cz04M109Ik1pbnVzIix0W3QuUGVyaW9kPTg0XT0iUGVyaW9kIix0W3QuU2xhc2g9ODVdPSJTbGFzaCIsdFt0LkJhY2txdW90ZT04Nl09IkJhY2txdW90ZSIsdFt0LkJyYWNrZXRMZWZ0PTg3XT0iQnJhY2tldExlZnQiLHRbdC5CYWNrc2xhc2g9ODhdPSJCYWNrc2xhc2giLHRbdC5CcmFja2V0UmlnaHQ9ODldPSJCcmFja2V0UmlnaHQiLHRbdC5RdW90ZT05MF09IlF1b3RlIix0W3QuT0VNXzg9OTFdPSJPRU1fOCIsdFt0LkludGxCYWNrc2xhc2g9OTJdPSJJbnRsQmFja3NsYXNoIix0W3QuTnVtcGFkMD05M109Ik51bXBhZDAiLHRbdC5OdW1wYWQxPTk0XT0iTnVtcGFkMSIsdFt0Lk51bXBhZDI9OTVdPSJOdW1wYWQyIix0W3QuTnVtcGFkMz05Nl09Ik51bXBhZDMiLHRbdC5OdW1wYWQ0PTk3XT0iTnVtcGFkNCIsdFt0Lk51bXBhZDU9OThdPSJOdW1wYWQ1Iix0W3QuTnVtcGFkNj05OV09Ik51bXBhZDYiLHRbdC5OdW1wYWQ3PTEwMF09Ik51bXBhZDciLHRbdC5OdW1wYWQ4PTEwMV09Ik51bXBhZDgiLHRbdC5OdW1wYWQ5PTEwMl09Ik51bXBhZDkiLHRbdC5OdW1wYWRNdWx0aXBseT0xMDNdPSJOdW1wYWRNdWx0aXBseSIsdFt0Lk51bXBhZEFkZD0xMDRdPSJOdW1wYWRBZGQiLHRbdC5OVU1QQURfU0VQQVJBVE9SPTEwNV09Ik5VTVBBRF9TRVBBUkFUT1IiLHRbdC5OdW1wYWRTdWJ0cmFjdD0xMDZdPSJOdW1wYWRTdWJ0cmFjdCIsdFt0Lk51bXBhZERlY2ltYWw9MTA3XT0iTnVtcGFkRGVjaW1hbCIsdFt0Lk51bXBhZERpdmlkZT0xMDhdPSJOdW1wYWREaXZpZGUiLHRbdC5LRVlfSU5fQ09NUE9TSVRJT049MTA5XT0iS0VZX0lOX0NPTVBPU0lUSU9OIix0W3QuQUJOVF9DMT0xMTBdPSJBQk5UX0MxIix0W3QuQUJOVF9DMj0xMTFdPSJBQk5UX0MyIix0W3QuQXVkaW9Wb2x1bWVNdXRlPTExMl09IkF1ZGlvVm9sdW1lTXV0ZSIsdFt0LkF1ZGlvVm9sdW1lVXA9MTEzXT0iQXVkaW9Wb2x1bWVVcCIsdFt0LkF1ZGlvVm9sdW1lRG93bj0xMTRdPSJBdWRpb1ZvbHVtZURvd24iLHRbdC5Ccm93c2VyU2VhcmNoPTExNV09IkJyb3dzZXJTZWFyY2giLHRbdC5Ccm93c2VySG9tZT0xMTZdPSJCcm93c2VySG9tZSIsdFt0LkJyb3dzZXJCYWNrPTExN109IkJyb3dzZXJCYWNrIix0W3QuQnJvd3NlckZvcndhcmQ9MTE4XT0iQnJvd3NlckZvcndhcmQiLHRbdC5NZWRpYVRyYWNrTmV4dD0xMTldPSJNZWRpYVRyYWNrTmV4dCIsdFt0Lk1lZGlhVHJhY2tQcmV2aW91cz0xMjBdPSJNZWRpYVRyYWNrUHJldmlvdXMiLHRbdC5NZWRpYVN0b3A9MTIxXT0iTWVkaWFTdG9wIix0W3QuTWVkaWFQbGF5UGF1c2U9MTIyXT0iTWVkaWFQbGF5UGF1c2UiLHRbdC5MYXVuY2hNZWRpYVBsYXllcj0xMjNdPSJMYXVuY2hNZWRpYVBsYXllciIsdFt0LkxhdW5jaE1haWw9MTI0XT0iTGF1bmNoTWFpbCIsdFt0LkxhdW5jaEFwcDI9MTI1XT0iTGF1bmNoQXBwMiIsdFt0LkNsZWFyPTEyNl09IkNsZWFyIix0W3QuTUFYX1ZBTFVFPTEyN109Ik1BWF9WQUxVRSIsKGE9bj1ufHx7fSlbYS5UcmFjZT0wXT0iVHJhY2UiLGFbYS5EZWJ1Zz0xXT0iRGVidWciLGFbYS5JbmZvPTJdPSJJbmZvIixhW2EuV2FybmluZz0zXT0iV2FybmluZyIsYVthLkVycm9yPTRdPSJFcnJvciIsYVthLkNyaXRpY2FsPTVdPSJDcml0aWNhbCIsYVthLk9mZj02XT0iT2ZmIiwoUz0kbj0kbnx8e30pW1MuUGFyYWdyYXBoPTBdPSJQYXJhZ3JhcGgiLFNbUy5CcmVhaz0xXT0iQnJlYWsiLChlPWZyPWZyfHx7fSlbZS5IaW50PTFdPSJIaW50IixlW2UuSW5mbz0yXT0iSW5mbyIsZVtlLldhcm5pbmc9NF09Ildhcm5pbmciLGVbZS5FcnJvcj04XT0iRXJyb3IiLChyPXdyPXdyfHx7fSlbci5Vbm5lY2Vzc2FyeT0xXT0iVW5uZWNlc3NhcnkiLHJbci5EZXByZWNhdGVkPTJdPSJEZXByZWNhdGVkIiwoYT1hcj1hcnx8e30pW2EuTFRSPTBdPSJMVFIiLGFbYS5SVEw9MV09IlJUTCI7Y2xhc3MgWXR7Y29uc3RydWN0b3IoKXt0aGlzW0J0XT0iTGlua2VkTWFwIix0aGlzLl9tYXA9bmV3IE1hcCx0aGlzLl9oZWFkPXZvaWQgMCx0aGlzLl90YWlsPXZvaWQgMCx0aGlzLl9zaXplPTAsdGhpcy5fc3RhdGU9MH1jbGVhcigpe3RoaXMuX21hcC5jbGVhcigpLHRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwLHRoaXMuX3NpemU9MCx0aGlzLl9zdGF0ZSsrfWlzRW1wdHkoKXtyZXR1cm4hdGhpcy5faGVhZCYmIXRoaXMuX3RhaWx9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1nZXQgZmlyc3QoKXt2YXIgZTtyZXR1cm4gbnVsbD09PShlPXRoaXMuX2hlYWQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnZhbHVlfWdldCBsYXN0KCl7dmFyIGU7cmV0dXJuIG51bGw9PT0oZT10aGlzLl90YWlsKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS52YWx1ZX1oYXMoZSl7cmV0dXJuIHRoaXMuX21hcC5oYXMoZSl9Z2V0KGUsdD0wKXtlPXRoaXMuX21hcC5nZXQoZSk7aWYoZSlyZXR1cm4gMCE9PXQmJnRoaXMudG91Y2goZSx0KSxlLnZhbHVlfXNldChlLHQsbj0wKXtsZXQgcj10aGlzLl9tYXAuZ2V0KGUpO2lmKHIpci52YWx1ZT10LDAhPT1uJiZ0aGlzLnRvdWNoKHIsbik7ZWxzZXtzd2l0Y2gocj17a2V5OmUsdmFsdWU6dCxuZXh0OnZvaWQgMCxwcmV2aW91czp2b2lkIDB9LG4pe2Nhc2UgMDp0aGlzLmFkZEl0ZW1MYXN0KHIpO2JyZWFrO2Nhc2UgMTp0aGlzLmFkZEl0ZW1GaXJzdChyKTticmVhaztkZWZhdWx0OnRoaXMuYWRkSXRlbUxhc3Qocil9dGhpcy5fbWFwLnNldChlLHIpLHRoaXMuX3NpemUrK31yZXR1cm4gdGhpc31kZWxldGUoZSl7cmV0dXJuISF0aGlzLnJlbW92ZShlKX1yZW1vdmUoZSl7dmFyIHQ9dGhpcy5fbWFwLmdldChlKTtpZih0KXJldHVybiB0aGlzLl9tYXAuZGVsZXRlKGUpLHRoaXMucmVtb3ZlSXRlbSh0KSx0aGlzLl9zaXplLS0sdC52YWx1ZX1zaGlmdCgpe2lmKHRoaXMuX2hlYWR8fHRoaXMuX3RhaWwpe2lmKCF0aGlzLl9oZWFkfHwhdGhpcy5fdGFpbCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO3ZhciBlPXRoaXMuX2hlYWQ7cmV0dXJuIHRoaXMuX21hcC5kZWxldGUoZS5rZXkpLHRoaXMucmVtb3ZlSXRlbShlKSx0aGlzLl9zaXplLS0sZS52YWx1ZX19Zm9yRWFjaChlLHQpe3ZhciBuPXRoaXMuX3N0YXRlO2xldCByPXRoaXMuX2hlYWQ7Zm9yKDtyOyl7aWYoKHQ/ZS5iaW5kKHQpOmUpKHIudmFsdWUsci5rZXksdGhpcyksdGhpcy5fc3RhdGUhPT1uKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO3I9ci5uZXh0fX1rZXlzKCl7Y29uc3QgdD10aGlzLG49dGhpcy5fc3RhdGU7bGV0IHI9dGhpcy5faGVhZDtjb25zdCBlPXtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBlfSxuZXh0KCl7aWYodC5fc3RhdGUhPT1uKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO3ZhciBlO3JldHVybiByPyhlPXt2YWx1ZTpyLmtleSxkb25lOiExfSxyPXIubmV4dCxlKTp7dmFsdWU6dm9pZCAwLGRvbmU6ITB9fX07cmV0dXJuIGV9dmFsdWVzKCl7Y29uc3QgdD10aGlzLG49dGhpcy5fc3RhdGU7bGV0IHI9dGhpcy5faGVhZDtjb25zdCBlPXtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBlfSxuZXh0KCl7aWYodC5fc3RhdGUhPT1uKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO3ZhciBlO3JldHVybiByPyhlPXt2YWx1ZTpyLnZhbHVlLGRvbmU6ITF9LHI9ci5uZXh0LGUpOnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19fTtyZXR1cm4gZX1lbnRyaWVzKCl7Y29uc3QgdD10aGlzLG49dGhpcy5fc3RhdGU7bGV0IHI9dGhpcy5faGVhZDtjb25zdCBlPXtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBlfSxuZXh0KCl7aWYodC5fc3RhdGUhPT1uKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO3ZhciBlO3JldHVybiByPyhlPXt2YWx1ZTpbci5rZXksci52YWx1ZV0sZG9uZTohMX0scj1yLm5leHQsZSk6e3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiBlfVsoQnQ9U3ltYm9sLnRvU3RyaW5nVGFnLFN5bWJvbC5pdGVyYXRvcildKCl7cmV0dXJuIHRoaXMuZW50cmllcygpfXRyaW1PbGQobil7aWYoIShuPj10aGlzLnNpemUpKWlmKDAhPT1uKXtsZXQgZT10aGlzLl9oZWFkLHQ9dGhpcy5zaXplO2Zvcig7ZSYmdD5uOyl0aGlzLl9tYXAuZGVsZXRlKGUua2V5KSxlPWUubmV4dCx0LS07dGhpcy5faGVhZD1lLHRoaXMuX3NpemU9dCxlJiYoZS5wcmV2aW91cz12b2lkIDApLHRoaXMuX3N0YXRlKyt9ZWxzZSB0aGlzLmNsZWFyKCl9YWRkSXRlbUZpcnN0KGUpe2lmKHRoaXMuX2hlYWR8fHRoaXMuX3RhaWwpe2lmKCF0aGlzLl9oZWFkKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7ZS5uZXh0PXRoaXMuX2hlYWQsdGhpcy5faGVhZC5wcmV2aW91cz1lfWVsc2UgdGhpcy5fdGFpbD1lO3RoaXMuX2hlYWQ9ZSx0aGlzLl9zdGF0ZSsrfWFkZEl0ZW1MYXN0KGUpe2lmKHRoaXMuX2hlYWR8fHRoaXMuX3RhaWwpe2lmKCF0aGlzLl90YWlsKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7ZS5wcmV2aW91cz10aGlzLl90YWlsLHRoaXMuX3RhaWwubmV4dD1lfWVsc2UgdGhpcy5faGVhZD1lO3RoaXMuX3RhaWw9ZSx0aGlzLl9zdGF0ZSsrfXJlbW92ZUl0ZW0oZSl7aWYoZT09PXRoaXMuX2hlYWQmJmU9PT10aGlzLl90YWlsKXRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwO2Vsc2UgaWYoZT09PXRoaXMuX2hlYWQpe2lmKCFlLm5leHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTtlLm5leHQucHJldmlvdXM9dm9pZCAwLHRoaXMuX2hlYWQ9ZS5uZXh0fWVsc2UgaWYoZT09PXRoaXMuX3RhaWwpe2lmKCFlLnByZXZpb3VzKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7ZS5wcmV2aW91cy5uZXh0PXZvaWQgMCx0aGlzLl90YWlsPWUucHJldmlvdXN9ZWxzZXtjb25zdCB0PWUubmV4dCxuPWUucHJldmlvdXM7aWYoIXR8fCFuKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7KHQucHJldmlvdXM9bikubmV4dD10fWUubmV4dD12b2lkIDAsZS5wcmV2aW91cz12b2lkIDAsdGhpcy5fc3RhdGUrK310b3VjaChlLHQpe2lmKCF0aGlzLl9oZWFkfHwhdGhpcy5fdGFpbCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2lmKDE9PT10fHwyPT09dClpZigxPT09dCl7aWYoZSE9PXRoaXMuX2hlYWQpe2NvbnN0IG49ZS5uZXh0LHI9ZS5wcmV2aW91cztlPT09dGhpcy5fdGFpbD8oci5uZXh0PXZvaWQgMCx0aGlzLl90YWlsPXIpOihuLnByZXZpb3VzPXIpLm5leHQ9bixlLnByZXZpb3VzPXZvaWQgMCxlLm5leHQ9dGhpcy5faGVhZCx0aGlzLl9oZWFkLnByZXZpb3VzPWUsdGhpcy5faGVhZD1lLHRoaXMuX3N0YXRlKyt9fWVsc2UgaWYoMj09PXQmJmUhPT10aGlzLl90YWlsKXtjb25zdCBpPWUubmV4dCxhPWUucHJldmlvdXM7ZT09PXRoaXMuX2hlYWQ/KGkucHJldmlvdXM9dm9pZCAwLHRoaXMuX2hlYWQ9aSk6KGkucHJldmlvdXM9YSkubmV4dD1pLGUubmV4dD12b2lkIDAsZS5wcmV2aW91cz10aGlzLl90YWlsLHRoaXMuX3RhaWwubmV4dD1lLHRoaXMuX3RhaWw9ZSx0aGlzLl9zdGF0ZSsrfX10b0pTT04oKXtjb25zdCBuPVtdO3JldHVybiB0aGlzLmZvckVhY2goKGUsdCk9PntuLnB1c2goW3QsZV0pfSksbn1mcm9tSlNPTihlKXt0aGlzLmNsZWFyKCk7Zm9yKHZhclt0LG5db2YgZSl0aGlzLnNldCh0LG4pfX1mdW5jdGlvbiBRdChlLHQsbil7aWYoIW58fG4ubGVuZ3RoPHQubGVuZ3RoKXJldHVybiBudWxsO2xldCByO3ZhciBpLGE7cmV0dXJuKHI9ZT8oZT1uLGE9KGk9dCkubGVuZ3RoLCEoaS5sZW5ndGg+ZS5sZW5ndGgpJiYwPT09YWUoZSxpLDAsYSkpOjA9PT1uLmluZGV4T2YodCkpPzA8dC5sZW5ndGg/W3tzdGFydDowLGVuZDp0Lmxlbmd0aH1dOltdOm51bGx9UXQuYmluZCh2b2lkIDAsITEpLFF0LmJpbmQodm9pZCAwLCEwKTtjb25zdCBadD1uZXcgU2V0OyIoKVtde308PmAnXCItLzs6LC4/ISIuc3BsaXQoIiIpLmZvckVhY2goZT0+WnQuYWRkKGUuY2hhckNvZGVBdCgwKSkpLG5ldyBjbGFzcyBleHRlbmRzIFl0e2NvbnN0cnVjdG9yKGUsdD0xKXtzdXBlcigpLHRoaXMuX2xpbWl0PWUsdGhpcy5fcmF0aW89TWF0aC5taW4oTWF0aC5tYXgoMCx0KSwxKX1nZXQgbGltaXQoKXtyZXR1cm4gdGhpcy5fbGltaXR9c2V0IGxpbWl0KGUpe3RoaXMuX2xpbWl0PWUsdGhpcy5jaGVja1RyaW0oKX1nZXQoZSx0PTIpe3JldHVybiBzdXBlci5nZXQoZSx0KX1wZWVrKGUpe3JldHVybiBzdXBlci5nZXQoZSwwKX1zZXQoZSx0KXtyZXR1cm4gc3VwZXIuc2V0KGUsdCwyKSx0aGlzLmNoZWNrVHJpbSgpLHRoaXN9Y2hlY2tUcmltKCl7dGhpcy5zaXplPnRoaXMuX2xpbWl0JiZ0aGlzLnRyaW1PbGQoTWF0aC5yb3VuZCh0aGlzLl9saW1pdCp0aGlzLl9yYXRpbykpfX0oMWU0KTtmdW5jdGlvbiBlbigpe2NvbnN0IHQ9W10sbj1bXTtmb3IobGV0IGU9MDtlPD0xMjg7ZSsrKW5bZV09MDtmb3IobGV0IGU9MDtlPD0xMjg7ZSsrKXQucHVzaChuLnNsaWNlKDApKTtyZXR1cm4gdH1mdW5jdGlvbiB0bih0KXtjb25zdCBuPVtdO2ZvcihsZXQgZT0wO2U8PXQ7ZSsrKW5bZV09MDtyZXR1cm4gbn10bigyNTYpLHRuKDI1NiksZW4oKSxlbigpLGVuKCk7dmFyIG5uLHJuLGFuLFM9bmV3IFJlZ0V4cChgXFwkXFwoJHtJaS5pY29uTmFtZUV4cHJlc3Npb259KD86JHtJaS5pY29uTW9kaWZpZXJFeHByZXNzaW9ufSk/XFwpYCwiZyIpO25ldyBSZWdFeHAoSWkuaWNvbk5hbWVDaGFyYWN0ZXIpO2NvbnN0IG9uPW5ldyBSZWdFeHAoIihcXFxcKT8iK1Muc291cmNlLCJnIik7bmV3IFJlZ0V4cCgiXFxcXCIrUy5zb3VyY2UsImciKSxuZXcgUmVnRXhwKGAoXFxzKT8oXFxcXCk/JHtTLnNvdXJjZX0oXFxzKT9gLCJnIik7Y2xhc3Mgc257Y29uc3RydWN0b3IoZT0iIix0PSExKXtpZih0aGlzLnZhbHVlPWUsInN0cmluZyIhPXR5cGVvZiB0aGlzLnZhbHVlKXRocm93KGU9InZhbHVlIik/bmV3IEVycm9yKCJJbGxlZ2FsIGFyZ3VtZW50OiAiK2UpOm5ldyBFcnJvcigiSWxsZWdhbCBhcmd1bWVudCIpOyJib29sZWFuIj09dHlwZW9mIHQ/KHRoaXMuaXNUcnVzdGVkPXQsdGhpcy5zdXBwb3J0VGhlbWVJY29ucz0hMSx0aGlzLnN1cHBvcnRIdG1sPSExKToodGhpcy5pc1RydXN0ZWQ9bnVsbCE9PShlPXQuaXNUcnVzdGVkKSYmdm9pZCAwIT09ZT9lOnZvaWQgMCx0aGlzLnN1cHBvcnRUaGVtZUljb25zPW51bGwhPT0oZT10LnN1cHBvcnRUaGVtZUljb25zKSYmdm9pZCAwIT09ZSYmZSx0aGlzLnN1cHBvcnRIdG1sPW51bGwhPT0oZT10LnN1cHBvcnRIdG1sKSYmdm9pZCAwIT09ZSYmZSl9YXBwZW5kVGV4dChlLHQ9MCl7cmV0dXJuIHRoaXMudmFsdWUrPSh0aGlzLnN1cHBvcnRUaGVtZUljb25zP2UucmVwbGFjZShvbiwoZSx0KT0+dD9lOiJcXCIrZSk6ZSkucmVwbGFjZSgvW1xcYCpfe31bXF0oKSMrXC0hXS9nLCJcXCQmIikucmVwbGFjZSgvKFsgXHRdKykvZywoZSx0KT0+IiZuYnNwOyIucmVwZWF0KHQubGVuZ3RoKSkucmVwbGFjZSgvXD4vZ20sIlxcPiIpLnJlcGxhY2UoL1xuL2csMT09PXQ/IlxcXG4iOiJcblxuIiksdGhpc31hcHBlbmRNYXJrZG93bihlKXtyZXR1cm4gdGhpcy52YWx1ZSs9ZSx0aGlzfWFwcGVuZENvZGVibG9jayhlLHQpe3JldHVybiB0aGlzLnZhbHVlKz0iXG5gYGAiLHRoaXMudmFsdWUrPWUsdGhpcy52YWx1ZSs9IlxuIix0aGlzLnZhbHVlKz10LHRoaXMudmFsdWUrPSJcbmBgYFxuIix0aGlzfX1mdW5jdGlvbiBsbihlKXtpZihubi5zZXJ2aWNlSWRzLmhhcyhlKSlyZXR1cm4gbm4uc2VydmljZUlkcy5nZXQoZSk7ZnVuY3Rpb24gaShlLHQsbil7aWYoMyE9PWFyZ3VtZW50cy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJASVNlcnZpY2VOYW1lLWRlY29yYXRvciBjYW4gb25seSBiZSB1c2VkIHRvIGRlY29yYXRlIGEgcGFyYW1ldGVyIik7dmFyIHI7cj1pLG49biwoZT1lKVtubi5ESV9UQVJHRVRdPT09ZT9lW25uLkRJX0RFUEVOREVOQ0lFU10ucHVzaCh7aWQ6cixpbmRleDpufSk6KGVbbm4uRElfREVQRU5ERU5DSUVTXT1be2lkOnIsaW5kZXg6bn1dLGVbbm4uRElfVEFSR0VUXT1lKX1yZXR1cm4gaS50b1N0cmluZz0oKT0+ZSxubi5zZXJ2aWNlSWRzLnNldChlLGkpLGksMX0ocm49bm49bm58fHt9KS5zZXJ2aWNlSWRzPW5ldyBNYXAscm4uRElfVEFSR0VUPSIkZGkkdGFyZ2V0Iixybi5ESV9ERVBFTkRFTkNJRVM9IiRkaSRkZXBlbmRlbmNpZXMiLHJuLmdldFNlcnZpY2VEZXBlbmRlbmNpZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGVbcm4uRElfREVQRU5ERU5DSUVTXXx8W119LGxuKCJpbnN0YW50aWF0aW9uU2VydmljZSIpLGxuKCJsb2dTZXJ2aWNlIiksbG4oImxvZ2dlclNlcnZpY2UiKSwoZT1hbj1hbnx8e30pW2UuVHJhY2U9MF09IlRyYWNlIixlW2UuRGVidWc9MV09IkRlYnVnIixlW2UuSW5mbz0yXT0iSW5mbyIsZVtlLldhcm5pbmc9M109Ildhcm5pbmciLGVbZS5FcnJvcj00XT0iRXJyb3IiLGVbZS5Dcml0aWNhbD01XT0iQ3JpdGljYWwiLGVbZS5PZmY9Nl09Ik9mZiI7Y29uc3QgaG49YW4uSW5mbztjbGFzcyBjbiBleHRlbmRzIHZ7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubGV2ZWw9aG4sdGhpcy5fb25EaWRDaGFuZ2VMb2dMZXZlbD10aGlzLl9yZWdpc3RlcihuZXcgdGUpLHRoaXMub25EaWRDaGFuZ2VMb2dMZXZlbD10aGlzLl9vbkRpZENoYW5nZUxvZ0xldmVsLmV2ZW50fXNldExldmVsKGUpe3RoaXMubGV2ZWwhPT1lJiYodGhpcy5sZXZlbD1lLHRoaXMuX29uRGlkQ2hhbmdlTG9nTGV2ZWwuZmlyZSh0aGlzLmxldmVsKSl9Z2V0TGV2ZWwoKXtyZXR1cm4gdGhpcy5sZXZlbH19Y2xhc3MgZG4gZXh0ZW5kcyBjbntjb25zdHJ1Y3RvcihlPWhuKXtzdXBlcigpLHRoaXMuc2V0TGV2ZWwoZSl9dHJhY2UoZSwuLi50KXt0aGlzLmdldExldmVsKCk8PWFuLlRyYWNlJiZjb25zb2xlLmxvZygiJWNUUkFDRSIsImNvbG9yOiAjODg4IixlLC4uLnQpfWRlYnVnKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD1hbi5EZWJ1ZyYmY29uc29sZS5sb2coIiVjREVCVUciLCJiYWNrZ3JvdW5kOiAjZWVlOyBjb2xvcjogIzg4OCIsZSwuLi50KX1pbmZvKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD1hbi5JbmZvJiZjb25zb2xlLmxvZygiJWMgSU5GTyIsImNvbG9yOiAjMzNmIixlLC4uLnQpfXdhcm4oZSwuLi50KXt0aGlzLmdldExldmVsKCk8PWFuLldhcm5pbmcmJmNvbnNvbGUubG9nKCIlYyBXQVJOIiwiY29sb3I6ICM5OTMiLGUsLi4udCl9ZXJyb3IoZSwuLi50KXt0aGlzLmdldExldmVsKCk8PWFuLkVycm9yJiZjb25zb2xlLmxvZygiJWMgIEVSUiIsImNvbG9yOiAjZjMzIixlLC4uLnQpfWNyaXRpY2FsKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD1hbi5Dcml0aWNhbCYmY29uc29sZS5sb2coIiVjQ1JJVEkiLCJiYWNrZ3JvdW5kOiAjZjMzOyBjb2xvcjogd2hpdGUiLGUsLi4udCl9ZGlzcG9zZSgpe31mbHVzaCgpe319Y2xhc3MgdW57c3RhdGljIGNob3JkKGUsdCl7cmV0dXJuKGV8KDY1NTM1JnQpPDwxNj4+PjApPj4+MH19ZnVuY3Rpb24gcG4oZSx0LG4scixpKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4scil7aWYoMD09PW4pcmV0dXJuIDE7dmFyIGk9dC5jaGFyQ29kZUF0KG4tMSk7aWYoMCE9PWUuZ2V0KGkpKXJldHVybiAxO2lmKDEzPT09aXx8MTA9PT1pKXJldHVybiAxO2lmKDA8cil7aT10LmNoYXJDb2RlQXQobik7aWYoMCE9PWUuZ2V0KGkpKXJldHVybiAxfXJldHVybn0oZSx0LHIsaSkmJmZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYocitpPT09bilyZXR1cm4gMTtpZihuPXQuY2hhckNvZGVBdChyK2kpLDAhPT1lLmdldChuKSlyZXR1cm4gMTtpZigxMz09PW58fDEwPT09bilyZXR1cm4gMTtpZigwPGkpe249dC5jaGFyQ29kZUF0KHIraS0xKTtpZigwIT09ZS5nZXQobikpcmV0dXJuIDF9cmV0dXJufShlLHQsbixyLGkpfXVuLkN0cmxDbWQ9MjA0OCx1bi5TaGlmdD0xMDI0LHVuLkFsdD01MTIsdW4uV2luQ3RybD0yNTY7Y2xhc3MgbW57Y29uc3RydWN0b3IoZSx0KXt0aGlzLl93b3JkU2VwYXJhdG9ycz1lLHRoaXMuX3NlYXJjaFJlZ2V4PXQsdGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleD0tMSx0aGlzLl9wcmV2TWF0Y2hMZW5ndGg9MH1yZXNldChlKXt0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXg9ZSx0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfW5leHQoZSl7dmFyIHQ9ZS5sZW5ndGg7bGV0IG47ZG97aWYodGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleCt0aGlzLl9wcmV2TWF0Y2hMZW5ndGg9PT10KXJldHVybiBudWxsO2lmKCEobj10aGlzLl9zZWFyY2hSZWdleC5leGVjKGUpKSlyZXR1cm4gbnVsbDt2YXIgcj1uLmluZGV4LGk9blswXS5sZW5ndGg7aWYociE9PXRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXh8fGkhPT10aGlzLl9wcmV2TWF0Y2hMZW5ndGgpe2lmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9cix0aGlzLl9wcmV2TWF0Y2hMZW5ndGg9aSwhdGhpcy5fd29yZFNlcGFyYXRvcnN8fHBuKHRoaXMuX3dvcmRTZXBhcmF0b3JzLGUsdCxyLGkpKXJldHVybiBufWVsc2V7aWYoMCE9PWkpcmV0dXJuIG51bGw7NjU1MzU8ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuY2hhckNvZGVBdChuKTtpZihsZShyKSYmbisxPHQpe3Q9ZS5jaGFyQ29kZUF0KG4rMSk7aWYoNTYzMjA8PShlPXQpJiZlPD01NzM0MylyZXR1cm4gdC01NjMyMCsoci01NTI5Njw8MTApKzY1NTM2fXJldHVybiByfShlLHQsdGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4KT90aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTI6dGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4Kz0xfX13aGlsZShuKTtyZXR1cm4gbnVsbH19Y2xhc3MgZm57c3RhdGljIGNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyh0LGMsZSl7dmFyIGQ9ZT9lLnN0YXJ0TGluZU51bWJlcjoxLHU9ZT9lLmVuZExpbmVOdW1iZXI6dC5nZXRMaW5lQ291bnQoKTtjb25zdCByPW5ldyBnbihjKTt2YXIgaSxlPXIuZ2V0Q2FuZGlkYXRlQ29kZVBvaW50cygpO2xldCBuO249ImFsbE5vbkJhc2ljQXNjaWkiPT09ZT9uZXcgUmVnRXhwKCJbXlxcdFxcblxcclxceDIwLVxceDdFXSIsImciKTpuZXcgUmVnRXhwKCIiK2Z1bmN0aW9uKGUpe2U9YFske2UubWFwKGU9PlN0cmluZy5mcm9tQ29kZVBvaW50KGUpKS5qb2luKCIiKS5yZXBsYWNlKC9bXFxce1x9XCpcK1w/XHxcXlwkXC5cW1xdXChcKV0vZywiXFwkJiIpfV1gO3JldHVybiBlfShBcnJheS5mcm9tKGUpKSwiZyIpO2NvbnN0IGE9bmV3IG1uKG51bGwsbiksbz1bXTtsZXQgcD0hMSxtPTAsZj0wLGc9MDtlOmZvcihsZXQgbj1kLGU9dTtuPD1lO24rKyl7Y29uc3QgaD10LmdldExpbmVDb250ZW50KG4pO3ZhciBiPWgubGVuZ3RoO2EucmVzZXQoMCk7ZG97aWYoaT1hLm5leHQoaCkpe2xldCBlPWkuaW5kZXgsdD1pLmluZGV4K2lbMF0ubGVuZ3RoOzA8ZSYmbGUoaC5jaGFyQ29kZUF0KGUtMSkpJiZlLS0sdCsxPGImJmxlKGguY2hhckNvZGVBdCh0LTEpKSYmdCsrO3ZhciBzPWguc3Vic3RyaW5nKGUsdCksbD15dChlKzEsd3QsaCwwKSxzPXIuc2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShzLGw/bC53b3JkOm51bGwpO2lmKDAhPT1zKXtpZigzPT09cyltKys7ZWxzZSBpZigyPT09cylmKys7ZWxzZXtpZigxIT09cyl0aHJvdyBsPXZvaWQgMCxbbD0iVW5yZWFjaGFibGUiXT1bXSxuZXcgRXJyb3IobCk7ZysrfWlmKDFlMzw9by5sZW5ndGgpe3A9ITA7YnJlYWsgZX1vLnB1c2gobmV3IGF0KG4sZSsxLG4sdCsxKSl9fX13aGlsZShpKX1yZXR1cm57cmFuZ2VzOm8saGFzTW9yZTpwLGFtYmlndW91c0NoYXJhY3RlckNvdW50Om0saW52aXNpYmxlQ2hhcmFjdGVyQ291bnQ6Zixub25CYXNpY0FzY2lpQ2hhcmFjdGVyQ291bnQ6Z319c3RhdGljIGNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0UmVhc29uKGUsdCl7Y29uc3Qgbj1uZXcgZ24odCk7c3dpdGNoKG4uc2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShlLG51bGwpKXtjYXNlIDA6cmV0dXJuIG51bGw7Y2FzZSAyOnJldHVybntraW5kOjF9O2Nhc2UgMzp7Y29uc3QgYT1lLmNvZGVQb2ludEF0KDApO3ZhciByPW4uYW1iaWd1b3VzQ2hhcmFjdGVycy5nZXRQcmltYXJ5Q29uZnVzYWJsZShhKSxpPWNlLmdldExvY2FsZXMoKS5maWx0ZXIoZT0+IWNlLmdldEluc3RhbmNlKG5ldyBTZXQoWy4uLnQuYWxsb3dlZExvY2FsZXMsZV0pKS5pc0FtYmlndW91cyhhKSk7cmV0dXJue2tpbmQ6MCxjb25mdXNhYmxlV2l0aDpTdHJpbmcuZnJvbUNvZGVQb2ludChyKSxub3RBbWJpZ3VvdXNJbkxvY2FsZXM6aX19Y2FzZSAxOnJldHVybntraW5kOjJ9fX19Y2xhc3MgZ257Y29uc3RydWN0b3IoZSl7dGhpcy5vcHRpb25zPWUsdGhpcy5hbGxvd2VkQ29kZVBvaW50cz1uZXcgU2V0KGUuYWxsb3dlZENvZGVQb2ludHMpLHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycz1jZS5nZXRJbnN0YW5jZShuZXcgU2V0KGUuYWxsb3dlZExvY2FsZXMpKX1nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCl7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuImFsbE5vbkJhc2ljQXNjaWkiO2NvbnN0IGU9bmV3IFNldDtpZih0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycylmb3IoY29uc3QgdCBvZiBkZS5jb2RlUG9pbnRzKWJuKFN0cmluZy5mcm9tQ29kZVBvaW50KHQpKXx8ZS5hZGQodCk7aWYodGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMpZm9yKGNvbnN0IG4gb2YgdGhpcy5hbWJpZ3VvdXNDaGFyYWN0ZXJzLmdldENvbmZ1c2FibGVDb2RlUG9pbnRzKCkpZS5hZGQobik7Zm9yKGNvbnN0IHIgb2YgdGhpcy5hbGxvd2VkQ29kZVBvaW50cyllLmRlbGV0ZShyKTtyZXR1cm4gZX1zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKGUsdCl7Y29uc3Qgbj1lLmNvZGVQb2ludEF0KDApO2lmKHRoaXMuYWxsb3dlZENvZGVQb2ludHMuaGFzKG4pKXJldHVybiAwO2lmKHRoaXMub3B0aW9ucy5ub25CYXNpY0FTQ0lJKXJldHVybiAxO2xldCByPSExLGk9ITE7aWYodClmb3IodmFyIGEgb2YgdCl7Y29uc3Qgbj1hLmNvZGVQb2ludEF0KDApO2E9YTthPWhlLnRlc3QoYSk7cj1yfHxhLGF8fHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyhuKXx8ZGUuaXNJbnZpc2libGVDaGFyYWN0ZXIobil8fChpPSEwKX1yZXR1cm4hciYmaT8wOnRoaXMub3B0aW9ucy5pbnZpc2libGVDaGFyYWN0ZXJzJiYhYm4oZSkmJmRlLmlzSW52aXNpYmxlQ2hhcmFjdGVyKG4pPzI6dGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMmJnRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyhuKT8zOjB9fWZ1bmN0aW9uIGJuKGUpe3JldHVybiIgIj09PWV8fCJcbiI9PT1lfHwiXHQiPT09ZX12YXIgX24sd24sdm4seW4sVG4sa24sU24sQ24seG4sTG4sRW4sQW4sTW4sUm4sSW4sTm4sVW49ZnVuY3Rpb24oZSxvLHMsbCl7cmV0dXJuIG5ldyhzPXN8fFByb21pc2UpKGZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24gcihlKXt0cnl7YShsLm5leHQoZSkpfWNhdGNoKGUpe3QoZSl9fWZ1bmN0aW9uIGkoZSl7dHJ5e2EobC50aHJvdyhlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gYShlKXt2YXIgdDtlLmRvbmU/bihlLnZhbHVlKTooKHQ9ZS52YWx1ZSlpbnN0YW5jZW9mIHM/dDpuZXcgcyhmdW5jdGlvbihlKXtlKHQpfSkpLnRoZW4ocixpKX1hKChsPWwuYXBwbHkoZSxvfHxbXSkpLm5leHQoKSl9KX07Y2xhc3Mgem4gZXh0ZW5kcyBjbGFzc3tjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLl91cmk9ZSx0aGlzLl9saW5lcz10LHRoaXMuX2VvbD1uLHRoaXMuX3ZlcnNpb25JZD1yLHRoaXMuX2xpbmVTdGFydHM9bnVsbCx0aGlzLl9jYWNoZWRUZXh0VmFsdWU9bnVsbH1kaXNwb3NlKCl7dGhpcy5fbGluZXMubGVuZ3RoPTB9Z2V0IHZlcnNpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbklkfWdldFRleHQoKXtyZXR1cm4gbnVsbD09PXRoaXMuX2NhY2hlZFRleHRWYWx1ZSYmKHRoaXMuX2NhY2hlZFRleHRWYWx1ZT10aGlzLl9saW5lcy5qb2luKHRoaXMuX2VvbCkpLHRoaXMuX2NhY2hlZFRleHRWYWx1ZX1vbkV2ZW50cyhlKXtlLmVvbCYmZS5lb2whPT10aGlzLl9lb2wmJih0aGlzLl9lb2w9ZS5lb2wsdGhpcy5fbGluZVN0YXJ0cz1udWxsKTtmb3IoY29uc3QgdCBvZiBlLmNoYW5nZXMpdGhpcy5fYWNjZXB0RGVsZXRlUmFuZ2UodC5yYW5nZSksdGhpcy5fYWNjZXB0SW5zZXJ0VGV4dChuZXcgaXQodC5yYW5nZS5zdGFydExpbmVOdW1iZXIsdC5yYW5nZS5zdGFydENvbHVtbiksdC50ZXh0KTt0aGlzLl92ZXJzaW9uSWQ9ZS52ZXJzaW9uSWQsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9X2Vuc3VyZUxpbmVTdGFydHMoKXtpZighdGhpcy5fbGluZVN0YXJ0cyl7dmFyIHQ9dGhpcy5fZW9sLmxlbmd0aCxuPXRoaXMuX2xpbmVzLmxlbmd0aDtjb25zdCByPW5ldyBVaW50MzJBcnJheShuKTtmb3IobGV0IGU9MDtlPG47ZSsrKXJbZV09dGhpcy5fbGluZXNbZV0ubGVuZ3RoK3Q7dGhpcy5fbGluZVN0YXJ0cz1uZXcgYnQocil9fV9zZXRMaW5lVGV4dChlLHQpe3RoaXMuX2xpbmVzW2VdPXQsdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5zZXRWYWx1ZShlLHRoaXMuX2xpbmVzW2VdLmxlbmd0aCt0aGlzLl9lb2wubGVuZ3RoKX1fYWNjZXB0RGVsZXRlUmFuZ2UoZSl7aWYoZS5zdGFydExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXIpcmV0dXJuIGUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbj92b2lkIDA6dm9pZCB0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKGUuZW5kQ29sdW1uLTEpKTt0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5lbmRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSksdGhpcy5fbGluZXMuc3BsaWNlKGUuc3RhcnRMaW5lTnVtYmVyLGUuZW5kTGluZU51bWJlci1lLnN0YXJ0TGluZU51bWJlciksdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5yZW1vdmVWYWx1ZXMoZS5zdGFydExpbmVOdW1iZXIsZS5lbmRMaW5lTnVtYmVyLWUuc3RhcnRMaW5lTnVtYmVyKX1fYWNjZXB0SW5zZXJ0VGV4dCh0LGUpe2lmKDAhPT1lLmxlbmd0aCl7Y29uc3Qgbj1lLnNwbGl0KC9cclxufFxyfFxuLyk7aWYoMSE9PW4ubGVuZ3RoKXtuW24ubGVuZ3RoLTFdKz10aGlzLl9saW5lc1t0LmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKHQuY29sdW1uLTEpLHRoaXMuX3NldExpbmVUZXh0KHQubGluZU51bWJlci0xLHRoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCx0LmNvbHVtbi0xKStuWzBdKTtjb25zdCByPW5ldyBVaW50MzJBcnJheShuLmxlbmd0aC0xKTtmb3IobGV0IGU9MTtlPG4ubGVuZ3RoO2UrKyl0aGlzLl9saW5lcy5zcGxpY2UodC5saW5lTnVtYmVyK2UtMSwwLG5bZV0pLHJbZS0xXT1uW2VdLmxlbmd0aCt0aGlzLl9lb2wubGVuZ3RoO3RoaXMuX2xpbmVTdGFydHMmJnRoaXMuX2xpbmVTdGFydHMuaW5zZXJ0VmFsdWVzKHQubGluZU51bWJlcixyKX1lbHNlIHRoaXMuX3NldExpbmVUZXh0KHQubGluZU51bWJlci0xLHRoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCx0LmNvbHVtbi0xKStuWzBdK3RoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcodC5jb2x1bW4tMSkpfX19e2dldCB1cmkoKXtyZXR1cm4gdGhpcy5fdXJpfWdldCBlb2woKXtyZXR1cm4gdGhpcy5fZW9sfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMuZ2V0VGV4dCgpfWdldExpbmVzQ29udGVudCgpe3JldHVybiB0aGlzLl9saW5lcy5zbGljZSgwKX1nZXRMaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5fbGluZXMubGVuZ3RofWdldExpbmVDb250ZW50KGUpe3JldHVybiB0aGlzLl9saW5lc1tlLTFdfWdldFdvcmRBdFBvc2l0aW9uKGUsdCl7dD15dChlLmNvbHVtbixmdW5jdGlvbih0KXtsZXQgbj13dDtpZih0JiZ0IGluc3RhbmNlb2YgUmVnRXhwKWlmKHQuZ2xvYmFsKW49dDtlbHNle2xldCBlPSJnIjt0Lmlnbm9yZUNhc2UmJihlKz0iaSIpLHQubXVsdGlsaW5lJiYoZSs9Im0iKSx0LnVuaWNvZGUmJihlKz0idSIpLG49bmV3IFJlZ0V4cCh0LnNvdXJjZSxlKX1yZXR1cm4gbi5sYXN0SW5kZXg9MCxufSh0KSx0aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0sMCk7cmV0dXJuIHQ/bmV3IGF0KGUubGluZU51bWJlcix0LnN0YXJ0Q29sdW1uLGUubGluZU51bWJlcix0LmVuZENvbHVtbik6bnVsbH13b3Jkcyh0KXtjb25zdCBuPXRoaXMuX2xpbmVzLHI9dGhpcy5fd29yZGVuaXplLmJpbmQodGhpcyk7bGV0IGk9MCxhPSIiLG89MCxzPVtdO3JldHVybnsqW1N5bWJvbC5pdGVyYXRvcl0oKXtmb3IoOzspaWYobzxzLmxlbmd0aCl7dmFyIGU9YS5zdWJzdHJpbmcoc1tvXS5zdGFydCxzW29dLmVuZCk7bys9MSx5aWVsZCBlfWVsc2V7aWYoIShpPG4ubGVuZ3RoKSlicmVhazthPW5baV0scz1yKGEsdCksbz0wLGkrPTF9fX19Z2V0TGluZVdvcmRzKGUsdCl7Y29uc3Qgbj10aGlzLl9saW5lc1tlLTFdO2NvbnN0IHI9W107Zm9yKGNvbnN0IGkgb2YgdGhpcy5fd29yZGVuaXplKG4sdCkpci5wdXNoKHt3b3JkOm4uc3Vic3RyaW5nKGkuc3RhcnQsaS5lbmQpLHN0YXJ0Q29sdW1uOmkuc3RhcnQrMSxlbmRDb2x1bW46aS5lbmQrMX0pO3JldHVybiByfV93b3JkZW5pemUoZSx0KXtjb25zdCBuPVtdO3ZhciByO2Zvcih0Lmxhc3RJbmRleD0wOyhyPXQuZXhlYyhlKSkmJjAhPT1yWzBdLmxlbmd0aDspbi5wdXNoKHtzdGFydDpyLmluZGV4LGVuZDpyLmluZGV4K3JbMF0ubGVuZ3RofSk7cmV0dXJuIG59Z2V0VmFsdWVJblJhbmdlKGUpe2lmKChlPXRoaXMuX3ZhbGlkYXRlUmFuZ2UoZSkpLnN0YXJ0TGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlcilyZXR1cm4gdGhpcy5fbGluZXNbZS5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKGUuc3RhcnRDb2x1bW4tMSxlLmVuZENvbHVtbi0xKTt2YXIgdD10aGlzLl9lb2wsbj1lLnN0YXJ0TGluZU51bWJlci0xLHI9ZS5lbmRMaW5lTnVtYmVyLTE7Y29uc3QgaT1bXTtpLnB1c2godGhpcy5fbGluZXNbbl0uc3Vic3RyaW5nKGUuc3RhcnRDb2x1bW4tMSkpO2ZvcihsZXQgZT0xK247ZTxyO2UrKylpLnB1c2godGhpcy5fbGluZXNbZV0pO3JldHVybiBpLnB1c2godGhpcy5fbGluZXNbcl0uc3Vic3RyaW5nKDAsZS5lbmRDb2x1bW4tMSkpLGkuam9pbih0KX1vZmZzZXRBdChlKXtyZXR1cm4gZT10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKGUpLHRoaXMuX2Vuc3VyZUxpbmVTdGFydHMoKSx0aGlzLl9saW5lU3RhcnRzLmdldFByZWZpeFN1bShlLmxpbmVOdW1iZXItMikrKGUuY29sdW1uLTEpfXBvc2l0aW9uQXQoZSl7ZT1NYXRoLmZsb29yKGUpLGU9TWF0aC5tYXgoMCxlKSx0aGlzLl9lbnN1cmVMaW5lU3RhcnRzKCk7dmFyIGU9dGhpcy5fbGluZVN0YXJ0cy5nZXRJbmRleE9mKGUpLHQ9dGhpcy5fbGluZXNbZS5pbmRleF0ubGVuZ3RoO3JldHVybntsaW5lTnVtYmVyOjErZS5pbmRleCxjb2x1bW46MStNYXRoLm1pbihlLnJlbWFpbmRlcix0KX19X3ZhbGlkYXRlUmFuZ2UoZSl7dmFyIHQ9dGhpcy5fdmFsaWRhdGVQb3NpdGlvbih7bGluZU51bWJlcjplLnN0YXJ0TGluZU51bWJlcixjb2x1bW46ZS5zdGFydENvbHVtbn0pLG49dGhpcy5fdmFsaWRhdGVQb3NpdGlvbih7bGluZU51bWJlcjplLmVuZExpbmVOdW1iZXIsY29sdW1uOmUuZW5kQ29sdW1ufSk7cmV0dXJuIHQubGluZU51bWJlciE9PWUuc3RhcnRMaW5lTnVtYmVyfHx0LmNvbHVtbiE9PWUuc3RhcnRDb2x1bW58fG4ubGluZU51bWJlciE9PWUuZW5kTGluZU51bWJlcnx8bi5jb2x1bW4hPT1lLmVuZENvbHVtbj97c3RhcnRMaW5lTnVtYmVyOnQubGluZU51bWJlcixzdGFydENvbHVtbjp0LmNvbHVtbixlbmRMaW5lTnVtYmVyOm4ubGluZU51bWJlcixlbmRDb2x1bW46bi5jb2x1bW59OmV9X3ZhbGlkYXRlUG9zaXRpb24oZSl7aWYoIWl0LmlzSVBvc2l0aW9uKGUpKXRocm93IG5ldyBFcnJvcigiYmFkIHBvc2l0aW9uIik7bGV0e2xpbmVOdW1iZXI6dCxjb2x1bW46bn09ZSxyPSExO3ZhciBpO3JldHVybiB0PDE/KHQ9MSxuPTEscj0hMCk6dD50aGlzLl9saW5lcy5sZW5ndGg/KHQ9dGhpcy5fbGluZXMubGVuZ3RoLG49dGhpcy5fbGluZXNbdC0xXS5sZW5ndGgrMSxyPSEwKTooaT10aGlzLl9saW5lc1t0LTFdLmxlbmd0aCsxLG48MT8obj0xLHI9ITApOm4+aSYmKG49aSxyPSEwKSkscj97bGluZU51bWJlcjp0LGNvbHVtbjpufTplfX1jbGFzcyBIbntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2hvc3Q9ZSx0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeT10LHRoaXMuX2ZvcmVpZ25Nb2R1bGU9bnVsbH1kaXNwb3NlKCl7dGhpcy5fbW9kZWxzPU9iamVjdC5jcmVhdGUobnVsbCl9X2dldE1vZGVsKGUpe3JldHVybiB0aGlzLl9tb2RlbHNbZV19X2dldE1vZGVscygpe2NvbnN0IHQ9W107cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX21vZGVscykuZm9yRWFjaChlPT50LnB1c2godGhpcy5fbW9kZWxzW2VdKSksdH1hY2NlcHROZXdNb2RlbChlKXt0aGlzLl9tb2RlbHNbZS51cmxdPW5ldyB6bigkZS5wYXJzZShlLnVybCksZS5saW5lcyxlLkVPTCxlLnZlcnNpb25JZCl9YWNjZXB0TW9kZWxDaGFuZ2VkKGUsdCl7aWYodGhpcy5fbW9kZWxzW2VdKXtjb25zdCBuPXRoaXMuX21vZGVsc1tlXTtuLm9uRXZlbnRzKHQpfX1hY2NlcHRSZW1vdmVkTW9kZWwoZSl7dGhpcy5fbW9kZWxzW2VdJiZkZWxldGUgdGhpcy5fbW9kZWxzW2VdfWNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyh0LG4scil7cmV0dXJuIFVuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt2YXIgZT10aGlzLl9nZXRNb2RlbCh0KTtyZXR1cm4gZT9mbi5jb21wdXRlVW5pY29kZUhpZ2hsaWdodHMoZSxuLHIpOntyYW5nZXM6W10saGFzTW9yZTohMSxhbWJpZ3VvdXNDaGFyYWN0ZXJDb3VudDowLGludmlzaWJsZUNoYXJhY3RlckNvdW50OjAsbm9uQmFzaWNBc2NpaUNoYXJhY3RlckNvdW50OjB9fSl9Y29tcHV0ZURpZmYoYSxvLHMsbCl7cmV0dXJuIFVuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBlPXRoaXMuX2dldE1vZGVsKGEpLHQ9dGhpcy5fZ2V0TW9kZWwobyk7aWYoIWV8fCF0KXJldHVybiBudWxsO3ZhciBuPWUuZ2V0TGluZXNDb250ZW50KCkscj10LmdldExpbmVzQ29udGVudCgpO2NvbnN0IGk9bmV3IGR0KG4scix7c2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzOiEwLHNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXM6ITAsc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2U6cyxzaG91bGRNYWtlUHJldHR5RGlmZjohMCxtYXhDb21wdXRhdGlvblRpbWU6bH0pO249aS5jb21wdXRlRGlmZigpLHI9ISgwPG4uY2hhbmdlcy5sZW5ndGgpJiZ0aGlzLl9tb2RlbHNBcmVJZGVudGljYWwoZSx0KTtyZXR1cm57cXVpdEVhcmx5Om4ucXVpdEVhcmx5LGlkZW50aWNhbDpyLGNoYW5nZXM6bi5jaGFuZ2VzfX0pfV9tb2RlbHNBcmVJZGVudGljYWwodCxuKXt2YXIgcj10LmdldExpbmVDb3VudCgpO2lmKHIhPT1uLmdldExpbmVDb3VudCgpKXJldHVybiExO2ZvcihsZXQgZT0xO2U8PXI7ZSsrKWlmKHQuZ2V0TGluZUNvbnRlbnQoZSkhPT1uLmdldExpbmVDb250ZW50KGUpKXJldHVybiExO3JldHVybiEwfWNvbXB1dGVNb3JlTWluaW1hbEVkaXRzKHUscCl7cmV0dXJuIFVuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBlPXRoaXMuX2dldE1vZGVsKHUpO2lmKCFlKXJldHVybiBwO2NvbnN0IHQ9W107bGV0IG49dm9pZCAwO2Zvcih2YXJ7cmFuZ2U6cix0ZXh0OmksZW9sOmF9b2YgcD1wLnNsaWNlKDApLnNvcnQoKGUsdCk9PntyZXR1cm4gZS5yYW5nZSYmdC5yYW5nZT9hdC5jb21wYXJlUmFuZ2VzVXNpbmdTdGFydHMoZS5yYW5nZSx0LnJhbmdlKTooZS5yYW5nZT8wOjEpLSh0LnJhbmdlPzA6MSl9KSlpZigibnVtYmVyIj09dHlwZW9mIGEmJihuPWEpLCFhdC5pc0VtcHR5KHIpfHxpKXthPWUuZ2V0VmFsdWVJblJhbmdlKHIpO2lmKGEhPT0oaT1pLnJlcGxhY2UoL1xyXG58XG58XHIvZyxlLmVvbCkpKWlmKE1hdGgubWF4KGkubGVuZ3RoLGEubGVuZ3RoKT5Ibi5fZGlmZkxpbWl0KXQucHVzaCh7cmFuZ2U6cix0ZXh0Oml9KTtlbHNle2E9YSxjPWksZD0hMTt2YXIgYT1uZXcgRWUobmV3IFNlKGEpLG5ldyBTZShjKSkuQ29tcHV0ZURpZmYoZCkuY2hhbmdlcyxvPWUub2Zmc2V0QXQoYXQubGlmdChyKS5nZXRTdGFydFBvc2l0aW9uKCkpO2Zvcihjb25zdCBoIG9mIGEpe3ZhciBzPWUucG9zaXRpb25BdChvK2gub3JpZ2luYWxTdGFydCksbD1lLnBvc2l0aW9uQXQobytoLm9yaWdpbmFsU3RhcnQraC5vcmlnaW5hbExlbmd0aCkscz17dGV4dDppLnN1YnN0cihoLm1vZGlmaWVkU3RhcnQsaC5tb2RpZmllZExlbmd0aCkscmFuZ2U6e3N0YXJ0TGluZU51bWJlcjpzLmxpbmVOdW1iZXIsc3RhcnRDb2x1bW46cy5jb2x1bW4sZW5kTGluZU51bWJlcjpsLmxpbmVOdW1iZXIsZW5kQ29sdW1uOmwuY29sdW1ufX07ZS5nZXRWYWx1ZUluUmFuZ2Uocy5yYW5nZSkhPT1zLnRleHQmJnQucHVzaChzKX19fXZhciBjLGQ7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBuJiZ0LnB1c2goe2VvbDpuLHRleHQ6IiIscmFuZ2U6e3N0YXJ0TGluZU51bWJlcjowLHN0YXJ0Q29sdW1uOjAsZW5kTGluZU51bWJlcjowLGVuZENvbHVtbjowfX0pLHR9KX1jb21wdXRlTGlua3ModCl7cmV0dXJuIFVuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt2YXIgZT10aGlzLl9nZXRNb2RlbCh0KTtyZXR1cm4gZT8oZT1lKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0TGluZUNvdW50JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRMaW5lQ29udGVudD9MdC5jb21wdXRlTGlua3MoZSk6W106bnVsbH0pfXRleHR1YWxTdWdnZXN0KG8scyxsLGgpe3JldHVybiBVbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgZT1uZXcgRighMCk7dmFyIHQ9bmV3IFJlZ0V4cChsLGgpO2NvbnN0IG49bmV3IFNldDtlOmZvcih2YXIgciBvZiBvKXtjb25zdCBhPXRoaXMuX2dldE1vZGVsKHIpO2lmKGEpZm9yKHZhciBpIG9mIGEud29yZHModCkpaWYoaSE9PXMmJmlzTmFOKE51bWJlcihpKSkmJihuLmFkZChpKSxuLnNpemU+SG4uX3N1Z2dlc3Rpb25zTGltaXQpKWJyZWFrIGV9cmV0dXJue3dvcmRzOkFycmF5LmZyb20obiksZHVyYXRpb246ZS5lbGFwc2VkKCl9fSl9Y29tcHV0ZVdvcmRSYW5nZXModCxhLG8scyl7cmV0dXJuIFVuKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBlPXRoaXMuX2dldE1vZGVsKHQpO2lmKCFlKXJldHVybiBPYmplY3QuY3JlYXRlKG51bGwpO3ZhciBuPW5ldyBSZWdFeHAobyxzKTtjb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCB0PWEuc3RhcnRMaW5lTnVtYmVyO3Q8YS5lbmRMaW5lTnVtYmVyO3QrKylmb3IoY29uc3QgaSBvZiBlLmdldExpbmVXb3Jkcyh0LG4pKWlmKGlzTmFOKE51bWJlcihpLndvcmQpKSl7bGV0IGU9cltpLndvcmRdO2V8fChlPVtdLHJbaS53b3JkXT1lKSxlLnB1c2goe3N0YXJ0TGluZU51bWJlcjp0LHN0YXJ0Q29sdW1uOmkuc3RhcnRDb2x1bW4sZW5kTGluZU51bWJlcjp0LGVuZENvbHVtbjppLmVuZENvbHVtbn0pfXJldHVybiByfSl9bmF2aWdhdGVWYWx1ZVNldChpLGEsbyxzLGwpe3JldHVybiBVbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgZT10aGlzLl9nZXRNb2RlbChpKTtpZighZSlyZXR1cm4gbnVsbDt2YXIgdD1uZXcgUmVnRXhwKHMsbCksbj0oYS5zdGFydENvbHVtbj09PWEuZW5kQ29sdW1uJiYoYT17c3RhcnRMaW5lTnVtYmVyOmEuc3RhcnRMaW5lTnVtYmVyLHN0YXJ0Q29sdW1uOmEuc3RhcnRDb2x1bW4sZW5kTGluZU51bWJlcjphLmVuZExpbmVOdW1iZXIsZW5kQ29sdW1uOmEuZW5kQ29sdW1uKzF9KSxlLmdldFZhbHVlSW5SYW5nZShhKSksdD1lLmdldFdvcmRBdFBvc2l0aW9uKHtsaW5lTnVtYmVyOmEuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjphLnN0YXJ0Q29sdW1ufSx0KTtpZighdClyZXR1cm4gbnVsbDt2YXIgcj1lLmdldFZhbHVlSW5SYW5nZSh0KTtyZXR1cm4gRXQuSU5TVEFOQ0UubmF2aWdhdGVWYWx1ZVNldChhLG4sdCxyLG8pfSl9bG9hZEZvcmVpZ25Nb2R1bGUoZSx0LG4pe249cmUobiwoZSx0KT0+dGhpcy5faG9zdC5maHIoZSx0KSk7cmV0dXJuIHRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5Pyh0aGlzLl9mb3JlaWduTW9kdWxlPXRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5KHtob3N0Om4sZ2V0TWlycm9yTW9kZWxzOigpPT50aGlzLl9nZXRNb2RlbHMoKX0sdCksUHJvbWlzZS5yZXNvbHZlKG5lKHRoaXMuX2ZvcmVpZ25Nb2R1bGUpKSk6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJVbmV4cGVjdGVkIHVzYWdlIikpfWZtcihlLHQpe2lmKCF0aGlzLl9mb3JlaWduTW9kdWxlfHwiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5fZm9yZWlnbk1vZHVsZVtlXSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIG9yIG1ldGhvZDogIitlKSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fZm9yZWlnbk1vZHVsZVtlXS5hcHBseSh0aGlzLl9mb3JlaWduTW9kdWxlLHQpKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9fX1Ibi5fZGlmZkxpbWl0PTFlNSxIbi5fc3VnZ2VzdGlvbnNMaW1pdD0xZTQsImZ1bmN0aW9uIj09dHlwZW9mIGltcG9ydFNjcmlwdHMmJihVLm1vbmFjbz17ZWRpdG9yOnZvaWQgMCxsYW5ndWFnZXM6dm9pZCAwLGV4dHJhOnZvaWQgMCxDYW5jZWxsYXRpb25Ub2tlblNvdXJjZTpSdCxFbWl0dGVyOnRlLEtleUNvZGU6Qm4sS2V5TW9kOnVuLFBvc2l0aW9uOml0LFJhbmdlOmF0LFNlbGVjdGlvbjpWdCxVcmk6JGUsVG9rZW46JHQsTWFya2Rvd25TdHJpbmc6c24sTWFya2Rvd25TdHJpbmdUZXh0TmV3bGluZVN0eWxlOiRuLERpc3Bvc2FibGU6dixEaXNwb3NhYmxlU3RvcmU6dyxFcnJvckhhbmRsZXI6cyxBYnN0cmFjdExvZ2dlcjpjbixDb25zb2xlTG9nZ2VyOmRuLFRva2VuaXphdGlvblJlc3VsdDpKdCxFbmNvZGVkVG9rZW5pemF0aW9uUmVzdWx0Olh0LFNlbGVjdGlvbkRpcmVjdGlvbjphcixNYXJrZXJTZXZlcml0eTpmcixNYXJrZXJUYWc6d3IsTG9nTGV2ZWw6bixlcnJvckhhbmRsZXI6bH0pO2xldCBEbj0hMTtmdW5jdGlvbiBXbih0KXtpZighRG4pe0RuPSEwO2NvbnN0IG49bmV3IHllKGU9PntzZWxmLnBvc3RNZXNzYWdlKGUpfSxlPT5uZXcgSG4oZSx0KSk7c2VsZi5vbm1lc3NhZ2U9ZT0+e24ub25tZXNzYWdlKGUuZGF0YSl9fX1mdW5jdGlvbiBQbihlLHQsLi4ubil7e3ZhciByPW47bGV0IGU7cmV0dXJuIGU9MD09PXIubGVuZ3RoP3Q6dC5yZXBsYWNlKC9ceyhcZCspXH0vZywoZSx0KT0+e3Q9dFswXTtyZXR1cm4gdm9pZCAwIT09clt0XT9yW3RdOmV9KX19c2VsZi5vbm1lc3NhZ2U9ZT0+e0RufHxXbihudWxsKX0sKHI9X249X258fHt9KS5NSU5fVkFMVUU9MCxyLk1BWF9WQUxVRT0yMTQ3NDgzNjQ3LChhPXduPXdufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2xpbmU6ZT1lPT09TnVtYmVyLk1BWF9WQUxVRT9fbi5NQVhfVkFMVUU6ZSxjaGFyYWN0ZXI6dD10PT09TnVtYmVyLk1BWF9WQUxVRT9fbi5NQVhfVkFMVUU6dH19LGEuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8ub2JqZWN0TGl0ZXJhbChlKSYmby51aW50ZWdlcihlLmxpbmUpJiZvLnVpbnRlZ2VyKGUuY2hhcmFjdGVyKX0sKElpPXZuPXZufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKG8udWludGVnZXIoZSkmJm8udWludGVnZXIodCkmJm8udWludGVnZXIobikmJm8udWludGVnZXIocikpcmV0dXJue3N0YXJ0OnduLmNyZWF0ZShlLHQpLGVuZDp3bi5jcmVhdGUobixyKX07aWYod24uaXMoZSkmJnduLmlzKHQpKXJldHVybntzdGFydDplLGVuZDp0fTt0aHJvdyBuZXcgRXJyb3IoIlJhbmdlI2NyZWF0ZSBjYWxsZWQgd2l0aCBpbnZhbGlkIGFyZ3VtZW50c1siK2UrIiwgIit0KyIsICIrbisiLCAiK3IrIl0iKX0sSWkuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8ub2JqZWN0TGl0ZXJhbChlKSYmd24uaXMoZS5zdGFydCkmJnduLmlzKGUuZW5kKX0sKFM9eW49eW58fHt9KS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dXJpOmUscmFuZ2U6dH19LFMuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8uZGVmaW5lZChlKSYmdm4uaXMoZS5yYW5nZSkmJihvLnN0cmluZyhlLnVyaSl8fG8udW5kZWZpbmVkKGUudXJpKSl9LChlPUluPUlufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybntyZWQ6ZSxncmVlbjp0LGJsdWU6bixhbHBoYTpyfX0sZS5pcz1mdW5jdGlvbihlKXtyZXR1cm4gby5udW1iZXJSYW5nZShlLnJlZCwwLDEpJiZvLm51bWJlclJhbmdlKGUuZ3JlZW4sMCwxKSYmby5udW1iZXJSYW5nZShlLmJsdWUsMCwxKSYmby5udW1iZXJSYW5nZShlLmFscGhhLDAsMSl9LChCbj1Ubj1Ubnx8e30pLkNvbW1lbnQ9ImNvbW1lbnQiLEJuLkltcG9ydHM9ImltcG9ydHMiLEJuLlJlZ2lvbj0icmVnaW9uIiwoJG49a249a258fHt9KS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57bG9jYXRpb246ZSxtZXNzYWdlOnR9fSwkbi5pcz1mdW5jdGlvbihlKXtyZXR1cm4gby5kZWZpbmVkKGUpJiZ5bi5pcyhlLmxvY2F0aW9uKSYmby5zdHJpbmcoZS5tZXNzYWdlKX0sKFhufHx7fSkuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJm8uc3RyaW5nKGUuaHJlZil9LChhcj1lcj1lcnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyLGksYSl7cmV0dXJuIGU9e3JhbmdlOmUsbWVzc2FnZTp0fSxvLmRlZmluZWQobikmJihlLnNldmVyaXR5PW4pLG8uZGVmaW5lZChyKSYmKGUuY29kZT1yKSxvLmRlZmluZWQoaSkmJihlLnNvdXJjZT1pKSxvLmRlZmluZWQoYSkmJihlLnJlbGF0ZWRJbmZvcm1hdGlvbj1hKSxlfSxhci5pcz1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gby5kZWZpbmVkKGUpJiZ2bi5pcyhlLnJhbmdlKSYmby5zdHJpbmcoZS5tZXNzYWdlKSYmKG8ubnVtYmVyKGUuc2V2ZXJpdHkpfHxvLnVuZGVmaW5lZChlLnNldmVyaXR5KSkmJihvLmludGVnZXIoZS5jb2RlKXx8by5zdHJpbmcoZS5jb2RlKXx8by51bmRlZmluZWQoZS5jb2RlKSkmJihvLnVuZGVmaW5lZChlLmNvZGVEZXNjcmlwdGlvbil8fG8uc3RyaW5nKG51bGw9PT0odD1lLmNvZGVEZXNjcmlwdGlvbil8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaHJlZikpJiYoby5zdHJpbmcoZS5zb3VyY2UpfHxvLnVuZGVmaW5lZChlLnNvdXJjZSkpJiYoby51bmRlZmluZWQoZS5yZWxhdGVkSW5mb3JtYXRpb24pfHxvLnR5cGVkQXJyYXkoZS5yZWxhdGVkSW5mb3JtYXRpb24sa24uaXMpKX0sKGZyPWxyPWxyfHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdLHI9MjtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKW5bci0yXT1hcmd1bWVudHNbcl07cmV0dXJuIGU9e3RpdGxlOmUsY29tbWFuZDp0fSxvLmRlZmluZWQobikmJjA8bi5sZW5ndGgmJihlLmFyZ3VtZW50cz1uKSxlfSxmci5pcz1mdW5jdGlvbihlKXtyZXR1cm4gby5kZWZpbmVkKGUpJiZvLnN0cmluZyhlLnRpdGxlKSYmby5zdHJpbmcoZS5jb21tYW5kKX0sKHdyPVNuPVNufHx7fSkucmVwbGFjZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLG5ld1RleHQ6dH19LHdyLmluc2VydD1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTp7c3RhcnQ6ZSxlbmQ6ZX0sbmV3VGV4dDp0fX0sd3IuZGVsPWZ1bmN0aW9uKGUpe3JldHVybntyYW5nZTplLG5ld1RleHQ6IiJ9fSx3ci5pcz1mdW5jdGlvbihlKXtyZXR1cm4gby5vYmplY3RMaXRlcmFsKGUpJiZvLnN0cmluZyhlLm5ld1RleHQpJiZ2bi5pcyhlLnJhbmdlKX0sKG49Q249Q258fHt9KS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPXtsYWJlbDplfSx2b2lkIDAhPT10JiYoZS5uZWVkc0NvbmZpcm1hdGlvbj10KSx2b2lkIDAhPT1uJiYoZS5kZXNjcmlwdGlvbj1uKSxlfSxuLmlzPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lJiZvLm9iamVjdExpdGVyYWwoZSkmJm8uc3RyaW5nKGUubGFiZWwpJiYoby5ib29sZWFuKGUubmVlZHNDb25maXJtYXRpb24pfHx2b2lkIDA9PT1lLm5lZWRzQ29uZmlybWF0aW9uKSYmKG8uc3RyaW5nKGUuZGVzY3JpcHRpb24pfHx2b2lkIDA9PT1lLmRlc2NyaXB0aW9uKX0sKHhufHwoeG49e30pKS5pcz1mdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV9LChyPUxuPUxufHx7fSkucmVwbGFjZT1mdW5jdGlvbihlLHQsbil7cmV0dXJue3JhbmdlOmUsbmV3VGV4dDp0LGFubm90YXRpb25JZDpufX0sci5pbnNlcnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybntyYW5nZTp7c3RhcnQ6ZSxlbmQ6ZX0sbmV3VGV4dDp0LGFubm90YXRpb25JZDpufX0sci5kZWw9ZnVuY3Rpb24oZSx0KXtyZXR1cm57cmFuZ2U6ZSxuZXdUZXh0OiIiLGFubm90YXRpb25JZDp0fX0sci5pcz1mdW5jdGlvbihlKXtyZXR1cm4gU24uaXMoZSkmJihDbi5pcyhlLmFubm90YXRpb25JZCl8fHhuLmlzKGUuYW5ub3RhdGlvbklkKSl9LChhPUVuPUVufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3RleHREb2N1bWVudDplLGVkaXRzOnR9fSxhLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBvLmRlZmluZWQoZSkmJkZuLmlzKGUudGV4dERvY3VtZW50KSYmQXJyYXkuaXNBcnJheShlLmVkaXRzKX0sKElpPUFuPUFufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT17a2luZDoiY3JlYXRlIix1cmk6ZX0sdm9pZCAwPT09dHx8dm9pZCAwPT09dC5vdmVyd3JpdGUmJnZvaWQgMD09PXQuaWdub3JlSWZFeGlzdHN8fChlLm9wdGlvbnM9dCksdm9pZCAwIT09biYmKGUuYW5ub3RhdGlvbklkPW4pLGV9LElpLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYiY3JlYXRlIj09PWUua2luZCYmby5zdHJpbmcoZS51cmkpJiYodm9pZCAwPT09ZS5vcHRpb25zfHwodm9pZCAwPT09ZS5vcHRpb25zLm92ZXJ3cml0ZXx8by5ib29sZWFuKGUub3B0aW9ucy5vdmVyd3JpdGUpKSYmKHZvaWQgMD09PWUub3B0aW9ucy5pZ25vcmVJZkV4aXN0c3x8by5ib29sZWFuKGUub3B0aW9ucy5pZ25vcmVJZkV4aXN0cykpKSYmKHZvaWQgMD09PWUuYW5ub3RhdGlvbklkfHx4bi5pcyhlLmFubm90YXRpb25JZCkpfSwoUz1Nbj1Nbnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gZT17a2luZDoicmVuYW1lIixvbGRVcmk6ZSxuZXdVcmk6dH0sdm9pZCAwPT09bnx8dm9pZCAwPT09bi5vdmVyd3JpdGUmJnZvaWQgMD09PW4uaWdub3JlSWZFeGlzdHN8fChlLm9wdGlvbnM9biksdm9pZCAwIT09ciYmKGUuYW5ub3RhdGlvbklkPXIpLGV9LFMuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJyZW5hbWUiPT09ZS5raW5kJiZvLnN0cmluZyhlLm9sZFVyaSkmJm8uc3RyaW5nKGUubmV3VXJpKSYmKHZvaWQgMD09PWUub3B0aW9uc3x8KHZvaWQgMD09PWUub3B0aW9ucy5vdmVyd3JpdGV8fG8uYm9vbGVhbihlLm9wdGlvbnMub3ZlcndyaXRlKSkmJih2b2lkIDA9PT1lLm9wdGlvbnMuaWdub3JlSWZFeGlzdHN8fG8uYm9vbGVhbihlLm9wdGlvbnMuaWdub3JlSWZFeGlzdHMpKSkmJih2b2lkIDA9PT1lLmFubm90YXRpb25JZHx8eG4uaXMoZS5hbm5vdGF0aW9uSWQpKX0sKEluPVJuPVJufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT17a2luZDoiZGVsZXRlIix1cmk6ZX0sdm9pZCAwPT09dHx8dm9pZCAwPT09dC5yZWN1cnNpdmUmJnZvaWQgMD09PXQuaWdub3JlSWZOb3RFeGlzdHN8fChlLm9wdGlvbnM9dCksdm9pZCAwIT09biYmKGUuYW5ub3RhdGlvbklkPW4pLGV9LEluLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZGVsZXRlIj09PWUua2luZCYmby5zdHJpbmcoZS51cmkpJiYodm9pZCAwPT09ZS5vcHRpb25zfHwodm9pZCAwPT09ZS5vcHRpb25zLnJlY3Vyc2l2ZXx8by5ib29sZWFuKGUub3B0aW9ucy5yZWN1cnNpdmUpKSYmKHZvaWQgMD09PWUub3B0aW9ucy5pZ25vcmVJZk5vdEV4aXN0c3x8by5ib29sZWFuKGUub3B0aW9ucy5pZ25vcmVJZk5vdEV4aXN0cykpKSYmKHZvaWQgMD09PWUuYW5ub3RhdGlvbklkfHx4bi5pcyhlLmFubm90YXRpb25JZCkpfSwoTm58fChObj17fSkpLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYodm9pZCAwIT09ZS5jaGFuZ2VzfHx2b2lkIDAhPT1lLmRvY3VtZW50Q2hhbmdlcykmJih2b2lkIDA9PT1lLmRvY3VtZW50Q2hhbmdlc3x8ZS5kb2N1bWVudENoYW5nZXMuZXZlcnkoZnVuY3Rpb24oZSl7cmV0dXJuIG8uc3RyaW5nKGUua2luZCk/QW4uaXMoZSl8fE1uLmlzKGUpfHxSbi5pcyhlKTpFbi5pcyhlKX0pKX07cW4ucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbihlLHQsbil7dmFyIHIsbj12b2lkIDA9PT1uP1NuLmluc2VydChlLHQpOnhuLmlzKG4pP0xuLmluc2VydChlLHQscj1uKToodGhpcy5hc3NlcnRDaGFuZ2VBbm5vdGF0aW9ucyh0aGlzLmNoYW5nZUFubm90YXRpb25zKSxyPXRoaXMuY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKG4pLExuLmluc2VydChlLHQscikpO2lmKHRoaXMuZWRpdHMucHVzaChuKSx2b2lkIDAhPT1yKXJldHVybiByfSxxbi5wcm90b3R5cGUucmVwbGFjZT1mdW5jdGlvbihlLHQsbil7dmFyIHIsbj12b2lkIDA9PT1uP1NuLnJlcGxhY2UoZSx0KTp4bi5pcyhuKT9Mbi5yZXBsYWNlKGUsdCxyPW4pOih0aGlzLmFzc2VydENoYW5nZUFubm90YXRpb25zKHRoaXMuY2hhbmdlQW5ub3RhdGlvbnMpLHI9dGhpcy5jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UobiksTG4ucmVwbGFjZShlLHQscikpO2lmKHRoaXMuZWRpdHMucHVzaChuKSx2b2lkIDAhPT1yKXJldHVybiByfSxxbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG4sdD12b2lkIDA9PT10P1NuLmRlbChlKTp4bi5pcyh0KT9Mbi5kZWwoZSxuPXQpOih0aGlzLmFzc2VydENoYW5nZUFubm90YXRpb25zKHRoaXMuY2hhbmdlQW5ub3RhdGlvbnMpLG49dGhpcy5jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UodCksTG4uZGVsKGUsbikpO2lmKHRoaXMuZWRpdHMucHVzaCh0KSx2b2lkIDAhPT1uKXJldHVybiBufSxxbi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3RoaXMuZWRpdHMucHVzaChlKX0scW4ucHJvdG90eXBlLmFsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVkaXRzfSxxbi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmVkaXRzLnNwbGljZSgwLHRoaXMuZWRpdHMubGVuZ3RoKX0scW4ucHJvdG90eXBlLmFzc2VydENoYW5nZUFubm90YXRpb25zPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IEVycm9yKCJUZXh0IGVkaXQgY2hhbmdlIGlzIG5vdCBjb25maWd1cmVkIHRvIG1hbmFnZSBjaGFuZ2UgYW5ub3RhdGlvbnMuIil9O3ZhciBPbj1xbjtmdW5jdGlvbiBxbihlLHQpe3RoaXMuZWRpdHM9ZSx0aGlzLmNoYW5nZUFubm90YXRpb25zPXR9cHIucHJvdG90eXBlLmFsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hbm5vdGF0aW9uc30sT2JqZWN0LmRlZmluZVByb3BlcnR5KHByLnByb3RvdHlwZSwic2l6ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaXplfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHByLnByb3RvdHlwZS5tYW5hZ2U9ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZih4bi5pcyhlKT9uPWU6KG49dGhpcy5uZXh0SWQoKSx0PWUpLHZvaWQgMCE9PXRoaXMuX2Fubm90YXRpb25zW25dKXRocm93IG5ldyBFcnJvcigiSWQgIituKyIgaXMgYWxyZWFkeSBpbiB1c2UuIik7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoIk5vIGFubm90YXRpb24gcHJvdmlkZWQgZm9yIGlkICIrbik7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25zW25dPXQsdGhpcy5fc2l6ZSsrLG59LHByLnByb3RvdHlwZS5uZXh0SWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY291bnRlcisrLHRoaXMuX2NvdW50ZXIudG9TdHJpbmcoKX07dmFyIEZuLFZuLEJuLEtuLGpuLEduLCRuLEpuLFhuLFluLFFuLFpuLGVyLHRyLG5yLHJyLGlyLGFyLG9yLHNyLGxyLGhyLGNyLGRyLHVyPXByO2Z1bmN0aW9uIHByKGUpe3RoaXMuX2Fubm90YXRpb25zPXZvaWQgMD09PWU/T2JqZWN0LmNyZWF0ZShudWxsKTplLHRoaXMuX2NvdW50ZXI9MCx0aGlzLl9zaXplPTB9ZnVuY3Rpb24gbXIobil7dmFyIHI9dGhpczt0aGlzLl90ZXh0RWRpdENoYW5nZXM9T2JqZWN0LmNyZWF0ZShudWxsKSx2b2lkIDAhPT1uPyh0aGlzLl93b3Jrc3BhY2VFZGl0PW4pLmRvY3VtZW50Q2hhbmdlcz8odGhpcy5fY2hhbmdlQW5ub3RhdGlvbnM9bmV3IHVyKG4uY2hhbmdlQW5ub3RhdGlvbnMpLG4uY2hhbmdlQW5ub3RhdGlvbnM9dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMuYWxsKCksbi5kb2N1bWVudENoYW5nZXMuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdDtFbi5pcyhlKSYmKHQ9bmV3IE9uKGUuZWRpdHMsci5fY2hhbmdlQW5ub3RhdGlvbnMpLHIuX3RleHRFZGl0Q2hhbmdlc1tlLnRleHREb2N1bWVudC51cmldPXQpfSkpOm4uY2hhbmdlcyYmT2JqZWN0LmtleXMobi5jaGFuZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBPbihuLmNoYW5nZXNbZV0pO3IuX3RleHRFZGl0Q2hhbmdlc1tlXT10fSk6dGhpcy5fd29ya3NwYWNlRWRpdD17fX1PYmplY3QuZGVmaW5lUHJvcGVydHkobXIucHJvdG90eXBlLCJlZGl0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMCE9PXRoaXMuX2NoYW5nZUFubm90YXRpb25zJiYoMD09PXRoaXMuX2NoYW5nZUFubm90YXRpb25zLnNpemU/dGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VBbm5vdGF0aW9ucz12b2lkIDA6dGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VBbm5vdGF0aW9ucz10aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5hbGwoKSksdGhpcy5fd29ya3NwYWNlRWRpdH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxtci5wcm90b3R5cGUuZ2V0VGV4dEVkaXRDaGFuZ2U9ZnVuY3Rpb24oZSl7aWYoRm4uaXMoZSkpe2lmKHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuIik7dmFyIHQ9e3VyaTplLnVyaSx2ZXJzaW9uOmUudmVyc2lvbn07cmV0dXJuKG49dGhpcy5fdGV4dEVkaXRDaGFuZ2VzW3QudXJpXSl8fCh0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5wdXNoKHt0ZXh0RG9jdW1lbnQ6dCxlZGl0czpyPVtdfSksbj1uZXcgT24ocix0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucyksdGhpcy5fdGV4dEVkaXRDaGFuZ2VzW3QudXJpXT1uKSxufWlmKHRoaXMuaW5pdENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3Igbm9ybWFsIHRleHQgZWRpdCBjaGFuZ2VzLiIpO3ZhciBuLHI7cmV0dXJuKG49dGhpcy5fdGV4dEVkaXRDaGFuZ2VzW2VdKXx8KHRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlc1tlXT1yPVtdLG49bmV3IE9uKHIpLHRoaXMuX3RleHRFZGl0Q2hhbmdlc1tlXT1uKSxufSxtci5wcm90b3R5cGUuaW5pdERvY3VtZW50Q2hhbmdlcz1mdW5jdGlvbigpe3ZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzJiZ2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMmJih0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucz1uZXcgdXIsdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXM9W10sdGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VBbm5vdGF0aW9ucz10aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5hbGwoKSl9LG1yLnByb3RvdHlwZS5pbml0Q2hhbmdlcz1mdW5jdGlvbigpe3ZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzJiZ2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMmJih0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXM9T2JqZWN0LmNyZWF0ZShudWxsKSl9LG1yLnByb3RvdHlwZS5jcmVhdGVGaWxlPWZ1bmN0aW9uKGUsdCxuKXtpZih0aGlzLmluaXREb2N1bWVudENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcyl0aHJvdyBuZXcgRXJyb3IoIldvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBkb2N1bWVudCBjaGFuZ2VzLiIpO3ZhciByLGk7aWYoQ24uaXModCl8fHhuLmlzKHQpP3I9dDpuPXQsdD12b2lkIDA9PT1yP0FuLmNyZWF0ZShlLG4pOihpPXhuLmlzKHIpP3I6dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKHIpLEFuLmNyZWF0ZShlLG4saSkpLHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2godCksdm9pZCAwIT09aSlyZXR1cm4gaX0sbXIucHJvdG90eXBlLnJlbmFtZUZpbGU9ZnVuY3Rpb24oZSx0LG4scil7aWYodGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3IgZG9jdW1lbnQgY2hhbmdlcy4iKTt2YXIgaSxhO2lmKENuLmlzKG4pfHx4bi5pcyhuKT9pPW46cj1uLG49dm9pZCAwPT09aT9Nbi5jcmVhdGUoZSx0LHIpOihhPXhuLmlzKGkpP2k6dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKGkpLE1uLmNyZWF0ZShlLHQscixhKSksdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMucHVzaChuKSx2b2lkIDAhPT1hKXJldHVybiBhfSxtci5wcm90b3R5cGUuZGVsZXRlRmlsZT1mdW5jdGlvbihlLHQsbil7aWYodGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3IgZG9jdW1lbnQgY2hhbmdlcy4iKTt2YXIgcixpO2lmKENuLmlzKHQpfHx4bi5pcyh0KT9yPXQ6bj10LHQ9dm9pZCAwPT09cj9Sbi5jcmVhdGUoZSxuKTooaT14bi5pcyhyKT9yOnRoaXMuX2NoYW5nZUFubm90YXRpb25zLm1hbmFnZShyKSxSbi5jcmVhdGUoZSxuLGkpKSx0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5wdXNoKHQpLHZvaWQgMCE9PWkpcmV0dXJuIGl9LChlPUZuPUZufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3VyaTplLHZlcnNpb246dH19LGUuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8uZGVmaW5lZChlKSYmby5zdHJpbmcoZS51cmkpJiYobnVsbD09PWUudmVyc2lvbnx8by5pbnRlZ2VyKGUudmVyc2lvbikpfSwoQm49Vm49Vm58fHt9KS5QbGFpblRleHQ9InBsYWludGV4dCIsQm4uTWFya2Rvd249Im1hcmtkb3duIiwoS249Vm49Vm58fHt9KS5pcz1mdW5jdGlvbihlKXtyZXR1cm4gZT09PUtuLlBsYWluVGV4dHx8ZT09PUtuLk1hcmtkb3dufSwoam58fChqbj17fSkpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIG8ub2JqZWN0TGl0ZXJhbChlKSYmVm4uaXModC5raW5kKSYmby5zdHJpbmcodC52YWx1ZSl9LCgkbj1Hbj1Hbnx8e30pLlRleHQ9MSwkbi5NZXRob2Q9Miwkbi5GdW5jdGlvbj0zLCRuLkNvbnN0cnVjdG9yPTQsJG4uRmllbGQ9NSwkbi5WYXJpYWJsZT02LCRuLkNsYXNzPTcsJG4uSW50ZXJmYWNlPTgsJG4uTW9kdWxlPTksJG4uUHJvcGVydHk9MTAsJG4uVW5pdD0xMSwkbi5WYWx1ZT0xMiwkbi5FbnVtPTEzLCRuLktleXdvcmQ9MTQsJG4uU25pcHBldD0xNSwkbi5Db2xvcj0xNiwkbi5GaWxlPTE3LCRuLlJlZmVyZW5jZT0xOCwkbi5Gb2xkZXI9MTksJG4uRW51bU1lbWJlcj0yMCwkbi5Db25zdGFudD0yMSwkbi5TdHJ1Y3Q9MjIsJG4uRXZlbnQ9MjMsJG4uT3BlcmF0b3I9MjQsJG4uVHlwZVBhcmFtZXRlcj0yNSwoWG49Sm49Sm58fHt9KS5QbGFpblRleHQ9MSxYbi5TbmlwcGV0PTIsKFlufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybntsYWJlbDplfX0sKFFufHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2l0ZW1zOmV8fFtdLGlzSW5jb21wbGV0ZTohIXR9fSwoZXI9Wm49Wm58fHt9KS5mcm9tUGxhaW5UZXh0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1tcXGAqX3t9W1xdKCkjK1wtLiFdL2csIlxcJCYiKX0sZXIuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8uc3RyaW5nKGUpfHxvLm9iamVjdExpdGVyYWwoZSkmJm8uc3RyaW5nKGUubGFuZ3VhZ2UpJiZvLnN0cmluZyhlLnZhbHVlKX0sKHRyfHx7fSkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4hIXQmJm8ub2JqZWN0TGl0ZXJhbCh0KSYmKGpuLmlzKHQuY29udGVudHMpfHxabi5pcyh0LmNvbnRlbnRzKXx8by50eXBlZEFycmF5KHQuY29udGVudHMsWm4uaXMpKSYmKHZvaWQgMD09PWUucmFuZ2V8fHZuLmlzKGUucmFuZ2UpKX0sKG5yfHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/e2xhYmVsOmUsZG9jdW1lbnRhdGlvbjp0fTp7bGFiZWw6ZX19LChycnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1bXSxyPTI7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyluW3ItMl09YXJndW1lbnRzW3JdO3JldHVybiBlPXtsYWJlbDplfSxvLmRlZmluZWQodCkmJihlLmRvY3VtZW50YXRpb249dCksby5kZWZpbmVkKG4pP2UucGFyYW1ldGVycz1uOmUucGFyYW1ldGVycz1bXSxlfSwoYXI9aXI9aXJ8fHt9KS5UZXh0PTEsYXIuUmVhZD0yLGFyLldyaXRlPTMsKG9yfHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9e3JhbmdlOmV9LG8ubnVtYmVyKHQpJiYoZS5raW5kPXQpLGV9LChscj1zcj1zcnx8e30pLkZpbGU9MSxsci5Nb2R1bGU9Mixsci5OYW1lc3BhY2U9Myxsci5QYWNrYWdlPTQsbHIuQ2xhc3M9NSxsci5NZXRob2Q9Nixsci5Qcm9wZXJ0eT03LGxyLkZpZWxkPTgsbHIuQ29uc3RydWN0b3I9OSxsci5FbnVtPTEwLGxyLkludGVyZmFjZT0xMSxsci5GdW5jdGlvbj0xMixsci5WYXJpYWJsZT0xMyxsci5Db25zdGFudD0xNCxsci5TdHJpbmc9MTUsbHIuTnVtYmVyPTE2LGxyLkJvb2xlYW49MTcsbHIuQXJyYXk9MTgsbHIuT2JqZWN0PTE5LGxyLktleT0yMCxsci5OdWxsPTIxLGxyLkVudW1NZW1iZXI9MjIsbHIuU3RydWN0PTIzLGxyLkV2ZW50PTI0LGxyLk9wZXJhdG9yPTI1LGxyLlR5cGVQYXJhbWV0ZXI9MjYsKGhyfHx7fSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIGU9e25hbWU6ZSxraW5kOnQsbG9jYXRpb246e3VyaTpyLHJhbmdlOm59fSxpJiYoZS5jb250YWluZXJOYW1lPWkpLGV9LChkcj1jcj1jcnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLHBhcmVudDp0fX0sZHIuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUmJnZuLmlzKGUucmFuZ2UpJiYodm9pZCAwPT09ZS5wYXJlbnR8fGRyLmlzKGUucGFyZW50KSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShici5wcm90b3R5cGUsInVyaSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl91cml9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGJyLnByb3RvdHlwZSwibGFuZ3VhZ2VJZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sYW5ndWFnZUlkfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShici5wcm90b3R5cGUsInZlcnNpb24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxici5wcm90b3R5cGUuZ2V0VGV4dD1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gZT8odD10aGlzLm9mZnNldEF0KGUuc3RhcnQpLGU9dGhpcy5vZmZzZXRBdChlLmVuZCksdGhpcy5fY29udGVudC5zdWJzdHJpbmcodCxlKSk6dGhpcy5fY29udGVudH0sYnIucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHQpe3RoaXMuX2NvbnRlbnQ9ZS50ZXh0LHRoaXMuX3ZlcnNpb249dCx0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9LGJyLnByb3RvdHlwZS5nZXRMaW5lT2Zmc2V0cz1mdW5jdGlvbigpe2lmKHZvaWQgMD09PXRoaXMuX2xpbmVPZmZzZXRzKXtmb3IodmFyIGU9W10sdD10aGlzLl9jb250ZW50LG49ITAscj0wO3I8dC5sZW5ndGg7cisrKXtuJiYoZS5wdXNoKHIpLG49ITEpO3ZhciBpPXQuY2hhckF0KHIpLG49IlxyIj09PWl8fCJcbiI9PT1pOyJcciI9PT1pJiZyKzE8dC5sZW5ndGgmJiJcbiI9PT10LmNoYXJBdChyKzEpJiZyKyt9biYmMDx0Lmxlbmd0aCYmZS5wdXNoKHQubGVuZ3RoKSx0aGlzLl9saW5lT2Zmc2V0cz1lfXJldHVybiB0aGlzLl9saW5lT2Zmc2V0c30sYnIucHJvdG90eXBlLnBvc2l0aW9uQXQ9ZnVuY3Rpb24oZSl7ZT1NYXRoLm1heChNYXRoLm1pbihlLHRoaXMuX2NvbnRlbnQubGVuZ3RoKSwwKTt2YXIgdD10aGlzLmdldExpbmVPZmZzZXRzKCksbj0wLHI9dC5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIHduLmNyZWF0ZSgwLGUpO2Zvcig7bjxyOyl7dmFyIGk9TWF0aC5mbG9vcigobityKS8yKTt0W2ldPmU/cj1pOm49aSsxfXZhciBhPW4tMTtyZXR1cm4gd24uY3JlYXRlKGEsZS10W2FdKX0sYnIucHJvdG90eXBlLm9mZnNldEF0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0TGluZU9mZnNldHMoKTtpZihlLmxpbmU+PXQubGVuZ3RoKXJldHVybiB0aGlzLl9jb250ZW50Lmxlbmd0aDtpZihlLmxpbmU8MClyZXR1cm4gMDt2YXIgbj10W2UubGluZV0sdD1lLmxpbmUrMTx0Lmxlbmd0aD90W2UubGluZSsxXTp0aGlzLl9jb250ZW50Lmxlbmd0aDtyZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4obitlLmNoYXJhY3Rlcix0KSxuKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGJyLnByb3RvdHlwZSwibGluZUNvdW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TGluZU9mZnNldHMoKS5sZW5ndGh9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSk7dmFyIG8sZnIsZ3I7ZnVuY3Rpb24gYnIoZSx0LG4scil7dGhpcy5fdXJpPWUsdGhpcy5fbGFuZ3VhZ2VJZD10LHRoaXMuX3ZlcnNpb249bix0aGlzLl9jb250ZW50PXIsdGhpcy5fbGluZU9mZnNldHM9dm9pZCAwfWZyPW89b3x8e30sZ3I9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxmci5kZWZpbmVkPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lfSxmci51bmRlZmluZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWV9LGZyLmJvb2xlYW49ZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lfHwhMT09PWV9LGZyLnN0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PWdyLmNhbGwoZSl9LGZyLm51bWJlcj1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PWdyLmNhbGwoZSl9LGZyLm51bWJlclJhbmdlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PWdyLmNhbGwoZSkmJnQ8PWUmJmU8PW59LGZyLmludGVnZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1nci5jYWxsKGUpJiYtMjE0NzQ4MzY0ODw9ZSYmZTw9MjE0NzQ4MzY0N30sZnIudWludGVnZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1nci5jYWxsKGUpJiYwPD1lJiZlPD0yMTQ3NDgzNjQ3fSxmci5mdW5jPWZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1nci5jYWxsKGUpfSxmci5vYmplY3RMaXRlcmFsPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfSxmci50eXBlZEFycmF5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkodCl9O3ZhciBfcix3cixNLG4sUixyLHZyLGEseXI9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy5fdXJpPWUsdGhpcy5fbGFuZ3VhZ2VJZD10LHRoaXMuX3ZlcnNpb249bix0aGlzLl9jb250ZW50PXIsdGhpcy5fbGluZU9mZnNldHM9dm9pZCAwfWdldCB1cmkoKXtyZXR1cm4gdGhpcy5fdXJpfWdldCBsYW5ndWFnZUlkKCl7cmV0dXJuIHRoaXMuX2xhbmd1YWdlSWR9Z2V0IHZlcnNpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbn1nZXRUZXh0KGUpe3ZhciB0O3JldHVybiBlPyh0PXRoaXMub2Zmc2V0QXQoZS5zdGFydCksZT10aGlzLm9mZnNldEF0KGUuZW5kKSx0aGlzLl9jb250ZW50LnN1YnN0cmluZyh0LGUpKTp0aGlzLl9jb250ZW50fXVwZGF0ZShlLHQpe2Zvcih2YXIgciBvZiBlKWlmKHlyLmlzSW5jcmVtZW50YWwocikpe3ZhciBpPWtyKHIucmFuZ2UpLGE9dGhpcy5vZmZzZXRBdChpLnN0YXJ0KSxvPXRoaXMub2Zmc2V0QXQoaS5lbmQpLHM9KHRoaXMuX2NvbnRlbnQ9dGhpcy5fY29udGVudC5zdWJzdHJpbmcoMCxhKStyLnRleHQrdGhpcy5fY29udGVudC5zdWJzdHJpbmcobyx0aGlzLl9jb250ZW50Lmxlbmd0aCksTWF0aC5tYXgoaS5zdGFydC5saW5lLDApKSxpPU1hdGgubWF4KGkuZW5kLmxpbmUsMCk7bGV0IG49dGhpcy5fbGluZU9mZnNldHM7dmFyIGw9VHIoci50ZXh0LCExLGEpO2lmKGktcz09PWwubGVuZ3RoKWZvcihsZXQgZT0wLHQ9bC5sZW5ndGg7ZTx0O2UrKyluW2UrcysxXT1sW2VdO2Vsc2UgbC5sZW5ndGg8MWU0P24uc3BsaWNlKHMrMSxpLXMsLi4ubCk6dGhpcy5fbGluZU9mZnNldHM9bj1uLnNsaWNlKDAscysxKS5jb25jYXQobCxuLnNsaWNlKGkrMSkpO3ZhciBoPXIudGV4dC5sZW5ndGgtKG8tYSk7aWYoMCE9aClmb3IobGV0IGU9cysxK2wubGVuZ3RoLHQ9bi5sZW5ndGg7ZTx0O2UrKyluW2VdPW5bZV0raH1lbHNle2lmKCF5ci5pc0Z1bGwocikpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGNoYW5nZSBldmVudCByZWNlaXZlZCIpO3RoaXMuX2NvbnRlbnQ9ci50ZXh0LHRoaXMuX2xpbmVPZmZzZXRzPXZvaWQgMH10aGlzLl92ZXJzaW9uPXR9Z2V0TGluZU9mZnNldHMoKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5fbGluZU9mZnNldHMmJih0aGlzLl9saW5lT2Zmc2V0cz1Ucih0aGlzLl9jb250ZW50LCEwKSksdGhpcy5fbGluZU9mZnNldHN9cG9zaXRpb25BdChlKXtlPU1hdGgubWF4KE1hdGgubWluKGUsdGhpcy5fY29udGVudC5sZW5ndGgpLDApO3ZhciB0PXRoaXMuZ2V0TGluZU9mZnNldHMoKTtsZXQgbj0wLHI9dC5sZW5ndGg7aWYoMD09PXIpcmV0dXJue2xpbmU6MCxjaGFyYWN0ZXI6ZX07Zm9yKDtuPHI7KXt2YXIgaT1NYXRoLmZsb29yKChuK3IpLzIpO3RbaV0+ZT9yPWk6bj1pKzF9dmFyIGE9bi0xO3JldHVybntsaW5lOmEsY2hhcmFjdGVyOmUtdFthXX19b2Zmc2V0QXQoZSl7dmFyIHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpO2lmKGUubGluZT49dC5sZW5ndGgpcmV0dXJuIHRoaXMuX2NvbnRlbnQubGVuZ3RoO2lmKGUubGluZTwwKXJldHVybiAwO3ZhciBuPXRbZS5saW5lXSx0PWUubGluZSsxPHQubGVuZ3RoP3RbZS5saW5lKzFdOnRoaXMuX2NvbnRlbnQubGVuZ3RoO3JldHVybiBNYXRoLm1heChNYXRoLm1pbihuK2UuY2hhcmFjdGVyLHQpLG4pfWdldCBsaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5nZXRMaW5lT2Zmc2V0cygpLmxlbmd0aH1zdGF0aWMgaXNJbmNyZW1lbnRhbChlKXtyZXR1cm4gbnVsbCE9ZSYmInN0cmluZyI9PXR5cGVvZiBlLnRleHQmJnZvaWQgMCE9PWUucmFuZ2UmJih2b2lkIDA9PT1lLnJhbmdlTGVuZ3RofHwibnVtYmVyIj09dHlwZW9mIGUucmFuZ2VMZW5ndGgpfXN0YXRpYyBpc0Z1bGwoZSl7cmV0dXJuIG51bGwhPWUmJiJzdHJpbmciPT10eXBlb2YgZS50ZXh0JiZ2b2lkIDA9PT1lLnJhbmdlJiZ2b2lkIDA9PT1lLnJhbmdlTGVuZ3RofX07ZnVuY3Rpb24gVHIodCxlLG49MCl7Y29uc3Qgcj1lP1tuXTpbXTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIGk9dC5jaGFyQ29kZUF0KGUpOzEzIT09aSYmMTAhPT1pfHwoMTM9PT1pJiZlKzE8dC5sZW5ndGgmJjEwPT09dC5jaGFyQ29kZUF0KGUrMSkmJmUrKyxyLnB1c2gobitlKzEpKX1yZXR1cm4gcn1mdW5jdGlvbiBrcihlKXt2YXIgdD1lLnN0YXJ0LG49ZS5lbmQ7cmV0dXJuIHQubGluZT5uLmxpbmV8fHQubGluZT09PW4ubGluZSYmdC5jaGFyYWN0ZXI+bi5jaGFyYWN0ZXI/e3N0YXJ0Om4sZW5kOnR9OmV9ZnVuY3Rpb24gU3IoZSl7dmFyIHQ9a3IoZS5yYW5nZSk7cmV0dXJuIHQhPT1lLnJhbmdlP3tuZXdUZXh0OmUubmV3VGV4dCxyYW5nZTp0fTplfSh3cj1fcj1fcnx8e30pLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbmV3IHlyKGUsdCxuLHIpfSx3ci51cGRhdGU9ZnVuY3Rpb24oZSx0LG4pe2lmKGUgaW5zdGFuY2VvZiB5cilyZXR1cm4gZS51cGRhdGUodCxuKSxlO3Rocm93IG5ldyBFcnJvcigiVGV4dERvY3VtZW50LnVwZGF0ZTogZG9jdW1lbnQgbXVzdCBiZSBjcmVhdGVkIGJ5IFRleHREb2N1bWVudC5jcmVhdGUiKX0sd3IuYXBwbHlFZGl0cz1mdW5jdGlvbihlLHQpe2xldCBuPWUuZ2V0VGV4dCgpLHI9MDtjb25zdCBpPVtdO2Zvcihjb25zdCBvIG9mIGZ1bmN0aW9uIGUodCxuKXtpZih0Lmxlbmd0aDw9MSlyZXR1cm4gdDtjb25zdCByPXQubGVuZ3RoLzJ8MDtjb25zdCBpPXQuc2xpY2UoMCxyKTtjb25zdCBhPXQuc2xpY2Uocik7ZShpLG4pO2UoYSxuKTtsZXQgbz0wO2xldCBzPTA7bGV0IGw9MDtmb3IoO288aS5sZW5ndGgmJnM8YS5sZW5ndGg7KXtsZXQgZT1uKGlbb10sYVtzXSk7ZTw9MD90W2wrK109aVtvKytdOnRbbCsrXT1hW3MrK119Zm9yKDtvPGkubGVuZ3RoOyl0W2wrK109aVtvKytdO2Zvcig7czxhLmxlbmd0aDspdFtsKytdPWFbcysrXTtyZXR1cm4gdH0odC5tYXAoU3IpLChlLHQpPT57dmFyIG49ZS5yYW5nZS5zdGFydC5saW5lLXQucmFuZ2Uuc3RhcnQubGluZTtyZXR1cm4gMD09bj9lLnJhbmdlLnN0YXJ0LmNoYXJhY3Rlci10LnJhbmdlLnN0YXJ0LmNoYXJhY3RlcjpufSkpe3ZhciBhPWUub2Zmc2V0QXQoby5yYW5nZS5zdGFydCk7aWYoYTxyKXRocm93IG5ldyBFcnJvcigiT3ZlcmxhcHBpbmcgZWRpdCIpO2E+ciYmaS5wdXNoKG4uc3Vic3RyaW5nKHIsYSkpLG8ubmV3VGV4dC5sZW5ndGgmJmkucHVzaChvLm5ld1RleHQpLHI9ZS5vZmZzZXRBdChvLnJhbmdlLmVuZCl9cmV0dXJuIGkucHVzaChuLnN1YnN0cihyKSksaS5qb2luKCIiKX0sKG49TT1NfHx7fSlbbi5TdGFydENvbW1lbnRUYWc9MF09IlN0YXJ0Q29tbWVudFRhZyIsbltuLkNvbW1lbnQ9MV09IkNvbW1lbnQiLG5bbi5FbmRDb21tZW50VGFnPTJdPSJFbmRDb21tZW50VGFnIixuW24uU3RhcnRUYWdPcGVuPTNdPSJTdGFydFRhZ09wZW4iLG5bbi5TdGFydFRhZ0Nsb3NlPTRdPSJTdGFydFRhZ0Nsb3NlIixuW24uU3RhcnRUYWdTZWxmQ2xvc2U9NV09IlN0YXJ0VGFnU2VsZkNsb3NlIixuW24uU3RhcnRUYWc9Nl09IlN0YXJ0VGFnIixuW24uRW5kVGFnT3Blbj03XT0iRW5kVGFnT3BlbiIsbltuLkVuZFRhZ0Nsb3NlPThdPSJFbmRUYWdDbG9zZSIsbltuLkVuZFRhZz05XT0iRW5kVGFnIixuW24uRGVsaW1pdGVyQXNzaWduPTEwXT0iRGVsaW1pdGVyQXNzaWduIixuW24uQXR0cmlidXRlTmFtZT0xMV09IkF0dHJpYnV0ZU5hbWUiLG5bbi5BdHRyaWJ1dGVWYWx1ZT0xMl09IkF0dHJpYnV0ZVZhbHVlIixuW24uU3RhcnREb2N0eXBlVGFnPTEzXT0iU3RhcnREb2N0eXBlVGFnIixuW24uRG9jdHlwZT0xNF09IkRvY3R5cGUiLG5bbi5FbmREb2N0eXBlVGFnPTE1XT0iRW5kRG9jdHlwZVRhZyIsbltuLkNvbnRlbnQ9MTZdPSJDb250ZW50IixuW24uV2hpdGVzcGFjZT0xN109IldoaXRlc3BhY2UiLG5bbi5Vbmtub3duPTE4XT0iVW5rbm93biIsbltuLlNjcmlwdD0xOV09IlNjcmlwdCIsbltuLlN0eWxlcz0yMF09IlN0eWxlcyIsbltuLkVPUz0yMV09IkVPUyIsKHI9Uj1SfHx7fSlbci5XaXRoaW5Db250ZW50PTBdPSJXaXRoaW5Db250ZW50IixyW3IuQWZ0ZXJPcGVuaW5nU3RhcnRUYWc9MV09IkFmdGVyT3BlbmluZ1N0YXJ0VGFnIixyW3IuQWZ0ZXJPcGVuaW5nRW5kVGFnPTJdPSJBZnRlck9wZW5pbmdFbmRUYWciLHJbci5XaXRoaW5Eb2N0eXBlPTNdPSJXaXRoaW5Eb2N0eXBlIixyW3IuV2l0aGluVGFnPTRdPSJXaXRoaW5UYWciLHJbci5XaXRoaW5FbmRUYWc9NV09IldpdGhpbkVuZFRhZyIscltyLldpdGhpbkNvbW1lbnQ9Nl09IldpdGhpbkNvbW1lbnQiLHJbci5XaXRoaW5TY3JpcHRDb250ZW50PTddPSJXaXRoaW5TY3JpcHRDb250ZW50IixyW3IuV2l0aGluU3R5bGVDb250ZW50PThdPSJXaXRoaW5TdHlsZUNvbnRlbnQiLHJbci5BZnRlckF0dHJpYnV0ZU5hbWU9OV09IkFmdGVyQXR0cmlidXRlTmFtZSIscltyLkJlZm9yZUF0dHJpYnV0ZVZhbHVlPTEwXT0iQmVmb3JlQXR0cmlidXRlVmFsdWUiLFZuLk1hcmtkb3duLFZuLlBsYWluVGV4dCxWbi5NYXJrZG93bixWbi5QbGFpblRleHQsKGE9dnI9dnJ8fHt9KVthLlVua25vd249MF09IlVua25vd24iLGFbYS5GaWxlPTFdPSJGaWxlIixhW2EuRGlyZWN0b3J5PTJdPSJEaXJlY3RvcnkiLGFbYS5TeW1ib2xpY0xpbms9NjRdPSJTeW1ib2xpY0xpbmsiO3ZhciBDcj1Qbix4cj0oTHIucHJvdG90eXBlLmVvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbjw9dGhpcy5wb3NpdGlvbn0sTHIucHJvdG90eXBlLmdldFNvdXJjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNvdXJjZX0sTHIucHJvdG90eXBlLnBvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9ufSxMci5wcm90b3R5cGUuZ29CYWNrVG89ZnVuY3Rpb24oZSl7dGhpcy5wb3NpdGlvbj1lfSxMci5wcm90b3R5cGUuZ29CYWNrPWZ1bmN0aW9uKGUpe3RoaXMucG9zaXRpb24tPWV9LExyLnByb3RvdHlwZS5hZHZhbmNlPWZ1bmN0aW9uKGUpe3RoaXMucG9zaXRpb24rPWV9LExyLnByb3RvdHlwZS5nb1RvRW5kPWZ1bmN0aW9uKCl7dGhpcy5wb3NpdGlvbj10aGlzLnNvdXJjZS5sZW5ndGh9LExyLnByb3RvdHlwZS5uZXh0Q2hhcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24rKyl8fDB9LExyLnByb3RvdHlwZS5wZWVrQ2hhcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKyhlPXZvaWQgMD09PWU/MDplKSl8fDB9LExyLnByb3RvdHlwZS5hZHZhbmNlSWZDaGFyPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKSYmKHRoaXMucG9zaXRpb24rKywhMCl9LExyLnByb3RvdHlwZS5hZHZhbmNlSWZDaGFycz1mdW5jdGlvbihlKXt2YXIgdDtpZih0aGlzLnBvc2l0aW9uK2UubGVuZ3RoPnRoaXMuc291cmNlLmxlbmd0aClyZXR1cm4hMTtmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbit0KSE9PWVbdF0pcmV0dXJuITE7cmV0dXJuIHRoaXMuYWR2YW5jZSh0KSwhMH0sTHIucHJvdG90eXBlLmFkdmFuY2VJZlJlZ0V4cD1mdW5jdGlvbihlKXtlPXRoaXMuc291cmNlLnN1YnN0cih0aGlzLnBvc2l0aW9uKS5tYXRjaChlKTtyZXR1cm4gZT8odGhpcy5wb3NpdGlvbj10aGlzLnBvc2l0aW9uK2UuaW5kZXgrZVswXS5sZW5ndGgsZVswXSk6IiJ9LExyLnByb3RvdHlwZS5hZHZhbmNlVW50aWxSZWdFeHA9ZnVuY3Rpb24oZSl7ZT10aGlzLnNvdXJjZS5zdWJzdHIodGhpcy5wb3NpdGlvbikubWF0Y2goZSk7cmV0dXJuIGU/KHRoaXMucG9zaXRpb249dGhpcy5wb3NpdGlvbitlLmluZGV4LGVbMF0pOih0aGlzLmdvVG9FbmQoKSwiIil9LExyLnByb3RvdHlwZS5hZHZhbmNlVW50aWxDaGFyPWZ1bmN0aW9uKGUpe2Zvcig7dGhpcy5wb3NpdGlvbjx0aGlzLnNvdXJjZS5sZW5ndGg7KXtpZih0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24pPT09ZSlyZXR1cm4hMDt0aGlzLmFkdmFuY2UoMSl9cmV0dXJuITF9LExyLnByb3RvdHlwZS5hZHZhbmNlVW50aWxDaGFycz1mdW5jdGlvbihlKXtmb3IoO3RoaXMucG9zaXRpb24rZS5sZW5ndGg8PXRoaXMuc291cmNlLmxlbmd0aDspe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGgmJnRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbit0KT09PWVbdF07dCsrKTtpZih0PT09ZS5sZW5ndGgpcmV0dXJuITA7dGhpcy5hZHZhbmNlKDEpfXJldHVybiB0aGlzLmdvVG9FbmQoKSwhMX0sTHIucHJvdG90eXBlLnNraXBXaGl0ZXNwYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIDA8dGhpcy5hZHZhbmNlV2hpbGVDaGFyKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09UHJ8fGU9PT1Pcnx8ZT09PUhyfHxlPT09V3J8fGU9PT1Ecn0pfSxMci5wcm90b3R5cGUuYWR2YW5jZVdoaWxlQ2hhcj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5wb3NpdGlvbjt0aGlzLnBvc2l0aW9uPHRoaXMubGVuJiZlKHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbikpOyl0aGlzLnBvc2l0aW9uKys7cmV0dXJuIHRoaXMucG9zaXRpb24tdH0sTHIpO2Z1bmN0aW9uIExyKGUsdCl7dGhpcy5zb3VyY2U9ZSx0aGlzLmxlbj1lLmxlbmd0aCx0aGlzLnBvc2l0aW9uPXR9dmFyIEVyPSIhIi5jaGFyQ29kZUF0KDApLEFyPSItIi5jaGFyQ29kZUF0KDApLE1yPSI8Ii5jaGFyQ29kZUF0KDApLFJyPSI+Ii5jaGFyQ29kZUF0KDApLElyPSIvIi5jaGFyQ29kZUF0KDApLE5yPSI9Ii5jaGFyQ29kZUF0KDApLFVyPSciJy5jaGFyQ29kZUF0KDApLHpyPSInIi5jaGFyQ29kZUF0KDApLEhyPSJcbiIuY2hhckNvZGVBdCgwKSxEcj0iXHIiLmNoYXJDb2RlQXQoMCksV3I9IlxmIi5jaGFyQ29kZUF0KDApLFByPSIgIi5jaGFyQ29kZUF0KDApLE9yPSJcdCIuY2hhckNvZGVBdCgwKSxxcj17InRleHQveC1oYW5kbGViYXJzLXRlbXBsYXRlIjohMCwidGV4dC9odG1sIjohMH07ZnVuY3Rpb24gRnIodCxlLG4sbyl7dm9pZCAwPT09biYmKG49Ui5XaXRoaW5Db250ZW50KSx2b2lkIDA9PT1vJiYobz0hMSk7dmFyIGkscyxsLGgsYyxkPW5ldyB4cih0LGU9dm9pZCAwPT09ZT8wOmUpLHU9bixyPTAsYT1NLlVua25vd247ZnVuY3Rpb24gbSgpe3JldHVybiBkLmFkdmFuY2VJZlJlZ0V4cCgvXltfOlx3XVtfOlx3LS5cZF0qLykudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBmKCl7cmV0dXJuIGQuYWR2YW5jZUlmUmVnRXhwKC9eW15ccyInPjwvPVx4MDAtXHgwRlx4N0ZceDgwLVx4OUZdKi8pLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gcChlLHQsbil7cmV0dXJuIHI9ZSxpPW4sYT10fXJldHVybntzY2FuOmZ1bmN0aW9uKCl7dmFyIGU9ZC5wb3MoKSx0PXUsbj1mdW5jdGlvbiBlKCl7dmFyIHQ9ZC5wb3MoKTtpZihkLmVvcygpKXJldHVybiBwKHQsTS5FT1MpO3ZhciBuO3N3aXRjaCh1KXtjYXNlIFIuV2l0aGluQ29tbWVudDpyZXR1cm4gZC5hZHZhbmNlSWZDaGFycyhbQXIsQXIsUnJdKT8odT1SLldpdGhpbkNvbnRlbnQscCh0LE0uRW5kQ29tbWVudFRhZykpOihkLmFkdmFuY2VVbnRpbENoYXJzKFtBcixBcixScl0pLHAodCxNLkNvbW1lbnQpKTtjYXNlIFIuV2l0aGluRG9jdHlwZTpyZXR1cm4gZC5hZHZhbmNlSWZDaGFyKFJyKT8odT1SLldpdGhpbkNvbnRlbnQscCh0LE0uRW5kRG9jdHlwZVRhZykpOihkLmFkdmFuY2VVbnRpbENoYXIoUnIpLHAodCxNLkRvY3R5cGUpKTtjYXNlIFIuV2l0aGluQ29udGVudDppZihkLmFkdmFuY2VJZkNoYXIoTXIpKXtpZighZC5lb3MoKSYmZC5wZWVrQ2hhcigpPT09RXIpe2lmKGQuYWR2YW5jZUlmQ2hhcnMoW0VyLEFyLEFyXSkpcmV0dXJuIHU9Ui5XaXRoaW5Db21tZW50LHAodCxNLlN0YXJ0Q29tbWVudFRhZyk7aWYoZC5hZHZhbmNlSWZSZWdFeHAoL14hZG9jdHlwZS9pKSlyZXR1cm4gdT1SLldpdGhpbkRvY3R5cGUscCh0LE0uU3RhcnREb2N0eXBlVGFnKX1yZXR1cm4gZC5hZHZhbmNlSWZDaGFyKElyKT8odT1SLkFmdGVyT3BlbmluZ0VuZFRhZyxwKHQsTS5FbmRUYWdPcGVuKSk6KHU9Ui5BZnRlck9wZW5pbmdTdGFydFRhZyxwKHQsTS5TdGFydFRhZ09wZW4pKX1yZXR1cm4gZC5hZHZhbmNlVW50aWxDaGFyKE1yKSxwKHQsTS5Db250ZW50KTtjYXNlIFIuQWZ0ZXJPcGVuaW5nRW5kVGFnOnZhciByPW0oKTtyZXR1cm4gMDxyLmxlbmd0aD8odT1SLldpdGhpbkVuZFRhZyxwKHQsTS5FbmRUYWcpKTpkLnNraXBXaGl0ZXNwYWNlKCk/cCh0LE0uV2hpdGVzcGFjZSxDcigiZXJyb3IudW5leHBlY3RlZFdoaXRlc3BhY2UiLCJUYWcgbmFtZSBtdXN0IGRpcmVjdGx5IGZvbGxvdyB0aGUgb3BlbiBicmFja2V0LiIpKToodT1SLldpdGhpbkVuZFRhZyxkLmFkdmFuY2VVbnRpbENoYXIoUnIpLHQ8ZC5wb3MoKT9wKHQsTS5Vbmtub3duLENyKCJlcnJvci5lbmRUYWdOYW1lRXhwZWN0ZWQiLCJFbmQgdGFnIG5hbWUgZXhwZWN0ZWQuIikpOmUoKSk7Y2FzZSBSLldpdGhpbkVuZFRhZzppZihkLnNraXBXaGl0ZXNwYWNlKCkpcmV0dXJuIHAodCxNLldoaXRlc3BhY2UpO2lmKGQuYWR2YW5jZUlmQ2hhcihScikpcmV0dXJuIHU9Ui5XaXRoaW5Db250ZW50LHAodCxNLkVuZFRhZ0Nsb3NlKTtpZihvJiZkLnBlZWtDaGFyKCk9PT1NcilyZXR1cm4gdT1SLldpdGhpbkNvbnRlbnQscCh0LE0uRW5kVGFnQ2xvc2UsQ3IoImVycm9yLmNsb3NpbmdCcmFja2V0TWlzc2luZyIsIkNsb3NpbmcgYnJhY2tldCBtaXNzaW5nLiIpKTtuPUNyKCJlcnJvci5jbG9zaW5nQnJhY2tldEV4cGVjdGVkIiwiQ2xvc2luZyBicmFja2V0IGV4cGVjdGVkLiIpO2JyZWFrO2Nhc2UgUi5BZnRlck9wZW5pbmdTdGFydFRhZzpyZXR1cm4obD1tKCksaD1jPXZvaWQgMCwwPGwubGVuZ3RoKT8ocz0hMSx1PVIuV2l0aGluVGFnLHAodCxNLlN0YXJ0VGFnKSk6ZC5za2lwV2hpdGVzcGFjZSgpP3AodCxNLldoaXRlc3BhY2UsQ3IoImVycm9yLnVuZXhwZWN0ZWRXaGl0ZXNwYWNlIiwiVGFnIG5hbWUgbXVzdCBkaXJlY3RseSBmb2xsb3cgdGhlIG9wZW4gYnJhY2tldC4iKSk6KHU9Ui5XaXRoaW5UYWcsZC5hZHZhbmNlVW50aWxDaGFyKFJyKSx0PGQucG9zKCk/cCh0LE0uVW5rbm93bixDcigiZXJyb3Iuc3RhcnRUYWdOYW1lRXhwZWN0ZWQiLCJTdGFydCB0YWcgbmFtZSBleHBlY3RlZC4iKSk6ZSgpKTtjYXNlIFIuV2l0aGluVGFnOnJldHVybiBkLnNraXBXaGl0ZXNwYWNlKCk/KHM9ITAscCh0LE0uV2hpdGVzcGFjZSkpOnMmJjA8KGg9ZigpKS5sZW5ndGg/KHU9Ui5BZnRlckF0dHJpYnV0ZU5hbWUscz0hMSxwKHQsTS5BdHRyaWJ1dGVOYW1lKSk6ZC5hZHZhbmNlSWZDaGFycyhbSXIsUnJdKT8odT1SLldpdGhpbkNvbnRlbnQscCh0LE0uU3RhcnRUYWdTZWxmQ2xvc2UpKTpkLmFkdmFuY2VJZkNoYXIoUnIpPyh1PSJzY3JpcHQiPT09bD9jJiZxcltjXT9SLldpdGhpbkNvbnRlbnQ6Ui5XaXRoaW5TY3JpcHRDb250ZW50OiJzdHlsZSI9PT1sP1IuV2l0aGluU3R5bGVDb250ZW50OlIuV2l0aGluQ29udGVudCxwKHQsTS5TdGFydFRhZ0Nsb3NlKSk6byYmZC5wZWVrQ2hhcigpPT09TXI/KHU9Ui5XaXRoaW5Db250ZW50LHAodCxNLlN0YXJ0VGFnQ2xvc2UsQ3IoImVycm9yLmNsb3NpbmdCcmFja2V0TWlzc2luZyIsIkNsb3NpbmcgYnJhY2tldCBtaXNzaW5nLiIpKSk6KGQuYWR2YW5jZSgxKSxwKHQsTS5Vbmtub3duLENyKCJlcnJvci51bmV4cGVjdGVkQ2hhcmFjdGVySW5UYWciLCJVbmV4cGVjdGVkIGNoYXJhY3RlciBpbiB0YWcuIikpKTtjYXNlIFIuQWZ0ZXJBdHRyaWJ1dGVOYW1lOnJldHVybiBkLnNraXBXaGl0ZXNwYWNlKCk/KHM9ITAscCh0LE0uV2hpdGVzcGFjZSkpOmQuYWR2YW5jZUlmQ2hhcihOcik/KHU9Ui5CZWZvcmVBdHRyaWJ1dGVWYWx1ZSxwKHQsTS5EZWxpbWl0ZXJBc3NpZ24pKToodT1SLldpdGhpblRhZyxlKCkpO2Nhc2UgUi5CZWZvcmVBdHRyaWJ1dGVWYWx1ZTppZihkLnNraXBXaGl0ZXNwYWNlKCkpcmV0dXJuIHAodCxNLldoaXRlc3BhY2UpO3I9ZC5hZHZhbmNlSWZSZWdFeHAoL15bXlxzIidgPTw+XSsvKTtpZigwPHIubGVuZ3RoKXJldHVybiBkLnBlZWtDaGFyKCk9PT1SciYmZC5wZWVrQ2hhcigtMSk9PT1JciYmKGQuZ29CYWNrKDEpLHI9ci5zdWJzdHIoMCxyLmxlbmd0aC0xKSksInR5cGUiPT09aCYmKGM9ciksdT1SLldpdGhpblRhZyxzPSExLHAodCxNLkF0dHJpYnV0ZVZhbHVlKTtyPWQucGVla0NoYXIoKTtyZXR1cm4gcj09PXpyfHxyPT09VXI/KGQuYWR2YW5jZSgxKSxkLmFkdmFuY2VVbnRpbENoYXIocikmJmQuYWR2YW5jZSgxKSwidHlwZSI9PT1oJiYoYz1kLmdldFNvdXJjZSgpLnN1YnN0cmluZyh0KzEsZC5wb3MoKS0xKSksdT1SLldpdGhpblRhZyxzPSExLHAodCxNLkF0dHJpYnV0ZVZhbHVlKSk6KHU9Ui5XaXRoaW5UYWcscz0hMSxlKCkpO2Nhc2UgUi5XaXRoaW5TY3JpcHRDb250ZW50OmZvcih2YXIgaT0xOyFkLmVvcygpOyl7dmFyIGE9ZC5hZHZhbmNlSWZSZWdFeHAoLzwhLS18LS0+fDxcLz9zY3JpcHRccypcLz8+Py9pKTtpZigwPT09YS5sZW5ndGgpcmV0dXJuIGQuZ29Ub0VuZCgpLHAodCxNLlNjcmlwdCk7aWYoIlx4M2MhLS0iPT09YSkxPT09aSYmKGk9Mik7ZWxzZSBpZigiLS1ceDNlIj09PWEpaT0xO2Vsc2UgaWYoIi8iIT09YVsxXSkyPT09aSYmKGk9Myk7ZWxzZXtpZigzIT09aSl7ZC5nb0JhY2soYS5sZW5ndGgpO2JyZWFrfWk9Mn19cmV0dXJuIHU9Ui5XaXRoaW5Db250ZW50LHQ8ZC5wb3MoKT9wKHQsTS5TY3JpcHQpOmUoKTtjYXNlIFIuV2l0aGluU3R5bGVDb250ZW50OnJldHVybiBkLmFkdmFuY2VVbnRpbFJlZ0V4cCgvPFwvc3R5bGUvaSksdT1SLldpdGhpbkNvbnRlbnQsdDxkLnBvcygpP3AodCxNLlN0eWxlcyk6ZSgpfWQuYWR2YW5jZSgxKTt1PVIuV2l0aGluQ29udGVudDtyZXR1cm4gcCh0LE0uVW5rbm93bixuKX0oKTtyZXR1cm4gbj09PU0uRU9TfHxlIT09ZC5wb3MoKXx8byYmKG49PT1NLlN0YXJ0VGFnQ2xvc2V8fG49PT1NLkVuZFRhZ0Nsb3NlKT9uOihjb25zb2xlLmxvZygiU2Nhbm5lci5zY2FuIGhhcyBub3QgYWR2YW5jZWQgYXQgb2Zmc2V0ICIrZSsiLCBzdGF0ZSBiZWZvcmU6ICIrdCsiIGFmdGVyOiAiK3UpLGQuYWR2YW5jZSgxKSxwKGUsTS5Vbmtub3duKSl9LGdldFRva2VuVHlwZTpmdW5jdGlvbigpe3JldHVybiBhfSxnZXRUb2tlbk9mZnNldDpmdW5jdGlvbigpe3JldHVybiByfSxnZXRUb2tlbkxlbmd0aDpmdW5jdGlvbigpe3JldHVybiBkLnBvcygpLXJ9LGdldFRva2VuRW5kOmZ1bmN0aW9uKCl7cmV0dXJuIGQucG9zKCl9LGdldFRva2VuVGV4dDpmdW5jdGlvbigpe3JldHVybiBkLmdldFNvdXJjZSgpLnN1YnN0cmluZyhyLGQucG9zKCkpfSxnZXRTY2FubmVyU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sZ2V0VG9rZW5FcnJvcjpmdW5jdGlvbigpe3JldHVybiBpfX19ZnVuY3Rpb24gVnIoZSx0KXt2YXIgbj0wLHI9ZS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIDA7Zm9yKDtuPHI7KXt2YXIgaT1NYXRoLmZsb29yKChuK3IpLzIpO3QoZVtpXSk/cj1pOm49aSsxfXJldHVybiBufXZhciBCcj1bImFyZWEiLCJiYXNlIiwiYnIiLCJjb2wiLCJlbWJlZCIsImhyIiwiaW1nIiwiaW5wdXQiLCJrZXlnZW4iLCJsaW5rIiwibWVudWl0ZW0iLCJtZXRhIiwicGFyYW0iLCJzb3VyY2UiLCJ0cmFjayIsIndiciJdO2Z1bmN0aW9uIEtyKGUpe3JldHVybiBlJiYwPD1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT1lLmxlbmd0aC0xO3I8PWk7KXt2YXIgYT0ocitpKS8yfDAsbz1uKGVbYV0sdCk7aWYobzwwKXI9MSthO2Vsc2V7aWYoISgwPG8pKXJldHVybiBhO2k9YS0xfX1yZXR1cm4tKHIrMSl9KEJyLGUudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlLHQpe3JldHVybiBlLmxvY2FsZUNvbXBhcmUodCl9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoR3IucHJvdG90eXBlLCJhdHRyaWJ1dGVOYW1lcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmF0dHJpYnV0ZXM/T2JqZWN0LmtleXModGhpcy5hdHRyaWJ1dGVzKTpbXX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxHci5wcm90b3R5cGUuaXNTYW1lVGFnPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT10aGlzLnRhZz92b2lkIDA9PT1lOnZvaWQgMCE9PWUmJnRoaXMudGFnLmxlbmd0aD09PWUubGVuZ3RoJiZ0aGlzLnRhZy50b0xvd2VyQ2FzZSgpPT09ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KEdyLnByb3RvdHlwZSwiZmlyc3RDaGlsZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkcmVuWzBdfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShHci5wcm90b3R5cGUsImxhc3RDaGlsZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoLTFdOnZvaWQgMH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxHci5wcm90b3R5cGUuZmluZE5vZGVCZWZvcmU9ZnVuY3Rpb24odCl7dmFyIGU9VnIodGhpcy5jaGlsZHJlbixmdW5jdGlvbihlKXtyZXR1cm4gdDw9ZS5zdGFydH0pLTE7aWYoMDw9ZSl7ZT10aGlzLmNoaWxkcmVuW2VdO2lmKHQ+ZS5zdGFydCl7aWYodDxlLmVuZClyZXR1cm4gZS5maW5kTm9kZUJlZm9yZSh0KTt2YXIgbj1lLmxhc3RDaGlsZDtyZXR1cm4gbiYmbi5lbmQ9PT1lLmVuZD9lLmZpbmROb2RlQmVmb3JlKHQpOmV9fXJldHVybiB0aGlzfSxHci5wcm90b3R5cGUuZmluZE5vZGVBdD1mdW5jdGlvbih0KXt2YXIgZT1Wcih0aGlzLmNoaWxkcmVuLGZ1bmN0aW9uKGUpe3JldHVybiB0PD1lLnN0YXJ0fSktMTtpZigwPD1lKXtlPXRoaXMuY2hpbGRyZW5bZV07aWYodD5lLnN0YXJ0JiZ0PD1lLmVuZClyZXR1cm4gZS5maW5kTm9kZUF0KHQpfXJldHVybiB0aGlzfTt2YXIganI9R3I7ZnVuY3Rpb24gR3IoZSx0LG4scil7dGhpcy5zdGFydD1lLHRoaXMuZW5kPXQsdGhpcy5jaGlsZHJlbj1uLHRoaXMucGFyZW50PXIsdGhpcy5jbG9zZWQ9ITF9ZnVuY3Rpb24gJHIoZSl7Zm9yKHZhciB0PUZyKGUsdm9pZCAwLHZvaWQgMCwhMCksbj1uZXcganIoMCxlLmxlbmd0aCxbXSx2b2lkIDApLHI9bixpPS0xLGE9dm9pZCAwLG89bnVsbCxzPXQuc2NhbigpO3MhPT1NLkVPUzspe3N3aXRjaChzKXtjYXNlIE0uU3RhcnRUYWdPcGVuOnZhciBjPW5ldyBqcih0LmdldFRva2VuT2Zmc2V0KCksZS5sZW5ndGgsW10scik7ci5jaGlsZHJlbi5wdXNoKGMpLHI9YzticmVhaztjYXNlIE0uU3RhcnRUYWc6ci50YWc9dC5nZXRUb2tlblRleHQoKTticmVhaztjYXNlIE0uU3RhcnRUYWdDbG9zZTpyLnBhcmVudCYmKHIuZW5kPXQuZ2V0VG9rZW5FbmQoKSx0LmdldFRva2VuTGVuZ3RoKCk/KHIuc3RhcnRUYWdFbmQ9dC5nZXRUb2tlbkVuZCgpLHIudGFnJiZLcihyLnRhZykmJihyLmNsb3NlZD0hMCxyPXIucGFyZW50KSk6cj1yLnBhcmVudCk7YnJlYWs7Y2FzZSBNLlN0YXJ0VGFnU2VsZkNsb3NlOnIucGFyZW50JiYoci5jbG9zZWQ9ITAsci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHIuc3RhcnRUYWdFbmQ9dC5nZXRUb2tlbkVuZCgpLHI9ci5wYXJlbnQpO2JyZWFrO2Nhc2UgTS5FbmRUYWdPcGVuOmk9dC5nZXRUb2tlbk9mZnNldCgpLGE9dm9pZCAwO2JyZWFrO2Nhc2UgTS5FbmRUYWc6YT10LmdldFRva2VuVGV4dCgpLnRvTG93ZXJDYXNlKCk7YnJlYWs7Y2FzZSBNLkVuZFRhZ0Nsb3NlOmZvcih2YXIgbD1yOyFsLmlzU2FtZVRhZyhhKSYmbC5wYXJlbnQ7KWw9bC5wYXJlbnQ7aWYobC5wYXJlbnQpe2Zvcig7ciE9PWw7KXIuZW5kPWksci5jbG9zZWQ9ITEscj1yLnBhcmVudDtyLmNsb3NlZD0hMCxyLmVuZFRhZ1N0YXJ0PWksci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHI9ci5wYXJlbnR9YnJlYWs7Y2FzZSBNLkF0dHJpYnV0ZU5hbWU6bz10LmdldFRva2VuVGV4dCgpOyhoPXIuYXR0cmlidXRlcyl8fChyLmF0dHJpYnV0ZXM9aD17fSksaFtvXT1udWxsO2JyZWFrO2Nhc2UgTS5BdHRyaWJ1dGVWYWx1ZTp2YXIgaCxjPXQuZ2V0VG9rZW5UZXh0KCk7KGg9ci5hdHRyaWJ1dGVzKSYmbyYmKGhbb109YyxvPW51bGwpfXM9dC5zY2FuKCl9Zm9yKDtyLnBhcmVudDspci5lbmQ9ZS5sZW5ndGgsci5jbG9zZWQ9ITEscj1yLnBhcmVudDtyZXR1cm57cm9vdHM6bi5jaGlsZHJlbixmaW5kTm9kZUJlZm9yZTpuLmZpbmROb2RlQmVmb3JlLmJpbmQobiksZmluZE5vZGVBdDpuLmZpbmROb2RlQXQuYmluZChuKX19dmFyIEpyPXsiQWFjdXRlOyI6IsOBIixBYWN1dGU6IsOBIiwiYWFjdXRlOyI6IsOhIixhYWN1dGU6IsOhIiwiQWJyZXZlOyI6IsSCIiwiYWJyZXZlOyI6IsSDIiwiYWM7Ijoi4oi+IiwiYWNkOyI6IuKIvyIsImFjRTsiOiLiiL7MsyIsIkFjaXJjOyI6IsOCIixBY2lyYzoiw4IiLCJhY2lyYzsiOiLDoiIsYWNpcmM6IsOiIiwiYWN1dGU7IjoiwrQiLGFjdXRlOiLCtCIsIkFjeTsiOiLQkCIsImFjeTsiOiLQsCIsIkFFbGlnOyI6IsOGIixBRWxpZzoiw4YiLCJhZWxpZzsiOiLDpiIsYWVsaWc6IsOmIiwiYWY7Ijoi4oGhIiwiQWZyOyI6IvCdlIQiLCJhZnI7Ijoi8J2UniIsIkFncmF2ZTsiOiLDgCIsQWdyYXZlOiLDgCIsImFncmF2ZTsiOiLDoCIsYWdyYXZlOiLDoCIsImFsZWZzeW07Ijoi4oS1IiwiYWxlcGg7Ijoi4oS1IiwiQWxwaGE7IjoizpEiLCJhbHBoYTsiOiLOsSIsIkFtYWNyOyI6IsSAIiwiYW1hY3I7IjoixIEiLCJhbWFsZzsiOiLiqL8iLCJBTVA7IjoiJiIsQU1QOiImIiwiYW1wOyI6IiYiLGFtcDoiJiIsIkFuZDsiOiLiqZMiLCJhbmQ7Ijoi4oinIiwiYW5kYW5kOyI6IuKplSIsImFuZGQ7Ijoi4qmcIiwiYW5kc2xvcGU7Ijoi4qmYIiwiYW5kdjsiOiLiqZoiLCJhbmc7Ijoi4oigIiwiYW5nZTsiOiLipqQiLCJhbmdsZTsiOiLiiKAiLCJhbmdtc2Q7Ijoi4oihIiwiYW5nbXNkYWE7Ijoi4qaoIiwiYW5nbXNkYWI7Ijoi4qapIiwiYW5nbXNkYWM7Ijoi4qaqIiwiYW5nbXNkYWQ7Ijoi4qarIiwiYW5nbXNkYWU7Ijoi4qasIiwiYW5nbXNkYWY7Ijoi4qatIiwiYW5nbXNkYWc7Ijoi4qauIiwiYW5nbXNkYWg7Ijoi4qavIiwiYW5ncnQ7Ijoi4oifIiwiYW5ncnR2YjsiOiLiir4iLCJhbmdydHZiZDsiOiLipp0iLCJhbmdzcGg7Ijoi4oiiIiwiYW5nc3Q7Ijoiw4UiLCJhbmd6YXJyOyI6IuKNvCIsIkFvZ29uOyI6IsSEIiwiYW9nb247IjoixIUiLCJBb3BmOyI6IvCdlLgiLCJhb3BmOyI6IvCdlZIiLCJhcDsiOiLiiYgiLCJhcGFjaXI7Ijoi4qmvIiwiYXBFOyI6IuKpsCIsImFwZTsiOiLiiYoiLCJhcGlkOyI6IuKJiyIsImFwb3M7IjoiJyIsIkFwcGx5RnVuY3Rpb247Ijoi4oGhIiwiYXBwcm94OyI6IuKJiCIsImFwcHJveGVxOyI6IuKJiiIsIkFyaW5nOyI6IsOFIixBcmluZzoiw4UiLCJhcmluZzsiOiLDpSIsYXJpbmc6IsOlIiwiQXNjcjsiOiLwnZKcIiwiYXNjcjsiOiLwnZK2IiwiQXNzaWduOyI6IuKJlCIsImFzdDsiOiIqIiwiYXN5bXA7Ijoi4omIIiwiYXN5bXBlcTsiOiLiiY0iLCJBdGlsZGU7Ijoiw4MiLEF0aWxkZToiw4MiLCJhdGlsZGU7Ijoiw6MiLGF0aWxkZToiw6MiLCJBdW1sOyI6IsOEIixBdW1sOiLDhCIsImF1bWw7Ijoiw6QiLGF1bWw6IsOkIiwiYXdjb25pbnQ7Ijoi4oizIiwiYXdpbnQ7Ijoi4qiRIiwiYmFja2Nvbmc7Ijoi4omMIiwiYmFja2Vwc2lsb247Ijoiz7YiLCJiYWNrcHJpbWU7Ijoi4oC1IiwiYmFja3NpbTsiOiLiiL0iLCJiYWNrc2ltZXE7Ijoi4ouNIiwiQmFja3NsYXNoOyI6IuKIliIsIkJhcnY7Ijoi4qunIiwiYmFydmVlOyI6IuKKvSIsIkJhcndlZDsiOiLijIYiLCJiYXJ3ZWQ7Ijoi4oyFIiwiYmFyd2VkZ2U7Ijoi4oyFIiwiYmJyazsiOiLijrUiLCJiYnJrdGJyazsiOiLijrYiLCJiY29uZzsiOiLiiYwiLCJCY3k7Ijoi0JEiLCJiY3k7Ijoi0LEiLCJiZHF1bzsiOiLigJ4iLCJiZWNhdXM7Ijoi4oi1IiwiQmVjYXVzZTsiOiLiiLUiLCJiZWNhdXNlOyI6IuKItSIsImJlbXB0eXY7Ijoi4qawIiwiYmVwc2k7Ijoiz7YiLCJiZXJub3U7Ijoi4oSsIiwiQmVybm91bGxpczsiOiLihKwiLCJCZXRhOyI6Is6SIiwiYmV0YTsiOiLOsiIsImJldGg7Ijoi4oS2IiwiYmV0d2VlbjsiOiLiiawiLCJCZnI7Ijoi8J2UhSIsImJmcjsiOiLwnZSfIiwiYmlnY2FwOyI6IuKLgiIsImJpZ2NpcmM7Ijoi4pevIiwiYmlnY3VwOyI6IuKLgyIsImJpZ29kb3Q7Ijoi4qiAIiwiYmlnb3BsdXM7Ijoi4qiBIiwiYmlnb3RpbWVzOyI6IuKogiIsImJpZ3NxY3VwOyI6IuKohiIsImJpZ3N0YXI7Ijoi4piFIiwiYmlndHJpYW5nbGVkb3duOyI6IuKWvSIsImJpZ3RyaWFuZ2xldXA7Ijoi4pazIiwiYmlndXBsdXM7Ijoi4qiEIiwiYmlndmVlOyI6IuKLgSIsImJpZ3dlZGdlOyI6IuKLgCIsImJrYXJvdzsiOiLipI0iLCJibGFja2xvemVuZ2U7Ijoi4qerIiwiYmxhY2tzcXVhcmU7Ijoi4paqIiwiYmxhY2t0cmlhbmdsZTsiOiLilrQiLCJibGFja3RyaWFuZ2xlZG93bjsiOiLilr4iLCJibGFja3RyaWFuZ2xlbGVmdDsiOiLil4IiLCJibGFja3RyaWFuZ2xlcmlnaHQ7Ijoi4pa4IiwiYmxhbms7Ijoi4pCjIiwiYmxrMTI7Ijoi4paSIiwiYmxrMTQ7Ijoi4paRIiwiYmxrMzQ7Ijoi4paTIiwiYmxvY2s7Ijoi4paIIiwiYm5lOyI6Ij3ig6UiLCJibmVxdWl2OyI6IuKJoeKDpSIsImJOb3Q7Ijoi4qutIiwiYm5vdDsiOiLijJAiLCJCb3BmOyI6IvCdlLkiLCJib3BmOyI6IvCdlZMiLCJib3Q7Ijoi4oqlIiwiYm90dG9tOyI6IuKKpSIsImJvd3RpZTsiOiLii4giLCJib3hib3g7Ijoi4qeJIiwiYm94REw7Ijoi4pWXIiwiYm94RGw7Ijoi4pWWIiwiYm94ZEw7Ijoi4pWVIiwiYm94ZGw7Ijoi4pSQIiwiYm94RFI7Ijoi4pWUIiwiYm94RHI7Ijoi4pWTIiwiYm94ZFI7Ijoi4pWSIiwiYm94ZHI7Ijoi4pSMIiwiYm94SDsiOiLilZAiLCJib3hoOyI6IuKUgCIsImJveEhEOyI6IuKVpiIsImJveEhkOyI6IuKVpCIsImJveGhEOyI6IuKVpSIsImJveGhkOyI6IuKUrCIsImJveEhVOyI6IuKVqSIsImJveEh1OyI6IuKVpyIsImJveGhVOyI6IuKVqCIsImJveGh1OyI6IuKUtCIsImJveG1pbnVzOyI6IuKKnyIsImJveHBsdXM7Ijoi4oqeIiwiYm94dGltZXM7Ijoi4oqgIiwiYm94VUw7Ijoi4pWdIiwiYm94VWw7Ijoi4pWcIiwiYm94dUw7Ijoi4pWbIiwiYm94dWw7Ijoi4pSYIiwiYm94VVI7Ijoi4pWaIiwiYm94VXI7Ijoi4pWZIiwiYm94dVI7Ijoi4pWYIiwiYm94dXI7Ijoi4pSUIiwiYm94VjsiOiLilZEiLCJib3h2OyI6IuKUgiIsImJveFZIOyI6IuKVrCIsImJveFZoOyI6IuKVqyIsImJveHZIOyI6IuKVqiIsImJveHZoOyI6IuKUvCIsImJveFZMOyI6IuKVoyIsImJveFZsOyI6IuKVoiIsImJveHZMOyI6IuKVoSIsImJveHZsOyI6IuKUpCIsImJveFZSOyI6IuKVoCIsImJveFZyOyI6IuKVnyIsImJveHZSOyI6IuKVniIsImJveHZyOyI6IuKUnCIsImJwcmltZTsiOiLigLUiLCJCcmV2ZTsiOiLLmCIsImJyZXZlOyI6IsuYIiwiYnJ2YmFyOyI6IsKmIixicnZiYXI6IsKmIiwiQnNjcjsiOiLihKwiLCJic2NyOyI6IvCdkrciLCJic2VtaTsiOiLigY8iLCJic2ltOyI6IuKIvSIsImJzaW1lOyI6IuKLjSIsImJzb2w7IjoiXFwiLCJic29sYjsiOiLip4UiLCJic29saHN1YjsiOiLin4giLCJidWxsOyI6IuKAoiIsImJ1bGxldDsiOiLigKIiLCJidW1wOyI6IuKJjiIsImJ1bXBFOyI6IuKqriIsImJ1bXBlOyI6IuKJjyIsIkJ1bXBlcTsiOiLiiY4iLCJidW1wZXE7Ijoi4omPIiwiQ2FjdXRlOyI6IsSGIiwiY2FjdXRlOyI6IsSHIiwiQ2FwOyI6IuKLkiIsImNhcDsiOiLiiKkiLCJjYXBhbmQ7Ijoi4qmEIiwiY2FwYnJjdXA7Ijoi4qmJIiwiY2FwY2FwOyI6IuKpiyIsImNhcGN1cDsiOiLiqYciLCJjYXBkb3Q7Ijoi4qmAIiwiQ2FwaXRhbERpZmZlcmVudGlhbEQ7Ijoi4oWFIiwiY2FwczsiOiLiiKnvuIAiLCJjYXJldDsiOiLigYEiLCJjYXJvbjsiOiLLhyIsIkNheWxleXM7Ijoi4oStIiwiY2NhcHM7Ijoi4qmNIiwiQ2Nhcm9uOyI6IsSMIiwiY2Nhcm9uOyI6IsSNIiwiQ2NlZGlsOyI6IsOHIixDY2VkaWw6IsOHIiwiY2NlZGlsOyI6IsOnIixjY2VkaWw6IsOnIiwiQ2NpcmM7IjoixIgiLCJjY2lyYzsiOiLEiSIsIkNjb25pbnQ7Ijoi4oiwIiwiY2N1cHM7Ijoi4qmMIiwiY2N1cHNzbTsiOiLiqZAiLCJDZG90OyI6IsSKIiwiY2RvdDsiOiLEiyIsImNlZGlsOyI6IsK4IixjZWRpbDoiwrgiLCJDZWRpbGxhOyI6IsK4IiwiY2VtcHR5djsiOiLiprIiLCJjZW50OyI6IsKiIixjZW50OiLCoiIsIkNlbnRlckRvdDsiOiLCtyIsImNlbnRlcmRvdDsiOiLCtyIsIkNmcjsiOiLihK0iLCJjZnI7Ijoi8J2UoCIsIkNIY3k7Ijoi0KciLCJjaGN5OyI6ItGHIiwiY2hlY2s7Ijoi4pyTIiwiY2hlY2ttYXJrOyI6IuKckyIsIkNoaTsiOiLOpyIsImNoaTsiOiLPhyIsImNpcjsiOiLil4siLCJjaXJjOyI6IsuGIiwiY2lyY2VxOyI6IuKJlyIsImNpcmNsZWFycm93bGVmdDsiOiLihroiLCJjaXJjbGVhcnJvd3JpZ2h0OyI6IuKGuyIsImNpcmNsZWRhc3Q7Ijoi4oqbIiwiY2lyY2xlZGNpcmM7Ijoi4oqaIiwiY2lyY2xlZGRhc2g7Ijoi4oqdIiwiQ2lyY2xlRG90OyI6IuKKmSIsImNpcmNsZWRSOyI6IsKuIiwiY2lyY2xlZFM7Ijoi4pOIIiwiQ2lyY2xlTWludXM7Ijoi4oqWIiwiQ2lyY2xlUGx1czsiOiLiipUiLCJDaXJjbGVUaW1lczsiOiLiipciLCJjaXJFOyI6IuKngyIsImNpcmU7Ijoi4omXIiwiY2lyZm5pbnQ7Ijoi4qiQIiwiY2lybWlkOyI6IuKrryIsImNpcnNjaXI7Ijoi4qeCIiwiQ2xvY2t3aXNlQ29udG91ckludGVncmFsOyI6IuKIsiIsIkNsb3NlQ3VybHlEb3VibGVRdW90ZTsiOiLigJ0iLCJDbG9zZUN1cmx5UXVvdGU7Ijoi4oCZIiwiY2x1YnM7Ijoi4pmjIiwiY2x1YnN1aXQ7Ijoi4pmjIiwiQ29sb247Ijoi4oi3IiwiY29sb247IjoiOiIsIkNvbG9uZTsiOiLiqbQiLCJjb2xvbmU7Ijoi4omUIiwiY29sb25lcTsiOiLiiZQiLCJjb21tYTsiOiIsIiwiY29tbWF0OyI6IkAiLCJjb21wOyI6IuKIgSIsImNvbXBmbjsiOiLiiJgiLCJjb21wbGVtZW50OyI6IuKIgSIsImNvbXBsZXhlczsiOiLihIIiLCJjb25nOyI6IuKJhSIsImNvbmdkb3Q7Ijoi4qmtIiwiQ29uZ3J1ZW50OyI6IuKJoSIsIkNvbmludDsiOiLiiK8iLCJjb25pbnQ7Ijoi4oiuIiwiQ29udG91ckludGVncmFsOyI6IuKIriIsIkNvcGY7Ijoi4oSCIiwiY29wZjsiOiLwnZWUIiwiY29wcm9kOyI6IuKIkCIsIkNvcHJvZHVjdDsiOiLiiJAiLCJDT1BZOyI6IsKpIixDT1BZOiLCqSIsImNvcHk7IjoiwqkiLGNvcHk6IsKpIiwiY29weXNyOyI6IuKElyIsIkNvdW50ZXJDbG9ja3dpc2VDb250b3VySW50ZWdyYWw7Ijoi4oizIiwiY3JhcnI7Ijoi4oa1IiwiQ3Jvc3M7Ijoi4qivIiwiY3Jvc3M7Ijoi4pyXIiwiQ3NjcjsiOiLwnZKeIiwiY3NjcjsiOiLwnZK4IiwiY3N1YjsiOiLiq48iLCJjc3ViZTsiOiLiq5EiLCJjc3VwOyI6IuKrkCIsImNzdXBlOyI6IuKrkiIsImN0ZG90OyI6IuKLryIsImN1ZGFycmw7Ijoi4qS4IiwiY3VkYXJycjsiOiLipLUiLCJjdWVwcjsiOiLii54iLCJjdWVzYzsiOiLii58iLCJjdWxhcnI7Ijoi4oa2IiwiY3VsYXJycDsiOiLipL0iLCJDdXA7Ijoi4ouTIiwiY3VwOyI6IuKIqiIsImN1cGJyY2FwOyI6IuKpiCIsIkN1cENhcDsiOiLiiY0iLCJjdXBjYXA7Ijoi4qmGIiwiY3VwY3VwOyI6IuKpiiIsImN1cGRvdDsiOiLiio0iLCJjdXBvcjsiOiLiqYUiLCJjdXBzOyI6IuKIqu+4gCIsImN1cmFycjsiOiLihrciLCJjdXJhcnJtOyI6IuKkvCIsImN1cmx5ZXFwcmVjOyI6IuKLniIsImN1cmx5ZXFzdWNjOyI6IuKLnyIsImN1cmx5dmVlOyI6IuKLjiIsImN1cmx5d2VkZ2U7Ijoi4ouPIiwiY3VycmVuOyI6IsKkIixjdXJyZW46IsKkIiwiY3VydmVhcnJvd2xlZnQ7Ijoi4oa2IiwiY3VydmVhcnJvd3JpZ2h0OyI6IuKGtyIsImN1dmVlOyI6IuKLjiIsImN1d2VkOyI6IuKLjyIsImN3Y29uaW50OyI6IuKIsiIsImN3aW50OyI6IuKIsSIsImN5bGN0eTsiOiLijK0iLCJEYWdnZXI7Ijoi4oChIiwiZGFnZ2VyOyI6IuKAoCIsImRhbGV0aDsiOiLihLgiLCJEYXJyOyI6IuKGoSIsImRBcnI7Ijoi4oeTIiwiZGFycjsiOiLihpMiLCJkYXNoOyI6IuKAkCIsIkRhc2h2OyI6IuKrpCIsImRhc2h2OyI6IuKKoyIsImRia2Fyb3c7Ijoi4qSPIiwiZGJsYWM7Ijoiy50iLCJEY2Fyb247IjoixI4iLCJkY2Fyb247IjoixI8iLCJEY3k7Ijoi0JQiLCJkY3k7Ijoi0LQiLCJERDsiOiLihYUiLCJkZDsiOiLihYYiLCJkZGFnZ2VyOyI6IuKAoSIsImRkYXJyOyI6IuKHiiIsIkREb3RyYWhkOyI6IuKkkSIsImRkb3RzZXE7Ijoi4qm3IiwiZGVnOyI6IsKwIixkZWc6IsKwIiwiRGVsOyI6IuKIhyIsIkRlbHRhOyI6Is6UIiwiZGVsdGE7IjoizrQiLCJkZW1wdHl2OyI6IuKmsSIsImRmaXNodDsiOiLipb8iLCJEZnI7Ijoi8J2UhyIsImRmcjsiOiLwnZShIiwiZEhhcjsiOiLipaUiLCJkaGFybDsiOiLih4MiLCJkaGFycjsiOiLih4IiLCJEaWFjcml0aWNhbEFjdXRlOyI6IsK0IiwiRGlhY3JpdGljYWxEb3Q7Ijoiy5kiLCJEaWFjcml0aWNhbERvdWJsZUFjdXRlOyI6IsudIiwiRGlhY3JpdGljYWxHcmF2ZTsiOiJgIiwiRGlhY3JpdGljYWxUaWxkZTsiOiLLnCIsImRpYW07Ijoi4ouEIiwiRGlhbW9uZDsiOiLii4QiLCJkaWFtb25kOyI6IuKLhCIsImRpYW1vbmRzdWl0OyI6IuKZpiIsImRpYW1zOyI6IuKZpiIsImRpZTsiOiLCqCIsIkRpZmZlcmVudGlhbEQ7Ijoi4oWGIiwiZGlnYW1tYTsiOiLPnSIsImRpc2luOyI6IuKLsiIsImRpdjsiOiLDtyIsImRpdmlkZTsiOiLDtyIsZGl2aWRlOiLDtyIsImRpdmlkZW9udGltZXM7Ijoi4ouHIiwiZGl2b254OyI6IuKLhyIsIkRKY3k7Ijoi0IIiLCJkamN5OyI6ItGSIiwiZGxjb3JuOyI6IuKMniIsImRsY3JvcDsiOiLijI0iLCJkb2xsYXI7IjoiJCIsIkRvcGY7Ijoi8J2UuyIsImRvcGY7Ijoi8J2VlSIsIkRvdDsiOiLCqCIsImRvdDsiOiLLmSIsIkRvdERvdDsiOiLig5wiLCJkb3RlcTsiOiLiiZAiLCJkb3RlcWRvdDsiOiLiiZEiLCJEb3RFcXVhbDsiOiLiiZAiLCJkb3RtaW51czsiOiLiiLgiLCJkb3RwbHVzOyI6IuKIlCIsImRvdHNxdWFyZTsiOiLiiqEiLCJkb3VibGViYXJ3ZWRnZTsiOiLijIYiLCJEb3VibGVDb250b3VySW50ZWdyYWw7Ijoi4oivIiwiRG91YmxlRG90OyI6IsKoIiwiRG91YmxlRG93bkFycm93OyI6IuKHkyIsIkRvdWJsZUxlZnRBcnJvdzsiOiLih5AiLCJEb3VibGVMZWZ0UmlnaHRBcnJvdzsiOiLih5QiLCJEb3VibGVMZWZ0VGVlOyI6IuKrpCIsIkRvdWJsZUxvbmdMZWZ0QXJyb3c7Ijoi4p+4IiwiRG91YmxlTG9uZ0xlZnRSaWdodEFycm93OyI6IuKfuiIsIkRvdWJsZUxvbmdSaWdodEFycm93OyI6IuKfuSIsIkRvdWJsZVJpZ2h0QXJyb3c7Ijoi4oeSIiwiRG91YmxlUmlnaHRUZWU7Ijoi4oqoIiwiRG91YmxlVXBBcnJvdzsiOiLih5EiLCJEb3VibGVVcERvd25BcnJvdzsiOiLih5UiLCJEb3VibGVWZXJ0aWNhbEJhcjsiOiLiiKUiLCJEb3duQXJyb3c7Ijoi4oaTIiwiRG93bmFycm93OyI6IuKHkyIsImRvd25hcnJvdzsiOiLihpMiLCJEb3duQXJyb3dCYXI7Ijoi4qSTIiwiRG93bkFycm93VXBBcnJvdzsiOiLih7UiLCJEb3duQnJldmU7IjoizJEiLCJkb3duZG93bmFycm93czsiOiLih4oiLCJkb3duaGFycG9vbmxlZnQ7Ijoi4oeDIiwiZG93bmhhcnBvb25yaWdodDsiOiLih4IiLCJEb3duTGVmdFJpZ2h0VmVjdG9yOyI6IuKlkCIsIkRvd25MZWZ0VGVlVmVjdG9yOyI6IuKlniIsIkRvd25MZWZ0VmVjdG9yOyI6IuKGvSIsIkRvd25MZWZ0VmVjdG9yQmFyOyI6IuKlliIsIkRvd25SaWdodFRlZVZlY3RvcjsiOiLipZ8iLCJEb3duUmlnaHRWZWN0b3I7Ijoi4oeBIiwiRG93blJpZ2h0VmVjdG9yQmFyOyI6IuKllyIsIkRvd25UZWU7Ijoi4oqkIiwiRG93blRlZUFycm93OyI6IuKGpyIsImRyYmthcm93OyI6IuKkkCIsImRyY29ybjsiOiLijJ8iLCJkcmNyb3A7Ijoi4oyMIiwiRHNjcjsiOiLwnZKfIiwiZHNjcjsiOiLwnZK5IiwiRFNjeTsiOiLQhSIsImRzY3k7Ijoi0ZUiLCJkc29sOyI6IuKntiIsIkRzdHJvazsiOiLEkCIsImRzdHJvazsiOiLEkSIsImR0ZG90OyI6IuKLsSIsImR0cmk7Ijoi4pa/IiwiZHRyaWY7Ijoi4pa+IiwiZHVhcnI7Ijoi4oe1IiwiZHVoYXI7Ijoi4qWvIiwiZHdhbmdsZTsiOiLipqYiLCJEWmN5OyI6ItCPIiwiZHpjeTsiOiLRnyIsImR6aWdyYXJyOyI6IuKfvyIsIkVhY3V0ZTsiOiLDiSIsRWFjdXRlOiLDiSIsImVhY3V0ZTsiOiLDqSIsZWFjdXRlOiLDqSIsImVhc3RlcjsiOiLiqa4iLCJFY2Fyb247IjoixJoiLCJlY2Fyb247IjoixJsiLCJlY2lyOyI6IuKJliIsIkVjaXJjOyI6IsOKIixFY2lyYzoiw4oiLCJlY2lyYzsiOiLDqiIsZWNpcmM6IsOqIiwiZWNvbG9uOyI6IuKJlSIsIkVjeTsiOiLQrSIsImVjeTsiOiLRjSIsImVERG90OyI6IuKptyIsIkVkb3Q7IjoixJYiLCJlRG90OyI6IuKJkSIsImVkb3Q7IjoixJciLCJlZTsiOiLihYciLCJlZkRvdDsiOiLiiZIiLCJFZnI7Ijoi8J2UiCIsImVmcjsiOiLwnZSiIiwiZWc7Ijoi4qqaIiwiRWdyYXZlOyI6IsOIIixFZ3JhdmU6IsOIIiwiZWdyYXZlOyI6IsOoIixlZ3JhdmU6IsOoIiwiZWdzOyI6IuKqliIsImVnc2RvdDsiOiLiqpgiLCJlbDsiOiLiqpkiLCJFbGVtZW50OyI6IuKIiCIsImVsaW50ZXJzOyI6IuKPpyIsImVsbDsiOiLihJMiLCJlbHM7Ijoi4qqVIiwiZWxzZG90OyI6IuKqlyIsIkVtYWNyOyI6IsSSIiwiZW1hY3I7IjoixJMiLCJlbXB0eTsiOiLiiIUiLCJlbXB0eXNldDsiOiLiiIUiLCJFbXB0eVNtYWxsU3F1YXJlOyI6IuKXuyIsImVtcHR5djsiOiLiiIUiLCJFbXB0eVZlcnlTbWFsbFNxdWFyZTsiOiLilqsiLCJlbXNwOyI6IuKAgyIsImVtc3AxMzsiOiLigIQiLCJlbXNwMTQ7Ijoi4oCFIiwiRU5HOyI6IsWKIiwiZW5nOyI6IsWLIiwiZW5zcDsiOiLigIIiLCJFb2dvbjsiOiLEmCIsImVvZ29uOyI6IsSZIiwiRW9wZjsiOiLwnZS8IiwiZW9wZjsiOiLwnZWWIiwiZXBhcjsiOiLii5UiLCJlcGFyc2w7Ijoi4qejIiwiZXBsdXM7Ijoi4qmxIiwiZXBzaTsiOiLOtSIsIkVwc2lsb247IjoizpUiLCJlcHNpbG9uOyI6Is61IiwiZXBzaXY7Ijoiz7UiLCJlcWNpcmM7Ijoi4omWIiwiZXFjb2xvbjsiOiLiiZUiLCJlcXNpbTsiOiLiiYIiLCJlcXNsYW50Z3RyOyI6IuKqliIsImVxc2xhbnRsZXNzOyI6IuKqlSIsIkVxdWFsOyI6IuKptSIsImVxdWFsczsiOiI9IiwiRXF1YWxUaWxkZTsiOiLiiYIiLCJlcXVlc3Q7Ijoi4omfIiwiRXF1aWxpYnJpdW07Ijoi4oeMIiwiZXF1aXY7Ijoi4omhIiwiZXF1aXZERDsiOiLiqbgiLCJlcXZwYXJzbDsiOiLip6UiLCJlcmFycjsiOiLipbEiLCJlckRvdDsiOiLiiZMiLCJFc2NyOyI6IuKEsCIsImVzY3I7Ijoi4oSvIiwiZXNkb3Q7Ijoi4omQIiwiRXNpbTsiOiLiqbMiLCJlc2ltOyI6IuKJgiIsIkV0YTsiOiLOlyIsImV0YTsiOiLOtyIsIkVUSDsiOiLDkCIsRVRIOiLDkCIsImV0aDsiOiLDsCIsZXRoOiLDsCIsIkV1bWw7Ijoiw4siLEV1bWw6IsOLIiwiZXVtbDsiOiLDqyIsZXVtbDoiw6siLCJldXJvOyI6IuKCrCIsImV4Y2w7IjoiISIsImV4aXN0OyI6IuKIgyIsIkV4aXN0czsiOiLiiIMiLCJleHBlY3RhdGlvbjsiOiLihLAiLCJFeHBvbmVudGlhbEU7Ijoi4oWHIiwiZXhwb25lbnRpYWxlOyI6IuKFhyIsImZhbGxpbmdkb3RzZXE7Ijoi4omSIiwiRmN5OyI6ItCkIiwiZmN5OyI6ItGEIiwiZmVtYWxlOyI6IuKZgCIsImZmaWxpZzsiOiLvrIMiLCJmZmxpZzsiOiLvrIAiLCJmZmxsaWc7Ijoi76yEIiwiRmZyOyI6IvCdlIkiLCJmZnI7Ijoi8J2UoyIsImZpbGlnOyI6Iu+sgSIsIkZpbGxlZFNtYWxsU3F1YXJlOyI6IuKXvCIsIkZpbGxlZFZlcnlTbWFsbFNxdWFyZTsiOiLilqoiLCJmamxpZzsiOiJmaiIsImZsYXQ7Ijoi4pmtIiwiZmxsaWc7Ijoi76yCIiwiZmx0bnM7Ijoi4paxIiwiZm5vZjsiOiLGkiIsIkZvcGY7Ijoi8J2UvSIsImZvcGY7Ijoi8J2VlyIsIkZvckFsbDsiOiLiiIAiLCJmb3JhbGw7Ijoi4oiAIiwiZm9yazsiOiLii5QiLCJmb3JrdjsiOiLiq5kiLCJGb3VyaWVydHJmOyI6IuKEsSIsImZwYXJ0aW50OyI6IuKojSIsImZyYWMxMjsiOiLCvSIsZnJhYzEyOiLCvSIsImZyYWMxMzsiOiLihZMiLCJmcmFjMTQ7IjoiwrwiLGZyYWMxNDoiwrwiLCJmcmFjMTU7Ijoi4oWVIiwiZnJhYzE2OyI6IuKFmSIsImZyYWMxODsiOiLihZsiLCJmcmFjMjM7Ijoi4oWUIiwiZnJhYzI1OyI6IuKFliIsImZyYWMzNDsiOiLCviIsZnJhYzM0OiLCviIsImZyYWMzNTsiOiLihZciLCJmcmFjMzg7Ijoi4oWcIiwiZnJhYzQ1OyI6IuKFmCIsImZyYWM1NjsiOiLihZoiLCJmcmFjNTg7Ijoi4oWdIiwiZnJhYzc4OyI6IuKFniIsImZyYXNsOyI6IuKBhCIsImZyb3duOyI6IuKMoiIsIkZzY3I7Ijoi4oSxIiwiZnNjcjsiOiLwnZK7IiwiZ2FjdXRlOyI6Ise1IiwiR2FtbWE7IjoizpMiLCJnYW1tYTsiOiLOsyIsIkdhbW1hZDsiOiLPnCIsImdhbW1hZDsiOiLPnSIsImdhcDsiOiLiqoYiLCJHYnJldmU7IjoixJ4iLCJnYnJldmU7IjoixJ8iLCJHY2VkaWw7IjoixKIiLCJHY2lyYzsiOiLEnCIsImdjaXJjOyI6IsSdIiwiR2N5OyI6ItCTIiwiZ2N5OyI6ItCzIiwiR2RvdDsiOiLEoCIsImdkb3Q7IjoixKEiLCJnRTsiOiLiiaciLCJnZTsiOiLiiaUiLCJnRWw7Ijoi4qqMIiwiZ2VsOyI6IuKLmyIsImdlcTsiOiLiiaUiLCJnZXFxOyI6IuKJpyIsImdlcXNsYW50OyI6IuKpviIsImdlczsiOiLiqb4iLCJnZXNjYzsiOiLiqqkiLCJnZXNkb3Q7Ijoi4qqAIiwiZ2VzZG90bzsiOiLiqoIiLCJnZXNkb3RvbDsiOiLiqoQiLCJnZXNsOyI6IuKLm++4gCIsImdlc2xlczsiOiLiqpQiLCJHZnI7Ijoi8J2UiiIsImdmcjsiOiLwnZSkIiwiR2c7Ijoi4ouZIiwiZ2c7Ijoi4omrIiwiZ2dnOyI6IuKLmSIsImdpbWVsOyI6IuKEtyIsIkdKY3k7Ijoi0IMiLCJnamN5OyI6ItGTIiwiZ2w7Ijoi4om3IiwiZ2xhOyI6IuKqpSIsImdsRTsiOiLiqpIiLCJnbGo7Ijoi4qqkIiwiZ25hcDsiOiLiqooiLCJnbmFwcHJveDsiOiLiqooiLCJnbkU7Ijoi4ompIiwiZ25lOyI6IuKqiCIsImduZXE7Ijoi4qqIIiwiZ25lcXE7Ijoi4ompIiwiZ25zaW07Ijoi4ounIiwiR29wZjsiOiLwnZS+IiwiZ29wZjsiOiLwnZWYIiwiZ3JhdmU7IjoiYCIsIkdyZWF0ZXJFcXVhbDsiOiLiiaUiLCJHcmVhdGVyRXF1YWxMZXNzOyI6IuKLmyIsIkdyZWF0ZXJGdWxsRXF1YWw7Ijoi4omnIiwiR3JlYXRlckdyZWF0ZXI7Ijoi4qqiIiwiR3JlYXRlckxlc3M7Ijoi4om3IiwiR3JlYXRlclNsYW50RXF1YWw7Ijoi4qm+IiwiR3JlYXRlclRpbGRlOyI6IuKJsyIsIkdzY3I7Ijoi8J2SoiIsImdzY3I7Ijoi4oSKIiwiZ3NpbTsiOiLiibMiLCJnc2ltZTsiOiLiqo4iLCJnc2ltbDsiOiLiqpAiLCJHVDsiOiI+IixHVDoiPiIsIkd0OyI6IuKJqyIsImd0OyI6Ij4iLGd0OiI+IiwiZ3RjYzsiOiLiqqciLCJndGNpcjsiOiLiqboiLCJndGRvdDsiOiLii5ciLCJndGxQYXI7Ijoi4qaVIiwiZ3RxdWVzdDsiOiLiqbwiLCJndHJhcHByb3g7Ijoi4qqGIiwiZ3RyYXJyOyI6IuKluCIsImd0cmRvdDsiOiLii5ciLCJndHJlcWxlc3M7Ijoi4oubIiwiZ3RyZXFxbGVzczsiOiLiqowiLCJndHJsZXNzOyI6IuKJtyIsImd0cnNpbTsiOiLiibMiLCJndmVydG5lcXE7Ijoi4omp77iAIiwiZ3ZuRTsiOiLiianvuIAiLCJIYWNlazsiOiLLhyIsImhhaXJzcDsiOiLigIoiLCJoYWxmOyI6IsK9IiwiaGFtaWx0OyI6IuKEiyIsIkhBUkRjeTsiOiLQqiIsImhhcmRjeTsiOiLRiiIsImhBcnI7Ijoi4oeUIiwiaGFycjsiOiLihpQiLCJoYXJyY2lyOyI6IuKliCIsImhhcnJ3OyI6IuKGrSIsIkhhdDsiOiJeIiwiaGJhcjsiOiLihI8iLCJIY2lyYzsiOiLEpCIsImhjaXJjOyI6IsSlIiwiaGVhcnRzOyI6IuKZpSIsImhlYXJ0c3VpdDsiOiLimaUiLCJoZWxsaXA7Ijoi4oCmIiwiaGVyY29uOyI6IuKKuSIsIkhmcjsiOiLihIwiLCJoZnI7Ijoi8J2UpSIsIkhpbGJlcnRTcGFjZTsiOiLihIsiLCJoa3NlYXJvdzsiOiLipKUiLCJoa3N3YXJvdzsiOiLipKYiLCJob2FycjsiOiLih78iLCJob210aHQ7Ijoi4oi7IiwiaG9va2xlZnRhcnJvdzsiOiLihqkiLCJob29rcmlnaHRhcnJvdzsiOiLihqoiLCJIb3BmOyI6IuKEjSIsImhvcGY7Ijoi8J2VmSIsImhvcmJhcjsiOiLigJUiLCJIb3Jpem9udGFsTGluZTsiOiLilIAiLCJIc2NyOyI6IuKEiyIsImhzY3I7Ijoi8J2SvSIsImhzbGFzaDsiOiLihI8iLCJIc3Ryb2s7IjoixKYiLCJoc3Ryb2s7IjoixKciLCJIdW1wRG93bkh1bXA7Ijoi4omOIiwiSHVtcEVxdWFsOyI6IuKJjyIsImh5YnVsbDsiOiLigYMiLCJoeXBoZW47Ijoi4oCQIiwiSWFjdXRlOyI6IsONIixJYWN1dGU6IsONIiwiaWFjdXRlOyI6IsOtIixpYWN1dGU6IsOtIiwiaWM7Ijoi4oGjIiwiSWNpcmM7Ijoiw44iLEljaXJjOiLDjiIsImljaXJjOyI6IsOuIixpY2lyYzoiw64iLCJJY3k7Ijoi0JgiLCJpY3k7Ijoi0LgiLCJJZG90OyI6IsSwIiwiSUVjeTsiOiLQlSIsImllY3k7Ijoi0LUiLCJpZXhjbDsiOiLCoSIsaWV4Y2w6IsKhIiwiaWZmOyI6IuKHlCIsIklmcjsiOiLihJEiLCJpZnI7Ijoi8J2UpiIsIklncmF2ZTsiOiLDjCIsSWdyYXZlOiLDjCIsImlncmF2ZTsiOiLDrCIsaWdyYXZlOiLDrCIsImlpOyI6IuKFiCIsImlpaWludDsiOiLiqIwiLCJpaWludDsiOiLiiK0iLCJpaW5maW47Ijoi4qecIiwiaWlvdGE7Ijoi4oSpIiwiSUpsaWc7IjoixLIiLCJpamxpZzsiOiLEsyIsIkltOyI6IuKEkSIsIkltYWNyOyI6IsSqIiwiaW1hY3I7IjoixKsiLCJpbWFnZTsiOiLihJEiLCJJbWFnaW5hcnlJOyI6IuKFiCIsImltYWdsaW5lOyI6IuKEkCIsImltYWdwYXJ0OyI6IuKEkSIsImltYXRoOyI6IsSxIiwiaW1vZjsiOiLiirciLCJpbXBlZDsiOiLGtSIsIkltcGxpZXM7Ijoi4oeSIiwiaW47Ijoi4oiIIiwiaW5jYXJlOyI6IuKEhSIsImluZmluOyI6IuKIniIsImluZmludGllOyI6IuKnnSIsImlub2RvdDsiOiLEsSIsIkludDsiOiLiiKwiLCJpbnQ7Ijoi4oirIiwiaW50Y2FsOyI6IuKKuiIsImludGVnZXJzOyI6IuKEpCIsIkludGVncmFsOyI6IuKIqyIsImludGVyY2FsOyI6IuKKuiIsIkludGVyc2VjdGlvbjsiOiLii4IiLCJpbnRsYXJoazsiOiLiqJciLCJpbnRwcm9kOyI6IuKovCIsIkludmlzaWJsZUNvbW1hOyI6IuKBoyIsIkludmlzaWJsZVRpbWVzOyI6IuKBoiIsIklPY3k7Ijoi0IEiLCJpb2N5OyI6ItGRIiwiSW9nb247IjoixK4iLCJpb2dvbjsiOiLEryIsIklvcGY7Ijoi8J2VgCIsImlvcGY7Ijoi8J2VmiIsIklvdGE7IjoizpkiLCJpb3RhOyI6Is65IiwiaXByb2Q7Ijoi4qi8IiwiaXF1ZXN0OyI6IsK/IixpcXVlc3Q6IsK/IiwiSXNjcjsiOiLihJAiLCJpc2NyOyI6IvCdkr4iLCJpc2luOyI6IuKIiCIsImlzaW5kb3Q7Ijoi4ou1IiwiaXNpbkU7Ijoi4ou5IiwiaXNpbnM7Ijoi4ou0IiwiaXNpbnN2OyI6IuKLsyIsImlzaW52OyI6IuKIiCIsIml0OyI6IuKBoiIsIkl0aWxkZTsiOiLEqCIsIml0aWxkZTsiOiLEqSIsIkl1a2N5OyI6ItCGIiwiaXVrY3k7Ijoi0ZYiLCJJdW1sOyI6IsOPIixJdW1sOiLDjyIsIml1bWw7Ijoiw68iLGl1bWw6IsOvIiwiSmNpcmM7IjoixLQiLCJqY2lyYzsiOiLEtSIsIkpjeTsiOiLQmSIsImpjeTsiOiLQuSIsIkpmcjsiOiLwnZSNIiwiamZyOyI6IvCdlKciLCJqbWF0aDsiOiLItyIsIkpvcGY7Ijoi8J2VgSIsImpvcGY7Ijoi8J2VmyIsIkpzY3I7Ijoi8J2SpSIsImpzY3I7Ijoi8J2SvyIsIkpzZXJjeTsiOiLQiCIsImpzZXJjeTsiOiLRmCIsIkp1a2N5OyI6ItCEIiwianVrY3k7Ijoi0ZQiLCJLYXBwYTsiOiLOmiIsImthcHBhOyI6Is66Iiwia2FwcGF2OyI6Is+wIiwiS2NlZGlsOyI6IsS2Iiwia2NlZGlsOyI6IsS3IiwiS2N5OyI6ItCaIiwia2N5OyI6ItC6IiwiS2ZyOyI6IvCdlI4iLCJrZnI7Ijoi8J2UqCIsImtncmVlbjsiOiLEuCIsIktIY3k7Ijoi0KUiLCJraGN5OyI6ItGFIiwiS0pjeTsiOiLQjCIsImtqY3k7Ijoi0ZwiLCJLb3BmOyI6IvCdlYIiLCJrb3BmOyI6IvCdlZwiLCJLc2NyOyI6IvCdkqYiLCJrc2NyOyI6IvCdk4AiLCJsQWFycjsiOiLih5oiLCJMYWN1dGU7IjoixLkiLCJsYWN1dGU7IjoixLoiLCJsYWVtcHR5djsiOiLiprQiLCJsYWdyYW47Ijoi4oSSIiwiTGFtYmRhOyI6Is6bIiwibGFtYmRhOyI6Is67IiwiTGFuZzsiOiLin6oiLCJsYW5nOyI6IuKfqCIsImxhbmdkOyI6IuKmkSIsImxhbmdsZTsiOiLin6giLCJsYXA7Ijoi4qqFIiwiTGFwbGFjZXRyZjsiOiLihJIiLCJsYXF1bzsiOiLCqyIsbGFxdW86IsKrIiwiTGFycjsiOiLihp4iLCJsQXJyOyI6IuKHkCIsImxhcnI7Ijoi4oaQIiwibGFycmI7Ijoi4oekIiwibGFycmJmczsiOiLipJ8iLCJsYXJyZnM7Ijoi4qSdIiwibGFycmhrOyI6IuKGqSIsImxhcnJscDsiOiLihqsiLCJsYXJycGw7Ijoi4qS5IiwibGFycnNpbTsiOiLipbMiLCJsYXJydGw7Ijoi4oaiIiwibGF0OyI6IuKqqyIsImxBdGFpbDsiOiLipJsiLCJsYXRhaWw7Ijoi4qSZIiwibGF0ZTsiOiLiqq0iLCJsYXRlczsiOiLiqq3vuIAiLCJsQmFycjsiOiLipI4iLCJsYmFycjsiOiLipIwiLCJsYmJyazsiOiLinbIiLCJsYnJhY2U7IjoieyIsImxicmFjazsiOiJbIiwibGJya2U7Ijoi4qaLIiwibGJya3NsZDsiOiLipo8iLCJsYnJrc2x1OyI6IuKmjSIsIkxjYXJvbjsiOiLEvSIsImxjYXJvbjsiOiLEviIsIkxjZWRpbDsiOiLEuyIsImxjZWRpbDsiOiLEvCIsImxjZWlsOyI6IuKMiCIsImxjdWI7IjoieyIsIkxjeTsiOiLQmyIsImxjeTsiOiLQuyIsImxkY2E7Ijoi4qS2IiwibGRxdW87Ijoi4oCcIiwibGRxdW9yOyI6IuKAniIsImxkcmRoYXI7Ijoi4qWnIiwibGRydXNoYXI7Ijoi4qWLIiwibGRzaDsiOiLihrIiLCJsRTsiOiLiiaYiLCJsZTsiOiLiiaQiLCJMZWZ0QW5nbGVCcmFja2V0OyI6IuKfqCIsIkxlZnRBcnJvdzsiOiLihpAiLCJMZWZ0YXJyb3c7Ijoi4oeQIiwibGVmdGFycm93OyI6IuKGkCIsIkxlZnRBcnJvd0JhcjsiOiLih6QiLCJMZWZ0QXJyb3dSaWdodEFycm93OyI6IuKHhiIsImxlZnRhcnJvd3RhaWw7Ijoi4oaiIiwiTGVmdENlaWxpbmc7Ijoi4oyIIiwiTGVmdERvdWJsZUJyYWNrZXQ7Ijoi4p+mIiwiTGVmdERvd25UZWVWZWN0b3I7Ijoi4qWhIiwiTGVmdERvd25WZWN0b3I7Ijoi4oeDIiwiTGVmdERvd25WZWN0b3JCYXI7Ijoi4qWZIiwiTGVmdEZsb29yOyI6IuKMiiIsImxlZnRoYXJwb29uZG93bjsiOiLihr0iLCJsZWZ0aGFycG9vbnVwOyI6IuKGvCIsImxlZnRsZWZ0YXJyb3dzOyI6IuKHhyIsIkxlZnRSaWdodEFycm93OyI6IuKGlCIsIkxlZnRyaWdodGFycm93OyI6IuKHlCIsImxlZnRyaWdodGFycm93OyI6IuKGlCIsImxlZnRyaWdodGFycm93czsiOiLih4YiLCJsZWZ0cmlnaHRoYXJwb29uczsiOiLih4siLCJsZWZ0cmlnaHRzcXVpZ2Fycm93OyI6IuKGrSIsIkxlZnRSaWdodFZlY3RvcjsiOiLipY4iLCJMZWZ0VGVlOyI6IuKKoyIsIkxlZnRUZWVBcnJvdzsiOiLihqQiLCJMZWZ0VGVlVmVjdG9yOyI6IuKlmiIsImxlZnR0aHJlZXRpbWVzOyI6IuKLiyIsIkxlZnRUcmlhbmdsZTsiOiLiirIiLCJMZWZ0VHJpYW5nbGVCYXI7Ijoi4qePIiwiTGVmdFRyaWFuZ2xlRXF1YWw7Ijoi4oq0IiwiTGVmdFVwRG93blZlY3RvcjsiOiLipZEiLCJMZWZ0VXBUZWVWZWN0b3I7Ijoi4qWgIiwiTGVmdFVwVmVjdG9yOyI6IuKGvyIsIkxlZnRVcFZlY3RvckJhcjsiOiLipZgiLCJMZWZ0VmVjdG9yOyI6IuKGvCIsIkxlZnRWZWN0b3JCYXI7Ijoi4qWSIiwibEVnOyI6IuKqiyIsImxlZzsiOiLii5oiLCJsZXE7Ijoi4omkIiwibGVxcTsiOiLiiaYiLCJsZXFzbGFudDsiOiLiqb0iLCJsZXM7Ijoi4qm9IiwibGVzY2M7Ijoi4qqoIiwibGVzZG90OyI6IuKpvyIsImxlc2RvdG87Ijoi4qqBIiwibGVzZG90b3I7Ijoi4qqDIiwibGVzZzsiOiLii5rvuIAiLCJsZXNnZXM7Ijoi4qqTIiwibGVzc2FwcHJveDsiOiLiqoUiLCJsZXNzZG90OyI6IuKLliIsImxlc3NlcWd0cjsiOiLii5oiLCJsZXNzZXFxZ3RyOyI6IuKqiyIsIkxlc3NFcXVhbEdyZWF0ZXI7Ijoi4ouaIiwiTGVzc0Z1bGxFcXVhbDsiOiLiiaYiLCJMZXNzR3JlYXRlcjsiOiLiibYiLCJsZXNzZ3RyOyI6IuKJtiIsIkxlc3NMZXNzOyI6IuKqoSIsImxlc3NzaW07Ijoi4omyIiwiTGVzc1NsYW50RXF1YWw7Ijoi4qm9IiwiTGVzc1RpbGRlOyI6IuKJsiIsImxmaXNodDsiOiLipbwiLCJsZmxvb3I7Ijoi4oyKIiwiTGZyOyI6IvCdlI8iLCJsZnI7Ijoi8J2UqSIsImxnOyI6IuKJtiIsImxnRTsiOiLiqpEiLCJsSGFyOyI6IuKloiIsImxoYXJkOyI6IuKGvSIsImxoYXJ1OyI6IuKGvCIsImxoYXJ1bDsiOiLipaoiLCJsaGJsazsiOiLiloQiLCJMSmN5OyI6ItCJIiwibGpjeTsiOiLRmSIsIkxsOyI6IuKLmCIsImxsOyI6IuKJqiIsImxsYXJyOyI6IuKHhyIsImxsY29ybmVyOyI6IuKMniIsIkxsZWZ0YXJyb3c7Ijoi4oeaIiwibGxoYXJkOyI6IuKlqyIsImxsdHJpOyI6IuKXuiIsIkxtaWRvdDsiOiLEvyIsImxtaWRvdDsiOiLFgCIsImxtb3VzdDsiOiLijrAiLCJsbW91c3RhY2hlOyI6IuKOsCIsImxuYXA7Ijoi4qqJIiwibG5hcHByb3g7Ijoi4qqJIiwibG5FOyI6IuKJqCIsImxuZTsiOiLiqociLCJsbmVxOyI6IuKqhyIsImxuZXFxOyI6IuKJqCIsImxuc2ltOyI6IuKLpiIsImxvYW5nOyI6IuKfrCIsImxvYXJyOyI6IuKHvSIsImxvYnJrOyI6IuKfpiIsIkxvbmdMZWZ0QXJyb3c7Ijoi4p+1IiwiTG9uZ2xlZnRhcnJvdzsiOiLin7giLCJsb25nbGVmdGFycm93OyI6IuKftSIsIkxvbmdMZWZ0UmlnaHRBcnJvdzsiOiLin7ciLCJMb25nbGVmdHJpZ2h0YXJyb3c7Ijoi4p+6IiwibG9uZ2xlZnRyaWdodGFycm93OyI6IuKftyIsImxvbmdtYXBzdG87Ijoi4p+8IiwiTG9uZ1JpZ2h0QXJyb3c7Ijoi4p+2IiwiTG9uZ3JpZ2h0YXJyb3c7Ijoi4p+5IiwibG9uZ3JpZ2h0YXJyb3c7Ijoi4p+2IiwibG9vcGFycm93bGVmdDsiOiLihqsiLCJsb29wYXJyb3dyaWdodDsiOiLihqwiLCJsb3BhcjsiOiLipoUiLCJMb3BmOyI6IvCdlYMiLCJsb3BmOyI6IvCdlZ0iLCJsb3BsdXM7Ijoi4qitIiwibG90aW1lczsiOiLiqLQiLCJsb3dhc3Q7Ijoi4oiXIiwibG93YmFyOyI6Il8iLCJMb3dlckxlZnRBcnJvdzsiOiLihpkiLCJMb3dlclJpZ2h0QXJyb3c7Ijoi4oaYIiwibG96OyI6IuKXiiIsImxvemVuZ2U7Ijoi4peKIiwibG96ZjsiOiLip6siLCJscGFyOyI6IigiLCJscGFybHQ7Ijoi4qaTIiwibHJhcnI7Ijoi4oeGIiwibHJjb3JuZXI7Ijoi4oyfIiwibHJoYXI7Ijoi4oeLIiwibHJoYXJkOyI6IuKlrSIsImxybTsiOiLigI4iLCJscnRyaTsiOiLiir8iLCJsc2FxdW87Ijoi4oC5IiwiTHNjcjsiOiLihJIiLCJsc2NyOyI6IvCdk4EiLCJMc2g7Ijoi4oawIiwibHNoOyI6IuKGsCIsImxzaW07Ijoi4omyIiwibHNpbWU7Ijoi4qqNIiwibHNpbWc7Ijoi4qqPIiwibHNxYjsiOiJbIiwibHNxdW87Ijoi4oCYIiwibHNxdW9yOyI6IuKAmiIsIkxzdHJvazsiOiLFgSIsImxzdHJvazsiOiLFgiIsIkxUOyI6IjwiLExUOiI8IiwiTHQ7Ijoi4omqIiwibHQ7IjoiPCIsbHQ6IjwiLCJsdGNjOyI6IuKqpiIsImx0Y2lyOyI6IuKpuSIsImx0ZG90OyI6IuKLliIsImx0aHJlZTsiOiLii4siLCJsdGltZXM7Ijoi4ouJIiwibHRsYXJyOyI6IuKltiIsImx0cXVlc3Q7Ijoi4qm7IiwibHRyaTsiOiLil4MiLCJsdHJpZTsiOiLiirQiLCJsdHJpZjsiOiLil4IiLCJsdHJQYXI7Ijoi4qaWIiwibHVyZHNoYXI7Ijoi4qWKIiwibHVydWhhcjsiOiLipaYiLCJsdmVydG5lcXE7Ijoi4omo77iAIiwibHZuRTsiOiLiiajvuIAiLCJtYWNyOyI6IsKvIixtYWNyOiLCryIsIm1hbGU7Ijoi4pmCIiwibWFsdDsiOiLinKAiLCJtYWx0ZXNlOyI6IuKcoCIsIk1hcDsiOiLipIUiLCJtYXA7Ijoi4oamIiwibWFwc3RvOyI6IuKGpiIsIm1hcHN0b2Rvd247Ijoi4oanIiwibWFwc3RvbGVmdDsiOiLihqQiLCJtYXBzdG91cDsiOiLihqUiLCJtYXJrZXI7Ijoi4pauIiwibWNvbW1hOyI6IuKoqSIsIk1jeTsiOiLQnCIsIm1jeTsiOiLQvCIsIm1kYXNoOyI6IuKAlCIsIm1ERG90OyI6IuKIuiIsIm1lYXN1cmVkYW5nbGU7Ijoi4oihIiwiTWVkaXVtU3BhY2U7Ijoi4oGfIiwiTWVsbGludHJmOyI6IuKEsyIsIk1mcjsiOiLwnZSQIiwibWZyOyI6IvCdlKoiLCJtaG87Ijoi4oSnIiwibWljcm87IjoiwrUiLG1pY3JvOiLCtSIsIm1pZDsiOiLiiKMiLCJtaWRhc3Q7IjoiKiIsIm1pZGNpcjsiOiLiq7AiLCJtaWRkb3Q7IjoiwrciLG1pZGRvdDoiwrciLCJtaW51czsiOiLiiJIiLCJtaW51c2I7Ijoi4oqfIiwibWludXNkOyI6IuKIuCIsIm1pbnVzZHU7Ijoi4qiqIiwiTWludXNQbHVzOyI6IuKIkyIsIm1sY3A7Ijoi4qubIiwibWxkcjsiOiLigKYiLCJtbnBsdXM7Ijoi4oiTIiwibW9kZWxzOyI6IuKKpyIsIk1vcGY7Ijoi8J2VhCIsIm1vcGY7Ijoi8J2VniIsIm1wOyI6IuKIkyIsIk1zY3I7Ijoi4oSzIiwibXNjcjsiOiLwnZOCIiwibXN0cG9zOyI6IuKIviIsIk11OyI6Is6cIiwibXU7IjoizrwiLCJtdWx0aW1hcDsiOiLiirgiLCJtdW1hcDsiOiLiirgiLCJuYWJsYTsiOiLiiIciLCJOYWN1dGU7IjoixYMiLCJuYWN1dGU7IjoixYQiLCJuYW5nOyI6IuKIoOKDkiIsIm5hcDsiOiLiiYkiLCJuYXBFOyI6IuKpsMy4IiwibmFwaWQ7Ijoi4omLzLgiLCJuYXBvczsiOiLFiSIsIm5hcHByb3g7Ijoi4omJIiwibmF0dXI7Ijoi4pmuIiwibmF0dXJhbDsiOiLima4iLCJuYXR1cmFsczsiOiLihJUiLCJuYnNwOyI6IsKgIixuYnNwOiLCoCIsIm5idW1wOyI6IuKJjsy4IiwibmJ1bXBlOyI6IuKJj8y4IiwibmNhcDsiOiLiqYMiLCJOY2Fyb247IjoixYciLCJuY2Fyb247IjoixYgiLCJOY2VkaWw7IjoixYUiLCJuY2VkaWw7IjoixYYiLCJuY29uZzsiOiLiiYciLCJuY29uZ2RvdDsiOiLiqa3MuCIsIm5jdXA7Ijoi4qmCIiwiTmN5OyI6ItCdIiwibmN5OyI6ItC9IiwibmRhc2g7Ijoi4oCTIiwibmU7Ijoi4omgIiwibmVhcmhrOyI6IuKkpCIsIm5lQXJyOyI6IuKHlyIsIm5lYXJyOyI6IuKGlyIsIm5lYXJyb3c7Ijoi4oaXIiwibmVkb3Q7Ijoi4omQzLgiLCJOZWdhdGl2ZU1lZGl1bVNwYWNlOyI6IuKAiyIsIk5lZ2F0aXZlVGhpY2tTcGFjZTsiOiLigIsiLCJOZWdhdGl2ZVRoaW5TcGFjZTsiOiLigIsiLCJOZWdhdGl2ZVZlcnlUaGluU3BhY2U7Ijoi4oCLIiwibmVxdWl2OyI6IuKJoiIsIm5lc2VhcjsiOiLipKgiLCJuZXNpbTsiOiLiiYLMuCIsIk5lc3RlZEdyZWF0ZXJHcmVhdGVyOyI6IuKJqyIsIk5lc3RlZExlc3NMZXNzOyI6IuKJqiIsIk5ld0xpbmU7IjoiXG4iLCJuZXhpc3Q7Ijoi4oiEIiwibmV4aXN0czsiOiLiiIQiLCJOZnI7Ijoi8J2UkSIsIm5mcjsiOiLwnZSrIiwibmdFOyI6IuKJp8y4IiwibmdlOyI6IuKJsSIsIm5nZXE7Ijoi4omxIiwibmdlcXE7Ijoi4omnzLgiLCJuZ2Vxc2xhbnQ7Ijoi4qm+zLgiLCJuZ2VzOyI6IuKpvsy4IiwibkdnOyI6IuKLmcy4IiwibmdzaW07Ijoi4om1Iiwibkd0OyI6IuKJq+KDkiIsIm5ndDsiOiLiia8iLCJuZ3RyOyI6IuKJryIsIm5HdHY7Ijoi4omrzLgiLCJuaEFycjsiOiLih44iLCJuaGFycjsiOiLihq4iLCJuaHBhcjsiOiLiq7IiLCJuaTsiOiLiiIsiLCJuaXM7Ijoi4ou8IiwibmlzZDsiOiLii7oiLCJuaXY7Ijoi4oiLIiwiTkpjeTsiOiLQiiIsIm5qY3k7Ijoi0ZoiLCJubEFycjsiOiLih40iLCJubGFycjsiOiLihpoiLCJubGRyOyI6IuKApSIsIm5sRTsiOiLiiabMuCIsIm5sZTsiOiLiibAiLCJuTGVmdGFycm93OyI6IuKHjSIsIm5sZWZ0YXJyb3c7Ijoi4oaaIiwibkxlZnRyaWdodGFycm93OyI6IuKHjiIsIm5sZWZ0cmlnaHRhcnJvdzsiOiLihq4iLCJubGVxOyI6IuKJsCIsIm5sZXFxOyI6IuKJpsy4IiwibmxlcXNsYW50OyI6IuKpvcy4IiwibmxlczsiOiLiqb3MuCIsIm5sZXNzOyI6IuKJriIsIm5MbDsiOiLii5jMuCIsIm5sc2ltOyI6IuKJtCIsIm5MdDsiOiLiiarig5IiLCJubHQ7Ijoi4omuIiwibmx0cmk7Ijoi4ouqIiwibmx0cmllOyI6IuKLrCIsIm5MdHY7Ijoi4omqzLgiLCJubWlkOyI6IuKIpCIsIk5vQnJlYWs7Ijoi4oGgIiwiTm9uQnJlYWtpbmdTcGFjZTsiOiLCoCIsIk5vcGY7Ijoi4oSVIiwibm9wZjsiOiLwnZWfIiwiTm90OyI6IuKrrCIsIm5vdDsiOiLCrCIsbm90OiLCrCIsIk5vdENvbmdydWVudDsiOiLiiaIiLCJOb3RDdXBDYXA7Ijoi4omtIiwiTm90RG91YmxlVmVydGljYWxCYXI7Ijoi4oimIiwiTm90RWxlbWVudDsiOiLiiIkiLCJOb3RFcXVhbDsiOiLiiaAiLCJOb3RFcXVhbFRpbGRlOyI6IuKJgsy4IiwiTm90RXhpc3RzOyI6IuKIhCIsIk5vdEdyZWF0ZXI7Ijoi4omvIiwiTm90R3JlYXRlckVxdWFsOyI6IuKJsSIsIk5vdEdyZWF0ZXJGdWxsRXF1YWw7Ijoi4omnzLgiLCJOb3RHcmVhdGVyR3JlYXRlcjsiOiLiiavMuCIsIk5vdEdyZWF0ZXJMZXNzOyI6IuKJuSIsIk5vdEdyZWF0ZXJTbGFudEVxdWFsOyI6IuKpvsy4IiwiTm90R3JlYXRlclRpbGRlOyI6IuKJtSIsIk5vdEh1bXBEb3duSHVtcDsiOiLiiY7MuCIsIk5vdEh1bXBFcXVhbDsiOiLiiY/MuCIsIm5vdGluOyI6IuKIiSIsIm5vdGluZG90OyI6IuKLtcy4Iiwibm90aW5FOyI6IuKLucy4Iiwibm90aW52YTsiOiLiiIkiLCJub3RpbnZiOyI6IuKLtyIsIm5vdGludmM7Ijoi4ou2IiwiTm90TGVmdFRyaWFuZ2xlOyI6IuKLqiIsIk5vdExlZnRUcmlhbmdsZUJhcjsiOiLip4/MuCIsIk5vdExlZnRUcmlhbmdsZUVxdWFsOyI6IuKLrCIsIk5vdExlc3M7Ijoi4omuIiwiTm90TGVzc0VxdWFsOyI6IuKJsCIsIk5vdExlc3NHcmVhdGVyOyI6IuKJuCIsIk5vdExlc3NMZXNzOyI6IuKJqsy4IiwiTm90TGVzc1NsYW50RXF1YWw7Ijoi4qm9zLgiLCJOb3RMZXNzVGlsZGU7Ijoi4om0IiwiTm90TmVzdGVkR3JlYXRlckdyZWF0ZXI7Ijoi4qqizLgiLCJOb3ROZXN0ZWRMZXNzTGVzczsiOiLiqqHMuCIsIm5vdG5pOyI6IuKIjCIsIm5vdG5pdmE7Ijoi4oiMIiwibm90bml2YjsiOiLii74iLCJub3RuaXZjOyI6IuKLvSIsIk5vdFByZWNlZGVzOyI6IuKKgCIsIk5vdFByZWNlZGVzRXF1YWw7Ijoi4qqvzLgiLCJOb3RQcmVjZWRlc1NsYW50RXF1YWw7Ijoi4ougIiwiTm90UmV2ZXJzZUVsZW1lbnQ7Ijoi4oiMIiwiTm90UmlnaHRUcmlhbmdsZTsiOiLii6siLCJOb3RSaWdodFRyaWFuZ2xlQmFyOyI6IuKnkMy4IiwiTm90UmlnaHRUcmlhbmdsZUVxdWFsOyI6IuKLrSIsIk5vdFNxdWFyZVN1YnNldDsiOiLiio/MuCIsIk5vdFNxdWFyZVN1YnNldEVxdWFsOyI6IuKLoiIsIk5vdFNxdWFyZVN1cGVyc2V0OyI6IuKKkMy4IiwiTm90U3F1YXJlU3VwZXJzZXRFcXVhbDsiOiLii6MiLCJOb3RTdWJzZXQ7Ijoi4oqC4oOSIiwiTm90U3Vic2V0RXF1YWw7Ijoi4oqIIiwiTm90U3VjY2VlZHM7Ijoi4oqBIiwiTm90U3VjY2VlZHNFcXVhbDsiOiLiqrDMuCIsIk5vdFN1Y2NlZWRzU2xhbnRFcXVhbDsiOiLii6EiLCJOb3RTdWNjZWVkc1RpbGRlOyI6IuKJv8y4IiwiTm90U3VwZXJzZXQ7Ijoi4oqD4oOSIiwiTm90U3VwZXJzZXRFcXVhbDsiOiLiiokiLCJOb3RUaWxkZTsiOiLiiYEiLCJOb3RUaWxkZUVxdWFsOyI6IuKJhCIsIk5vdFRpbGRlRnVsbEVxdWFsOyI6IuKJhyIsIk5vdFRpbGRlVGlsZGU7Ijoi4omJIiwiTm90VmVydGljYWxCYXI7Ijoi4oikIiwibnBhcjsiOiLiiKYiLCJucGFyYWxsZWw7Ijoi4oimIiwibnBhcnNsOyI6IuKrveKDpSIsIm5wYXJ0OyI6IuKIgsy4IiwibnBvbGludDsiOiLiqJQiLCJucHI7Ijoi4oqAIiwibnByY3VlOyI6IuKLoCIsIm5wcmU7Ijoi4qqvzLgiLCJucHJlYzsiOiLiioAiLCJucHJlY2VxOyI6IuKqr8y4IiwibnJBcnI7Ijoi4oePIiwibnJhcnI7Ijoi4oabIiwibnJhcnJjOyI6IuKks8y4IiwibnJhcnJ3OyI6IuKGncy4IiwiblJpZ2h0YXJyb3c7Ijoi4oePIiwibnJpZ2h0YXJyb3c7Ijoi4oabIiwibnJ0cmk7Ijoi4ourIiwibnJ0cmllOyI6IuKLrSIsIm5zYzsiOiLiioEiLCJuc2NjdWU7Ijoi4ouhIiwibnNjZTsiOiLiqrDMuCIsIk5zY3I7Ijoi8J2SqSIsIm5zY3I7Ijoi8J2TgyIsIm5zaG9ydG1pZDsiOiLiiKQiLCJuc2hvcnRwYXJhbGxlbDsiOiLiiKYiLCJuc2ltOyI6IuKJgSIsIm5zaW1lOyI6IuKJhCIsIm5zaW1lcTsiOiLiiYQiLCJuc21pZDsiOiLiiKQiLCJuc3BhcjsiOiLiiKYiLCJuc3FzdWJlOyI6IuKLoiIsIm5zcXN1cGU7Ijoi4oujIiwibnN1YjsiOiLiioQiLCJuc3ViRTsiOiLiq4XMuCIsIm5zdWJlOyI6IuKKiCIsIm5zdWJzZXQ7Ijoi4oqC4oOSIiwibnN1YnNldGVxOyI6IuKKiCIsIm5zdWJzZXRlcXE7Ijoi4quFzLgiLCJuc3VjYzsiOiLiioEiLCJuc3VjY2VxOyI6IuKqsMy4IiwibnN1cDsiOiLiioUiLCJuc3VwRTsiOiLiq4bMuCIsIm5zdXBlOyI6IuKKiSIsIm5zdXBzZXQ7Ijoi4oqD4oOSIiwibnN1cHNldGVxOyI6IuKKiSIsIm5zdXBzZXRlcXE7Ijoi4quGzLgiLCJudGdsOyI6IuKJuSIsIk50aWxkZTsiOiLDkSIsTnRpbGRlOiLDkSIsIm50aWxkZTsiOiLDsSIsbnRpbGRlOiLDsSIsIm50bGc7Ijoi4om4IiwibnRyaWFuZ2xlbGVmdDsiOiLii6oiLCJudHJpYW5nbGVsZWZ0ZXE7Ijoi4ousIiwibnRyaWFuZ2xlcmlnaHQ7Ijoi4ourIiwibnRyaWFuZ2xlcmlnaHRlcTsiOiLii60iLCJOdTsiOiLOnSIsIm51OyI6Is69IiwibnVtOyI6IiMiLCJudW1lcm87Ijoi4oSWIiwibnVtc3A7Ijoi4oCHIiwibnZhcDsiOiLiiY3ig5IiLCJuVkRhc2g7Ijoi4oqvIiwiblZkYXNoOyI6IuKKriIsIm52RGFzaDsiOiLiiq0iLCJudmRhc2g7Ijoi4oqsIiwibnZnZTsiOiLiiaXig5IiLCJudmd0OyI6Ij7ig5IiLCJudkhhcnI7Ijoi4qSEIiwibnZpbmZpbjsiOiLip54iLCJudmxBcnI7Ijoi4qSCIiwibnZsZTsiOiLiiaTig5IiLCJudmx0OyI6Ijzig5IiLCJudmx0cmllOyI6IuKKtOKDkiIsIm52ckFycjsiOiLipIMiLCJudnJ0cmllOyI6IuKKteKDkiIsIm52c2ltOyI6IuKIvOKDkiIsIm53YXJoazsiOiLipKMiLCJud0FycjsiOiLih5YiLCJud2FycjsiOiLihpYiLCJud2Fycm93OyI6IuKGliIsIm53bmVhcjsiOiLipKciLCJPYWN1dGU7Ijoiw5MiLE9hY3V0ZToiw5MiLCJvYWN1dGU7Ijoiw7MiLG9hY3V0ZToiw7MiLCJvYXN0OyI6IuKKmyIsIm9jaXI7Ijoi4oqaIiwiT2NpcmM7Ijoiw5QiLE9jaXJjOiLDlCIsIm9jaXJjOyI6IsO0IixvY2lyYzoiw7QiLCJPY3k7Ijoi0J4iLCJvY3k7Ijoi0L4iLCJvZGFzaDsiOiLiip0iLCJPZGJsYWM7IjoixZAiLCJvZGJsYWM7IjoixZEiLCJvZGl2OyI6IuKouCIsIm9kb3Q7Ijoi4oqZIiwib2Rzb2xkOyI6IuKmvCIsIk9FbGlnOyI6IsWSIiwib2VsaWc7IjoixZMiLCJvZmNpcjsiOiLipr8iLCJPZnI7Ijoi8J2UkiIsIm9mcjsiOiLwnZSsIiwib2dvbjsiOiLLmyIsIk9ncmF2ZTsiOiLDkiIsT2dyYXZlOiLDkiIsIm9ncmF2ZTsiOiLDsiIsb2dyYXZlOiLDsiIsIm9ndDsiOiLip4EiLCJvaGJhcjsiOiLiprUiLCJvaG07IjoizqkiLCJvaW50OyI6IuKIriIsIm9sYXJyOyI6IuKGuiIsIm9sY2lyOyI6IuKmviIsIm9sY3Jvc3M7Ijoi4qa7Iiwib2xpbmU7Ijoi4oC+Iiwib2x0OyI6IuKngCIsIk9tYWNyOyI6IsWMIiwib21hY3I7IjoixY0iLCJPbWVnYTsiOiLOqSIsIm9tZWdhOyI6Is+JIiwiT21pY3JvbjsiOiLOnyIsIm9taWNyb247Ijoizr8iLCJvbWlkOyI6IuKmtiIsIm9taW51czsiOiLiipYiLCJPb3BmOyI6IvCdlYYiLCJvb3BmOyI6IvCdlaAiLCJvcGFyOyI6IuKmtyIsIk9wZW5DdXJseURvdWJsZVF1b3RlOyI6IuKAnCIsIk9wZW5DdXJseVF1b3RlOyI6IuKAmCIsIm9wZXJwOyI6IuKmuSIsIm9wbHVzOyI6IuKKlSIsIk9yOyI6IuKplCIsIm9yOyI6IuKIqCIsIm9yYXJyOyI6IuKGuyIsIm9yZDsiOiLiqZ0iLCJvcmRlcjsiOiLihLQiLCJvcmRlcm9mOyI6IuKEtCIsIm9yZGY7IjoiwqoiLG9yZGY6IsKqIiwib3JkbTsiOiLCuiIsb3JkbToiwroiLCJvcmlnb2Y7Ijoi4oq2Iiwib3JvcjsiOiLiqZYiLCJvcnNsb3BlOyI6IuKplyIsIm9ydjsiOiLiqZsiLCJvUzsiOiLik4giLCJPc2NyOyI6IvCdkqoiLCJvc2NyOyI6IuKEtCIsIk9zbGFzaDsiOiLDmCIsT3NsYXNoOiLDmCIsIm9zbGFzaDsiOiLDuCIsb3NsYXNoOiLDuCIsIm9zb2w7Ijoi4oqYIiwiT3RpbGRlOyI6IsOVIixPdGlsZGU6IsOVIiwib3RpbGRlOyI6IsO1IixvdGlsZGU6IsO1IiwiT3RpbWVzOyI6IuKotyIsIm90aW1lczsiOiLiipciLCJvdGltZXNhczsiOiLiqLYiLCJPdW1sOyI6IsOWIixPdW1sOiLDliIsIm91bWw7Ijoiw7YiLG91bWw6IsO2Iiwib3ZiYXI7Ijoi4oy9IiwiT3ZlckJhcjsiOiLigL4iLCJPdmVyQnJhY2U7Ijoi4o+eIiwiT3ZlckJyYWNrZXQ7Ijoi4o60IiwiT3ZlclBhcmVudGhlc2lzOyI6IuKPnCIsInBhcjsiOiLiiKUiLCJwYXJhOyI6IsK2IixwYXJhOiLCtiIsInBhcmFsbGVsOyI6IuKIpSIsInBhcnNpbTsiOiLiq7MiLCJwYXJzbDsiOiLiq70iLCJwYXJ0OyI6IuKIgiIsIlBhcnRpYWxEOyI6IuKIgiIsIlBjeTsiOiLQnyIsInBjeTsiOiLQvyIsInBlcmNudDsiOiIlIiwicGVyaW9kOyI6Ii4iLCJwZXJtaWw7Ijoi4oCwIiwicGVycDsiOiLiiqUiLCJwZXJ0ZW5rOyI6IuKAsSIsIlBmcjsiOiLwnZSTIiwicGZyOyI6IvCdlK0iLCJQaGk7IjoizqYiLCJwaGk7Ijoiz4YiLCJwaGl2OyI6Is+VIiwicGhtbWF0OyI6IuKEsyIsInBob25lOyI6IuKYjiIsIlBpOyI6Is6gIiwicGk7Ijoiz4AiLCJwaXRjaGZvcms7Ijoi4ouUIiwicGl2OyI6Is+WIiwicGxhbmNrOyI6IuKEjyIsInBsYW5ja2g7Ijoi4oSOIiwicGxhbmt2OyI6IuKEjyIsInBsdXM7IjoiKyIsInBsdXNhY2lyOyI6IuKooyIsInBsdXNiOyI6IuKKniIsInBsdXNjaXI7Ijoi4qiiIiwicGx1c2RvOyI6IuKIlCIsInBsdXNkdTsiOiLiqKUiLCJwbHVzZTsiOiLiqbIiLCJQbHVzTWludXM7IjoiwrEiLCJwbHVzbW47IjoiwrEiLHBsdXNtbjoiwrEiLCJwbHVzc2ltOyI6IuKopiIsInBsdXN0d287Ijoi4qinIiwicG07IjoiwrEiLCJQb2luY2FyZXBsYW5lOyI6IuKEjCIsInBvaW50aW50OyI6IuKolSIsIlBvcGY7Ijoi4oSZIiwicG9wZjsiOiLwnZWhIiwicG91bmQ7IjoiwqMiLHBvdW5kOiLCoyIsIlByOyI6IuKquyIsInByOyI6IuKJuiIsInByYXA7Ijoi4qq3IiwicHJjdWU7Ijoi4om8IiwicHJFOyI6IuKqsyIsInByZTsiOiLiqq8iLCJwcmVjOyI6IuKJuiIsInByZWNhcHByb3g7Ijoi4qq3IiwicHJlY2N1cmx5ZXE7Ijoi4om8IiwiUHJlY2VkZXM7Ijoi4om6IiwiUHJlY2VkZXNFcXVhbDsiOiLiqq8iLCJQcmVjZWRlc1NsYW50RXF1YWw7Ijoi4om8IiwiUHJlY2VkZXNUaWxkZTsiOiLiib4iLCJwcmVjZXE7Ijoi4qqvIiwicHJlY25hcHByb3g7Ijoi4qq5IiwicHJlY25lcXE7Ijoi4qq1IiwicHJlY25zaW07Ijoi4ouoIiwicHJlY3NpbTsiOiLiib4iLCJQcmltZTsiOiLigLMiLCJwcmltZTsiOiLigLIiLCJwcmltZXM7Ijoi4oSZIiwicHJuYXA7Ijoi4qq5IiwicHJuRTsiOiLiqrUiLCJwcm5zaW07Ijoi4ouoIiwicHJvZDsiOiLiiI8iLCJQcm9kdWN0OyI6IuKIjyIsInByb2ZhbGFyOyI6IuKMriIsInByb2ZsaW5lOyI6IuKMkiIsInByb2ZzdXJmOyI6IuKMkyIsInByb3A7Ijoi4oidIiwiUHJvcG9ydGlvbjsiOiLiiLciLCJQcm9wb3J0aW9uYWw7Ijoi4oidIiwicHJvcHRvOyI6IuKInSIsInByc2ltOyI6IuKJviIsInBydXJlbDsiOiLiirAiLCJQc2NyOyI6IvCdkqsiLCJwc2NyOyI6IvCdk4UiLCJQc2k7IjoizqgiLCJwc2k7Ijoiz4giLCJwdW5jc3A7Ijoi4oCIIiwiUWZyOyI6IvCdlJQiLCJxZnI7Ijoi8J2UriIsInFpbnQ7Ijoi4qiMIiwiUW9wZjsiOiLihJoiLCJxb3BmOyI6IvCdlaIiLCJxcHJpbWU7Ijoi4oGXIiwiUXNjcjsiOiLwnZKsIiwicXNjcjsiOiLwnZOGIiwicXVhdGVybmlvbnM7Ijoi4oSNIiwicXVhdGludDsiOiLiqJYiLCJxdWVzdDsiOiI/IiwicXVlc3RlcTsiOiLiiZ8iLCJRVU9UOyI6JyInLFFVT1Q6JyInLCJxdW90OyI6JyInLHF1b3Q6JyInLCJyQWFycjsiOiLih5siLCJyYWNlOyI6IuKIvcyxIiwiUmFjdXRlOyI6IsWUIiwicmFjdXRlOyI6IsWVIiwicmFkaWM7Ijoi4oiaIiwicmFlbXB0eXY7Ijoi4qazIiwiUmFuZzsiOiLin6siLCJyYW5nOyI6IuKfqSIsInJhbmdkOyI6IuKmkiIsInJhbmdlOyI6IuKmpSIsInJhbmdsZTsiOiLin6kiLCJyYXF1bzsiOiLCuyIscmFxdW86IsK7IiwiUmFycjsiOiLihqAiLCJyQXJyOyI6IuKHkiIsInJhcnI7Ijoi4oaSIiwicmFycmFwOyI6IuKltSIsInJhcnJiOyI6IuKHpSIsInJhcnJiZnM7Ijoi4qSgIiwicmFycmM7Ijoi4qSzIiwicmFycmZzOyI6IuKkniIsInJhcnJoazsiOiLihqoiLCJyYXJybHA7Ijoi4oasIiwicmFycnBsOyI6IuKlhSIsInJhcnJzaW07Ijoi4qW0IiwiUmFycnRsOyI6IuKkliIsInJhcnJ0bDsiOiLihqMiLCJyYXJydzsiOiLihp0iLCJyQXRhaWw7Ijoi4qScIiwicmF0YWlsOyI6IuKkmiIsInJhdGlvOyI6IuKItiIsInJhdGlvbmFsczsiOiLihJoiLCJSQmFycjsiOiLipJAiLCJyQmFycjsiOiLipI8iLCJyYmFycjsiOiLipI0iLCJyYmJyazsiOiLinbMiLCJyYnJhY2U7IjoifSIsInJicmFjazsiOiJdIiwicmJya2U7Ijoi4qaMIiwicmJya3NsZDsiOiLipo4iLCJyYnJrc2x1OyI6IuKmkCIsIlJjYXJvbjsiOiLFmCIsInJjYXJvbjsiOiLFmSIsIlJjZWRpbDsiOiLFliIsInJjZWRpbDsiOiLFlyIsInJjZWlsOyI6IuKMiSIsInJjdWI7IjoifSIsIlJjeTsiOiLQoCIsInJjeTsiOiLRgCIsInJkY2E7Ijoi4qS3IiwicmRsZGhhcjsiOiLipakiLCJyZHF1bzsiOiLigJ0iLCJyZHF1b3I7Ijoi4oCdIiwicmRzaDsiOiLihrMiLCJSZTsiOiLihJwiLCJyZWFsOyI6IuKEnCIsInJlYWxpbmU7Ijoi4oSbIiwicmVhbHBhcnQ7Ijoi4oScIiwicmVhbHM7Ijoi4oSdIiwicmVjdDsiOiLilq0iLCJSRUc7Ijoiwq4iLFJFRzoiwq4iLCJyZWc7Ijoiwq4iLHJlZzoiwq4iLCJSZXZlcnNlRWxlbWVudDsiOiLiiIsiLCJSZXZlcnNlRXF1aWxpYnJpdW07Ijoi4oeLIiwiUmV2ZXJzZVVwRXF1aWxpYnJpdW07Ijoi4qWvIiwicmZpc2h0OyI6IuKlvSIsInJmbG9vcjsiOiLijIsiLCJSZnI7Ijoi4oScIiwicmZyOyI6IvCdlK8iLCJySGFyOyI6IuKlpCIsInJoYXJkOyI6IuKHgSIsInJoYXJ1OyI6IuKHgCIsInJoYXJ1bDsiOiLipawiLCJSaG87IjoizqEiLCJyaG87Ijoiz4EiLCJyaG92OyI6Is+xIiwiUmlnaHRBbmdsZUJyYWNrZXQ7Ijoi4p+pIiwiUmlnaHRBcnJvdzsiOiLihpIiLCJSaWdodGFycm93OyI6IuKHkiIsInJpZ2h0YXJyb3c7Ijoi4oaSIiwiUmlnaHRBcnJvd0JhcjsiOiLih6UiLCJSaWdodEFycm93TGVmdEFycm93OyI6IuKHhCIsInJpZ2h0YXJyb3d0YWlsOyI6IuKGoyIsIlJpZ2h0Q2VpbGluZzsiOiLijIkiLCJSaWdodERvdWJsZUJyYWNrZXQ7Ijoi4p+nIiwiUmlnaHREb3duVGVlVmVjdG9yOyI6IuKlnSIsIlJpZ2h0RG93blZlY3RvcjsiOiLih4IiLCJSaWdodERvd25WZWN0b3JCYXI7Ijoi4qWVIiwiUmlnaHRGbG9vcjsiOiLijIsiLCJyaWdodGhhcnBvb25kb3duOyI6IuKHgSIsInJpZ2h0aGFycG9vbnVwOyI6IuKHgCIsInJpZ2h0bGVmdGFycm93czsiOiLih4QiLCJyaWdodGxlZnRoYXJwb29uczsiOiLih4wiLCJyaWdodHJpZ2h0YXJyb3dzOyI6IuKHiSIsInJpZ2h0c3F1aWdhcnJvdzsiOiLihp0iLCJSaWdodFRlZTsiOiLiiqIiLCJSaWdodFRlZUFycm93OyI6IuKGpiIsIlJpZ2h0VGVlVmVjdG9yOyI6IuKlmyIsInJpZ2h0dGhyZWV0aW1lczsiOiLii4wiLCJSaWdodFRyaWFuZ2xlOyI6IuKKsyIsIlJpZ2h0VHJpYW5nbGVCYXI7Ijoi4qeQIiwiUmlnaHRUcmlhbmdsZUVxdWFsOyI6IuKKtSIsIlJpZ2h0VXBEb3duVmVjdG9yOyI6IuKljyIsIlJpZ2h0VXBUZWVWZWN0b3I7Ijoi4qWcIiwiUmlnaHRVcFZlY3RvcjsiOiLihr4iLCJSaWdodFVwVmVjdG9yQmFyOyI6IuKllCIsIlJpZ2h0VmVjdG9yOyI6IuKHgCIsIlJpZ2h0VmVjdG9yQmFyOyI6IuKlkyIsInJpbmc7Ijoiy5oiLCJyaXNpbmdkb3RzZXE7Ijoi4omTIiwicmxhcnI7Ijoi4oeEIiwicmxoYXI7Ijoi4oeMIiwicmxtOyI6IuKAjyIsInJtb3VzdDsiOiLijrEiLCJybW91c3RhY2hlOyI6IuKOsSIsInJubWlkOyI6IuKrriIsInJvYW5nOyI6IuKfrSIsInJvYXJyOyI6IuKHviIsInJvYnJrOyI6IuKfpyIsInJvcGFyOyI6IuKmhiIsIlJvcGY7Ijoi4oSdIiwicm9wZjsiOiLwnZWjIiwicm9wbHVzOyI6IuKoriIsInJvdGltZXM7Ijoi4qi1IiwiUm91bmRJbXBsaWVzOyI6IuKlsCIsInJwYXI7IjoiKSIsInJwYXJndDsiOiLippQiLCJycHBvbGludDsiOiLiqJIiLCJycmFycjsiOiLih4kiLCJScmlnaHRhcnJvdzsiOiLih5siLCJyc2FxdW87Ijoi4oC6IiwiUnNjcjsiOiLihJsiLCJyc2NyOyI6IvCdk4ciLCJSc2g7Ijoi4oaxIiwicnNoOyI6IuKGsSIsInJzcWI7IjoiXSIsInJzcXVvOyI6IuKAmSIsInJzcXVvcjsiOiLigJkiLCJydGhyZWU7Ijoi4ouMIiwicnRpbWVzOyI6IuKLiiIsInJ0cmk7Ijoi4pa5IiwicnRyaWU7Ijoi4oq1IiwicnRyaWY7Ijoi4pa4IiwicnRyaWx0cmk7Ijoi4qeOIiwiUnVsZURlbGF5ZWQ7Ijoi4qe0IiwicnVsdWhhcjsiOiLipagiLCJyeDsiOiLihJ4iLCJTYWN1dGU7IjoixZoiLCJzYWN1dGU7IjoixZsiLCJzYnF1bzsiOiLigJoiLCJTYzsiOiLiqrwiLCJzYzsiOiLiibsiLCJzY2FwOyI6IuKquCIsIlNjYXJvbjsiOiLFoCIsInNjYXJvbjsiOiLFoSIsInNjY3VlOyI6IuKJvSIsInNjRTsiOiLiqrQiLCJzY2U7Ijoi4qqwIiwiU2NlZGlsOyI6IsWeIiwic2NlZGlsOyI6IsWfIiwiU2NpcmM7IjoixZwiLCJzY2lyYzsiOiLFnSIsInNjbmFwOyI6IuKquiIsInNjbkU7Ijoi4qq2Iiwic2Nuc2ltOyI6IuKLqSIsInNjcG9saW50OyI6IuKokyIsInNjc2ltOyI6IuKJvyIsIlNjeTsiOiLQoSIsInNjeTsiOiLRgSIsInNkb3Q7Ijoi4ouFIiwic2RvdGI7Ijoi4oqhIiwic2RvdGU7Ijoi4qmmIiwic2VhcmhrOyI6IuKkpSIsInNlQXJyOyI6IuKHmCIsInNlYXJyOyI6IuKGmCIsInNlYXJyb3c7Ijoi4oaYIiwic2VjdDsiOiLCpyIsc2VjdDoiwqciLCJzZW1pOyI6IjsiLCJzZXN3YXI7Ijoi4qSpIiwic2V0bWludXM7Ijoi4oiWIiwic2V0bW47Ijoi4oiWIiwic2V4dDsiOiLinLYiLCJTZnI7Ijoi8J2UliIsInNmcjsiOiLwnZSwIiwic2Zyb3duOyI6IuKMoiIsInNoYXJwOyI6IuKZryIsIlNIQ0hjeTsiOiLQqSIsInNoY2hjeTsiOiLRiSIsIlNIY3k7Ijoi0KgiLCJzaGN5OyI6ItGIIiwiU2hvcnREb3duQXJyb3c7Ijoi4oaTIiwiU2hvcnRMZWZ0QXJyb3c7Ijoi4oaQIiwic2hvcnRtaWQ7Ijoi4oijIiwic2hvcnRwYXJhbGxlbDsiOiLiiKUiLCJTaG9ydFJpZ2h0QXJyb3c7Ijoi4oaSIiwiU2hvcnRVcEFycm93OyI6IuKGkSIsInNoeTsiOiLCrSIsc2h5OiLCrSIsIlNpZ21hOyI6Is6jIiwic2lnbWE7Ijoiz4MiLCJzaWdtYWY7Ijoiz4IiLCJzaWdtYXY7Ijoiz4IiLCJzaW07Ijoi4oi8Iiwic2ltZG90OyI6IuKpqiIsInNpbWU7Ijoi4omDIiwic2ltZXE7Ijoi4omDIiwic2ltZzsiOiLiqp4iLCJzaW1nRTsiOiLiqqAiLCJzaW1sOyI6IuKqnSIsInNpbWxFOyI6IuKqnyIsInNpbW5lOyI6IuKJhiIsInNpbXBsdXM7Ijoi4qikIiwic2ltcmFycjsiOiLipbIiLCJzbGFycjsiOiLihpAiLCJTbWFsbENpcmNsZTsiOiLiiJgiLCJzbWFsbHNldG1pbnVzOyI6IuKIliIsInNtYXNocDsiOiLiqLMiLCJzbWVwYXJzbDsiOiLip6QiLCJzbWlkOyI6IuKIoyIsInNtaWxlOyI6IuKMoyIsInNtdDsiOiLiqqoiLCJzbXRlOyI6IuKqrCIsInNtdGVzOyI6IuKqrO+4gCIsIlNPRlRjeTsiOiLQrCIsInNvZnRjeTsiOiLRjCIsInNvbDsiOiIvIiwic29sYjsiOiLip4QiLCJzb2xiYXI7Ijoi4oy/IiwiU29wZjsiOiLwnZWKIiwic29wZjsiOiLwnZWkIiwic3BhZGVzOyI6IuKZoCIsInNwYWRlc3VpdDsiOiLimaAiLCJzcGFyOyI6IuKIpSIsInNxY2FwOyI6IuKKkyIsInNxY2FwczsiOiLiipPvuIAiLCJzcWN1cDsiOiLiipQiLCJzcWN1cHM7Ijoi4oqU77iAIiwiU3FydDsiOiLiiJoiLCJzcXN1YjsiOiLiio8iLCJzcXN1YmU7Ijoi4oqRIiwic3FzdWJzZXQ7Ijoi4oqPIiwic3FzdWJzZXRlcTsiOiLiipEiLCJzcXN1cDsiOiLiipAiLCJzcXN1cGU7Ijoi4oqSIiwic3FzdXBzZXQ7Ijoi4oqQIiwic3FzdXBzZXRlcTsiOiLiipIiLCJzcXU7Ijoi4pahIiwiU3F1YXJlOyI6IuKWoSIsInNxdWFyZTsiOiLilqEiLCJTcXVhcmVJbnRlcnNlY3Rpb247Ijoi4oqTIiwiU3F1YXJlU3Vic2V0OyI6IuKKjyIsIlNxdWFyZVN1YnNldEVxdWFsOyI6IuKKkSIsIlNxdWFyZVN1cGVyc2V0OyI6IuKKkCIsIlNxdWFyZVN1cGVyc2V0RXF1YWw7Ijoi4oqSIiwiU3F1YXJlVW5pb247Ijoi4oqUIiwic3F1YXJmOyI6IuKWqiIsInNxdWY7Ijoi4paqIiwic3JhcnI7Ijoi4oaSIiwiU3NjcjsiOiLwnZKuIiwic3NjcjsiOiLwnZOIIiwic3NldG1uOyI6IuKIliIsInNzbWlsZTsiOiLijKMiLCJzc3RhcmY7Ijoi4ouGIiwiU3RhcjsiOiLii4YiLCJzdGFyOyI6IuKYhiIsInN0YXJmOyI6IuKYhSIsInN0cmFpZ2h0ZXBzaWxvbjsiOiLPtSIsInN0cmFpZ2h0cGhpOyI6Is+VIiwic3RybnM7Ijoiwq8iLCJTdWI7Ijoi4ouQIiwic3ViOyI6IuKKgiIsInN1YmRvdDsiOiLiqr0iLCJzdWJFOyI6IuKrhSIsInN1YmU7Ijoi4oqGIiwic3ViZWRvdDsiOiLiq4MiLCJzdWJtdWx0OyI6IuKrgSIsInN1Ym5FOyI6IuKriyIsInN1Ym5lOyI6IuKKiiIsInN1YnBsdXM7Ijoi4qq/Iiwic3VicmFycjsiOiLipbkiLCJTdWJzZXQ7Ijoi4ouQIiwic3Vic2V0OyI6IuKKgiIsInN1YnNldGVxOyI6IuKKhiIsInN1YnNldGVxcTsiOiLiq4UiLCJTdWJzZXRFcXVhbDsiOiLiioYiLCJzdWJzZXRuZXE7Ijoi4oqKIiwic3Vic2V0bmVxcTsiOiLiq4siLCJzdWJzaW07Ijoi4quHIiwic3Vic3ViOyI6IuKrlSIsInN1YnN1cDsiOiLiq5MiLCJzdWNjOyI6IuKJuyIsInN1Y2NhcHByb3g7Ijoi4qq4Iiwic3VjY2N1cmx5ZXE7Ijoi4om9IiwiU3VjY2VlZHM7Ijoi4om7IiwiU3VjY2VlZHNFcXVhbDsiOiLiqrAiLCJTdWNjZWVkc1NsYW50RXF1YWw7Ijoi4om9IiwiU3VjY2VlZHNUaWxkZTsiOiLiib8iLCJzdWNjZXE7Ijoi4qqwIiwic3VjY25hcHByb3g7Ijoi4qq6Iiwic3VjY25lcXE7Ijoi4qq2Iiwic3VjY25zaW07Ijoi4oupIiwic3VjY3NpbTsiOiLiib8iLCJTdWNoVGhhdDsiOiLiiIsiLCJTdW07Ijoi4oiRIiwic3VtOyI6IuKIkSIsInN1bmc7Ijoi4pmqIiwiU3VwOyI6IuKLkSIsInN1cDsiOiLiioMiLCJzdXAxOyI6IsK5IixzdXAxOiLCuSIsInN1cDI7IjoiwrIiLHN1cDI6IsKyIiwic3VwMzsiOiLCsyIsc3VwMzoiwrMiLCJzdXBkb3Q7Ijoi4qq+Iiwic3VwZHN1YjsiOiLiq5giLCJzdXBFOyI6IuKrhiIsInN1cGU7Ijoi4oqHIiwic3VwZWRvdDsiOiLiq4QiLCJTdXBlcnNldDsiOiLiioMiLCJTdXBlcnNldEVxdWFsOyI6IuKKhyIsInN1cGhzb2w7Ijoi4p+JIiwic3VwaHN1YjsiOiLiq5ciLCJzdXBsYXJyOyI6IuKluyIsInN1cG11bHQ7Ijoi4quCIiwic3VwbkU7Ijoi4quMIiwic3VwbmU7Ijoi4oqLIiwic3VwcGx1czsiOiLiq4AiLCJTdXBzZXQ7Ijoi4ouRIiwic3Vwc2V0OyI6IuKKgyIsInN1cHNldGVxOyI6IuKKhyIsInN1cHNldGVxcTsiOiLiq4YiLCJzdXBzZXRuZXE7Ijoi4oqLIiwic3Vwc2V0bmVxcTsiOiLiq4wiLCJzdXBzaW07Ijoi4quIIiwic3Vwc3ViOyI6IuKrlCIsInN1cHN1cDsiOiLiq5YiLCJzd2FyaGs7Ijoi4qSmIiwic3dBcnI7Ijoi4oeZIiwic3dhcnI7Ijoi4oaZIiwic3dhcnJvdzsiOiLihpkiLCJzd253YXI7Ijoi4qSqIiwic3psaWc7Ijoiw58iLHN6bGlnOiLDnyIsIlRhYjsiOiJcdCIsInRhcmdldDsiOiLijJYiLCJUYXU7IjoizqQiLCJ0YXU7Ijoiz4QiLCJ0YnJrOyI6IuKOtCIsIlRjYXJvbjsiOiLFpCIsInRjYXJvbjsiOiLFpSIsIlRjZWRpbDsiOiLFoiIsInRjZWRpbDsiOiLFoyIsIlRjeTsiOiLQoiIsInRjeTsiOiLRgiIsInRkb3Q7Ijoi4oObIiwidGVscmVjOyI6IuKMlSIsIlRmcjsiOiLwnZSXIiwidGZyOyI6IvCdlLEiLCJ0aGVyZTQ7Ijoi4oi0IiwiVGhlcmVmb3JlOyI6IuKItCIsInRoZXJlZm9yZTsiOiLiiLQiLCJUaGV0YTsiOiLOmCIsInRoZXRhOyI6Is64IiwidGhldGFzeW07Ijoiz5EiLCJ0aGV0YXY7Ijoiz5EiLCJ0aGlja2FwcHJveDsiOiLiiYgiLCJ0aGlja3NpbTsiOiLiiLwiLCJUaGlja1NwYWNlOyI6IuKBn+KAiiIsInRoaW5zcDsiOiLigIkiLCJUaGluU3BhY2U7Ijoi4oCJIiwidGhrYXA7Ijoi4omIIiwidGhrc2ltOyI6IuKIvCIsIlRIT1JOOyI6IsOeIixUSE9STjoiw54iLCJ0aG9ybjsiOiLDviIsdGhvcm46IsO+IiwiVGlsZGU7Ijoi4oi8IiwidGlsZGU7Ijoiy5wiLCJUaWxkZUVxdWFsOyI6IuKJgyIsIlRpbGRlRnVsbEVxdWFsOyI6IuKJhSIsIlRpbGRlVGlsZGU7Ijoi4omIIiwidGltZXM7Ijoiw5ciLHRpbWVzOiLDlyIsInRpbWVzYjsiOiLiiqAiLCJ0aW1lc2JhcjsiOiLiqLEiLCJ0aW1lc2Q7Ijoi4qiwIiwidGludDsiOiLiiK0iLCJ0b2VhOyI6IuKkqCIsInRvcDsiOiLiiqQiLCJ0b3Bib3Q7Ijoi4oy2IiwidG9wY2lyOyI6IuKrsSIsIlRvcGY7Ijoi8J2ViyIsInRvcGY7Ijoi8J2VpSIsInRvcGZvcms7Ijoi4quaIiwidG9zYTsiOiLipKkiLCJ0cHJpbWU7Ijoi4oC0IiwiVFJBREU7Ijoi4oSiIiwidHJhZGU7Ijoi4oSiIiwidHJpYW5nbGU7Ijoi4pa1IiwidHJpYW5nbGVkb3duOyI6IuKWvyIsInRyaWFuZ2xlbGVmdDsiOiLil4MiLCJ0cmlhbmdsZWxlZnRlcTsiOiLiirQiLCJ0cmlhbmdsZXE7Ijoi4omcIiwidHJpYW5nbGVyaWdodDsiOiLilrkiLCJ0cmlhbmdsZXJpZ2h0ZXE7Ijoi4oq1IiwidHJpZG90OyI6IuKXrCIsInRyaWU7Ijoi4omcIiwidHJpbWludXM7Ijoi4qi6IiwiVHJpcGxlRG90OyI6IuKDmyIsInRyaXBsdXM7Ijoi4qi5IiwidHJpc2I7Ijoi4qeNIiwidHJpdGltZTsiOiLiqLsiLCJ0cnBleml1bTsiOiLij6IiLCJUc2NyOyI6IvCdkq8iLCJ0c2NyOyI6IvCdk4kiLCJUU2N5OyI6ItCmIiwidHNjeTsiOiLRhiIsIlRTSGN5OyI6ItCLIiwidHNoY3k7Ijoi0ZsiLCJUc3Ryb2s7IjoixaYiLCJ0c3Ryb2s7IjoixaciLCJ0d2l4dDsiOiLiiawiLCJ0d29oZWFkbGVmdGFycm93OyI6IuKGniIsInR3b2hlYWRyaWdodGFycm93OyI6IuKGoCIsIlVhY3V0ZTsiOiLDmiIsVWFjdXRlOiLDmiIsInVhY3V0ZTsiOiLDuiIsdWFjdXRlOiLDuiIsIlVhcnI7Ijoi4oafIiwidUFycjsiOiLih5EiLCJ1YXJyOyI6IuKGkSIsIlVhcnJvY2lyOyI6IuKliSIsIlVicmN5OyI6ItCOIiwidWJyY3k7Ijoi0Z4iLCJVYnJldmU7IjoixawiLCJ1YnJldmU7Ijoixa0iLCJVY2lyYzsiOiLDmyIsVWNpcmM6IsObIiwidWNpcmM7Ijoiw7siLHVjaXJjOiLDuyIsIlVjeTsiOiLQoyIsInVjeTsiOiLRgyIsInVkYXJyOyI6IuKHhSIsIlVkYmxhYzsiOiLFsCIsInVkYmxhYzsiOiLFsSIsInVkaGFyOyI6IuKlriIsInVmaXNodDsiOiLipb4iLCJVZnI7Ijoi8J2UmCIsInVmcjsiOiLwnZSyIiwiVWdyYXZlOyI6IsOZIixVZ3JhdmU6IsOZIiwidWdyYXZlOyI6IsO5Iix1Z3JhdmU6IsO5IiwidUhhcjsiOiLipaMiLCJ1aGFybDsiOiLihr8iLCJ1aGFycjsiOiLihr4iLCJ1aGJsazsiOiLiloAiLCJ1bGNvcm47Ijoi4oycIiwidWxjb3JuZXI7Ijoi4oycIiwidWxjcm9wOyI6IuKMjyIsInVsdHJpOyI6IuKXuCIsIlVtYWNyOyI6IsWqIiwidW1hY3I7IjoixasiLCJ1bWw7IjoiwqgiLHVtbDoiwqgiLCJVbmRlckJhcjsiOiJfIiwiVW5kZXJCcmFjZTsiOiLij58iLCJVbmRlckJyYWNrZXQ7Ijoi4o61IiwiVW5kZXJQYXJlbnRoZXNpczsiOiLij50iLCJVbmlvbjsiOiLii4MiLCJVbmlvblBsdXM7Ijoi4oqOIiwiVW9nb247IjoixbIiLCJ1b2dvbjsiOiLFsyIsIlVvcGY7Ijoi8J2VjCIsInVvcGY7Ijoi8J2VpiIsIlVwQXJyb3c7Ijoi4oaRIiwiVXBhcnJvdzsiOiLih5EiLCJ1cGFycm93OyI6IuKGkSIsIlVwQXJyb3dCYXI7Ijoi4qSSIiwiVXBBcnJvd0Rvd25BcnJvdzsiOiLih4UiLCJVcERvd25BcnJvdzsiOiLihpUiLCJVcGRvd25hcnJvdzsiOiLih5UiLCJ1cGRvd25hcnJvdzsiOiLihpUiLCJVcEVxdWlsaWJyaXVtOyI6IuKlriIsInVwaGFycG9vbmxlZnQ7Ijoi4oa/IiwidXBoYXJwb29ucmlnaHQ7Ijoi4oa+IiwidXBsdXM7Ijoi4oqOIiwiVXBwZXJMZWZ0QXJyb3c7Ijoi4oaWIiwiVXBwZXJSaWdodEFycm93OyI6IuKGlyIsIlVwc2k7Ijoiz5IiLCJ1cHNpOyI6Is+FIiwidXBzaWg7Ijoiz5IiLCJVcHNpbG9uOyI6Is6lIiwidXBzaWxvbjsiOiLPhSIsIlVwVGVlOyI6IuKKpSIsIlVwVGVlQXJyb3c7Ijoi4oalIiwidXB1cGFycm93czsiOiLih4giLCJ1cmNvcm47Ijoi4oydIiwidXJjb3JuZXI7Ijoi4oydIiwidXJjcm9wOyI6IuKMjiIsIlVyaW5nOyI6IsWuIiwidXJpbmc7Ijoixa8iLCJ1cnRyaTsiOiLil7kiLCJVc2NyOyI6IvCdkrAiLCJ1c2NyOyI6IvCdk4oiLCJ1dGRvdDsiOiLii7AiLCJVdGlsZGU7IjoixagiLCJ1dGlsZGU7IjoixakiLCJ1dHJpOyI6IuKWtSIsInV0cmlmOyI6IuKWtCIsInV1YXJyOyI6IuKHiCIsIlV1bWw7Ijoiw5wiLFV1bWw6IsOcIiwidXVtbDsiOiLDvCIsdXVtbDoiw7wiLCJ1d2FuZ2xlOyI6IuKmpyIsInZhbmdydDsiOiLippwiLCJ2YXJlcHNpbG9uOyI6Is+1IiwidmFya2FwcGE7Ijoiz7AiLCJ2YXJub3RoaW5nOyI6IuKIhSIsInZhcnBoaTsiOiLPlSIsInZhcnBpOyI6Is+WIiwidmFycHJvcHRvOyI6IuKInSIsInZBcnI7Ijoi4oeVIiwidmFycjsiOiLihpUiLCJ2YXJyaG87Ijoiz7EiLCJ2YXJzaWdtYTsiOiLPgiIsInZhcnN1YnNldG5lcTsiOiLiiorvuIAiLCJ2YXJzdWJzZXRuZXFxOyI6IuKri++4gCIsInZhcnN1cHNldG5lcTsiOiLiiovvuIAiLCJ2YXJzdXBzZXRuZXFxOyI6IuKrjO+4gCIsInZhcnRoZXRhOyI6Is+RIiwidmFydHJpYW5nbGVsZWZ0OyI6IuKKsiIsInZhcnRyaWFuZ2xlcmlnaHQ7Ijoi4oqzIiwiVmJhcjsiOiLiq6siLCJ2QmFyOyI6IuKrqCIsInZCYXJ2OyI6IuKrqSIsIlZjeTsiOiLQkiIsInZjeTsiOiLQsiIsIlZEYXNoOyI6IuKKqyIsIlZkYXNoOyI6IuKKqSIsInZEYXNoOyI6IuKKqCIsInZkYXNoOyI6IuKKoiIsIlZkYXNobDsiOiLiq6YiLCJWZWU7Ijoi4ouBIiwidmVlOyI6IuKIqCIsInZlZWJhcjsiOiLiirsiLCJ2ZWVlcTsiOiLiiZoiLCJ2ZWxsaXA7Ijoi4ouuIiwiVmVyYmFyOyI6IuKAliIsInZlcmJhcjsiOiJ8IiwiVmVydDsiOiLigJYiLCJ2ZXJ0OyI6InwiLCJWZXJ0aWNhbEJhcjsiOiLiiKMiLCJWZXJ0aWNhbExpbmU7IjoifCIsIlZlcnRpY2FsU2VwYXJhdG9yOyI6IuKdmCIsIlZlcnRpY2FsVGlsZGU7Ijoi4omAIiwiVmVyeVRoaW5TcGFjZTsiOiLigIoiLCJWZnI7Ijoi8J2UmSIsInZmcjsiOiLwnZSzIiwidmx0cmk7Ijoi4oqyIiwidm5zdWI7Ijoi4oqC4oOSIiwidm5zdXA7Ijoi4oqD4oOSIiwiVm9wZjsiOiLwnZWNIiwidm9wZjsiOiLwnZWnIiwidnByb3A7Ijoi4oidIiwidnJ0cmk7Ijoi4oqzIiwiVnNjcjsiOiLwnZKxIiwidnNjcjsiOiLwnZOLIiwidnN1Ym5FOyI6IuKri++4gCIsInZzdWJuZTsiOiLiiorvuIAiLCJ2c3VwbkU7Ijoi4quM77iAIiwidnN1cG5lOyI6IuKKi++4gCIsIlZ2ZGFzaDsiOiLiiqoiLCJ2emlnemFnOyI6IuKmmiIsIldjaXJjOyI6IsW0Iiwid2NpcmM7IjoixbUiLCJ3ZWRiYXI7Ijoi4qmfIiwiV2VkZ2U7Ijoi4ouAIiwid2VkZ2U7Ijoi4oinIiwid2VkZ2VxOyI6IuKJmSIsIndlaWVycDsiOiLihJgiLCJXZnI7Ijoi8J2UmiIsIndmcjsiOiLwnZS0IiwiV29wZjsiOiLwnZWOIiwid29wZjsiOiLwnZWoIiwid3A7Ijoi4oSYIiwid3I7Ijoi4omAIiwid3JlYXRoOyI6IuKJgCIsIldzY3I7Ijoi8J2SsiIsIndzY3I7Ijoi8J2TjCIsInhjYXA7Ijoi4ouCIiwieGNpcmM7Ijoi4pevIiwieGN1cDsiOiLii4MiLCJ4ZHRyaTsiOiLilr0iLCJYZnI7Ijoi8J2UmyIsInhmcjsiOiLwnZS1IiwieGhBcnI7Ijoi4p+6IiwieGhhcnI7Ijoi4p+3IiwiWGk7Ijoizp4iLCJ4aTsiOiLOviIsInhsQXJyOyI6IuKfuCIsInhsYXJyOyI6IuKftSIsInhtYXA7Ijoi4p+8IiwieG5pczsiOiLii7siLCJ4b2RvdDsiOiLiqIAiLCJYb3BmOyI6IvCdlY8iLCJ4b3BmOyI6IvCdlakiLCJ4b3BsdXM7Ijoi4qiBIiwieG90aW1lOyI6IuKogiIsInhyQXJyOyI6IuKfuSIsInhyYXJyOyI6IuKftiIsIlhzY3I7Ijoi8J2SsyIsInhzY3I7Ijoi8J2TjSIsInhzcWN1cDsiOiLiqIYiLCJ4dXBsdXM7Ijoi4qiEIiwieHV0cmk7Ijoi4pazIiwieHZlZTsiOiLii4EiLCJ4d2VkZ2U7Ijoi4ouAIiwiWWFjdXRlOyI6IsOdIixZYWN1dGU6IsOdIiwieWFjdXRlOyI6IsO9Iix5YWN1dGU6IsO9IiwiWUFjeTsiOiLQryIsInlhY3k7Ijoi0Y8iLCJZY2lyYzsiOiLFtiIsInljaXJjOyI6IsW3IiwiWWN5OyI6ItCrIiwieWN5OyI6ItGLIiwieWVuOyI6IsKlIix5ZW46IsKlIiwiWWZyOyI6IvCdlJwiLCJ5ZnI7Ijoi8J2UtiIsIllJY3k7Ijoi0IciLCJ5aWN5OyI6ItGXIiwiWW9wZjsiOiLwnZWQIiwieW9wZjsiOiLwnZWqIiwiWXNjcjsiOiLwnZK0IiwieXNjcjsiOiLwnZOOIiwiWVVjeTsiOiLQriIsInl1Y3k7Ijoi0Y4iLCJZdW1sOyI6IsW4IiwieXVtbDsiOiLDvyIseXVtbDoiw78iLCJaYWN1dGU7IjoixbkiLCJ6YWN1dGU7IjoixboiLCJaY2Fyb247Ijoixb0iLCJ6Y2Fyb247Ijoixb4iLCJaY3k7Ijoi0JciLCJ6Y3k7Ijoi0LciLCJaZG90OyI6IsW7IiwiemRvdDsiOiLFvCIsInplZXRyZjsiOiLihKgiLCJaZXJvV2lkdGhTcGFjZTsiOiLigIsiLCJaZXRhOyI6Is6WIiwiemV0YTsiOiLOtiIsIlpmcjsiOiLihKgiLCJ6ZnI7Ijoi8J2UtyIsIlpIY3k7Ijoi0JYiLCJ6aGN5OyI6ItC2IiwiemlncmFycjsiOiLih50iLCJab3BmOyI6IuKEpCIsInpvcGY7Ijoi8J2VqyIsIlpzY3I7Ijoi8J2StSIsInpzY3I7Ijoi8J2TjyIsInp3ajsiOiLigI0iLCJ6d25qOyI6IuKAjCJ9O2Z1bmN0aW9uIFhyKGUsdCl7aWYoIShlLmxlbmd0aDx0Lmxlbmd0aCkpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKWlmKGVbbl0hPT10W25dKXJldHVybjtyZXR1cm4gMX19ZnVuY3Rpb24gWXIoZSx0KXtmb3IodmFyIG49IiI7MDx0OykxPT0oMSZ0KSYmKG4rPWUpLGUrPWUsdD4+Pj0xO3JldHVybiBufXZhciBRcj0iYSIuY2hhckNvZGVBdCgwKSxacj0ieiIuY2hhckNvZGVBdCgwKSxlaT0iQSIuY2hhckNvZGVBdCgwKSx0aT0iWiIuY2hhckNvZGVBdCgwKSxuaT0iMCIuY2hhckNvZGVBdCgwKSxyaT0iOSIuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBpaShlLHQpe2U9ZS5jaGFyQ29kZUF0KHQpO3JldHVybiBRcjw9ZSYmZTw9WnJ8fGVpPD1lJiZlPD10aXx8bmk8PWUmJmU8PXJpfWZ1bmN0aW9uIGFpKGUpe3JldHVybiB2b2lkIDAhPT1lfXNpLnByb3RvdHlwZS5pc0FwcGxpY2FibGU9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sc2kucHJvdG90eXBlLmdldElkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWR9LHNpLnByb3RvdHlwZS5wcm92aWRlVGFncz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl90YWdzfSxzaS5wcm90b3R5cGUucHJvdmlkZUF0dHJpYnV0ZXM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXtuLnB1c2goZSl9dmFyIG49W10sZT10aGlzLl90YWdNYXBbZS50b0xvd2VyQ2FzZSgpXTtyZXR1cm4gZSYmZS5hdHRyaWJ1dGVzLmZvckVhY2godCksdGhpcy5fZ2xvYmFsQXR0cmlidXRlcy5mb3JFYWNoKHQpLG59LHNpLnByb3RvdHlwZS5wcm92aWRlVmFsdWVzPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlKXtlLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5uYW1lLnRvTG93ZXJDYXNlKCk9PT10JiYoZS52YWx1ZXMmJmUudmFsdWVzLmZvckVhY2goZnVuY3Rpb24oZSl7aS5wdXNoKGUpfSksZS52YWx1ZVNldCYmci5fdmFsdWVTZXRNYXBbZS52YWx1ZVNldF0mJnIuX3ZhbHVlU2V0TWFwW2UudmFsdWVTZXRdLmZvckVhY2goZnVuY3Rpb24oZSl7aS5wdXNoKGUpfSkpfSl9dmFyIHI9dGhpcyxpPVtdLGU9KHQ9dC50b0xvd2VyQ2FzZSgpLHRoaXMuX3RhZ01hcFtlLnRvTG93ZXJDYXNlKCldKTtyZXR1cm4gZSYmbihlLmF0dHJpYnV0ZXMpLG4odGhpcy5fZ2xvYmFsQXR0cmlidXRlcyksaX07dmFyIG9pPXNpO2Z1bmN0aW9uIHNpKGUsdCl7dmFyIG49dGhpczt0aGlzLmlkPWUsdGhpcy5fdGFncz1bXSx0aGlzLl90YWdNYXA9e30sdGhpcy5fdmFsdWVTZXRNYXA9e30sdGhpcy5fdGFncz10LnRhZ3N8fFtdLHRoaXMuX2dsb2JhbEF0dHJpYnV0ZXM9dC5nbG9iYWxBdHRyaWJ1dGVzfHxbXSx0aGlzLl90YWdzLmZvckVhY2goZnVuY3Rpb24oZSl7bi5fdGFnTWFwW2UubmFtZS50b0xvd2VyQ2FzZSgpXT1lfSksdC52YWx1ZVNldHMmJnQudmFsdWVTZXRzLmZvckVhY2goZnVuY3Rpb24oZSl7bi5fdmFsdWVTZXRNYXBbZS5uYW1lXT1lLnZhbHVlc30pfWZ1bmN0aW9uIGxpKGUsdCxuKXt2b2lkIDA9PT10JiYodD17fSk7dmFyIHIsaT17a2luZDpuPyJtYXJrZG93biI6InBsYWludGV4dCIsdmFsdWU6IiJ9O2lmKCFlLmRlc2NyaXB0aW9ufHwhMT09PXQuZG9jdW1lbnRhdGlvbnx8KHI9ZnVuY3Rpb24oZSl7aWYoZSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTplfTp7a2luZDoibWFya2Rvd24iLHZhbHVlOmUudmFsdWV9fShlLmRlc2NyaXB0aW9uKSkmJihpLnZhbHVlKz1yLnZhbHVlKSxlLnJlZmVyZW5jZXMmJjA8ZS5yZWZlcmVuY2VzLmxlbmd0aCYmITEhPT10LnJlZmVyZW5jZXMmJihpLnZhbHVlLmxlbmd0aCYmKGkudmFsdWUrPSJcblxuIiksaS52YWx1ZSs9bj9lLnJlZmVyZW5jZXMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiJbIitlLm5hbWUrIl0oIitlLnVybCsiKSJ9KS5qb2luKCIgfCAiKTplLnJlZmVyZW5jZXMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWUrIjogIitlLnVybH0pLmpvaW4oIlxuIikpLCIiIT09aS52YWx1ZSlyZXR1cm4gaX1mdW5jdGlvbiBoaShlLG8scyxsKXtyZXR1cm4gbmV3KHM9c3x8UHJvbWlzZSkoZnVuY3Rpb24obix0KXtmdW5jdGlvbiByKGUpe3RyeXthKGwubmV4dChlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gaShlKXt0cnl7YShsLnRocm93KGUpKX1jYXRjaChlKXt0KGUpfX1mdW5jdGlvbiBhKGUpe3ZhciB0O2UuZG9uZT9uKGUudmFsdWUpOigodD1lLnZhbHVlKWluc3RhbmNlb2Ygcz90Om5ldyBzKGZ1bmN0aW9uKGUpe2UodCl9KSkudGhlbihyLGkpfWEoKGw9bC5hcHBseShlLG98fFtdKSkubmV4dCgpKX0pfWZ1bmN0aW9uIGNpKHIsaSl7dmFyIGEsbyxzLGw9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmc1swXSl0aHJvdyBzWzFdO3JldHVybiBzWzFdfSx0cnlzOltdLG9wczpbXX0sZT17bmV4dDp0KDApLHRocm93OnQoMSkscmV0dXJuOnQoMil9O3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGU7ZnVuY3Rpb24gdChuKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9W24sZV07aWYoYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtsOyl0cnl7aWYoYT0xLG8mJihzPTImdFswXT9vLnJldHVybjp0WzBdP28udGhyb3d8fCgocz1vLnJldHVybikmJnMuY2FsbChvKSwwKTpvLm5leHQpJiYhKHM9cy5jYWxsKG8sdFsxXSkpLmRvbmUpcmV0dXJuIHM7c3dpdGNoKG89MCwodD1zP1syJnRbMF0scy52YWx1ZV06dClbMF0pe2Nhc2UgMDpjYXNlIDE6cz10O2JyZWFrO2Nhc2UgNDpyZXR1cm4gbC5sYWJlbCsrLHt2YWx1ZTp0WzFdLGRvbmU6ITF9O2Nhc2UgNTpsLmxhYmVsKyssbz10WzFdLHQ9WzBdO2NvbnRpbnVlO2Nhc2UgNzp0PWwub3BzLnBvcCgpLGwudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEocz0wPChzPWwudHJ5cykubGVuZ3RoJiZzW3MubGVuZ3RoLTFdKSYmKDY9PT10WzBdfHwyPT09dFswXSkpe2w9MDtjb250aW51ZX1pZigzPT09dFswXSYmKCFzfHx0WzFdPnNbMF0mJnRbMV08c1szXSkpe2wubGFiZWw9dFsxXTticmVha31pZig2PT09dFswXSYmbC5sYWJlbDxzWzFdKXtsLmxhYmVsPXNbMV0scz10O2JyZWFrfWlmKHMmJmwubGFiZWw8c1syXSl7bC5sYWJlbD1zWzJdLGwub3BzLnB1c2godCk7YnJlYWt9c1syXSYmbC5vcHMucG9wKCksbC50cnlzLnBvcCgpO2NvbnRpbnVlfXQ9aS5jYWxsKHIsbCl9Y2F0Y2goZSl7dD1bNixlXSxvPTB9ZmluYWxseXthPXM9MH1pZig1JnRbMF0pdGhyb3cgdFsxXTtyZXR1cm57dmFsdWU6dFswXT90WzFdOnZvaWQgMCxkb25lOiEwfX19fXVpLnByb3RvdHlwZS5vbkh0bWxBdHRyaWJ1dGVWYWx1ZT1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZigic3JjIj09PXR8fCJocmVmIj09PXQpcmV0dXJuITA7ZT1iaVtlXTtpZihlKXJldHVybiJzdHJpbmciPT10eXBlb2YgZT9lPT09dDotMSE9PWUuaW5kZXhPZih0KTtyZXR1cm4hMX0oZS50YWcsZS5hdHRyaWJ1dGUpfHx0aGlzLmF0cmlidXRlQ29tcGxldGlvbnMucHVzaChlKX0sdWkucHJvdG90eXBlLmNvbXB1dGVDb21wbGV0aW9ucz1mdW5jdGlvbihkLHUpe3JldHVybiBoaSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbixyLGksYSxvLHMsbCxoLGM7cmV0dXJuIGNpKHRoaXMsZnVuY3Rpb24oZSl7c3dpdGNoKGUubGFiZWwpe2Nhc2UgMDpuPXtpdGVtczpbXSxpc0luY29tcGxldGU6ITF9LHI9MCxpPXRoaXMuYXRyaWJ1dGVDb21wbGV0aW9ucyxlLmxhYmVsPTE7Y2FzZSAxOnJldHVybiByPGkubGVuZ3RoPyhhPWlbcl0sdD1kLmdldFRleHQoYS5yYW5nZSksZnVuY3Rpb24oZSl7aWYoWHIoZSwiaHR0cCIpfHxYcihlLCJodHRwcyIpfHxYcihlLCIvLyIpKXJldHVybiExO3JldHVybiEwfShvPVhyKHQsIiciKXx8WHIodCwnIicpP3Quc2xpY2UoMSwtMSk6dCk/Ii4iIT09byYmIi4uIiE9PW8/WzMsMl06KG4uaXNJbmNvbXBsZXRlPSEwLFszLDRdKTpbMyw0XSk6WzMsNV07Y2FzZSAyOnJldHVybiBzPWZ1bmN0aW9uKGUsdCxuKXtlPWUubGFzdEluZGV4T2YoIi8iKTt7dmFyIHI7dD0tMT09PWU/ZnVuY3Rpb24oZSx0LG4pe3Q9bWkoZS5zdGFydCx0KSxlPW1pKGUuZW5kLG4pO3JldHVybiB2bi5jcmVhdGUodCxlKX0obiwxLC0xKToodD10LnNsaWNlKGUrMSksZT1taShuLmVuZCwtMS10Lmxlbmd0aCksdD10LmluZGV4T2YoIiAiKSxyPXZvaWQgMCxyPS0xIT09dD9taShlLHQpOm1pKG4uZW5kLC0xKSx2bi5jcmVhdGUoZSxyKSl9cmV0dXJuIHR9KGEudmFsdWUsbyxhLnJhbmdlKSxbNCx0aGlzLnByb3ZpZGVQYXRoU3VnZ2VzdGlvbnMoYS52YWx1ZSxzLGQsdSldO2Nhc2UgMzpmb3Iocz1lLnNlbnQoKSxsPTAsaD1zO2w8aC5sZW5ndGg7bCsrKWM9aFtsXSxuLml0ZW1zLnB1c2goYyk7ZS5sYWJlbD00O2Nhc2UgNDpyZXR1cm4gcisrLFszLDFdO2Nhc2UgNTpyZXR1cm5bMixuXX12YXIgdH0pfSl9LHVpLnByb3RvdHlwZS5wcm92aWRlUGF0aFN1Z2dlc3Rpb25zPWZ1bmN0aW9uKGQsdSxwLG0pe3JldHVybiBoaSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgaSxhLG8scyxsLGgsYztyZXR1cm4gY2kodGhpcyxmdW5jdGlvbihlKXtzd2l0Y2goZS5sYWJlbCl7Y2FzZSAwOmlmKGk9ZC5zdWJzdHJpbmcoMCxkLmxhc3RJbmRleE9mKCIvIikrMSksIShpPW0ucmVzb2x2ZVJlZmVyZW5jZShpfHwiLiIscC51cmkpKSlyZXR1cm5bMyw0XTtlLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBlLnRyeXMucHVzaChbMSwzLCw0XSksYT1bXSxbNCx0aGlzLnJlYWREaXJlY3RvcnkoaSldO2Nhc2UgMjpmb3Iobz1lLnNlbnQoKSxzPTAsbD1vO3M8bC5sZW5ndGg7cysrKWM9bFtzXSxoPWNbMF0sYz1jWzFdLGguY2hhckNvZGVBdCgwKSE9PXBpJiZhLnB1c2goKHQ9aCxuPWM9PT12ci5EaXJlY3Rvcnkscj11LG4/e2xhYmVsOnQrPSIvIixraW5kOkduLkZvbGRlcix0ZXh0RWRpdDpTbi5yZXBsYWNlKHIsdCksY29tbWFuZDp7dGl0bGU6IlN1Z2dlc3QiLGNvbW1hbmQ6ImVkaXRvci5hY3Rpb24udHJpZ2dlclN1Z2dlc3QifX06e2xhYmVsOnQsa2luZDpHbi5GaWxlLHRleHRFZGl0OlNuLnJlcGxhY2Uocix0KX0pKTtyZXR1cm5bMixhXTtjYXNlIDM6cmV0dXJuIGUuc2VudCgpLFszLDRdO2Nhc2UgNDpyZXR1cm5bMixbXV19dmFyIHQsbixyfSl9KX07dmFyIGRpPXVpO2Z1bmN0aW9uIHVpKGUpe3RoaXMucmVhZERpcmVjdG9yeT1lLHRoaXMuYXRyaWJ1dGVDb21wbGV0aW9ucz1bXX12YXIgcGk9Ii4iLmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gbWkoZSx0KXtyZXR1cm4gd24uY3JlYXRlKGUubGluZSxlLmNoYXJhY3Rlcit0KX1mdW5jdGlvbiBmaShlLG8scyxsKXtyZXR1cm4gbmV3KHM9c3x8UHJvbWlzZSkoZnVuY3Rpb24obix0KXtmdW5jdGlvbiByKGUpe3RyeXthKGwubmV4dChlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gaShlKXt0cnl7YShsLnRocm93KGUpKX1jYXRjaChlKXt0KGUpfX1mdW5jdGlvbiBhKGUpe3ZhciB0O2UuZG9uZT9uKGUudmFsdWUpOigodD1lLnZhbHVlKWluc3RhbmNlb2Ygcz90Om5ldyBzKGZ1bmN0aW9uKGUpe2UodCl9KSkudGhlbihyLGkpfWEoKGw9bC5hcHBseShlLG98fFtdKSkubmV4dCgpKX0pfWZ1bmN0aW9uIGdpKHIsaSl7dmFyIGEsbyxzLGw9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmc1swXSl0aHJvdyBzWzFdO3JldHVybiBzWzFdfSx0cnlzOltdLG9wczpbXX0sZT17bmV4dDp0KDApLHRocm93OnQoMSkscmV0dXJuOnQoMil9O3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGU7ZnVuY3Rpb24gdChuKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9W24sZV07aWYoYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtsOyl0cnl7aWYoYT0xLG8mJihzPTImdFswXT9vLnJldHVybjp0WzBdP28udGhyb3d8fCgocz1vLnJldHVybikmJnMuY2FsbChvKSwwKTpvLm5leHQpJiYhKHM9cy5jYWxsKG8sdFsxXSkpLmRvbmUpcmV0dXJuIHM7c3dpdGNoKG89MCwodD1zP1syJnRbMF0scy52YWx1ZV06dClbMF0pe2Nhc2UgMDpjYXNlIDE6cz10O2JyZWFrO2Nhc2UgNDpyZXR1cm4gbC5sYWJlbCsrLHt2YWx1ZTp0WzFdLGRvbmU6ITF9O2Nhc2UgNTpsLmxhYmVsKyssbz10WzFdLHQ9WzBdO2NvbnRpbnVlO2Nhc2UgNzp0PWwub3BzLnBvcCgpLGwudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEocz0wPChzPWwudHJ5cykubGVuZ3RoJiZzW3MubGVuZ3RoLTFdKSYmKDY9PT10WzBdfHwyPT09dFswXSkpe2w9MDtjb250aW51ZX1pZigzPT09dFswXSYmKCFzfHx0WzFdPnNbMF0mJnRbMV08c1szXSkpe2wubGFiZWw9dFsxXTticmVha31pZig2PT09dFswXSYmbC5sYWJlbDxzWzFdKXtsLmxhYmVsPXNbMV0scz10O2JyZWFrfWlmKHMmJmwubGFiZWw8c1syXSl7bC5sYWJlbD1zWzJdLGwub3BzLnB1c2godCk7YnJlYWt9c1syXSYmbC5vcHMucG9wKCksbC50cnlzLnBvcCgpO2NvbnRpbnVlfXQ9aS5jYWxsKHIsbCl9Y2F0Y2goZSl7dD1bNixlXSxvPTB9ZmluYWxseXthPXM9MH1pZig1JnRbMF0pdGhyb3cgdFsxXTtyZXR1cm57dmFsdWU6dFswXT90WzFdOnZvaWQgMCxkb25lOiEwfX19fXZhciBiaT17YToiaHJlZiIsYXJlYToiaHJlZiIsYm9keToiYmFja2dyb3VuZCIsZGVsOiJjaXRlIixmb3JtOiJhY3Rpb24iLGZyYW1lOlsic3JjIiwibG9uZ2Rlc2MiXSxpbWc6WyJzcmMiLCJsb25nZGVzYyJdLGluczoiY2l0ZSIsbGluazoiaHJlZiIsb2JqZWN0OiJkYXRhIixxOiJjaXRlIixzY3JpcHQ6InNyYyIsYXVkaW86InNyYyIsYnV0dG9uOiJmb3JtYWN0aW9uIixjb21tYW5kOiJpY29uIixlbWJlZDoic3JjIixodG1sOiJtYW5pZmVzdCIsaW5wdXQ6WyJzcmMiLCJmb3JtYWN0aW9uIl0sc291cmNlOiJzcmMiLHRyYWNrOiJzcmMiLHZpZGVvOlsic3JjIiwicG9zdGVyIl19LF9pPVBuLHdpPSh2aS5wcm90b3R5cGUuc2V0Q29tcGxldGlvblBhcnRpY2lwYW50cz1mdW5jdGlvbihlKXt0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9ZXx8W119LHZpLnByb3RvdHlwZS5kb0NvbXBsZXRlMj1mdW5jdGlvbihhLG8scyxsLGgpe3JldHVybiBmaSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdCxuLHIsaTtyZXR1cm4gZ2kodGhpcyxmdW5jdGlvbihlKXtzd2l0Y2goZS5sYWJlbCl7Y2FzZSAwOmlmKCF0aGlzLmxzT3B0aW9ucy5maWxlU3lzdGVtUHJvdmlkZXJ8fCF0aGlzLmxzT3B0aW9ucy5maWxlU3lzdGVtUHJvdmlkZXIucmVhZERpcmVjdG9yeSlyZXR1cm5bMix0aGlzLmRvQ29tcGxldGUoYSxvLHMsaCldO3Q9bmV3IGRpKHRoaXMubHNPcHRpb25zLmZpbGVTeXN0ZW1Qcm92aWRlci5yZWFkRGlyZWN0b3J5KSxuPXRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cyx0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9W3RdLmNvbmNhdChuKSxyPXRoaXMuZG9Db21wbGV0ZShhLG8scyxoKSxlLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBlLnRyeXMucHVzaChbMSwsMyw0XSksWzQsdC5jb21wdXRlQ29tcGxldGlvbnMoYSxsKV07Y2FzZSAyOnJldHVybiBpPWUuc2VudCgpLFsyLHtpc0luY29tcGxldGU6ci5pc0luY29tcGxldGV8fGkuaXNJbmNvbXBsZXRlLGl0ZW1zOmkuaXRlbXMuY29uY2F0KHIuaXRlbXMpfV07Y2FzZSAzOnJldHVybiB0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9bixbN107Y2FzZSA0OnJldHVyblsyXX19KX0pfSx2aS5wcm90b3R5cGUuZG9Db21wbGV0ZT1mdW5jdGlvbihlLHQsbixyKXtlPXRoaXMuX2RvQ29tcGxldGUoZSx0LG4scik7cmV0dXJuIHRoaXMuY29udmVydENvbXBsZXRpb25MaXN0KGUpfSx2aS5wcm90b3R5cGUuX2RvQ29tcGxldGU9ZnVuY3Rpb24ocCxtLHYsdSl7dmFyIGY9e2lzSW5jb21wbGV0ZTohMSxpdGVtczpbXX0seT10aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHMsVD10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGFQcm92aWRlcnMoKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXNBcHBsaWNhYmxlKHAubGFuZ3VhZ2VJZCkmJighdXx8ITEhPT11W2UuZ2V0SWQoKV0pfSksaz10aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSxnPXAuZ2V0VGV4dCgpLGI9cC5vZmZzZXRBdChtKSxTPXYuZmluZE5vZGVCZWZvcmUoYik7aWYoIVMpcmV0dXJuIGY7dmFyIEMsdD1GcihnLFMuc3RhcnQpLF89IiI7ZnVuY3Rpb24gdyhlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1iKSx7c3RhcnQ6cC5wb3NpdGlvbkF0KGU9YjxlP2I6ZSksZW5kOnAucG9zaXRpb25BdCh0KX19ZnVuY3Rpb24gbihlLHQpe3ZhciBuPXcoZSx0KTtyZXR1cm4gVC5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UucHJvdmlkZVRhZ3MoKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2YuaXRlbXMucHVzaCh7bGFiZWw6ZS5uYW1lLGtpbmQ6R24uUHJvcGVydHksZG9jdW1lbnRhdGlvbjpsaShlLHZvaWQgMCxrKSx0ZXh0RWRpdDpTbi5yZXBsYWNlKG4sZS5uYW1lKSxpbnNlcnRUZXh0Rm9ybWF0OkpuLlBsYWluVGV4dH0pfSl9KSxmfWZ1bmN0aW9uIGMoZSl7Zm9yKHZhciB0PWU7MDx0Oyl7dmFyIG49Zy5jaGFyQXQodC0xKTtpZigwPD0iXG5cciIuaW5kZXhPZihuKSlyZXR1cm4gZy5zdWJzdHJpbmcodCxlKTtpZigheWkobikpcmV0dXJuIG51bGw7dC0tfXJldHVybiBnLnN1YnN0cmluZygwLGUpfWZ1bmN0aW9uIHIoZSx0LG4pe3ZhciByPXcoZSxuPXZvaWQgMD09PW4/YjpuKSxpPVRpKGcsbixSLldpdGhpbkVuZFRhZyxNLkVuZFRhZ0Nsb3NlKT8iIjoiPiIsYT1TO2Zvcih0JiYoYT1hLnBhcmVudCk7YTspe3ZhciBvLHMsbCxoPWEudGFnO2lmKGgmJighYS5jbG9zZWR8fGEuZW5kVGFnU3RhcnQmJmEuZW5kVGFnU3RhcnQ+YikpcmV0dXJuIG89e2xhYmVsOiIvIitoLGtpbmQ6R24uUHJvcGVydHksZmlsdGVyVGV4dDoiLyIraCx0ZXh0RWRpdDpTbi5yZXBsYWNlKHIsIi8iK2graSksaW5zZXJ0VGV4dEZvcm1hdDpKbi5QbGFpblRleHR9LGw9YyhhLnN0YXJ0KSxzPWMoZS0xKSxudWxsIT09bCYmbnVsbCE9PXMmJmwhPT1zJiYobD1sKyI8LyIraCtpLG8udGV4dEVkaXQ9U24ucmVwbGFjZSh3KGUtMS1zLmxlbmd0aCksbCksby5maWx0ZXJUZXh0PXMrIjwvIitoKSxmLml0ZW1zLnB1c2gobyksZjthPWEucGFyZW50fXJldHVybiB0fHxULmZvckVhY2goZnVuY3Rpb24oZSl7ZS5wcm92aWRlVGFncygpLmZvckVhY2goZnVuY3Rpb24oZSl7Zi5pdGVtcy5wdXNoKHtsYWJlbDoiLyIrZS5uYW1lLGtpbmQ6R24uUHJvcGVydHksZG9jdW1lbnRhdGlvbjpsaShlLHZvaWQgMCxrKSxmaWx0ZXJUZXh0OiIvIitlLm5hbWUraSx0ZXh0RWRpdDpTbi5yZXBsYWNlKHIsIi8iK2UubmFtZStpKSxpbnNlcnRUZXh0Rm9ybWF0OkpuLlBsYWluVGV4dH0pfSl9KSxmfWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm4gbihlLHQpLHIoZSwhMCx0KSxmfWZ1bmN0aW9uIGEoZSx0KXt2b2lkIDA9PT10JiYodD1iKTtmb3IodmFyIG49YjtuPHQmJiI8IiE9PWdbbl07KW4rKzt2YXIgcixpPWcuc3Vic3RyaW5nKGUsdCksYT13KGUsbiksbz0iIixzPShUaShnLHQsUi5BZnRlckF0dHJpYnV0ZU5hbWUsTS5EZWxpbWl0ZXJBc3NpZ24pfHwoZT1udWxsIT09KGU9bnVsbD09dT92b2lkIDA6dS5hdHRyaWJ1dGVEZWZhdWx0VmFsdWUpJiZ2b2lkIDAhPT1lP2U6ImRvdWJsZXF1b3RlcyIsbz0iZW1wdHkiPT09ZT8iPSQxIjoic2luZ2xlcXVvdGVzIj09PWU/Ij0nJDEnIjonPSIkMSInKSxyPU9iamVjdC5jcmVhdGUobnVsbCksUy5hdHRyaWJ1dGVOYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JbZV09ITB9KSxyKSxjPShzW2ldPSExLFQuZm9yRWFjaChmdW5jdGlvbihlKXtlLnByb3ZpZGVBdHRyaWJ1dGVzKF8pLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQsbjtzW2UubmFtZV18fChzW2UubmFtZV09ITAsdD1lLm5hbWUsInYiIT09ZS52YWx1ZVNldCYmby5sZW5ndGgmJih0Kz1vLCFlLnZhbHVlU2V0JiYic3R5bGUiIT09ZS5uYW1lfHwobj17dGl0bGU6IlN1Z2dlc3QiLGNvbW1hbmQ6ImVkaXRvci5hY3Rpb24udHJpZ2dlclN1Z2dlc3QifSkpLGYuaXRlbXMucHVzaCh7bGFiZWw6ZS5uYW1lLGtpbmQ6ImhhbmRsZXIiPT09ZS52YWx1ZVNldD9Hbi5GdW5jdGlvbjpHbi5WYWx1ZSxkb2N1bWVudGF0aW9uOmxpKGUsdm9pZCAwLGspLHRleHRFZGl0OlNuLnJlcGxhY2UoYSx0KSxpbnNlcnRUZXh0Rm9ybWF0OkpuLlNuaXBwZXQsY29tbWFuZDpufSkpfSl9KSxhKSxkPXMsbD0iZGF0YS0iLGg9e307cmV0dXJuIGhbbF09bCsnJDE9IiQyIicsdiYmdi5yb290cy5mb3JFYWNoKGZ1bmN0aW9uIGUodCl7dC5hdHRyaWJ1dGVOYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyFYcihlLGwpfHxoW2VdfHxkW2VdfHwoaFtlXT1lKyc9IiQxIicpfSksdC5jaGlsZHJlbi5mb3JFYWNoKGUpfSksT2JqZWN0LmtleXMoaCkuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZi5pdGVtcy5wdXNoKHtsYWJlbDplLGtpbmQ6R24uVmFsdWUsdGV4dEVkaXQ6U24ucmVwbGFjZShjLGhbZV0pLGluc2VydFRleHRGb3JtYXQ6Sm4uU25pcHBldH0pfSksZn1mdW5jdGlvbiBvKGUsdCl7dmFyIG4scixpLGEsbztpZih2b2lkIDA9PT10JiYodD1iKSxvPWU8YiYmYjw9dCYmL15bIiddKiQvLnRlc3QoZ1tlXSk/KGU8KHI9dCkmJmdbdC0xXT09PWdbZV0mJnItLSxpPXcoZnVuY3Rpb24oZSx0LG4pe2Zvcig7bjx0JiYheWkoZVt0LTFdKTspdC0tO3JldHVybiB0fShnLGIsbj1lKzEpLGZ1bmN0aW9uKGUsdCxuKXtmb3IoO3Q8biYmIXlpKGVbdF0pOyl0Kys7cmV0dXJuIHR9KGcsYixyKSksYT1uPD1iJiZiPD1yP2cuc3Vic3RyaW5nKG4sYik6IiIsITEpOihpPXcoZSx0KSxhPWcuc3Vic3RyaW5nKGUsYiksITApLDA8eS5sZW5ndGgpZm9yKHZhciBjPV8udG9Mb3dlckNhc2UoKSxkPUMudG9Mb3dlckNhc2UoKSx1PXcoZSx0KSxzPTAsbD15O3M8bC5sZW5ndGg7cysrKXt2YXIgaD1sW3NdO2gub25IdG1sQXR0cmlidXRlVmFsdWUmJmgub25IdG1sQXR0cmlidXRlVmFsdWUoe2RvY3VtZW50OnAscG9zaXRpb246bSx0YWc6YyxhdHRyaWJ1dGU6ZCx2YWx1ZTphLHJhbmdlOnV9KX1yZXR1cm4gVC5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UucHJvdmlkZVZhbHVlcyhfLEMpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bz8nIicrZS5uYW1lKyciJzplLm5hbWU7Zi5pdGVtcy5wdXNoKHtsYWJlbDplLm5hbWUsZmlsdGVyVGV4dDp0LGtpbmQ6R24uVW5pdCxkb2N1bWVudGF0aW9uOmxpKGUsdm9pZCAwLGspLHRleHRFZGl0OlNuLnJlcGxhY2UoaSx0KSxpbnNlcnRUZXh0Rm9ybWF0OkpuLlBsYWluVGV4dH0pfSl9KSx4KCksZn1mdW5jdGlvbiBzKGUpe3JldHVybiBiPT09dC5nZXRUb2tlbkVuZCgpJiYoTD10LnNjYW4oKSk9PT1lJiZ0LmdldFRva2VuT2Zmc2V0KCk9PT1iP3QuZ2V0VG9rZW5FbmQoKTpifWZ1bmN0aW9uIGwoKXtmb3IodmFyIGU9MCx0PXk7ZTx0Lmxlbmd0aDtlKyspe3ZhciBuPXRbZV07bi5vbkh0bWxDb250ZW50JiZuLm9uSHRtbENvbnRlbnQoe2RvY3VtZW50OnAscG9zaXRpb246bX0pfXJldHVybiB4KCl9ZnVuY3Rpb24geCgpe2Zvcih2YXIgZSx0LG49Yi0xLHI9bS5jaGFyYWN0ZXI7MDw9biYmaWkoZyxuKTspbi0tLHItLTtpZigwPD1uJiYiJiI9PT1nW25dKXt2YXIgaSxhLG89dm4uY3JlYXRlKHduLmNyZWF0ZShtLmxpbmUsci0xKSxtKTtmb3IoaSBpbiBKcil0PSI7IixhPXZvaWQgMCwoMDwoYT0oZT1pKS5sZW5ndGgtdC5sZW5ndGgpP2UubGFzdEluZGV4T2YodCk9PT1hOjA9PWEmJmU9PT10KSYmZi5pdGVtcy5wdXNoKHtsYWJlbDphPSImIitpLGtpbmQ6R24uS2V5d29yZCxkb2N1bWVudGF0aW9uOl9pKCJlbnRpdHkucHJvcG9zZSIsIkNoYXJhY3RlciBlbnRpdHkgcmVwcmVzZW50aW5nICciK0pyW2ldKyInIiksdGV4dEVkaXQ6U24ucmVwbGFjZShvLGEpLGluc2VydFRleHRGb3JtYXQ6Sm4uUGxhaW5UZXh0fSl9cmV0dXJuIGZ9Zm9yKHZhciBoLGQsZSxMPXQuc2NhbigpO0whPT1NLkVPUyYmdC5nZXRUb2tlbk9mZnNldCgpPD1iOyl7c3dpdGNoKEwpe2Nhc2UgTS5TdGFydFRhZ09wZW46aWYodC5nZXRUb2tlbkVuZCgpPT09YilyZXR1cm4gaD1zKE0uU3RhcnRUYWcpLDA9PT1tLmxpbmUmJihlPXcoZT1iLGgpLGYuaXRlbXMucHVzaCh7bGFiZWw6IiFET0NUWVBFIixraW5kOkduLlByb3BlcnR5LGRvY3VtZW50YXRpb246IkEgcHJlYW1ibGUgZm9yIGFuIEhUTUwgZG9jdW1lbnQuIix0ZXh0RWRpdDpTbi5yZXBsYWNlKGUsIiFET0NUWVBFIGh0bWw+IiksaW5zZXJ0VGV4dEZvcm1hdDpKbi5QbGFpblRleHR9KSksaShiLGgpO2JyZWFrO2Nhc2UgTS5TdGFydFRhZzppZih0LmdldFRva2VuT2Zmc2V0KCk8PWImJmI8PXQuZ2V0VG9rZW5FbmQoKSlyZXR1cm4gbih0LmdldFRva2VuT2Zmc2V0KCksdC5nZXRUb2tlbkVuZCgpKTtfPXQuZ2V0VG9rZW5UZXh0KCk7YnJlYWs7Y2FzZSBNLkF0dHJpYnV0ZU5hbWU6aWYodC5nZXRUb2tlbk9mZnNldCgpPD1iJiZiPD10LmdldFRva2VuRW5kKCkpcmV0dXJuIGEodC5nZXRUb2tlbk9mZnNldCgpLHQuZ2V0VG9rZW5FbmQoKSk7Qz10LmdldFRva2VuVGV4dCgpO2JyZWFrO2Nhc2UgTS5EZWxpbWl0ZXJBc3NpZ246aWYodC5nZXRUb2tlbkVuZCgpPT09YilyZXR1cm4gaD1zKE0uQXR0cmlidXRlVmFsdWUpLG8oYixoKTticmVhaztjYXNlIE0uQXR0cmlidXRlVmFsdWU6aWYodC5nZXRUb2tlbk9mZnNldCgpPD1iJiZiPD10LmdldFRva2VuRW5kKCkpcmV0dXJuIG8odC5nZXRUb2tlbk9mZnNldCgpLHQuZ2V0VG9rZW5FbmQoKSk7YnJlYWs7Y2FzZSBNLldoaXRlc3BhY2U6aWYoYjw9dC5nZXRUb2tlbkVuZCgpKXN3aXRjaCh0LmdldFNjYW5uZXJTdGF0ZSgpKXtjYXNlIFIuQWZ0ZXJPcGVuaW5nU3RhcnRUYWc6cmV0dXJuIGkodC5nZXRUb2tlbk9mZnNldCgpLHMoTS5TdGFydFRhZykpO2Nhc2UgUi5XaXRoaW5UYWc6Y2FzZSBSLkFmdGVyQXR0cmlidXRlTmFtZTpyZXR1cm4gYSh0LmdldFRva2VuRW5kKCkpO2Nhc2UgUi5CZWZvcmVBdHRyaWJ1dGVWYWx1ZTpyZXR1cm4gbyh0LmdldFRva2VuRW5kKCkpO2Nhc2UgUi5BZnRlck9wZW5pbmdFbmRUYWc6cmV0dXJuIHIodC5nZXRUb2tlbk9mZnNldCgpLTEsITEpO2Nhc2UgUi5XaXRoaW5Db250ZW50OnJldHVybiBsKCl9YnJlYWs7Y2FzZSBNLkVuZFRhZ09wZW46aWYoYjw9dC5nZXRUb2tlbkVuZCgpKXJldHVybiByKHQuZ2V0VG9rZW5PZmZzZXQoKSsxLCExLHMoTS5FbmRUYWcpKTticmVhaztjYXNlIE0uRW5kVGFnOmlmKGI8PXQuZ2V0VG9rZW5FbmQoKSlmb3IodmFyIEU9dC5nZXRUb2tlbk9mZnNldCgpLTE7MDw9RTspe3ZhciBBPWcuY2hhckF0KEUpO2lmKCIvIj09PUEpcmV0dXJuIHIoRSwhMSx0LmdldFRva2VuRW5kKCkpO2lmKCF5aShBKSlicmVhaztFLS19YnJlYWs7Y2FzZSBNLlN0YXJ0VGFnQ2xvc2U6aWYoYjw9dC5nZXRUb2tlbkVuZCgpJiZfKXJldHVybiBlPXQuZ2V0VG9rZW5FbmQoKSxkPV8sdSYmdS5oaWRlQXV0b0NvbXBsZXRlUHJvcG9zYWxzfHxLcihkKXx8KGU9cC5wb3NpdGlvbkF0KGUpLGYuaXRlbXMucHVzaCh7bGFiZWw6IjwvIitkKyI+IixraW5kOkduLlByb3BlcnR5LGZpbHRlclRleHQ6IjwvIitkKyI+Iix0ZXh0RWRpdDpTbi5pbnNlcnQoZSwiJDA8LyIrZCsiPiIpLGluc2VydFRleHRGb3JtYXQ6Sm4uU25pcHBldH0pKSxmO2JyZWFrO2Nhc2UgTS5Db250ZW50OmlmKGI8PXQuZ2V0VG9rZW5FbmQoKSlyZXR1cm4gbCgpO2JyZWFrO2RlZmF1bHQ6aWYoYjw9dC5nZXRUb2tlbkVuZCgpKXJldHVybiBmfUw9dC5zY2FuKCl9cmV0dXJuIGZ9LHZpLnByb3RvdHlwZS5kb1F1b3RlQ29tcGxldGU9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ZS5vZmZzZXRBdCh0KTtpZihpPD0wKXJldHVybiBudWxsO3I9bnVsbCE9PSh0PW51bGw9PXI/dm9pZCAwOnIuYXR0cmlidXRlRGVmYXVsdFZhbHVlKSYmdm9pZCAwIT09dD90OiJkb3VibGVxdW90ZXMiO2lmKCJlbXB0eSI9PT1yKXJldHVybiBudWxsO2lmKCI9IiE9PWUuZ2V0VGV4dCgpLmNoYXJBdChpLTEpKXJldHVybiBudWxsO3ZhciBhPSJkb3VibGVxdW90ZXMiPT09cj8nIiQxIic6IickMSciLHQ9bi5maW5kTm9kZUJlZm9yZShpKTtpZih0JiZ0LmF0dHJpYnV0ZXMmJnQuc3RhcnQ8aSYmKCF0LmVuZFRhZ1N0YXJ0fHx0LmVuZFRhZ1N0YXJ0PmkpKWZvcih2YXIgbz1GcihlLmdldFRleHQoKSx0LnN0YXJ0KSxzPW8uc2NhbigpO3MhPT1NLkVPUyYmby5nZXRUb2tlbkVuZCgpPD1pOyl7aWYocz09PU0uQXR0cmlidXRlTmFtZSYmby5nZXRUb2tlbkVuZCgpPT09aS0xKXJldHVybihzPW8uc2NhbigpKSE9PU0uRGVsaW1pdGVyQXNzaWdufHwocz1vLnNjYW4oKSk9PT1NLlVua25vd258fHM9PT1NLkF0dHJpYnV0ZVZhbHVlP251bGw6YTtzPW8uc2NhbigpfXJldHVybiBudWxsfSx2aS5wcm90b3R5cGUuZG9UYWdDb21wbGV0ZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5vZmZzZXRBdCh0KTtpZihyPD0wKXJldHVybiBudWxsO3Q9ZS5nZXRUZXh0KCkuY2hhckF0KHItMSk7aWYoIj4iPT09dCl7aWYoKGE9bi5maW5kTm9kZUJlZm9yZShyKSkmJmEudGFnJiYhS3IoYS50YWcpJiZhLnN0YXJ0PHImJighYS5lbmRUYWdTdGFydHx8YS5lbmRUYWdTdGFydD5yKSlmb3IodmFyIGk9KG89RnIoZS5nZXRUZXh0KCksYS5zdGFydCkpLnNjYW4oKTtpIT09TS5FT1MmJm8uZ2V0VG9rZW5FbmQoKTw9cjspe2lmKGk9PT1NLlN0YXJ0VGFnQ2xvc2UmJm8uZ2V0VG9rZW5FbmQoKT09PXIpcmV0dXJuIiQwPC8iK2EudGFnKyI+IjtpPW8uc2NhbigpfX1lbHNlIGlmKCIvIj09PXQpe2Zvcih2YXIgYT1uLmZpbmROb2RlQmVmb3JlKHIpO2EmJmEuY2xvc2VkJiYhKGEuZW5kVGFnU3RhcnQmJmEuZW5kVGFnU3RhcnQ+cik7KWE9YS5wYXJlbnQ7aWYoYSYmYS50YWcpZm9yKHZhciBvLGk9KG89RnIoZS5nZXRUZXh0KCksYS5zdGFydCkpLnNjYW4oKTtpIT09TS5FT1MmJm8uZ2V0VG9rZW5FbmQoKTw9cjspe2lmKGk9PT1NLkVuZFRhZ09wZW4mJm8uZ2V0VG9rZW5FbmQoKT09PXIpcmV0dXJuIGEudGFnKyI+IjtpPW8uc2NhbigpfX1yZXR1cm4gbnVsbH0sdmkucHJvdG90eXBlLmNvbnZlcnRDb21wbGV0aW9uTGlzdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCl8fGUuaXRlbXMuZm9yRWFjaChmdW5jdGlvbihlKXtlLmRvY3VtZW50YXRpb24mJiJzdHJpbmciIT10eXBlb2YgZS5kb2N1bWVudGF0aW9uJiYoZS5kb2N1bWVudGF0aW9uPXtraW5kOiJwbGFpbnRleHQiLHZhbHVlOmUuZG9jdW1lbnRhdGlvbi52YWx1ZX0pfSksZX0sdmkucHJvdG90eXBlLmRvZXNTdXBwb3J0TWFya2Rvd249ZnVuY3Rpb24oKXtpZighYWkodGhpcy5zdXBwb3J0c01hcmtkb3duKSl7aWYoIWFpKHRoaXMubHNPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcykpcmV0dXJuIHRoaXMuc3VwcG9ydHNNYXJrZG93bj0hMCx0aGlzLnN1cHBvcnRzTWFya2Rvd247dmFyIGU9bnVsbD09PShlPW51bGw9PT0oZT1udWxsPT09KGU9dGhpcy5sc09wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzLnRleHREb2N1bWVudCl8fHZvaWQgMD09PWU/dm9pZCAwOmUuY29tcGxldGlvbil8fHZvaWQgMD09PWU/dm9pZCAwOmUuY29tcGxldGlvbkl0ZW0pfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmRvY3VtZW50YXRpb25Gb3JtYXQ7dGhpcy5zdXBwb3J0c01hcmtkb3duPUFycmF5LmlzQXJyYXkoZSkmJi0xIT09ZS5pbmRleE9mKFZuLk1hcmtkb3duKX1yZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3dufSx2aSk7ZnVuY3Rpb24gdmkoZSx0KXt0aGlzLmxzT3B0aW9ucz1lLHRoaXMuZGF0YU1hbmFnZXI9dCx0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9W119ZnVuY3Rpb24geWkoZSl7cmV0dXJuL15ccyokLy50ZXN0KGUpfWZ1bmN0aW9uIFRpKGUsdCxuLHIpe2Zvcih2YXIgaT1GcihlLHQsbiksYT1pLnNjYW4oKTthPT09TS5XaGl0ZXNwYWNlOylhPWkuc2NhbigpO3JldHVybiBhPT09cn12YXIga2ksU2ksQ2k9UG4seGk9KExpLnByb3RvdHlwZS5kb0hvdmVyPWZ1bmN0aW9uKGEsaSxlLHMpe3ZhciBoPXRoaXMuY29udmVydENvbnRlbnRzLmJpbmQodGhpcyksbD10aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSxjPWEub2Zmc2V0QXQoaSksZT1lLmZpbmROb2RlQXQoYyksbz1hLmdldFRleHQoKTtpZighZXx8IWUudGFnKXJldHVybiBudWxsO3ZhciBkPXRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YVByb3ZpZGVycygpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5pc0FwcGxpY2FibGUoYS5sYW5ndWFnZUlkKX0pO2Z1bmN0aW9uIHIobixyKXtmb3IodmFyIGU9MCx0PWQ7ZTx0Lmxlbmd0aDtlKyspe3ZhciBpPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7aWYoZS5wcm92aWRlVGFncygpLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5uYW1lLnRvTG93ZXJDYXNlKCk9PT1uLnRvTG93ZXJDYXNlKCkmJihlPWxpKGUscyxsKSx0PXtjb250ZW50czplPWV8fHtraW5kOmw/Im1hcmtkb3duIjoicGxhaW50ZXh0Iix2YWx1ZToiIn0scmFuZ2U6cn0pfSksdClyZXR1cm4gdC5jb250ZW50cz1oKHQuY29udGVudHMpLHt2YWx1ZTp0fX0odFtlXSk7aWYoIm9iamVjdCI9PXR5cGVvZiBpKXJldHVybiBpLnZhbHVlfXJldHVybiBudWxsfWZ1bmN0aW9uIHUobixyLGkpe2Zvcih2YXIgZT0wLHQ9ZDtlPHQubGVuZ3RoO2UrKyl7dmFyIGE9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtpZihlLnByb3ZpZGVBdHRyaWJ1dGVzKG4pLmZvckVhY2goZnVuY3Rpb24oZSl7cj09PWUubmFtZSYmZS5kZXNjcmlwdGlvbiYmKGU9bGkoZSxzLGwpLHQ9ZT97Y29udGVudHM6ZSxyYW5nZTppfTpudWxsKX0pLHQpcmV0dXJuIHQuY29udGVudHM9aCh0LmNvbnRlbnRzKSx7dmFsdWU6dH19KHRbZV0pO2lmKCJvYmplY3QiPT10eXBlb2YgYSlyZXR1cm4gYS52YWx1ZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBwKG4scixpLGEpe2Zvcih2YXIgZT0wLHQ9ZDtlPHQubGVuZ3RoO2UrKyl7dmFyIG89ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtpZihlLnByb3ZpZGVWYWx1ZXMobixyKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2k9PT1lLm5hbWUmJmUuZGVzY3JpcHRpb24mJihlPWxpKGUscyxsKSx0PWU/e2NvbnRlbnRzOmUscmFuZ2U6YX06bnVsbCl9KSx0KXJldHVybiB0LmNvbnRlbnRzPWgodC5jb250ZW50cykse3ZhbHVlOnR9fSh0W2VdKTtpZigib2JqZWN0Ij09dHlwZW9mIG8pcmV0dXJuIG8udmFsdWV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gbShlLHQpe3ZhciBuLHI9ZnVuY3Rpb24oZSl7dmFyIHQ9Yy0xLG49IiYiO2Zvcig7MDw9dCYmaWkoZSx0KTspdC0tO3QrPTE7Zm9yKDtpaShlLHQpOyluKz1lW3RdLHQrPTE7cmV0dXJuIG4rPSI7In0oZSk7Zm9yKG4gaW4gSnIpe3ZhciBpPW51bGw7aWYocj09PSImIituKXt2YXIgYT1KcltuXS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpLG89IlUrIjtpZihhLmxlbmd0aDw0KWZvcih2YXIgcz00LWEubGVuZ3RoLGw9MDtsPHM7KW8rPSIwIixsKz0xO28rPWE7YT1DaSgiZW50aXR5LnByb3Bvc2UiLCJDaGFyYWN0ZXIgZW50aXR5IHJlcHJlc2VudGluZyAnIitKcltuXSsiJywgdW5pY29kZSBlcXVpdmFsZW50ICciK28rIiciKSxpPWE/e2NvbnRlbnRzOmEscmFuZ2U6dH06bnVsbH1pZihpKXJldHVybiBpLmNvbnRlbnRzPWgoaS5jb250ZW50cyksaX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB0KGUsdCl7Zm9yKHZhciBuPUZyKGEuZ2V0VGV4dCgpLHQpLHI9bi5zY2FuKCk7ciE9PU0uRU9TJiYobi5nZXRUb2tlbkVuZCgpPGN8fG4uZ2V0VG9rZW5FbmQoKT09PWMmJnIhPT1lKTspcj1uLnNjYW4oKTtyZXR1cm4gcj09PWUmJmM8PW4uZ2V0VG9rZW5FbmQoKT97c3RhcnQ6YS5wb3NpdGlvbkF0KG4uZ2V0VG9rZW5PZmZzZXQoKSksZW5kOmEucG9zaXRpb25BdChuLmdldFRva2VuRW5kKCkpfTpudWxsfWlmKGUuZW5kVGFnU3RhcnQmJmM+PWUuZW5kVGFnU3RhcnQpcmV0dXJuKG49dChNLkVuZFRhZyxlLmVuZFRhZ1N0YXJ0KSk/cihlLnRhZyxuKTpudWxsO3ZhciBuPXQoTS5TdGFydFRhZyxlLnN0YXJ0KTtpZihuKXJldHVybiByKGUudGFnLG4pO249dChNLkF0dHJpYnV0ZU5hbWUsZS5zdGFydCk7aWYobilyZXR1cm4gdShmPWUudGFnLGEuZ2V0VGV4dChuKSxuKTtuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWMtMSx0PWkuY2hhcmFjdGVyOzA8PWUmJmlpKG8sZSk7KWUtLSx0LS07Zm9yKHZhciBuPWUrMSxyPXQ7aWkobyxuKTspbisrLHIrKztyZXR1cm4gMDw9ZSYmIiYiPT09b1tlXT8iOyI9PT1vW25dP3ZuLmNyZWF0ZSh3bi5jcmVhdGUoaS5saW5lLHQpLHduLmNyZWF0ZShpLmxpbmUscisxKSk6dm4uY3JlYXRlKHduLmNyZWF0ZShpLmxpbmUsdCksd24uY3JlYXRlKGkubGluZSxyKSk6bnVsbH0oKTtpZihuKXJldHVybiBtKG8sbik7bj10KE0uQXR0cmlidXRlVmFsdWUsZS5zdGFydCk7aWYobil7dmFyIGY9ZS50YWcsZz1mdW5jdGlvbihlKXtpZihlLmxlbmd0aDw9MSlyZXR1cm4gZS5yZXBsYWNlKC9bJyJdLywiIik7IiciIT09ZVswXSYmJyInIT09ZVswXXx8KGU9ZS5zbGljZSgxKSk7IiciIT09ZVtlLmxlbmd0aC0xXSYmJyInIT09ZVtlLmxlbmd0aC0xXXx8KGU9ZS5zbGljZSgwLC0xKSk7cmV0dXJuIGV9KGEuZ2V0VGV4dChuKSksZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1GcihhLmdldFRleHQoKSxlKSxyPW4uc2NhbigpLGk9dm9pZCAwO3IhPT1NLkVPUyYmbi5nZXRUb2tlbkVuZCgpPD10Oykocj1uLnNjYW4oKSk9PT1NLkF0dHJpYnV0ZU5hbWUmJihpPW4uZ2V0VG9rZW5UZXh0KCkpO3JldHVybiBpfShlLnN0YXJ0LGEub2Zmc2V0QXQobi5zdGFydCkpO2lmKGUpcmV0dXJuIHAoZixlLGcsbil9cmV0dXJuIG51bGx9LExpLnByb3RvdHlwZS5jb252ZXJ0Q29udGVudHM9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuZG9lc1N1cHBvcnRNYXJrZG93bigpKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoImtpbmQiaW4gZSlyZXR1cm57a2luZDoicGxhaW50ZXh0Iix2YWx1ZTplLnZhbHVlfTtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZS52YWx1ZTtlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ZTplLnZhbHVlfSl9cmV0dXJuIGV9LExpLnByb3RvdHlwZS5kb2VzU3VwcG9ydE1hcmtkb3duPWZ1bmN0aW9uKCl7aWYoIWFpKHRoaXMuc3VwcG9ydHNNYXJrZG93bikpe2lmKCFhaSh0aGlzLmxzT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMpKXJldHVybiB0aGlzLnN1cHBvcnRzTWFya2Rvd249ITAsdGhpcy5zdXBwb3J0c01hcmtkb3duO3ZhciBlPW51bGw9PT0oZT1udWxsPT09KGU9bnVsbD09PShlPXRoaXMubHNPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcyl8fHZvaWQgMD09PWU/dm9pZCAwOmUudGV4dERvY3VtZW50KXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5ob3Zlcil8fHZvaWQgMD09PWU/dm9pZCAwOmUuY29udGVudEZvcm1hdDt0aGlzLnN1cHBvcnRzTWFya2Rvd249QXJyYXkuaXNBcnJheShlKSYmLTEhPT1lLmluZGV4T2YoVm4uTWFya2Rvd24pfXJldHVybiB0aGlzLnN1cHBvcnRzTWFya2Rvd259LExpKTtmdW5jdGlvbiBMaShlLHQpe3RoaXMubHNPcHRpb25zPWUsdGhpcy5kYXRhTWFuYWdlcj10fWZ1bmN0aW9uIEVpKGUsdCl7cmV0dXJuIGV9a2k9WywsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gaShlKXt0aGlzLl9fcGFyZW50PWUsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX19pbmRlbnRfY291bnQ9LTEsdGhpcy5fX2FsaWdubWVudF9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGV4PTAsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PTAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PS0xLHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD0wLHRoaXMuX19pdGVtcz1bXX1mdW5jdGlvbiBuKGUsdCl7dGhpcy5fX2NhY2hlPVsiIl0sdGhpcy5fX2luZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy5fX2luZGVudF9zdHJpbmc9ZS5pbmRlbnRfY2hhcixlLmluZGVudF93aXRoX3RhYnN8fCh0aGlzLl9faW5kZW50X3N0cmluZz1uZXcgQXJyYXkoZS5pbmRlbnRfc2l6ZSsxKS5qb2luKGUuaW5kZW50X2NoYXIpKSx0PXR8fCIiLDA8ZS5pbmRlbnRfbGV2ZWwmJih0PW5ldyBBcnJheShlLmluZGVudF9sZXZlbCsxKS5qb2luKHRoaXMuX19pbmRlbnRfc3RyaW5nKSksdGhpcy5fX2Jhc2Vfc3RyaW5nPXQsdGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aD10Lmxlbmd0aH1mdW5jdGlvbiB0KGUsdCl7dGhpcy5fX2luZGVudF9jYWNoZT1uZXcgbihlLHQpLHRoaXMucmF3PSExLHRoaXMuX2VuZF93aXRoX25ld2xpbmU9ZS5lbmRfd2l0aF9uZXdsaW5lLHRoaXMuaW5kZW50X3NpemU9ZS5pbmRlbnRfc2l6ZSx0aGlzLndyYXBfbGluZV9sZW5ndGg9ZS53cmFwX2xpbmVfbGVuZ3RoLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPWUuaW5kZW50X2VtcHR5X2xpbmVzLHRoaXMuX19saW5lcz1bXSx0aGlzLnByZXZpb3VzX2xpbmU9bnVsbCx0aGlzLmN1cnJlbnRfbGluZT1udWxsLHRoaXMubmV4dF9saW5lPW5ldyBpKHRoaXMpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMSx0aGlzLl9fYWRkX291dHB1dGxpbmUoKX1pLnByb3RvdHlwZS5jbG9uZV9lbXB0eT1mdW5jdGlvbigpe3ZhciBlPW5ldyBpKHRoaXMuX19wYXJlbnQpO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlfSxpLnByb3RvdHlwZS5pdGVtPWZ1bmN0aW9uKGUpe3JldHVybiBlPDA/dGhpcy5fX2l0ZW1zW3RoaXMuX19pdGVtcy5sZW5ndGgrZV06dGhpcy5fX2l0ZW1zW2VdfSxpLnByb3RvdHlwZS5oYXNfbWF0Y2g9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19pdGVtcy5sZW5ndGgtMTswPD10O3QtLSlpZih0aGlzLl9faXRlbXNbdF0ubWF0Y2goZSkpcmV0dXJuITA7cmV0dXJuITF9LGkucHJvdG90eXBlLnNldF9pbmRlbnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmlzX2VtcHR5KCkmJih0aGlzLl9faW5kZW50X2NvdW50PWV8fDAsdGhpcy5fX2FsaWdubWVudF9jb3VudD10fHwwLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3NpemUodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSl9LGkucHJvdG90eXBlLl9zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuX19wYXJlbnQud3JhcF9saW5lX2xlbmd0aCYmKHRoaXMuX193cmFwX3BvaW50X2luZGV4PXRoaXMuX19pdGVtcy5sZW5ndGgsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PXRoaXMuX19jaGFyYWN0ZXJfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PXRoaXMuX19wYXJlbnQubmV4dF9saW5lLl9faW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2FsaWdubWVudF9jb3VudCl9LGkucHJvdG90eXBlLl9zaG91bGRfd3JhcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fd3JhcF9wb2ludF9pbmRleCYmdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJnRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2NoYXJhY3Rlcl9jb3VudH0saS5wcm90b3R5cGUuX2FsbG93X3dyYXA9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4hIXRoaXMuX3Nob3VsZF93cmFwKCkmJih0aGlzLl9fcGFyZW50LmFkZF9uZXdfbGluZSgpLChlPXRoaXMuX19wYXJlbnQuY3VycmVudF9saW5lKS5zZXRfaW5kZW50KHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudCx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQpLGUuX19pdGVtcz10aGlzLl9faXRlbXMuc2xpY2UodGhpcy5fX3dyYXBfcG9pbnRfaW5kZXgpLHRoaXMuX19pdGVtcz10aGlzLl9faXRlbXMuc2xpY2UoMCx0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksZS5fX2NoYXJhY3Rlcl9jb3VudCs9dGhpcy5fX2NoYXJhY3Rlcl9jb3VudC10aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD10aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQsIiAiPT09ZS5fX2l0ZW1zWzBdJiYoZS5fX2l0ZW1zLnNwbGljZSgwLDEpLC0tZS5fX2NoYXJhY3Rlcl9jb3VudCksITApfSxpLnByb3RvdHlwZS5pc19lbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5fX2l0ZW1zLmxlbmd0aH0saS5wcm90b3R5cGUubGFzdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzX2VtcHR5KCk/bnVsbDp0aGlzLl9faXRlbXNbdGhpcy5fX2l0ZW1zLmxlbmd0aC0xXX0saS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihlKXt0aGlzLl9faXRlbXMucHVzaChlKTt2YXIgdD1lLmxhc3RJbmRleE9mKCJcbiIpOy0xIT09dD90aGlzLl9fY2hhcmFjdGVyX2NvdW50PWUubGVuZ3RoLXQ6dGhpcy5fX2NoYXJhY3Rlcl9jb3VudCs9ZS5sZW5ndGh9LGkucHJvdG90eXBlLnBvcD1mdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKXx8KGU9dGhpcy5fX2l0ZW1zLnBvcCgpLHRoaXMuX19jaGFyYWN0ZXJfY291bnQtPWUubGVuZ3RoKSxlfSxpLnByb3RvdHlwZS5fcmVtb3ZlX2luZGVudD1mdW5jdGlvbigpezA8dGhpcy5fX2luZGVudF9jb3VudCYmKC0tdGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT10aGlzLl9fcGFyZW50LmluZGVudF9zaXplKX0saS5wcm90b3R5cGUuX3JlbW92ZV93cmFwX2luZGVudD1mdW5jdGlvbigpezA8dGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50JiYtLXRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudH0saS5wcm90b3R5cGUudHJpbT1mdW5jdGlvbigpe2Zvcig7IiAiPT09dGhpcy5sYXN0KCk7KXRoaXMuX19pdGVtcy5wb3AoKSwtLXRoaXMuX19jaGFyYWN0ZXJfY291bnR9LGkucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGU9IiI7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKT90aGlzLl9fcGFyZW50LmluZGVudF9lbXB0eV9saW5lcyYmKGU9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3N0cmluZyh0aGlzLl9faW5kZW50X2NvdW50KSk6KGU9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3N0cmluZyh0aGlzLl9faW5kZW50X2NvdW50LHRoaXMuX19hbGlnbm1lbnRfY291bnQpLGUrPXRoaXMuX19pdGVtcy5qb2luKCIiKSksZX0sbi5wcm90b3R5cGUuZ2V0X2luZGVudF9zaXplPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aDtyZXR1cm4gbj0obj1lPDA/MDpuKStlKnRoaXMuX19pbmRlbnRfc2l6ZSsodD10fHwwKX0sbi5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9fYmFzZV9zdHJpbmc7cmV0dXJuIHQ9dHx8MCxlPDAmJihlPTAsbj0iIiksdCs9ZSp0aGlzLl9faW5kZW50X3NpemUsdGhpcy5fX2Vuc3VyZV9jYWNoZSh0KSxuKz10aGlzLl9fY2FjaGVbdF19LG4ucHJvdG90eXBlLl9fZW5zdXJlX2NhY2hlPWZ1bmN0aW9uKGUpe2Zvcig7ZT49dGhpcy5fX2NhY2hlLmxlbmd0aDspdGhpcy5fX2FkZF9jb2x1bW4oKX0sbi5wcm90b3R5cGUuX19hZGRfY29sdW1uPWZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLl9fY2FjaGUubGVuZ3RoLG49IiI7dGhpcy5fX2luZGVudF9zaXplJiZ0Pj10aGlzLl9faW5kZW50X3NpemUmJih0LT0oZT1NYXRoLmZsb29yKHQvdGhpcy5fX2luZGVudF9zaXplKSkqdGhpcy5fX2luZGVudF9zaXplLG49bmV3IEFycmF5KGUrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLHQmJihuKz1uZXcgQXJyYXkodCsxKS5qb2luKCIgIikpLHRoaXMuX19jYWNoZS5wdXNoKG4pfSx0LnByb3RvdHlwZS5fX2FkZF9vdXRwdXRsaW5lPWZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuY3VycmVudF9saW5lLHRoaXMuY3VycmVudF9saW5lPXRoaXMubmV4dF9saW5lLmNsb25lX2VtcHR5KCksdGhpcy5fX2xpbmVzLnB1c2godGhpcy5jdXJyZW50X2xpbmUpfSx0LnByb3RvdHlwZS5nZXRfbGluZV9udW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2xpbmVzLmxlbmd0aH0sdC5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3N0cmluZyhlLHQpfSx0LnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3NpemUoZSx0KX0sdC5wcm90b3R5cGUuaXNfZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5wcmV2aW91c19saW5lJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSx0LnByb3RvdHlwZS5hZGRfbmV3X2xpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuISh0aGlzLmlzX2VtcHR5KCl8fCFlJiZ0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpKSYmKHRoaXMucmF3fHx0aGlzLl9fYWRkX291dHB1dGxpbmUoKSwhMCl9LHQucHJvdG90eXBlLmdldF9jb2RlPWZ1bmN0aW9uKGUpe3RoaXMudHJpbSghMCk7dmFyIHQ9dGhpcy5jdXJyZW50X2xpbmUucG9wKCksdD0odCYmKCJcbiI9PT10W3QubGVuZ3RoLTFdJiYodD10LnJlcGxhY2UoL1xuKyQvZywiIikpLHRoaXMuY3VycmVudF9saW5lLnB1c2godCkpLHRoaXMuX2VuZF93aXRoX25ld2xpbmUmJnRoaXMuX19hZGRfb3V0cHV0bGluZSgpLHRoaXMuX19saW5lcy5qb2luKCJcbiIpKTtyZXR1cm4gdD0iXG4iIT09ZT90LnJlcGxhY2UoL1tcbl0vZyxlKTp0fSx0LnByb3RvdHlwZS5zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuY3VycmVudF9saW5lLl9zZXRfd3JhcF9wb2ludCgpfSx0LnByb3RvdHlwZS5zZXRfaW5kZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubmV4dF9saW5lLnNldF9pbmRlbnQoZT1lfHwwLHQ9dHx8MCksMTx0aGlzLl9fbGluZXMubGVuZ3RoPyh0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KGUsdCksITApOih0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KCksITEpfSx0LnByb3RvdHlwZS5hZGRfcmF3X3Rva2VuPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8ZS5uZXdsaW5lczt0KyspdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCk7dGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudCgtMSksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlLndoaXRlc3BhY2VfYmVmb3JlKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKGUudGV4dCksdGhpcy5zcGFjZV9iZWZvcmVfdG9rZW49ITEsdGhpcy5ub25fYnJlYWtpbmdfc3BhY2U9ITEsdGhpcy5wcmV2aW91c190b2tlbl93cmFwcGVkPSExfSx0LnByb3RvdHlwZS5hZGRfdG9rZW49ZnVuY3Rpb24oZSl7dGhpcy5fX2FkZF9zcGFjZV9iZWZvcmVfdG9rZW4oKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKGUpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD10aGlzLmN1cnJlbnRfbGluZS5fYWxsb3dfd3JhcCgpfSx0LnByb3RvdHlwZS5fX2FkZF9zcGFjZV9iZWZvcmVfdG9rZW49ZnVuY3Rpb24oKXt0aGlzLnNwYWNlX2JlZm9yZV90b2tlbiYmIXRoaXMuanVzdF9hZGRlZF9uZXdsaW5lKCkmJih0aGlzLm5vbl9icmVha2luZ19zcGFjZXx8dGhpcy5zZXRfd3JhcF9wb2ludCgpLHRoaXMuY3VycmVudF9saW5lLnB1c2goIiAiKSl9LHQucHJvdG90eXBlLnJlbW92ZV9pbmRlbnQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19saW5lcy5sZW5ndGg7ZTx0Oyl0aGlzLl9fbGluZXNbZV0uX3JlbW92ZV9pbmRlbnQoKSxlKys7dGhpcy5jdXJyZW50X2xpbmUuX3JlbW92ZV93cmFwX2luZGVudCgpfSx0LnByb3RvdHlwZS50cmltPWZ1bmN0aW9uKGUpe2ZvcihlPXZvaWQgMCE9PWUmJmUsdGhpcy5jdXJyZW50X2xpbmUudHJpbSgpO2UmJjE8dGhpcy5fX2xpbmVzLmxlbmd0aCYmdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKTspdGhpcy5fX2xpbmVzLnBvcCgpLHRoaXMuY3VycmVudF9saW5lPXRoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTFdLHRoaXMuY3VycmVudF9saW5lLnRyaW0oKTt0aGlzLnByZXZpb3VzX2xpbmU9MTx0aGlzLl9fbGluZXMubGVuZ3RoP3RoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTJdOm51bGx9LHQucHJvdG90eXBlLmp1c3RfYWRkZWRfbmV3bGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSx0LnByb3RvdHlwZS5qdXN0X2FkZGVkX2JsYW5rbGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzX2VtcHR5KCl8fHRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCkmJnRoaXMucHJldmlvdXNfbGluZS5pc19lbXB0eSgpfSx0LnByb3RvdHlwZS5lbnN1cmVfZW1wdHlfbGluZV9hYm92ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLl9fbGluZXMubGVuZ3RoLTI7MDw9bjspe3ZhciByPXRoaXMuX19saW5lc1tuXTtpZihyLmlzX2VtcHR5KCkpYnJlYWs7aWYoMCE9PXIuaXRlbSgwKS5pbmRleE9mKGUpJiZyLml0ZW0oLTEpIT09dCl7dGhpcy5fX2xpbmVzLnNwbGljZShuKzEsMCxuZXcgaSh0aGlzKSksdGhpcy5wcmV2aW91c19saW5lPXRoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTJdO2JyZWFrfW4tLX19LGUuZXhwb3J0cy5PdXRwdXQ9dH0sLCwsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQpe3RoaXMucmF3X29wdGlvbnM9bihlLHQpLHRoaXMuZGlzYWJsZWQ9dGhpcy5fZ2V0X2Jvb2xlYW4oImRpc2FibGVkIiksdGhpcy5lb2w9dGhpcy5fZ2V0X2NoYXJhY3RlcnMoImVvbCIsImF1dG8iKSx0aGlzLmVuZF93aXRoX25ld2xpbmU9dGhpcy5fZ2V0X2Jvb2xlYW4oImVuZF93aXRoX25ld2xpbmUiKSx0aGlzLmluZGVudF9zaXplPXRoaXMuX2dldF9udW1iZXIoImluZGVudF9zaXplIiw0KSx0aGlzLmluZGVudF9jaGFyPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJpbmRlbnRfY2hhciIsIiAiKSx0aGlzLmluZGVudF9sZXZlbD10aGlzLl9nZXRfbnVtYmVyKCJpbmRlbnRfbGV2ZWwiKSx0aGlzLnByZXNlcnZlX25ld2xpbmVzPXRoaXMuX2dldF9ib29sZWFuKCJwcmVzZXJ2ZV9uZXdsaW5lcyIsITApLHRoaXMubWF4X3ByZXNlcnZlX25ld2xpbmVzPXRoaXMuX2dldF9udW1iZXIoIm1heF9wcmVzZXJ2ZV9uZXdsaW5lcyIsMzI3ODYpLHRoaXMucHJlc2VydmVfbmV3bGluZXN8fCh0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcz0wKSx0aGlzLmluZGVudF93aXRoX3RhYnM9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF93aXRoX3RhYnMiLCJcdCI9PT10aGlzLmluZGVudF9jaGFyKSx0aGlzLmluZGVudF93aXRoX3RhYnMmJih0aGlzLmluZGVudF9jaGFyPSJcdCIsMT09PXRoaXMuaW5kZW50X3NpemUmJih0aGlzLmluZGVudF9zaXplPTQpKSx0aGlzLndyYXBfbGluZV9sZW5ndGg9dGhpcy5fZ2V0X251bWJlcigid3JhcF9saW5lX2xlbmd0aCIsdGhpcy5fZ2V0X251bWJlcigibWF4X2NoYXIiKSksdGhpcy5pbmRlbnRfZW1wdHlfbGluZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9lbXB0eV9saW5lcyIpLHRoaXMudGVtcGxhdGluZz10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoInRlbXBsYXRpbmciLFsiYXV0byIsIm5vbmUiLCJkamFuZ28iLCJlcmIiLCJoYW5kbGViYXJzIiwicGhwIiwic21hcnR5Il0sWyJhdXRvIl0pfWZ1bmN0aW9uIG4oZSx0KXt2YXIgbixyPXt9O2ZvcihuIGluIGU9aShlKSluIT09dCYmKHJbbl09ZVtuXSk7aWYodCYmZVt0XSlmb3IobiBpbiBlW3RdKXJbbl09ZVt0XVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBpKGUpe3ZhciB0LG49e307Zm9yKHQgaW4gZSluW3QucmVwbGFjZSgvLS9nLCJfIildPWVbdF07cmV0dXJuIG59dC5wcm90b3R5cGUuX2dldF9hcnJheT1mdW5jdGlvbihlLHQpe2U9dGhpcy5yYXdfb3B0aW9uc1tlXSx0PXR8fFtdO3JldHVybiJvYmplY3QiPT10eXBlb2YgZT9udWxsIT09ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uY2F0JiYodD1lLmNvbmNhdCgpKToic3RyaW5nIj09dHlwZW9mIGUmJih0PWUuc3BsaXQoL1teYS16QS1aMC05X1wvXC1dKy8pKSx0fSx0LnByb3RvdHlwZS5fZ2V0X2Jvb2xlYW49ZnVuY3Rpb24oZSx0KXtlPXRoaXMucmF3X29wdGlvbnNbZV07cmV0dXJuIHZvaWQgMD09PWU/ISF0OiEhZX0sdC5wcm90b3R5cGUuX2dldF9jaGFyYWN0ZXJzPWZ1bmN0aW9uKGUsdCl7ZT10aGlzLnJhd19vcHRpb25zW2VdLHQ9dHx8IiI7cmV0dXJuIHQ9InN0cmluZyI9PXR5cGVvZiBlP2UucmVwbGFjZSgvXFxyLywiXHIiKS5yZXBsYWNlKC9cXG4vLCJcbiIpLnJlcGxhY2UoL1xcdC8sIlx0Iik6dH0sdC5wcm90b3R5cGUuX2dldF9udW1iZXI9ZnVuY3Rpb24oZSx0KXtlPXRoaXMucmF3X29wdGlvbnNbZV0sdD1wYXJzZUludCh0LDEwKSxpc05hTih0KSYmKHQ9MCksZT1wYXJzZUludChlLDEwKTtyZXR1cm4gZT1pc05hTihlKT90OmV9LHQucHJvdG90eXBlLl9nZXRfc2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCxuKXtuPXRoaXMuX2dldF9zZWxlY3Rpb25fbGlzdChlLHQsbik7aWYoMSE9PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBPcHRpb24gVmFsdWU6IFRoZSBvcHRpb24gJyIrZSsiJyBjYW4gb25seSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4iK3QrIlxuWW91IHBhc3NlZCBpbjogJyIrdGhpcy5yYXdfb3B0aW9uc1tlXSsiJyIpO3JldHVybiBuWzBdfSx0LnByb3RvdHlwZS5fZ2V0X3NlbGVjdGlvbl9saXN0PWZ1bmN0aW9uKGUsdCxuKXtpZighdHx8MD09PXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiU2VsZWN0aW9uIGxpc3QgY2Fubm90IGJlIGVtcHR5LiIpO2lmKG49bnx8W3RbMF1dLCF0aGlzLl9pc192YWxpZF9zZWxlY3Rpb24obix0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRGVmYXVsdCBWYWx1ZSEiKTtuPXRoaXMuX2dldF9hcnJheShlLG4pO2lmKCF0aGlzLl9pc192YWxpZF9zZWxlY3Rpb24obix0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgT3B0aW9uIFZhbHVlOiBUaGUgb3B0aW9uICciK2UrIicgY2FuIGNvbnRhaW4gb25seSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiIrdCsiXG5Zb3UgcGFzc2VkIGluOiAnIit0aGlzLnJhd19vcHRpb25zW2VdKyInIik7cmV0dXJuIG59LHQucHJvdG90eXBlLl9pc192YWxpZF9zZWxlY3Rpb249ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5sZW5ndGgmJnQubGVuZ3RoJiYhZS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybi0xPT09dC5pbmRleE9mKGUpfSl9LGUuZXhwb3J0cy5PcHRpb25zPXQsZS5leHBvcnRzLm5vcm1hbGl6ZU9wdHM9aSxlLmV4cG9ydHMubWVyZ2VPcHRzPW59LCxmdW5jdGlvbihlKXt2YXIgcj1SZWdFeHAucHJvdG90eXBlLmhhc093blByb3BlcnR5KCJzdGlja3kiKTtmdW5jdGlvbiB0KGUpe3RoaXMuX19pbnB1dD1lfHwiIix0aGlzLl9faW5wdXRfbGVuZ3RoPXRoaXMuX19pbnB1dC5sZW5ndGgsdGhpcy5fX3Bvc2l0aW9uPTB9dC5wcm90b3R5cGUucmVzdGFydD1mdW5jdGlvbigpe3RoaXMuX19wb3NpdGlvbj0wfSx0LnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7MDx0aGlzLl9fcG9zaXRpb24mJi0tdGhpcy5fX3Bvc2l0aW9ufSx0LnByb3RvdHlwZS5oYXNOZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19wb3NpdGlvbjx0aGlzLl9faW5wdXRfbGVuZ3RofSx0LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5oYXNOZXh0KCkmJihlPXRoaXMuX19pbnB1dC5jaGFyQXQodGhpcy5fX3Bvc2l0aW9uKSx0aGlzLl9fcG9zaXRpb24rPTEpLGV9LHQucHJvdG90eXBlLnBlZWs9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gZT1lfHwwLHQ9MDw9KGUrPXRoaXMuX19wb3NpdGlvbikmJmU8dGhpcy5fX2lucHV0X2xlbmd0aD90aGlzLl9faW5wdXQuY2hhckF0KGUpOnR9LHQucHJvdG90eXBlLl9fbWF0Y2g9ZnVuY3Rpb24oZSx0KXtlLmxhc3RJbmRleD10O3ZhciBuPWUuZXhlYyh0aGlzLl9faW5wdXQpO3JldHVybiFufHxyJiZlLnN0aWNreXx8bi5pbmRleCE9PXQmJihuPW51bGwpLG59LHQucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10fHwwLDA8PSh0Kz10aGlzLl9fcG9zaXRpb24pJiZ0PHRoaXMuX19pbnB1dF9sZW5ndGgmJiEhdGhpcy5fX21hdGNoKGUsdCl9LHQucHJvdG90eXBlLnRlc3RDaGFyPWZ1bmN0aW9uKGUsdCl7dD10aGlzLnBlZWsodCk7cmV0dXJuIGUubGFzdEluZGV4PTAsbnVsbCE9PXQmJmUudGVzdCh0KX0sdC5wcm90b3R5cGUubWF0Y2g9ZnVuY3Rpb24oZSl7ZT10aGlzLl9fbWF0Y2goZSx0aGlzLl9fcG9zaXRpb24pO3JldHVybiBlP3RoaXMuX19wb3NpdGlvbis9ZVswXS5sZW5ndGg6ZT1udWxsLGV9LHQucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9IiI7cmV0dXJuIGUmJihyPXRoaXMubWF0Y2goZSkpJiYoaSs9clswXSksIXR8fCFyJiZlfHwoaSs9dGhpcy5yZWFkVW50aWwodCxuKSksaX0sdC5wcm90b3R5cGUucmVhZFVudGlsPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX3Bvc2l0aW9uLGU9KGUubGFzdEluZGV4PXRoaXMuX19wb3NpdGlvbixlLmV4ZWModGhpcy5fX2lucHV0KSk7cmV0dXJuIGU/KG49ZS5pbmRleCx0JiYobis9ZVswXS5sZW5ndGgpKTpuPXRoaXMuX19pbnB1dF9sZW5ndGgsdD10aGlzLl9faW5wdXQuc3Vic3RyaW5nKHRoaXMuX19wb3NpdGlvbixuKSx0aGlzLl9fcG9zaXRpb249bix0fSx0LnByb3RvdHlwZS5yZWFkVW50aWxBZnRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZWFkVW50aWwoZSwhMCl9LHQucHJvdG90eXBlLmdldF9yZWdleHA9ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsLHQ9dCYmcj8ieSI6ImciO3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmIiIhPT1lP249bmV3IFJlZ0V4cChlLHQpOmUmJihuPW5ldyBSZWdFeHAoZS5zb3VyY2UsdCkpLG59LHQucHJvdG90eXBlLmdldF9saXRlcmFsX3JlZ2V4cD1mdW5jdGlvbihlKXtyZXR1cm4gUmVnRXhwKGUucmVwbGFjZSgvWy1cL1xcXiQqKz8uKCl8W1xde31dL2csIlxcJCYiKSl9LHQucHJvdG90eXBlLnBlZWtVbnRpbEFmdGVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19wb3NpdGlvbixlPXRoaXMucmVhZFVudGlsQWZ0ZXIoZSk7cmV0dXJuIHRoaXMuX19wb3NpdGlvbj10LGV9LHQucHJvdG90eXBlLmxvb2tCYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19wb3NpdGlvbi0xO3JldHVybiB0Pj1lLmxlbmd0aCYmdGhpcy5fX2lucHV0LnN1YnN0cmluZyh0LWUubGVuZ3RoLHQpLnRvTG93ZXJDYXNlKCk9PT1lfSxlLmV4cG9ydHMuSW5wdXRTY2FubmVyPXR9LCwsLCxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTplLnNvdXJjZSx0PSJzdHJpbmciPT10eXBlb2YgdD90OnQuc291cmNlLHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm49bmV3IFJlZ0V4cChlKy8gYmVhdXRpZnkoIFx3K1s6XVx3KykrIC8uc291cmNlK3QsImciKSx0aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm49LyAoXHcrKVs6XShcdyspL2csdGhpcy5fX2RpcmVjdGl2ZXNfZW5kX2lnbm9yZV9wYXR0ZXJuPW5ldyBSZWdFeHAoZSsvXHNiZWF1dGlmeVxzaWdub3JlOmVuZFxzLy5zb3VyY2UrdCwiZyIpfXQucHJvdG90eXBlLmdldF9kaXJlY3RpdmVzPWZ1bmN0aW9uKGUpe2lmKCFlLm1hdGNoKHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm4pKXJldHVybiBudWxsO2Zvcih2YXIgdD17fSxuPSh0aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4ubGFzdEluZGV4PTAsdGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmV4ZWMoZSkpO247KXRbblsxXV09blsyXSxuPXRoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5leGVjKGUpO3JldHVybiB0fSx0LnByb3RvdHlwZS5yZWFkSWdub3JlZD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZWFkVW50aWxBZnRlcih0aGlzLl9fZGlyZWN0aXZlc19lbmRfaWdub3JlX3BhdHRlcm4pfSxlLmV4cG9ydHMuRGlyZWN0aXZlcz10fSwsZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTYpLkJlYXV0aWZpZXIsaT1uKDE3KS5PcHRpb25zO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgcihlLHQpLmJlYXV0aWZ5KCl9LGUuZXhwb3J0cy5kZWZhdWx0T3B0aW9ucz1mdW5jdGlvbigpe3JldHVybiBuZXcgaX19LGZ1bmN0aW9uKGUsaSx0KXt2YXIgbj10KDE3KS5PcHRpb25zLG09dCgyKS5PdXRwdXQsZj10KDgpLklucHV0U2Nhbm5lcixnPW5ldyh0KDEzKS5EaXJlY3RpdmVzKSgvXC9cKi8sL1wqXC8vKSxiPS9cclxufFtcclxuXS8sXz0vXHJcbnxbXHJcbl0vZyx3PS9ccy8sdj0vKD86XHN8XG4pKy9nLHk9L1wvXCooPzpbXHNcU10qPykoKD86XCpcLyl8JCkvZyxUPS9cL1wvKD86W15cblxyXHUyMDI4XHUyMDI5XSopL2c7ZnVuY3Rpb24gcihlLHQpe3RoaXMuX3NvdXJjZV90ZXh0PWV8fCIiLHRoaXMuX29wdGlvbnM9bmV3IG4odCksdGhpcy5fY2g9bnVsbCx0aGlzLl9pbnB1dD1udWxsLHRoaXMuTkVTVEVEX0FUX1JVTEU9eyJAcGFnZSI6ITAsIkBmb250LWZhY2UiOiEwLCJAa2V5ZnJhbWVzIjohMCwiQG1lZGlhIjohMCwiQHN1cHBvcnRzIjohMCwiQGRvY3VtZW50IjohMH0sdGhpcy5DT05ESVRJT05BTF9HUk9VUF9SVUxFPXsiQG1lZGlhIjohMCwiQHN1cHBvcnRzIjohMCwiQGRvY3VtZW50IjohMH19ci5wcm90b3R5cGUuZWF0U3RyaW5nPWZ1bmN0aW9uKGUpe3ZhciB0PSIiO2Zvcih0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCk7dGhpcy5fY2g7KXtpZih0Kz10aGlzLl9jaCwiXFwiPT09dGhpcy5fY2gpdCs9dGhpcy5faW5wdXQubmV4dCgpO2Vsc2UgaWYoLTEhPT1lLmluZGV4T2YodGhpcy5fY2gpfHwiXG4iPT09dGhpcy5fY2gpYnJlYWs7dGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpfXJldHVybiB0fSxyLnByb3RvdHlwZS5lYXRXaGl0ZXNwYWNlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD13LnRlc3QodGhpcy5faW5wdXQucGVlaygpKSxuPTA7dy50ZXN0KHRoaXMuX2lucHV0LnBlZWsoKSk7KXRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSxlJiYiXG4iPT09dGhpcy5fY2gmJigwPT09bnx8bjx0aGlzLl9vcHRpb25zLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcykmJihuKyssdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSghMCkpO3JldHVybiB0fSxyLnByb3RvdHlwZS5mb3VuZE5lc3RlZFBzZXVkb0NsYXNzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTAsdD0xLG49dGhpcy5faW5wdXQucGVlayh0KTtuOyl7aWYoInsiPT09bilyZXR1cm4hMDtpZigiKCI9PT1uKWUrPTE7ZWxzZSBpZigiKSI9PT1uKXtpZigwPT09ZSlyZXR1cm4hMTstLWV9ZWxzZSBpZigiOyI9PT1ufHwifSI9PT1uKXJldHVybiExO3QrKyxuPXRoaXMuX2lucHV0LnBlZWsodCl9cmV0dXJuITF9LHIucHJvdG90eXBlLnByaW50X3N0cmluZz1mdW5jdGlvbihlKXt0aGlzLl9vdXRwdXQuc2V0X2luZGVudCh0aGlzLl9pbmRlbnRMZXZlbCksdGhpcy5fb3V0cHV0Lm5vbl9icmVha2luZ19zcGFjZT0hMCx0aGlzLl9vdXRwdXQuYWRkX3Rva2VuKGUpfSxyLnByb3RvdHlwZS5wcmVzZXJ2ZVNpbmdsZVNwYWNlPWZ1bmN0aW9uKGUpe2UmJih0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKX0sci5wcm90b3R5cGUuaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5faW5kZW50TGV2ZWwrK30sci5wcm90b3R5cGUub3V0ZGVudD1mdW5jdGlvbigpezA8dGhpcy5faW5kZW50TGV2ZWwmJnRoaXMuX2luZGVudExldmVsLS19LHIucHJvdG90eXBlLmJlYXV0aWZ5PWZ1bmN0aW9uKCl7aWYodGhpcy5fb3B0aW9ucy5kaXNhYmxlZClyZXR1cm4gdGhpcy5fc291cmNlX3RleHQ7Zm9yKHZhciBlLGMsdCxuLHI9dGhpcy5fc291cmNlX3RleHQsaT10aGlzLl9vcHRpb25zLmVvbCxkPSgiYXV0byI9PT1pJiYoaT0iXG4iLHImJmIudGVzdChyfHwiIikmJihpPXIubWF0Y2goYilbMF0pKSwocj1yLnJlcGxhY2UoXywiXG4iKSkubWF0Y2goL15bXHQgXSovKVswXSksYT0odGhpcy5fb3V0cHV0PW5ldyBtKHRoaXMuX29wdGlvbnMsZCksdGhpcy5faW5wdXQ9bmV3IGYociksdGhpcy5faW5kZW50TGV2ZWw9MCx0aGlzLl9uZXN0ZWRMZXZlbD0wLHRoaXMuX2NoPW51bGwsMCksbz0hMSxzPSExLGw9ITEsaD0hMSx1PSExLHA9dGhpcy5fY2g7ZT0iIiE9PXRoaXMuX2lucHV0LnJlYWQodiksYz1wLHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSwiXFwiPT09dGhpcy5fY2gmJnRoaXMuX2lucHV0Lmhhc05leHQoKSYmKHRoaXMuX2NoKz10aGlzLl9pbnB1dC5uZXh0KCkpLHA9dGhpcy5fY2gsdGhpcy5fY2g7KSIvIj09PXRoaXMuX2NoJiYiKiI9PT10aGlzLl9pbnB1dC5wZWVrKCk/KHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSx0aGlzLl9pbnB1dC5iYWNrKCksdD10aGlzLl9pbnB1dC5yZWFkKHkpLChuPWcuZ2V0X2RpcmVjdGl2ZXModCkpJiYic3RhcnQiPT09bi5pZ25vcmUmJih0Kz1nLnJlYWRJZ25vcmVkKHRoaXMuX2lucHV0KSksdGhpcy5wcmludF9zdHJpbmcodCksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCkpOiIvIj09PXRoaXMuX2NoJiYiLyI9PT10aGlzLl9pbnB1dC5wZWVrKCk/KHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsdGhpcy5faW5wdXQuYmFjaygpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2lucHV0LnJlYWQoVCkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCkpOiJAIj09PXRoaXMuX2NoPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UoZSksInsiPT09dGhpcy5faW5wdXQucGVlaygpP3RoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoK3RoaXMuZWF0U3RyaW5nKCJ9IikpOih0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksKG49dGhpcy5faW5wdXQucGVla1VudGlsQWZ0ZXIoL1s6ICw7e30oKVtcXVwvPSciXS9nKSkubWF0Y2goL1sgOl0kLykmJihuPXRoaXMuZWF0U3RyaW5nKCI6ICIpLnJlcGxhY2UoL1xzJC8sIiIpLHRoaXMucHJpbnRfc3RyaW5nKG4pLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApLCJleHRlbmQiPT09KG49bi5yZXBsYWNlKC9ccyQvLCIiKSk/aD0hMDoiaW1wb3J0Ij09PW4mJih1PSEwKSxuIGluIHRoaXMuTkVTVEVEX0FUX1JVTEU/KHRoaXMuX25lc3RlZExldmVsKz0xLG4gaW4gdGhpcy5DT05ESVRJT05BTF9HUk9VUF9SVUxFJiYobD0hMCkpOm98fDAhPT1hfHwtMT09PW4uaW5kZXhPZigiOiIpfHwocz0hMCx0aGlzLmluZGVudCgpKSkpOiIjIj09PXRoaXMuX2NoJiYieyI9PT10aGlzLl9pbnB1dC5wZWVrKCk/KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShlKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCt0aGlzLmVhdFN0cmluZygifSIpKSk6InsiPT09dGhpcy5fY2g/KHMmJihzPSExLHRoaXMub3V0ZGVudCgpKSxvPWw/KGw9ITEsdGhpcy5faW5kZW50TGV2ZWw+PXRoaXMuX25lc3RlZExldmVsKTp0aGlzLl9pbmRlbnRMZXZlbD49dGhpcy5fbmVzdGVkTGV2ZWwtMSx0aGlzLl9vcHRpb25zLm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyYmbyYmdGhpcy5fb3V0cHV0LnByZXZpb3VzX2xpbmUmJiJ7IiE9PXRoaXMuX291dHB1dC5wcmV2aW91c19saW5lLml0ZW0oLTEpJiZ0aGlzLl9vdXRwdXQuZW5zdXJlX2VtcHR5X2xpbmVfYWJvdmUoIi8iLCIsIiksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCwiZXhwYW5kIj09PXRoaXMuX29wdGlvbnMuYnJhY2Vfc3R5bGU/KHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5pbmRlbnQoKSx0aGlzLl9vdXRwdXQuc2V0X2luZGVudCh0aGlzLl9pbmRlbnRMZXZlbCkpOih0aGlzLmluZGVudCgpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCkpOiJ9Ij09PXRoaXMuX2NoPyh0aGlzLm91dGRlbnQoKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksInsiPT09YyYmdGhpcy5fb3V0cHV0LnRyaW0oITApLGg9dT0hMSxzJiYodGhpcy5vdXRkZW50KCkscz0hMSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLG89ITEsdGhpcy5fbmVzdGVkTGV2ZWwmJnRoaXMuX25lc3RlZExldmVsLS0sdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksdGhpcy5fb3B0aW9ucy5uZXdsaW5lX2JldHdlZW5fcnVsZXMmJiF0aGlzLl9vdXRwdXQuanVzdF9hZGRlZF9ibGFua2xpbmUoKSYmIn0iIT09dGhpcy5faW5wdXQucGVlaygpJiZ0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCEwKSk6IjoiPT09dGhpcy5fY2g/IW8mJiFsfHx0aGlzLl9pbnB1dC5sb29rQmFjaygiJiIpfHx0aGlzLmZvdW5kTmVzdGVkUHNldWRvQ2xhc3MoKXx8dGhpcy5faW5wdXQubG9va0JhY2soIigiKXx8aHx8MCE9PWE/KHRoaXMuX2lucHV0Lmxvb2tCYWNrKCIgIikmJih0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKSwiOiI9PT10aGlzLl9pbnB1dC5wZWVrKCk/KHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSx0aGlzLnByaW50X3N0cmluZygiOjoiKSk6dGhpcy5wcmludF9zdHJpbmcoIjoiKSk6KHRoaXMucHJpbnRfc3RyaW5nKCI6Iiksc3x8KHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49cz0hMCx0aGlzLmVhdFdoaXRlc3BhY2UoITApLHRoaXMuaW5kZW50KCkpKTonIic9PT10aGlzLl9jaHx8IiciPT09dGhpcy5fY2g/KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShlKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCt0aGlzLmVhdFN0cmluZyh0aGlzLl9jaCkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCkpOiI7Ij09PXRoaXMuX2NoPzA9PT1hPyhzJiYodGhpcy5vdXRkZW50KCkscz0hMSksdT1oPSExLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLCIvIiE9PXRoaXMuX2lucHV0LnBlZWsoKSYmdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpKToodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6IigiPT09dGhpcy5fY2g/dGhpcy5faW5wdXQubG9va0JhY2soInVybCIpPyh0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCksYSsrLHRoaXMuaW5kZW50KCksdGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLCIpIj09PXRoaXMuX2NofHwnIic9PT10aGlzLl9jaHx8IiciPT09dGhpcy5fY2g/dGhpcy5faW5wdXQuYmFjaygpOnRoaXMuX2NoJiYodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcoIikiKSksYSYmKGEtLSx0aGlzLm91dGRlbnQoKSkpKToodGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKGUpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSxhKyssdGhpcy5pbmRlbnQoKSk6IikiPT09dGhpcy5fY2g/KGEmJihhLS0sdGhpcy5vdXRkZW50KCkpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6IiwiPT09dGhpcy5fY2g/KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLCF0aGlzLl9vcHRpb25zLnNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lfHxzfHwwIT09YXx8dXx8aD90aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwOnRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSk6Ij4iIT09dGhpcy5fY2gmJiIrIiE9PXRoaXMuX2NoJiYifiIhPT10aGlzLl9jaHx8c3x8MCE9PWE/Il0iPT09dGhpcy5fY2g/dGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpOiJbIj09PXRoaXMuX2NoPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UoZSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpKToiPSI9PT10aGlzLl9jaD8odGhpcy5lYXRXaGl0ZXNwYWNlKCksdGhpcy5wcmludF9zdHJpbmcoIj0iKSx3LnRlc3QodGhpcy5fY2gpJiYodGhpcy5fY2g9IiIpKTooIiEiIT09dGhpcy5fY2h8fHRoaXMuX2lucHV0Lmxvb2tCYWNrKCJcXCIpP3RoaXMucHJlc2VydmVTaW5nbGVTcGFjZShlKTp0aGlzLnByaW50X3N0cmluZygiICIpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6dGhpcy5fb3B0aW9ucy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj8odGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSx0aGlzLl9jaCYmdy50ZXN0KHRoaXMuX2NoKSYmKHRoaXMuX2NoPSIiKSk7cmV0dXJuIHRoaXMuX291dHB1dC5nZXRfY29kZShpKX0sZS5leHBvcnRzLkJlYXV0aWZpZXI9cn0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNikuT3B0aW9ucztmdW5jdGlvbiBpKGUpe3IuY2FsbCh0aGlzLGUsImNzcyIpLHRoaXMuc2VsZWN0b3Jfc2VwYXJhdG9yX25ld2xpbmU9dGhpcy5fZ2V0X2Jvb2xlYW4oInNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lIiwhMCksdGhpcy5uZXdsaW5lX2JldHdlZW5fcnVsZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oIm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyIsITApO3ZhciBlPXRoaXMuX2dldF9ib29sZWFuKCJzcGFjZV9hcm91bmRfc2VsZWN0b3Jfc2VwYXJhdG9yIiksdD0odGhpcy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj10aGlzLl9nZXRfYm9vbGVhbigic3BhY2VfYXJvdW5kX2NvbWJpbmF0b3IiKXx8ZSx0aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoImJyYWNlX3N0eWxlIixbImNvbGxhcHNlIiwiZXhwYW5kIiwiZW5kLWV4cGFuZCIsIm5vbmUiLCJwcmVzZXJ2ZS1pbmxpbmUiXSkpO3RoaXMuYnJhY2Vfc3R5bGU9ImNvbGxhcHNlIjtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKykiZXhwYW5kIiE9PXRbbl0/dGhpcy5icmFjZV9zdHlsZT0iY29sbGFwc2UiOnRoaXMuYnJhY2Vfc3R5bGU9dFtuXX1pLnByb3RvdHlwZT1uZXcgcixlLmV4cG9ydHMuT3B0aW9ucz1pfV0sU2k9e307dmFyIEFpLE1pLFJpLElpLE5pLFVpLHppPWZ1bmN0aW9uIGUodCl7dmFyIG49U2lbdF07aWYodm9pZCAwIT09bilyZXR1cm4gbi5leHBvcnRzO249U2lbdF09e2V4cG9ydHM6e319O3JldHVybiBraVt0XShuLG4uZXhwb3J0cyxlKSxuLmV4cG9ydHN9KDE1KTtmdW5jdGlvbiBIaShlLHQsbil7dmFyIHI9ZS5nZXRUZXh0KCksYz0hMCxpPTAsZD1uLnRhYlNpemV8fDQ7aWYodCl7Zm9yKHZhciBhPWUub2Zmc2V0QXQodC5zdGFydCksbz1hOzA8byYmT2kocixvLTEpOylvLS07MD09PW98fFBpKHIsby0xKT9hPW86bzxhJiYoYT1vKzEpO2Zvcih2YXIgcz1lLm9mZnNldEF0KHQuZW5kKSxsPXM7bDxyLmxlbmd0aCYmT2kocixsKTspbCsrO2whPT1yLmxlbmd0aCYmIVBpKHIsbCl8fChzPWwpLHQ9dm4uY3JlYXRlKGUucG9zaXRpb25BdChhKSxlLnBvc2l0aW9uQXQocykpO3ZhciBoPXIuc3Vic3RyaW5nKDAsYSk7aWYobmV3IFJlZ0V4cCgvLipbPF1bXj5dKiQvKS50ZXN0KGgpKXJldHVyblt7cmFuZ2U6dCxuZXdUZXh0OnI9ci5zdWJzdHJpbmcoYSxzKX1dO2M9cz09PXIubGVuZ3RoLHI9ci5zdWJzdHJpbmcoYSxzKSwwIT09YSYmKGg9ZS5vZmZzZXRBdCh3bi5jcmVhdGUodC5zdGFydC5saW5lLDApKSxpPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LGk9MCxhPW4udGFiU2l6ZXx8NDtmb3IoO3I8ZS5sZW5ndGg7KXt2YXIgbz1lLmNoYXJBdChyKTtpZigiICI9PT1vKWkrKztlbHNle2lmKCJcdCIhPT1vKWJyZWFrO2krPWF9cisrfXJldHVybiBNYXRoLmZsb29yKGkvYSl9KGUuZ2V0VGV4dCgpLGgsbikpfWVsc2UgdD12bi5jcmVhdGUod24uY3JlYXRlKDAsMCksZS5wb3NpdGlvbkF0KHIubGVuZ3RoKSk7cz17aW5kZW50X3NpemU6ZCxpbmRlbnRfY2hhcjpuLmluc2VydFNwYWNlcz8iICI6Ilx0IixpbmRlbnRfZW1wdHlfbGluZXM6RGkobiwiaW5kZW50RW1wdHlMaW5lcyIsITEpLHdyYXBfbGluZV9sZW5ndGg6RGkobiwid3JhcExpbmVMZW5ndGgiLDEyMCksdW5mb3JtYXR0ZWQ6V2kobiwidW5mb3JtYXR0ZWQiLHZvaWQgMCksY29udGVudF91bmZvcm1hdHRlZDpXaShuLCJjb250ZW50VW5mb3JtYXR0ZWQiLHZvaWQgMCksaW5kZW50X2lubmVyX2h0bWw6RGkobiwiaW5kZW50SW5uZXJIdG1sIiwhMSkscHJlc2VydmVfbmV3bGluZXM6RGkobiwicHJlc2VydmVOZXdMaW5lcyIsITApLG1heF9wcmVzZXJ2ZV9uZXdsaW5lczpEaShuLCJtYXhQcmVzZXJ2ZU5ld0xpbmVzIiwzMjc4NiksaW5kZW50X2hhbmRsZWJhcnM6RGkobiwiaW5kZW50SGFuZGxlYmFycyIsITEpLGVuZF93aXRoX25ld2xpbmU6YyYmRGkobiwiZW5kV2l0aE5ld2xpbmUiLCExKSxleHRyYV9saW5lcnM6V2kobiwiZXh0cmFMaW5lcnMiLHZvaWQgMCksd3JhcF9hdHRyaWJ1dGVzOkRpKG4sIndyYXBBdHRyaWJ1dGVzIiwiYXV0byIpLHdyYXBfYXR0cmlidXRlc19pbmRlbnRfc2l6ZTpEaShuLCJ3cmFwQXR0cmlidXRlc0luZGVudFNpemUiLHZvaWQgMCksZW9sOiJcbiIsaW5kZW50X3NjcmlwdHM6RGkobiwiaW5kZW50U2NyaXB0cyIsIm5vcm1hbCIpLHRlbXBsYXRpbmc6ITAhPT1EaShuLCJ0ZW1wbGF0aW5nIiwiYWxsIik/WyJub25lIl06WyJhdXRvIl0sdW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXI6RGkobiwidW5mb3JtYXR0ZWRDb250ZW50RGVsaW1pdGVyIiwiIil9LGE9ci5yZXBsYWNlKC9eXHMrLywiIiksaD1BaShhLHMsRWksemkpO3JldHVybiAwPGkmJihlPW4uaW5zZXJ0U3BhY2VzP1lyKCIgIixkKmkpOllyKCJcdCIsaSksaD1oLnNwbGl0KCJcbiIpLmpvaW4oIlxuIitlKSwwPT09dC5zdGFydC5jaGFyYWN0ZXImJihoPWUraCkpLFt7cmFuZ2U6dCxuZXdUZXh0Omh9XX1mdW5jdGlvbiBEaShlLHQsbil7aWYoZSYmZS5oYXNPd25Qcm9wZXJ0eSh0KSl7ZT1lW3RdO2lmKG51bGwhPT1lKXJldHVybiBlfXJldHVybiBufWZ1bmN0aW9uIFdpKGUsdCxuKXtlPURpKGUsdCxudWxsKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/MDxlLmxlbmd0aD9lLnNwbGl0KCIsIikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0oKS50b0xvd2VyQ2FzZSgpfSk6W106bn1mdW5jdGlvbiBQaShlLHQpe3JldHVybi0xIT09IlxyXG4iLmluZGV4T2YoZS5jaGFyQXQodCkpfWZ1bmN0aW9uIE9pKGUsdCl7cmV0dXJuLTEhPT0iIFx0Ii5pbmRleE9mKGUuY2hhckF0KHQpKX1mdW5jdGlvbiBxaShlKXtpZihVaVtlXSlyZXR1cm4gVWlbZV0uZXhwb3J0czt2YXIgdD1VaVtlXT17ZXhwb3J0czp7fX07cmV0dXJuIE5pW2VdKHQsdC5leHBvcnRzLHFpKSx0LmV4cG9ydHN9TWk9WywsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gaShlKXt0aGlzLl9fcGFyZW50PWUsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX19pbmRlbnRfY291bnQ9LTEsdGhpcy5fX2FsaWdubWVudF9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGV4PTAsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PTAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PS0xLHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD0wLHRoaXMuX19pdGVtcz1bXX1mdW5jdGlvbiBuKGUsdCl7dGhpcy5fX2NhY2hlPVsiIl0sdGhpcy5fX2luZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy5fX2luZGVudF9zdHJpbmc9ZS5pbmRlbnRfY2hhcixlLmluZGVudF93aXRoX3RhYnN8fCh0aGlzLl9faW5kZW50X3N0cmluZz1uZXcgQXJyYXkoZS5pbmRlbnRfc2l6ZSsxKS5qb2luKGUuaW5kZW50X2NoYXIpKSx0PXR8fCIiLDA8ZS5pbmRlbnRfbGV2ZWwmJih0PW5ldyBBcnJheShlLmluZGVudF9sZXZlbCsxKS5qb2luKHRoaXMuX19pbmRlbnRfc3RyaW5nKSksdGhpcy5fX2Jhc2Vfc3RyaW5nPXQsdGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aD10Lmxlbmd0aH1mdW5jdGlvbiB0KGUsdCl7dGhpcy5fX2luZGVudF9jYWNoZT1uZXcgbihlLHQpLHRoaXMucmF3PSExLHRoaXMuX2VuZF93aXRoX25ld2xpbmU9ZS5lbmRfd2l0aF9uZXdsaW5lLHRoaXMuaW5kZW50X3NpemU9ZS5pbmRlbnRfc2l6ZSx0aGlzLndyYXBfbGluZV9sZW5ndGg9ZS53cmFwX2xpbmVfbGVuZ3RoLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPWUuaW5kZW50X2VtcHR5X2xpbmVzLHRoaXMuX19saW5lcz1bXSx0aGlzLnByZXZpb3VzX2xpbmU9bnVsbCx0aGlzLmN1cnJlbnRfbGluZT1udWxsLHRoaXMubmV4dF9saW5lPW5ldyBpKHRoaXMpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMSx0aGlzLl9fYWRkX291dHB1dGxpbmUoKX1pLnByb3RvdHlwZS5jbG9uZV9lbXB0eT1mdW5jdGlvbigpe3ZhciBlPW5ldyBpKHRoaXMuX19wYXJlbnQpO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlfSxpLnByb3RvdHlwZS5pdGVtPWZ1bmN0aW9uKGUpe3JldHVybiBlPDA/dGhpcy5fX2l0ZW1zW3RoaXMuX19pdGVtcy5sZW5ndGgrZV06dGhpcy5fX2l0ZW1zW2VdfSxpLnByb3RvdHlwZS5oYXNfbWF0Y2g9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19pdGVtcy5sZW5ndGgtMTswPD10O3QtLSlpZih0aGlzLl9faXRlbXNbdF0ubWF0Y2goZSkpcmV0dXJuITA7cmV0dXJuITF9LGkucHJvdG90eXBlLnNldF9pbmRlbnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmlzX2VtcHR5KCkmJih0aGlzLl9faW5kZW50X2NvdW50PWV8fDAsdGhpcy5fX2FsaWdubWVudF9jb3VudD10fHwwLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3NpemUodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSl9LGkucHJvdG90eXBlLl9zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuX19wYXJlbnQud3JhcF9saW5lX2xlbmd0aCYmKHRoaXMuX193cmFwX3BvaW50X2luZGV4PXRoaXMuX19pdGVtcy5sZW5ndGgsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PXRoaXMuX19jaGFyYWN0ZXJfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PXRoaXMuX19wYXJlbnQubmV4dF9saW5lLl9faW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2FsaWdubWVudF9jb3VudCl9LGkucHJvdG90eXBlLl9zaG91bGRfd3JhcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fd3JhcF9wb2ludF9pbmRleCYmdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJnRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2NoYXJhY3Rlcl9jb3VudH0saS5wcm90b3R5cGUuX2FsbG93X3dyYXA9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4hIXRoaXMuX3Nob3VsZF93cmFwKCkmJih0aGlzLl9fcGFyZW50LmFkZF9uZXdfbGluZSgpLChlPXRoaXMuX19wYXJlbnQuY3VycmVudF9saW5lKS5zZXRfaW5kZW50KHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudCx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQpLGUuX19pdGVtcz10aGlzLl9faXRlbXMuc2xpY2UodGhpcy5fX3dyYXBfcG9pbnRfaW5kZXgpLHRoaXMuX19pdGVtcz10aGlzLl9faXRlbXMuc2xpY2UoMCx0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksZS5fX2NoYXJhY3Rlcl9jb3VudCs9dGhpcy5fX2NoYXJhY3Rlcl9jb3VudC10aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD10aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQsIiAiPT09ZS5fX2l0ZW1zWzBdJiYoZS5fX2l0ZW1zLnNwbGljZSgwLDEpLC0tZS5fX2NoYXJhY3Rlcl9jb3VudCksITApfSxpLnByb3RvdHlwZS5pc19lbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5fX2l0ZW1zLmxlbmd0aH0saS5wcm90b3R5cGUubGFzdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzX2VtcHR5KCk/bnVsbDp0aGlzLl9faXRlbXNbdGhpcy5fX2l0ZW1zLmxlbmd0aC0xXX0saS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihlKXt0aGlzLl9faXRlbXMucHVzaChlKTt2YXIgdD1lLmxhc3RJbmRleE9mKCJcbiIpOy0xIT09dD90aGlzLl9fY2hhcmFjdGVyX2NvdW50PWUubGVuZ3RoLXQ6dGhpcy5fX2NoYXJhY3Rlcl9jb3VudCs9ZS5sZW5ndGh9LGkucHJvdG90eXBlLnBvcD1mdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKXx8KGU9dGhpcy5fX2l0ZW1zLnBvcCgpLHRoaXMuX19jaGFyYWN0ZXJfY291bnQtPWUubGVuZ3RoKSxlfSxpLnByb3RvdHlwZS5fcmVtb3ZlX2luZGVudD1mdW5jdGlvbigpezA8dGhpcy5fX2luZGVudF9jb3VudCYmKC0tdGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT10aGlzLl9fcGFyZW50LmluZGVudF9zaXplKX0saS5wcm90b3R5cGUuX3JlbW92ZV93cmFwX2luZGVudD1mdW5jdGlvbigpezA8dGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50JiYtLXRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudH0saS5wcm90b3R5cGUudHJpbT1mdW5jdGlvbigpe2Zvcig7IiAiPT09dGhpcy5sYXN0KCk7KXRoaXMuX19pdGVtcy5wb3AoKSwtLXRoaXMuX19jaGFyYWN0ZXJfY291bnR9LGkucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGU9IiI7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKT90aGlzLl9fcGFyZW50LmluZGVudF9lbXB0eV9saW5lcyYmKGU9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3N0cmluZyh0aGlzLl9faW5kZW50X2NvdW50KSk6KGU9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3N0cmluZyh0aGlzLl9faW5kZW50X2NvdW50LHRoaXMuX19hbGlnbm1lbnRfY291bnQpLGUrPXRoaXMuX19pdGVtcy5qb2luKCIiKSksZX0sbi5wcm90b3R5cGUuZ2V0X2luZGVudF9zaXplPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aDtyZXR1cm4gbj0obj1lPDA/MDpuKStlKnRoaXMuX19pbmRlbnRfc2l6ZSsodD10fHwwKX0sbi5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9fYmFzZV9zdHJpbmc7cmV0dXJuIHQ9dHx8MCxlPDAmJihlPTAsbj0iIiksdCs9ZSp0aGlzLl9faW5kZW50X3NpemUsdGhpcy5fX2Vuc3VyZV9jYWNoZSh0KSxuKz10aGlzLl9fY2FjaGVbdF19LG4ucHJvdG90eXBlLl9fZW5zdXJlX2NhY2hlPWZ1bmN0aW9uKGUpe2Zvcig7ZT49dGhpcy5fX2NhY2hlLmxlbmd0aDspdGhpcy5fX2FkZF9jb2x1bW4oKX0sbi5wcm90b3R5cGUuX19hZGRfY29sdW1uPWZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLl9fY2FjaGUubGVuZ3RoLG49IiI7dGhpcy5fX2luZGVudF9zaXplJiZ0Pj10aGlzLl9faW5kZW50X3NpemUmJih0LT0oZT1NYXRoLmZsb29yKHQvdGhpcy5fX2luZGVudF9zaXplKSkqdGhpcy5fX2luZGVudF9zaXplLG49bmV3IEFycmF5KGUrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLHQmJihuKz1uZXcgQXJyYXkodCsxKS5qb2luKCIgIikpLHRoaXMuX19jYWNoZS5wdXNoKG4pfSx0LnByb3RvdHlwZS5fX2FkZF9vdXRwdXRsaW5lPWZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuY3VycmVudF9saW5lLHRoaXMuY3VycmVudF9saW5lPXRoaXMubmV4dF9saW5lLmNsb25lX2VtcHR5KCksdGhpcy5fX2xpbmVzLnB1c2godGhpcy5jdXJyZW50X2xpbmUpfSx0LnByb3RvdHlwZS5nZXRfbGluZV9udW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2xpbmVzLmxlbmd0aH0sdC5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3N0cmluZyhlLHQpfSx0LnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3NpemUoZSx0KX0sdC5wcm90b3R5cGUuaXNfZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5wcmV2aW91c19saW5lJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSx0LnByb3RvdHlwZS5hZGRfbmV3X2xpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuISh0aGlzLmlzX2VtcHR5KCl8fCFlJiZ0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpKSYmKHRoaXMucmF3fHx0aGlzLl9fYWRkX291dHB1dGxpbmUoKSwhMCl9LHQucHJvdG90eXBlLmdldF9jb2RlPWZ1bmN0aW9uKGUpe3RoaXMudHJpbSghMCk7dmFyIHQ9dGhpcy5jdXJyZW50X2xpbmUucG9wKCksdD0odCYmKCJcbiI9PT10W3QubGVuZ3RoLTFdJiYodD10LnJlcGxhY2UoL1xuKyQvZywiIikpLHRoaXMuY3VycmVudF9saW5lLnB1c2godCkpLHRoaXMuX2VuZF93aXRoX25ld2xpbmUmJnRoaXMuX19hZGRfb3V0cHV0bGluZSgpLHRoaXMuX19saW5lcy5qb2luKCJcbiIpKTtyZXR1cm4gdD0iXG4iIT09ZT90LnJlcGxhY2UoL1tcbl0vZyxlKTp0fSx0LnByb3RvdHlwZS5zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuY3VycmVudF9saW5lLl9zZXRfd3JhcF9wb2ludCgpfSx0LnByb3RvdHlwZS5zZXRfaW5kZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubmV4dF9saW5lLnNldF9pbmRlbnQoZT1lfHwwLHQ9dHx8MCksMTx0aGlzLl9fbGluZXMubGVuZ3RoPyh0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KGUsdCksITApOih0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KCksITEpfSx0LnByb3RvdHlwZS5hZGRfcmF3X3Rva2VuPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8ZS5uZXdsaW5lczt0KyspdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCk7dGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudCgtMSksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlLndoaXRlc3BhY2VfYmVmb3JlKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKGUudGV4dCksdGhpcy5zcGFjZV9iZWZvcmVfdG9rZW49ITEsdGhpcy5ub25fYnJlYWtpbmdfc3BhY2U9ITEsdGhpcy5wcmV2aW91c190b2tlbl93cmFwcGVkPSExfSx0LnByb3RvdHlwZS5hZGRfdG9rZW49ZnVuY3Rpb24oZSl7dGhpcy5fX2FkZF9zcGFjZV9iZWZvcmVfdG9rZW4oKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKGUpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD10aGlzLmN1cnJlbnRfbGluZS5fYWxsb3dfd3JhcCgpfSx0LnByb3RvdHlwZS5fX2FkZF9zcGFjZV9iZWZvcmVfdG9rZW49ZnVuY3Rpb24oKXt0aGlzLnNwYWNlX2JlZm9yZV90b2tlbiYmIXRoaXMuanVzdF9hZGRlZF9uZXdsaW5lKCkmJih0aGlzLm5vbl9icmVha2luZ19zcGFjZXx8dGhpcy5zZXRfd3JhcF9wb2ludCgpLHRoaXMuY3VycmVudF9saW5lLnB1c2goIiAiKSl9LHQucHJvdG90eXBlLnJlbW92ZV9pbmRlbnQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19saW5lcy5sZW5ndGg7ZTx0Oyl0aGlzLl9fbGluZXNbZV0uX3JlbW92ZV9pbmRlbnQoKSxlKys7dGhpcy5jdXJyZW50X2xpbmUuX3JlbW92ZV93cmFwX2luZGVudCgpfSx0LnByb3RvdHlwZS50cmltPWZ1bmN0aW9uKGUpe2ZvcihlPXZvaWQgMCE9PWUmJmUsdGhpcy5jdXJyZW50X2xpbmUudHJpbSgpO2UmJjE8dGhpcy5fX2xpbmVzLmxlbmd0aCYmdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKTspdGhpcy5fX2xpbmVzLnBvcCgpLHRoaXMuY3VycmVudF9saW5lPXRoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTFdLHRoaXMuY3VycmVudF9saW5lLnRyaW0oKTt0aGlzLnByZXZpb3VzX2xpbmU9MTx0aGlzLl9fbGluZXMubGVuZ3RoP3RoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTJdOm51bGx9LHQucHJvdG90eXBlLmp1c3RfYWRkZWRfbmV3bGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSx0LnByb3RvdHlwZS5qdXN0X2FkZGVkX2JsYW5rbGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzX2VtcHR5KCl8fHRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCkmJnRoaXMucHJldmlvdXNfbGluZS5pc19lbXB0eSgpfSx0LnByb3RvdHlwZS5lbnN1cmVfZW1wdHlfbGluZV9hYm92ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLl9fbGluZXMubGVuZ3RoLTI7MDw9bjspe3ZhciByPXRoaXMuX19saW5lc1tuXTtpZihyLmlzX2VtcHR5KCkpYnJlYWs7aWYoMCE9PXIuaXRlbSgwKS5pbmRleE9mKGUpJiZyLml0ZW0oLTEpIT09dCl7dGhpcy5fX2xpbmVzLnNwbGljZShuKzEsMCxuZXcgaSh0aGlzKSksdGhpcy5wcmV2aW91c19saW5lPXRoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTJdO2JyZWFrfW4tLX19LGUuZXhwb3J0cy5PdXRwdXQ9dH0sZnVuY3Rpb24oZSl7ZS5leHBvcnRzLlRva2VuPWZ1bmN0aW9uKGUsdCxuLHIpe3RoaXMudHlwZT1lLHRoaXMudGV4dD10LHRoaXMuY29tbWVudHNfYmVmb3JlPW51bGwsdGhpcy5uZXdsaW5lcz1ufHwwLHRoaXMud2hpdGVzcGFjZV9iZWZvcmU9cnx8IiIsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLm5leHQ9bnVsbCx0aGlzLnByZXZpb3VzPW51bGwsdGhpcy5vcGVuZWQ9bnVsbCx0aGlzLmNsb3NlZD1udWxsLHRoaXMuZGlyZWN0aXZlcz1udWxsfX0sLCxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7dGhpcy5yYXdfb3B0aW9ucz1uKGUsdCksdGhpcy5kaXNhYmxlZD10aGlzLl9nZXRfYm9vbGVhbigiZGlzYWJsZWQiKSx0aGlzLmVvbD10aGlzLl9nZXRfY2hhcmFjdGVycygiZW9sIiwiYXV0byIpLHRoaXMuZW5kX3dpdGhfbmV3bGluZT10aGlzLl9nZXRfYm9vbGVhbigiZW5kX3dpdGhfbmV3bGluZSIpLHRoaXMuaW5kZW50X3NpemU9dGhpcy5fZ2V0X251bWJlcigiaW5kZW50X3NpemUiLDQpLHRoaXMuaW5kZW50X2NoYXI9dGhpcy5fZ2V0X2NoYXJhY3RlcnMoImluZGVudF9jaGFyIiwiICIpLHRoaXMuaW5kZW50X2xldmVsPXRoaXMuX2dldF9udW1iZXIoImluZGVudF9sZXZlbCIpLHRoaXMucHJlc2VydmVfbmV3bGluZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oInByZXNlcnZlX25ld2xpbmVzIiwhMCksdGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9dGhpcy5fZ2V0X251bWJlcigibWF4X3ByZXNlcnZlX25ld2xpbmVzIiwzMjc4NiksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lc3x8KHRoaXMubWF4X3ByZXNlcnZlX25ld2xpbmVzPTApLHRoaXMuaW5kZW50X3dpdGhfdGFicz10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X3dpdGhfdGFicyIsIlx0Ij09PXRoaXMuaW5kZW50X2NoYXIpLHRoaXMuaW5kZW50X3dpdGhfdGFicyYmKHRoaXMuaW5kZW50X2NoYXI9Ilx0IiwxPT09dGhpcy5pbmRlbnRfc2l6ZSYmKHRoaXMuaW5kZW50X3NpemU9NCkpLHRoaXMud3JhcF9saW5lX2xlbmd0aD10aGlzLl9nZXRfbnVtYmVyKCJ3cmFwX2xpbmVfbGVuZ3RoIix0aGlzLl9nZXRfbnVtYmVyKCJtYXhfY2hhciIpKSx0aGlzLmluZGVudF9lbXB0eV9saW5lcz10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X2VtcHR5X2xpbmVzIiksdGhpcy50ZW1wbGF0aW5nPXRoaXMuX2dldF9zZWxlY3Rpb25fbGlzdCgidGVtcGxhdGluZyIsWyJhdXRvIiwibm9uZSIsImRqYW5nbyIsImVyYiIsImhhbmRsZWJhcnMiLCJwaHAiLCJzbWFydHkiXSxbImF1dG8iXSl9ZnVuY3Rpb24gbihlLHQpe3ZhciBuLHI9e307Zm9yKG4gaW4gZT1pKGUpKW4hPT10JiYocltuXT1lW25dKTtpZih0JiZlW3RdKWZvcihuIGluIGVbdF0pcltuXT1lW3RdW25dO3JldHVybiByfWZ1bmN0aW9uIGkoZSl7dmFyIHQsbj17fTtmb3IodCBpbiBlKW5bdC5yZXBsYWNlKC8tL2csIl8iKV09ZVt0XTtyZXR1cm4gbn10LnByb3RvdHlwZS5fZ2V0X2FycmF5PWZ1bmN0aW9uKGUsdCl7ZT10aGlzLnJhd19vcHRpb25zW2VdLHQ9dHx8W107cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlP251bGwhPT1lJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25jYXQmJih0PWUuY29uY2F0KCkpOiJzdHJpbmciPT10eXBlb2YgZSYmKHQ9ZS5zcGxpdCgvW15hLXpBLVowLTlfXC9cLV0rLykpLHR9LHQucHJvdG90eXBlLl9nZXRfYm9vbGVhbj1mdW5jdGlvbihlLHQpe2U9dGhpcy5yYXdfb3B0aW9uc1tlXTtyZXR1cm4gdm9pZCAwPT09ZT8hIXQ6ISFlfSx0LnByb3RvdHlwZS5fZ2V0X2NoYXJhY3RlcnM9ZnVuY3Rpb24oZSx0KXtlPXRoaXMucmF3X29wdGlvbnNbZV0sdD10fHwiIjtyZXR1cm4gdD0ic3RyaW5nIj09dHlwZW9mIGU/ZS5yZXBsYWNlKC9cXHIvLCJcciIpLnJlcGxhY2UoL1xcbi8sIlxuIikucmVwbGFjZSgvXFx0LywiXHQiKTp0fSx0LnByb3RvdHlwZS5fZ2V0X251bWJlcj1mdW5jdGlvbihlLHQpe2U9dGhpcy5yYXdfb3B0aW9uc1tlXSx0PXBhcnNlSW50KHQsMTApLGlzTmFOKHQpJiYodD0wKSxlPXBhcnNlSW50KGUsMTApO3JldHVybiBlPWlzTmFOKGUpP3Q6ZX0sdC5wcm90b3R5cGUuX2dldF9zZWxlY3Rpb249ZnVuY3Rpb24oZSx0LG4pe249dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KGUsdCxuKTtpZigxIT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIE9wdGlvbiBWYWx1ZTogVGhlIG9wdGlvbiAnIitlKyInIGNhbiBvbmx5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiIrdCsiXG5Zb3UgcGFzc2VkIGluOiAnIit0aGlzLnJhd19vcHRpb25zW2VdKyInIik7cmV0dXJuIG5bMF19LHQucHJvdG90eXBlLl9nZXRfc2VsZWN0aW9uX2xpc3Q9ZnVuY3Rpb24oZSx0LG4pe2lmKCF0fHwwPT09dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJTZWxlY3Rpb24gbGlzdCBjYW5ub3QgYmUgZW1wdHkuIik7aWYobj1ufHxbdFswXV0sIXRoaXMuX2lzX3ZhbGlkX3NlbGVjdGlvbihuLHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBEZWZhdWx0IFZhbHVlISIpO249dGhpcy5fZ2V0X2FycmF5KGUsbik7aWYoIXRoaXMuX2lzX3ZhbGlkX3NlbGVjdGlvbihuLHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBPcHRpb24gVmFsdWU6IFRoZSBvcHRpb24gJyIrZSsiJyBjYW4gY29udGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuIit0KyJcbllvdSBwYXNzZWQgaW46ICciK3RoaXMucmF3X29wdGlvbnNbZV0rIiciKTtyZXR1cm4gbn0sdC5wcm90b3R5cGUuX2lzX3ZhbGlkX3NlbGVjdGlvbj1mdW5jdGlvbihlLHQpe3JldHVybiBlLmxlbmd0aCYmdC5sZW5ndGgmJiFlLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuLTE9PT10LmluZGV4T2YoZSl9KX0sZS5leHBvcnRzLk9wdGlvbnM9dCxlLmV4cG9ydHMubm9ybWFsaXplT3B0cz1pLGUuZXhwb3J0cy5tZXJnZU9wdHM9bn0sLGZ1bmN0aW9uKGUpe3ZhciByPVJlZ0V4cC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoInN0aWNreSIpO2Z1bmN0aW9uIHQoZSl7dGhpcy5fX2lucHV0PWV8fCIiLHRoaXMuX19pbnB1dF9sZW5ndGg9dGhpcy5fX2lucHV0Lmxlbmd0aCx0aGlzLl9fcG9zaXRpb249MH10LnByb3RvdHlwZS5yZXN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5fX3Bvc2l0aW9uPTB9LHQucHJvdG90eXBlLmJhY2s9ZnVuY3Rpb24oKXswPHRoaXMuX19wb3NpdGlvbiYmLS10aGlzLl9fcG9zaXRpb259LHQucHJvdG90eXBlLmhhc05leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3Bvc2l0aW9uPHRoaXMuX19pbnB1dF9sZW5ndGh9LHQucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt2YXIgZT1udWxsO3JldHVybiB0aGlzLmhhc05leHQoKSYmKGU9dGhpcy5fX2lucHV0LmNoYXJBdCh0aGlzLl9fcG9zaXRpb24pLHRoaXMuX19wb3NpdGlvbis9MSksZX0sdC5wcm90b3R5cGUucGVlaz1mdW5jdGlvbihlKXt2YXIgdD1udWxsO3JldHVybiBlPWV8fDAsdD0wPD0oZSs9dGhpcy5fX3Bvc2l0aW9uKSYmZTx0aGlzLl9faW5wdXRfbGVuZ3RoP3RoaXMuX19pbnB1dC5jaGFyQXQoZSk6dH0sdC5wcm90b3R5cGUuX19tYXRjaD1mdW5jdGlvbihlLHQpe2UubGFzdEluZGV4PXQ7dmFyIG49ZS5leGVjKHRoaXMuX19pbnB1dCk7cmV0dXJuIW58fHImJmUuc3RpY2t5fHxuLmluZGV4IT09dCYmKG49bnVsbCksbn0sdC5wcm90b3R5cGUudGVzdD1mdW5jdGlvbihlLHQpe3JldHVybiB0PXR8fDAsMDw9KHQrPXRoaXMuX19wb3NpdGlvbikmJnQ8dGhpcy5fX2lucHV0X2xlbmd0aCYmISF0aGlzLl9fbWF0Y2goZSx0KX0sdC5wcm90b3R5cGUudGVzdENoYXI9ZnVuY3Rpb24oZSx0KXt0PXRoaXMucGVlayh0KTtyZXR1cm4gZS5sYXN0SW5kZXg9MCxudWxsIT09dCYmZS50ZXN0KHQpfSx0LnByb3RvdHlwZS5tYXRjaD1mdW5jdGlvbihlKXtlPXRoaXMuX19tYXRjaChlLHRoaXMuX19wb3NpdGlvbik7cmV0dXJuIGU/dGhpcy5fX3Bvc2l0aW9uKz1lWzBdLmxlbmd0aDplPW51bGwsZX0sdC5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaT0iIjtyZXR1cm4gZSYmKHI9dGhpcy5tYXRjaChlKSkmJihpKz1yWzBdKSwhdHx8IXImJmV8fChpKz10aGlzLnJlYWRVbnRpbCh0LG4pKSxpfSx0LnByb3RvdHlwZS5yZWFkVW50aWw9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9fcG9zaXRpb24sZT0oZS5sYXN0SW5kZXg9dGhpcy5fX3Bvc2l0aW9uLGUuZXhlYyh0aGlzLl9faW5wdXQpKTtyZXR1cm4gZT8obj1lLmluZGV4LHQmJihuKz1lWzBdLmxlbmd0aCkpOm49dGhpcy5fX2lucHV0X2xlbmd0aCx0PXRoaXMuX19pbnB1dC5zdWJzdHJpbmcodGhpcy5fX3Bvc2l0aW9uLG4pLHRoaXMuX19wb3NpdGlvbj1uLHR9LHQucHJvdG90eXBlLnJlYWRVbnRpbEFmdGVyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJlYWRVbnRpbChlLCEwKX0sdC5wcm90b3R5cGUuZ2V0X3JlZ2V4cD1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGwsdD10JiZyPyJ5IjoiZyI7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiYiIiE9PWU/bj1uZXcgUmVnRXhwKGUsdCk6ZSYmKG49bmV3IFJlZ0V4cChlLnNvdXJjZSx0KSksbn0sdC5wcm90b3R5cGUuZ2V0X2xpdGVyYWxfcmVnZXhwPWZ1bmN0aW9uKGUpe3JldHVybiBSZWdFeHAoZS5yZXBsYWNlKC9bLVwvXFxeJCorPy4oKXxbXF17fV0vZywiXFwkJiIpKX0sdC5wcm90b3R5cGUucGVla1VudGlsQWZ0ZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX3Bvc2l0aW9uLGU9dGhpcy5yZWFkVW50aWxBZnRlcihlKTtyZXR1cm4gdGhpcy5fX3Bvc2l0aW9uPXQsZX0sdC5wcm90b3R5cGUubG9va0JhY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX3Bvc2l0aW9uLTE7cmV0dXJuIHQ+PWUubGVuZ3RoJiZ0aGlzLl9faW5wdXQuc3Vic3RyaW5nKHQtZS5sZW5ndGgsdCkudG9Mb3dlckNhc2UoKT09PWV9LGUuZXhwb3J0cy5JbnB1dFNjYW5uZXI9dH0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0KXt0aGlzLl9pbnB1dD1uZXcgaShlKSx0aGlzLl9vcHRpb25zPXR8fHt9LHRoaXMuX190b2tlbnM9bnVsbCx0aGlzLl9wYXR0ZXJucz17fSx0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlPW5ldyBzKHRoaXMuX2lucHV0KX12YXIgaT1uKDgpLklucHV0U2Nhbm5lcixhPW4oMykuVG9rZW4sbz1uKDEwKS5Ub2tlblN0cmVhbSxzPW4oMTEpLldoaXRlc3BhY2VQYXR0ZXJuLGw9e1NUQVJUOiJUS19TVEFSVCIsUkFXOiJUS19SQVciLEVPRjoiVEtfRU9GIn07ci5wcm90b3R5cGUudG9rZW5pemU9ZnVuY3Rpb24oKXt0aGlzLl9pbnB1dC5yZXN0YXJ0KCksdGhpcy5fX3Rva2Vucz1uZXcgbyx0aGlzLl9yZXNldCgpO2Zvcih2YXIgZSx0PW5ldyBhKGwuU1RBUlQsIiIpLG49bnVsbCxyPVtdLGk9bmV3IG87dC50eXBlIT09bC5FT0Y7KXtmb3IoZT10aGlzLl9nZXRfbmV4dF90b2tlbih0LG4pO3RoaXMuX2lzX2NvbW1lbnQoZSk7KWkuYWRkKGUpLGU9dGhpcy5fZ2V0X25leHRfdG9rZW4odCxuKTtpLmlzRW1wdHkoKXx8KGUuY29tbWVudHNfYmVmb3JlPWksaT1uZXcgbyksZS5wYXJlbnQ9bix0aGlzLl9pc19vcGVuaW5nKGUpPyhyLnB1c2gobiksbj1lKTpuJiZ0aGlzLl9pc19jbG9zaW5nKGUsbikmJigoZS5vcGVuZWQ9bikuY2xvc2VkPWUsbj1yLnBvcCgpLGUucGFyZW50PW4pLChlLnByZXZpb3VzPXQpLm5leHQ9ZSx0aGlzLl9fdG9rZW5zLmFkZChlKSx0PWV9cmV0dXJuIHRoaXMuX190b2tlbnN9LHIucHJvdG90eXBlLl9pc19maXJzdF90b2tlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fdG9rZW5zLmlzRW1wdHkoKX0sci5wcm90b3R5cGUuX3Jlc2V0PWZ1bmN0aW9uKCl7fSxyLnByb3RvdHlwZS5fZ2V0X25leHRfdG9rZW49ZnVuY3Rpb24oZSx0KXt0aGlzLl9yZWFkV2hpdGVzcGFjZSgpO3ZhciBuPXRoaXMuX2lucHV0LnJlYWQoLy4rL2cpO3JldHVybiBuP3RoaXMuX2NyZWF0ZV90b2tlbihsLlJBVyxuKTp0aGlzLl9jcmVhdGVfdG9rZW4obC5FT0YsIiIpfSxyLnByb3RvdHlwZS5faXNfY29tbWVudD1mdW5jdGlvbihlKXtyZXR1cm4hMX0sci5wcm90b3R5cGUuX2lzX29wZW5pbmc9ZnVuY3Rpb24oZSl7cmV0dXJuITF9LHIucHJvdG90eXBlLl9pc19jbG9zaW5nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuITF9LHIucHJvdG90eXBlLl9jcmVhdGVfdG9rZW49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IGEoZSx0LHRoaXMuX3BhdHRlcm5zLndoaXRlc3BhY2UubmV3bGluZV9jb3VudCx0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlLndoaXRlc3BhY2VfYmVmb3JlX3Rva2VuKX0sci5wcm90b3R5cGUuX3JlYWRXaGl0ZXNwYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhdHRlcm5zLndoaXRlc3BhY2UucmVhZCgpfSxlLmV4cG9ydHMuVG9rZW5pemVyPXIsZS5leHBvcnRzLlRPS0VOPWx9LGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dGhpcy5fX3Rva2Vucz1bXSx0aGlzLl9fdG9rZW5zX2xlbmd0aD10aGlzLl9fdG9rZW5zLmxlbmd0aCx0aGlzLl9fcG9zaXRpb249MCx0aGlzLl9fcGFyZW50X3Rva2VuPWV9dC5wcm90b3R5cGUucmVzdGFydD1mdW5jdGlvbigpe3RoaXMuX19wb3NpdGlvbj0wfSx0LnByb3RvdHlwZS5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9fdG9rZW5zX2xlbmd0aH0sdC5wcm90b3R5cGUuaGFzTmV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fcG9zaXRpb248dGhpcy5fX3Rva2Vuc19sZW5ndGh9LHQucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt2YXIgZT1udWxsO3JldHVybiB0aGlzLmhhc05leHQoKSYmKGU9dGhpcy5fX3Rva2Vuc1t0aGlzLl9fcG9zaXRpb25dLHRoaXMuX19wb3NpdGlvbis9MSksZX0sdC5wcm90b3R5cGUucGVlaz1mdW5jdGlvbihlKXt2YXIgdD1udWxsO3JldHVybiBlPWV8fDAsdD0wPD0oZSs9dGhpcy5fX3Bvc2l0aW9uKSYmZTx0aGlzLl9fdG9rZW5zX2xlbmd0aD90aGlzLl9fdG9rZW5zW2VdOnR9LHQucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt0aGlzLl9fcGFyZW50X3Rva2VuJiYoZS5wYXJlbnQ9dGhpcy5fX3BhcmVudF90b2tlbiksdGhpcy5fX3Rva2Vucy5wdXNoKGUpLHRoaXMuX190b2tlbnNfbGVuZ3RoKz0xfSxlLmV4cG9ydHMuVG9rZW5TdHJlYW09dH0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTIpLlBhdHRlcm47ZnVuY3Rpb24gaShlLHQpe3IuY2FsbCh0aGlzLGUsdCksdD90aGlzLl9saW5lX3JlZ2V4cD10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKHQuX2xpbmVfcmVnZXhwKTp0aGlzLl9fc2V0X3doaXRlc3BhY2VfcGF0dGVybnMoIiIsIiIpLHRoaXMubmV3bGluZV9jb3VudD0wLHRoaXMud2hpdGVzcGFjZV9iZWZvcmVfdG9rZW49IiJ9KGkucHJvdG90eXBlPW5ldyByKS5fX3NldF93aGl0ZXNwYWNlX3BhdHRlcm5zPWZ1bmN0aW9uKGUsdCl7dGhpcy5fbWF0Y2hfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKCJbIisoZSs9IlxcdCAiKSsodCs9IlxcblxcciIpKyJdKyIsITApLHRoaXMuX25ld2xpbmVfcmVnZXhwPXRoaXMuX2lucHV0LmdldF9yZWdleHAoIlxcclxcbnxbIit0KyJdIil9LGkucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oKXt0aGlzLm5ld2xpbmVfY291bnQ9MCx0aGlzLndoaXRlc3BhY2VfYmVmb3JlX3Rva2VuPSIiO3ZhciBlLHQ9dGhpcy5faW5wdXQucmVhZCh0aGlzLl9tYXRjaF9wYXR0ZXJuKTtyZXR1cm4iICI9PT10P3RoaXMud2hpdGVzcGFjZV9iZWZvcmVfdG9rZW49IiAiOnQmJihlPXRoaXMuX19zcGxpdCh0aGlzLl9uZXdsaW5lX3JlZ2V4cCx0KSx0aGlzLm5ld2xpbmVfY291bnQ9ZS5sZW5ndGgtMSx0aGlzLndoaXRlc3BhY2VfYmVmb3JlX3Rva2VuPWVbdGhpcy5uZXdsaW5lX2NvdW50XSksdH0saS5wcm90b3R5cGUubWF0Y2hpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9jcmVhdGUoKTtyZXR1cm4gbi5fX3NldF93aGl0ZXNwYWNlX3BhdHRlcm5zKGUsdCksbi5fdXBkYXRlKCksbn0saS5wcm90b3R5cGUuX2NyZWF0ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgaSh0aGlzLl9pbnB1dCx0aGlzKX0saS5wcm90b3R5cGUuX19zcGxpdD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lLmxhc3RJbmRleD0wLHI9W10saT1lLmV4ZWModCk7aTspci5wdXNoKHQuc3Vic3RyaW5nKG4saS5pbmRleCkpLG49aS5pbmRleCtpWzBdLmxlbmd0aCxpPWUuZXhlYyh0KTtyZXR1cm4gbjx0Lmxlbmd0aD9yLnB1c2godC5zdWJzdHJpbmcobix0Lmxlbmd0aCkpOnIucHVzaCgiIikscn0sZS5leHBvcnRzLldoaXRlc3BhY2VQYXR0ZXJuPWl9LGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXt0aGlzLl9pbnB1dD1lLHRoaXMuX3N0YXJ0aW5nX3BhdHRlcm49bnVsbCx0aGlzLl9tYXRjaF9wYXR0ZXJuPW51bGwsdGhpcy5fdW50aWxfcGF0dGVybj1udWxsLHRoaXMuX3VudGlsX2FmdGVyPSExLHQmJih0aGlzLl9zdGFydGluZ19wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAodC5fc3RhcnRpbmdfcGF0dGVybiwhMCksdGhpcy5fbWF0Y2hfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKHQuX21hdGNoX3BhdHRlcm4sITApLHRoaXMuX3VudGlsX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCh0Ll91bnRpbF9wYXR0ZXJuKSx0aGlzLl91bnRpbF9hZnRlcj10Ll91bnRpbF9hZnRlcil9dC5wcm90b3R5cGUucmVhZD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2lucHV0LnJlYWQodGhpcy5fc3RhcnRpbmdfcGF0dGVybik7cmV0dXJuIHRoaXMuX3N0YXJ0aW5nX3BhdHRlcm4mJiFlfHwoZSs9dGhpcy5faW5wdXQucmVhZCh0aGlzLl9tYXRjaF9wYXR0ZXJuLHRoaXMuX3VudGlsX3BhdHRlcm4sdGhpcy5fdW50aWxfYWZ0ZXIpKSxlfSx0LnByb3RvdHlwZS5yZWFkX21hdGNoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lucHV0Lm1hdGNoKHRoaXMuX21hdGNoX3BhdHRlcm4pfSx0LnByb3RvdHlwZS51bnRpbF9hZnRlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fdW50aWxfYWZ0ZXI9ITAsdC5fdW50aWxfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKGUpLHQuX3VwZGF0ZSgpLHR9LHQucHJvdG90eXBlLnVudGlsPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2NyZWF0ZSgpO3JldHVybiB0Ll91bnRpbF9hZnRlcj0hMSx0Ll91bnRpbF9wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAoZSksdC5fdXBkYXRlKCksdH0sdC5wcm90b3R5cGUuc3RhcnRpbmdfd2l0aD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fc3RhcnRpbmdfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKGUsITApLHQuX3VwZGF0ZSgpLHR9LHQucHJvdG90eXBlLm1hdGNoaW5nPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2NyZWF0ZSgpO3JldHVybiB0Ll9tYXRjaF9wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAoZSwhMCksdC5fdXBkYXRlKCksdH0sdC5wcm90b3R5cGUuX2NyZWF0ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgdCh0aGlzLl9pbnB1dCx0aGlzKX0sdC5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe30sZS5leHBvcnRzLlBhdHRlcm49dH0sZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQpe2U9InN0cmluZyI9PXR5cGVvZiBlP2U6ZS5zb3VyY2UsdD0ic3RyaW5nIj09dHlwZW9mIHQ/dDp0LnNvdXJjZSx0aGlzLl9fZGlyZWN0aXZlc19ibG9ja19wYXR0ZXJuPW5ldyBSZWdFeHAoZSsvIGJlYXV0aWZ5KCBcdytbOl1cdyspKyAvLnNvdXJjZSt0LCJnIiksdGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuPS8gKFx3KylbOl0oXHcrKS9nLHRoaXMuX19kaXJlY3RpdmVzX2VuZF9pZ25vcmVfcGF0dGVybj1uZXcgUmVnRXhwKGUrL1xzYmVhdXRpZnlcc2lnbm9yZTplbmRccy8uc291cmNlK3QsImciKX10LnByb3RvdHlwZS5nZXRfZGlyZWN0aXZlcz1mdW5jdGlvbihlKXtpZighZS5tYXRjaCh0aGlzLl9fZGlyZWN0aXZlc19ibG9ja19wYXR0ZXJuKSlyZXR1cm4gbnVsbDtmb3IodmFyIHQ9e30sbj0odGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmxhc3RJbmRleD0wLHRoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5leGVjKGUpKTtuOyl0W25bMV1dPW5bMl0sbj10aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4uZXhlYyhlKTtyZXR1cm4gdH0sdC5wcm90b3R5cGUucmVhZElnbm9yZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVhZFVudGlsQWZ0ZXIodGhpcy5fX2RpcmVjdGl2ZXNfZW5kX2lnbm9yZV9wYXR0ZXJuKX0sZS5leHBvcnRzLkRpcmVjdGl2ZXM9dH0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTIpLlBhdHRlcm4saT17ZGphbmdvOiExLGVyYjohMSxoYW5kbGViYXJzOiExLHBocDohMSxzbWFydHk6ITF9O2Z1bmN0aW9uIGEoZSx0KXtyLmNhbGwodGhpcyxlLHQpLHRoaXMuX190ZW1wbGF0ZV9wYXR0ZXJuPW51bGwsdGhpcy5fZGlzYWJsZWQ9T2JqZWN0LmFzc2lnbih7fSxpKSx0aGlzLl9leGNsdWRlZD1PYmplY3QuYXNzaWduKHt9LGkpLHQmJih0aGlzLl9fdGVtcGxhdGVfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKHQuX190ZW1wbGF0ZV9wYXR0ZXJuKSx0aGlzLl9leGNsdWRlZD1PYmplY3QuYXNzaWduKHRoaXMuX2V4Y2x1ZGVkLHQuX2V4Y2x1ZGVkKSx0aGlzLl9kaXNhYmxlZD1PYmplY3QuYXNzaWduKHRoaXMuX2Rpc2FibGVkLHQuX2Rpc2FibGVkKSk7dD1uZXcgcihlKTt0aGlzLl9fcGF0dGVybnM9e2hhbmRsZWJhcnNfY29tbWVudDp0LnN0YXJ0aW5nX3dpdGgoL3t7IS0tLykudW50aWxfYWZ0ZXIoLy0tfX0vKSxoYW5kbGViYXJzX3VuZXNjYXBlZDp0LnN0YXJ0aW5nX3dpdGgoL3t7ey8pLnVudGlsX2FmdGVyKC99fX0vKSxoYW5kbGViYXJzOnQuc3RhcnRpbmdfd2l0aCgve3svKS51bnRpbF9hZnRlcigvfX0vKSxwaHA6dC5zdGFydGluZ193aXRoKC88XD8oPzpbPSBdfHBocCkvKS51bnRpbF9hZnRlcigvXD8+LyksZXJiOnQuc3RhcnRpbmdfd2l0aCgvPCVbXiVdLykudW50aWxfYWZ0ZXIoL1teJV0lPi8pLGRqYW5nbzp0LnN0YXJ0aW5nX3dpdGgoL3slLykudW50aWxfYWZ0ZXIoLyV9LyksZGphbmdvX3ZhbHVlOnQuc3RhcnRpbmdfd2l0aCgve3svKS51bnRpbF9hZnRlcigvfX0vKSxkamFuZ29fY29tbWVudDp0LnN0YXJ0aW5nX3dpdGgoL3sjLykudW50aWxfYWZ0ZXIoLyN9Lyksc21hcnR5OnQuc3RhcnRpbmdfd2l0aCgveyg/PVtefXtcc1xuXSkvKS51bnRpbF9hZnRlcigvW15cc1xuXX0vKSxzbWFydHlfY29tbWVudDp0LnN0YXJ0aW5nX3dpdGgoL3tcKi8pLnVudGlsX2FmdGVyKC9cKn0vKSxzbWFydHlfbGl0ZXJhbDp0LnN0YXJ0aW5nX3dpdGgoL3tsaXRlcmFsfS8pLnVudGlsX2FmdGVyKC97XC9saXRlcmFsfS8pfX0oYS5wcm90b3R5cGU9bmV3IHIpLl9jcmVhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEodGhpcy5faW5wdXQsdGhpcyl9LGEucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt0aGlzLl9fc2V0X3RlbXBsYXRlZF9wYXR0ZXJuKCl9LGEucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX2Rpc2FibGVkW2VdPSEwLHQuX3VwZGF0ZSgpLHR9LGEucHJvdG90eXBlLnJlYWRfb3B0aW9ucz1mdW5jdGlvbihlKXt2YXIgdCxuPXRoaXMuX2NyZWF0ZSgpO2Zvcih0IGluIGkpbi5fZGlzYWJsZWRbdF09LTE9PT1lLnRlbXBsYXRpbmcuaW5kZXhPZih0KTtyZXR1cm4gbi5fdXBkYXRlKCksbn0sYS5wcm90b3R5cGUuZXhjbHVkZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fZXhjbHVkZWRbZV09ITAsdC5fdXBkYXRlKCksdH0sYS5wcm90b3R5cGUucmVhZD1mdW5jdGlvbigpe2Zvcih2YXIgZT0iIixlPXRoaXMuX21hdGNoX3BhdHRlcm4/dGhpcy5faW5wdXQucmVhZCh0aGlzLl9zdGFydGluZ19wYXR0ZXJuKTp0aGlzLl9pbnB1dC5yZWFkKHRoaXMuX3N0YXJ0aW5nX3BhdHRlcm4sdGhpcy5fX3RlbXBsYXRlX3BhdHRlcm4pLHQ9dGhpcy5fcmVhZF90ZW1wbGF0ZSgpO3Q7KXRoaXMuX21hdGNoX3BhdHRlcm4/dCs9dGhpcy5faW5wdXQucmVhZCh0aGlzLl9tYXRjaF9wYXR0ZXJuKTp0Kz10aGlzLl9pbnB1dC5yZWFkVW50aWwodGhpcy5fX3RlbXBsYXRlX3BhdHRlcm4pLGUrPXQsdD10aGlzLl9yZWFkX3RlbXBsYXRlKCk7cmV0dXJuIHRoaXMuX3VudGlsX2FmdGVyJiYoZSs9dGhpcy5faW5wdXQucmVhZFVudGlsQWZ0ZXIodGhpcy5fdW50aWxfcGF0dGVybikpLGV9LGEucHJvdG90eXBlLl9fc2V0X3RlbXBsYXRlZF9wYXR0ZXJuPWZ1bmN0aW9uKCl7dmFyIGU9W107dGhpcy5fZGlzYWJsZWQucGhwfHxlLnB1c2godGhpcy5fX3BhdHRlcm5zLnBocC5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpLHRoaXMuX2Rpc2FibGVkLmhhbmRsZWJhcnN8fGUucHVzaCh0aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFycy5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpLHRoaXMuX2Rpc2FibGVkLmVyYnx8ZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5lcmIuX3N0YXJ0aW5nX3BhdHRlcm4uc291cmNlKSx0aGlzLl9kaXNhYmxlZC5kamFuZ298fChlLnB1c2godGhpcy5fX3BhdHRlcm5zLmRqYW5nby5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpLGUucHVzaCh0aGlzLl9fcGF0dGVybnMuZGphbmdvX3ZhbHVlLl9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5kamFuZ29fY29tbWVudC5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpKSx0aGlzLl9kaXNhYmxlZC5zbWFydHl8fGUucHVzaCh0aGlzLl9fcGF0dGVybnMuc21hcnR5Ll9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksdGhpcy5fdW50aWxfcGF0dGVybiYmZS5wdXNoKHRoaXMuX3VudGlsX3BhdHRlcm4uc291cmNlKSx0aGlzLl9fdGVtcGxhdGVfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKCIoPzoiK2Uuam9pbigifCIpKyIpIil9LGEucHJvdG90eXBlLl9yZWFkX3RlbXBsYXRlPWZ1bmN0aW9uKCl7dmFyIGUsdD0iIixuPXRoaXMuX2lucHV0LnBlZWsoKTtyZXR1cm4iPCI9PT1uPyhlPXRoaXMuX2lucHV0LnBlZWsoMSksdGhpcy5fZGlzYWJsZWQucGhwfHx0aGlzLl9leGNsdWRlZC5waHB8fCI/IiE9PWV8fCh0PXR8fHRoaXMuX19wYXR0ZXJucy5waHAucmVhZCgpKSx0aGlzLl9kaXNhYmxlZC5lcmJ8fHRoaXMuX2V4Y2x1ZGVkLmVyYnx8IiUiIT09ZXx8KHQ9dHx8dGhpcy5fX3BhdHRlcm5zLmVyYi5yZWFkKCkpKToieyI9PT1uJiYodGhpcy5fZGlzYWJsZWQuaGFuZGxlYmFyc3x8dGhpcy5fZXhjbHVkZWQuaGFuZGxlYmFyc3x8KHQ9KHQ9KHQ9dHx8dGhpcy5fX3BhdHRlcm5zLmhhbmRsZWJhcnNfY29tbWVudC5yZWFkKCkpfHx0aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFyc191bmVzY2FwZWQucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLmhhbmRsZWJhcnMucmVhZCgpKSx0aGlzLl9kaXNhYmxlZC5kamFuZ298fCh0aGlzLl9leGNsdWRlZC5kamFuZ298fHRoaXMuX2V4Y2x1ZGVkLmhhbmRsZWJhcnN8fCh0PXR8fHRoaXMuX19wYXR0ZXJucy5kamFuZ29fdmFsdWUucmVhZCgpKSx0aGlzLl9leGNsdWRlZC5kamFuZ298fCh0PSh0PXR8fHRoaXMuX19wYXR0ZXJucy5kamFuZ29fY29tbWVudC5yZWFkKCkpfHx0aGlzLl9fcGF0dGVybnMuZGphbmdvLnJlYWQoKSkpLHRoaXMuX2Rpc2FibGVkLnNtYXJ0eXx8dGhpcy5fZGlzYWJsZWQuZGphbmdvJiZ0aGlzLl9kaXNhYmxlZC5oYW5kbGViYXJzJiYodD0odD0odD10fHx0aGlzLl9fcGF0dGVybnMuc21hcnR5X2NvbW1lbnQucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLnNtYXJ0eV9saXRlcmFsLnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5zbWFydHkucmVhZCgpKSksdH0sZS5leHBvcnRzLlRlbXBsYXRhYmxlUGF0dGVybj1hfSwsLCxmdW5jdGlvbihlLHQsbil7dmFyIGk9bigxOSkuQmVhdXRpZmllcixyPW4oMjApLk9wdGlvbnM7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcgaShlLHQsbixyKS5iZWF1dGlmeSgpfSxlLmV4cG9ydHMuZGVmYXVsdE9wdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHJ9fSxmdW5jdGlvbihlLG4sdCl7ZnVuY3Rpb24gaChlLHQpe3RoaXMuaW5kZW50X2xldmVsPTAsdGhpcy5hbGlnbm1lbnRfc2l6ZT0wLHRoaXMubWF4X3ByZXNlcnZlX25ld2xpbmVzPWUubWF4X3ByZXNlcnZlX25ld2xpbmVzLHRoaXMucHJlc2VydmVfbmV3bGluZXM9ZS5wcmVzZXJ2ZV9uZXdsaW5lcyx0aGlzLl9vdXRwdXQ9bmV3IHIoZSx0KX1mdW5jdGlvbiBhKGUsdCl7dmFyIG49bnVsbCxyPW51bGw7cmV0dXJuIHQuY2xvc2VkPygic2NyaXB0Ij09PWU/bj0idGV4dC9qYXZhc2NyaXB0Ijoic3R5bGUiPT09ZSYmKG49InRleHQvY3NzIiksLTE8KG49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW51bGwsbj1lLm5leHQ7bi50eXBlIT09Yy5FT0YmJmUuY2xvc2VkIT09bjspe2lmKG4udHlwZT09PWMuQVRUUklCVVRFJiYidHlwZSI9PT1uLnRleHQpe24ubmV4dCYmbi5uZXh0LnR5cGU9PT1jLkVRVUFMUyYmbi5uZXh0Lm5leHQmJm4ubmV4dC5uZXh0LnR5cGU9PT1jLlZBTFVFJiYodD1uLm5leHQubmV4dC50ZXh0KTticmVha31uPW4ubmV4dH1yZXR1cm4gdH0odCl8fG4pLnNlYXJjaCgidGV4dC9jc3MiKT9yPSJjc3MiOi0xPG4uc2VhcmNoKC9tb2R1bGV8KCh0ZXh0fGFwcGxpY2F0aW9ufGRvam8pXC8oeC0pPyhqYXZhc2NyaXB0fGVjbWFzY3JpcHR8anNjcmlwdHxsaXZlc2NyaXB0fChsZFwrKT9qc29ufG1ldGhvZHxhc3BlY3QpKS8pP3I9ImphdmFzY3JpcHQiOi0xPG4uc2VhcmNoKC8odGV4dHxhcHBsaWNhdGlvbnxkb2pvKVwvKHgtKT8oaHRtbCkvKT9yPSJodG1sIjotMTxuLnNlYXJjaCgvdGVzdFwvbnVsbC8pJiYocj0ibnVsbCIpLHIpOm51bGx9dmFyIGk9dCgyMCkuT3B0aW9ucyxyPXQoMikuT3V0cHV0LGY9dCgyMSkuVG9rZW5pemVyLGM9dCgyMSkuVE9LRU4sZD0vXHJcbnxbXHJcbl0vLGc9L1xyXG58W1xyXG5dL2c7aC5wcm90b3R5cGUuY3VycmVudF9saW5lX2hhc19tYXRjaD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fb3V0cHV0LmN1cnJlbnRfbGluZS5oYXNfbWF0Y2goZSl9LGgucHJvdG90eXBlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW49ZnVuY3Rpb24oZSx0KXt0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPWUsdGhpcy5fb3V0cHV0Lm5vbl9icmVha2luZ19zcGFjZT10fSxoLnByb3RvdHlwZS5zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuX291dHB1dC5zZXRfaW5kZW50KHRoaXMuaW5kZW50X2xldmVsLHRoaXMuYWxpZ25tZW50X3NpemUpLHRoaXMuX291dHB1dC5zZXRfd3JhcF9wb2ludCgpfSxoLnByb3RvdHlwZS5hZGRfcmF3X3Rva2VuPWZ1bmN0aW9uKGUpe3RoaXMuX291dHB1dC5hZGRfcmF3X3Rva2VuKGUpfSxoLnByb3RvdHlwZS5wcmludF9wcmVzZXJ2ZWRfbmV3bGluZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9MDtlLnR5cGUhPT1jLlRFWFQmJmUucHJldmlvdXMudHlwZSE9PWMuVEVYVCYmKHQ9ZS5uZXdsaW5lcz8xOjApLHRoaXMucHJlc2VydmVfbmV3bGluZXMmJih0PWUubmV3bGluZXM8dGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXMrMT9lLm5ld2xpbmVzOnRoaXMubWF4X3ByZXNlcnZlX25ld2xpbmVzKzEpO2Zvcih2YXIgbj0wO248dDtuKyspdGhpcy5wcmludF9uZXdsaW5lKDA8bik7cmV0dXJuIDAhPT10fSxoLnByb3RvdHlwZS50cmF2ZXJzZV93aGl0ZXNwYWNlPWZ1bmN0aW9uKGUpe3JldHVybiEoIWUud2hpdGVzcGFjZV9iZWZvcmUmJiFlLm5ld2xpbmVzKSYmKHRoaXMucHJpbnRfcHJlc2VydmVkX25ld2xpbmVzKGUpfHwodGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCksITApfSxoLnByb3RvdHlwZS5wcmV2aW91c190b2tlbl93cmFwcGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX291dHB1dC5wcmV2aW91c190b2tlbl93cmFwcGVkfSxoLnByb3RvdHlwZS5wcmludF9uZXdsaW5lPWZ1bmN0aW9uKGUpe3RoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoZSl9LGgucHJvdG90eXBlLnByaW50X3Rva2VuPWZ1bmN0aW9uKGUpe2UudGV4dCYmKHRoaXMuX291dHB1dC5zZXRfaW5kZW50KHRoaXMuaW5kZW50X2xldmVsLHRoaXMuYWxpZ25tZW50X3NpemUpLHRoaXMuX291dHB1dC5hZGRfdG9rZW4oZS50ZXh0KSl9LGgucHJvdG90eXBlLmluZGVudD1mdW5jdGlvbigpe3RoaXMuaW5kZW50X2xldmVsKyt9LGgucHJvdG90eXBlLmdldF9mdWxsX2luZGVudD1mdW5jdGlvbihlKXtyZXR1cm4oZT10aGlzLmluZGVudF9sZXZlbCsoZXx8MCkpPDE/IiI6dGhpcy5fb3V0cHV0LmdldF9pbmRlbnRfc3RyaW5nKGUpfTtmdW5jdGlvbiBvKGUsdCl7cmV0dXJuLTEhPT10LmluZGV4T2YoZSl9ZnVuY3Rpb24gcyhlLHQsbil7dGhpcy5wYXJlbnQ9ZXx8bnVsbCx0aGlzLnRhZz10P3QudGFnX25hbWU6IiIsdGhpcy5pbmRlbnRfbGV2ZWw9bnx8MCx0aGlzLnBhcnNlcl90b2tlbj10fHxudWxsfWZ1bmN0aW9uIHUoZSl7dGhpcy5fcHJpbnRlcj1lLHRoaXMuX2N1cnJlbnRfZnJhbWU9bnVsbH1mdW5jdGlvbiBwKGUsdCxuLHIpe3RoaXMuX3NvdXJjZV90ZXh0PWV8fCIiLHQ9dHx8e30sdGhpcy5fanNfYmVhdXRpZnk9bix0aGlzLl9jc3NfYmVhdXRpZnk9cix0aGlzLl90YWdfc3RhY2s9bnVsbDtlPW5ldyBpKHQsImh0bWwiKTt0aGlzLl9vcHRpb25zPWUsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlPSJmb3JjZSI9PT10aGlzLl9vcHRpb25zLndyYXBfYXR0cmlidXRlcy5zdWJzdHIoMCwiZm9yY2UiLmxlbmd0aCksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2V4cGFuZF9tdWx0aWxpbmU9ImZvcmNlLWV4cGFuZC1tdWx0aWxpbmUiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2FsaWduZWQ9ImZvcmNlLWFsaWduZWQiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2FsaWduZWRfbXVsdGlwbGU9ImFsaWduZWQtbXVsdGlwbGUiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlPSJwcmVzZXJ2ZSI9PT10aGlzLl9vcHRpb25zLndyYXBfYXR0cmlidXRlcy5zdWJzdHIoMCwicHJlc2VydmUiLmxlbmd0aCksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlX2FsaWduZWQ9InByZXNlcnZlLWFsaWduZWQiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXN9dS5wcm90b3R5cGUuZ2V0X3BhcnNlcl90b2tlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJyZW50X2ZyYW1lP3RoaXMuX2N1cnJlbnRfZnJhbWUucGFyc2VyX3Rva2VuOm51bGx9LHUucHJvdG90eXBlLnJlY29yZF90YWc9ZnVuY3Rpb24oZSl7ZT1uZXcgcyh0aGlzLl9jdXJyZW50X2ZyYW1lLGUsdGhpcy5fcHJpbnRlci5pbmRlbnRfbGV2ZWwpO3RoaXMuX2N1cnJlbnRfZnJhbWU9ZX0sdS5wcm90b3R5cGUuX3RyeV9wb3BfZnJhbWU9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gZSYmKHQ9ZS5wYXJzZXJfdG9rZW4sdGhpcy5fcHJpbnRlci5pbmRlbnRfbGV2ZWw9ZS5pbmRlbnRfbGV2ZWwsdGhpcy5fY3VycmVudF9mcmFtZT1lLnBhcmVudCksdH0sdS5wcm90b3R5cGUuX2dldF9mcmFtZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLl9jdXJyZW50X2ZyYW1lO24mJi0xPT09ZS5pbmRleE9mKG4udGFnKTspe2lmKHQmJi0xIT09dC5pbmRleE9mKG4udGFnKSl7bj1udWxsO2JyZWFrfW49bi5wYXJlbnR9cmV0dXJuIG59LHUucHJvdG90eXBlLnRyeV9wb3A9ZnVuY3Rpb24oZSx0KXtlPXRoaXMuX2dldF9mcmFtZShbZV0sdCk7cmV0dXJuIHRoaXMuX3RyeV9wb3BfZnJhbWUoZSl9LHUucHJvdG90eXBlLmluZGVudF90b190YWc9ZnVuY3Rpb24oZSl7ZT10aGlzLl9nZXRfZnJhbWUoZSk7ZSYmKHRoaXMuX3ByaW50ZXIuaW5kZW50X2xldmVsPWUuaW5kZW50X2xldmVsKX0scC5wcm90b3R5cGUuYmVhdXRpZnk9ZnVuY3Rpb24oKXtpZih0aGlzLl9vcHRpb25zLmRpc2FibGVkKXJldHVybiB0aGlzLl9zb3VyY2VfdGV4dDtmb3IodmFyIGU9dGhpcy5fc291cmNlX3RleHQsdD10aGlzLl9vcHRpb25zLmVvbCxuPSgiYXV0byI9PT10aGlzLl9vcHRpb25zLmVvbCYmKHQ9IlxuIixlJiZkLnRlc3QoZSkmJih0PWUubWF0Y2goZClbMF0pKSwoZT1lLnJlcGxhY2UoZywiXG4iKSkubWF0Y2goL15bXHQgXSovKVswXSkscj17dGV4dDoiIix0eXBlOiIifSxpPW5ldyBtLGE9bmV3IGgodGhpcy5fb3B0aW9ucyxuKSxvPW5ldyBmKGUsdGhpcy5fb3B0aW9ucykudG9rZW5pemUoKSxzPSh0aGlzLl90YWdfc3RhY2s9bmV3IHUoYSksbnVsbCksbD1vLm5leHQoKTtsLnR5cGUhPT1jLkVPRjspbC50eXBlPT09Yy5UQUdfT1BFTnx8bC50eXBlPT09Yy5DT01NRU5UP2k9cz10aGlzLl9oYW5kbGVfdGFnX29wZW4oYSxsLGkscik6bC50eXBlPT09Yy5BVFRSSUJVVEV8fGwudHlwZT09PWMuRVFVQUxTfHxsLnR5cGU9PT1jLlZBTFVFfHxsLnR5cGU9PT1jLlRFWFQmJiFpLnRhZ19jb21wbGV0ZT9zPXRoaXMuX2hhbmRsZV9pbnNpZGVfdGFnKGEsbCxpLG8pOmwudHlwZT09PWMuVEFHX0NMT1NFP3M9dGhpcy5faGFuZGxlX3RhZ19jbG9zZShhLGwsaSk6bC50eXBlPT09Yy5URVhUP3M9dGhpcy5faGFuZGxlX3RleHQoYSxsLGkpOmEuYWRkX3Jhd190b2tlbihsKSxyPXMsbD1vLm5leHQoKTtyZXR1cm4gYS5fb3V0cHV0LmdldF9jb2RlKHQpfSxwLnByb3RvdHlwZS5faGFuZGxlX3RhZ19jbG9zZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9e3RleHQ6dC50ZXh0LHR5cGU6dC50eXBlfTtyZXR1cm4gZS5hbGlnbm1lbnRfc2l6ZT0wLG4udGFnX2NvbXBsZXRlPSEwLGUuc2V0X3NwYWNlX2JlZm9yZV90b2tlbih0Lm5ld2xpbmVzfHwiIiE9PXQud2hpdGVzcGFjZV9iZWZvcmUsITApLG4uaXNfdW5mb3JtYXR0ZWQ/ZS5hZGRfcmF3X3Rva2VuKHQpOigiPCI9PT1uLnRhZ19zdGFydF9jaGFyJiYoZS5zZXRfc3BhY2VfYmVmb3JlX3Rva2VuKCIvIj09PXQudGV4dFswXSwhMCksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2V4cGFuZF9tdWx0aWxpbmUmJm4uaGFzX3dyYXBwZWRfYXR0cnMmJmUucHJpbnRfbmV3bGluZSghMSkpLGUucHJpbnRfdG9rZW4odCkpLCFuLmluZGVudF9jb250ZW50fHxuLmlzX3VuZm9ybWF0dGVkfHxuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fChlLmluZGVudCgpLG4uaW5kZW50X2NvbnRlbnQ9ITEpLG4uaXNfaW5saW5lX2VsZW1lbnR8fG4uaXNfdW5mb3JtYXR0ZWR8fG4uaXNfY29udGVudF91bmZvcm1hdHRlZHx8ZS5zZXRfd3JhcF9wb2ludCgpLHJ9LHAucHJvdG90eXBlLl9oYW5kbGVfaW5zaWRlX3RhZz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT1uLmhhc193cmFwcGVkX2F0dHJzLGE9e3RleHQ6dC50ZXh0LHR5cGU6dC50eXBlfTtpZihlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW4odC5uZXdsaW5lc3x8IiIhPT10LndoaXRlc3BhY2VfYmVmb3JlLCEwKSxuLmlzX3VuZm9ybWF0dGVkKWUuYWRkX3Jhd190b2tlbih0KTtlbHNlIGlmKCJ7Ij09PW4udGFnX3N0YXJ0X2NoYXImJnQudHlwZT09PWMuVEVYVCllLnByaW50X3ByZXNlcnZlZF9uZXdsaW5lcyh0KT8odC5uZXdsaW5lcz0wLGUuYWRkX3Jhd190b2tlbih0KSk6ZS5wcmludF90b2tlbih0KTtlbHNle2lmKHQudHlwZT09PWMuQVRUUklCVVRFPyhlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW4oITApLG4uYXR0cl9jb3VudCs9MSk6KHQudHlwZT09PWMuRVFVQUxTfHx0LnR5cGU9PT1jLlZBTFVFJiZ0LnByZXZpb3VzLnR5cGU9PT1jLkVRVUFMUykmJmUuc2V0X3NwYWNlX2JlZm9yZV90b2tlbighMSksdC50eXBlPT09Yy5BVFRSSUJVVEUmJiI8Ij09PW4udGFnX3N0YXJ0X2NoYXImJigodGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlfHx0aGlzLl9pc193cmFwX2F0dHJpYnV0ZXNfcHJlc2VydmVfYWxpZ25lZCkmJihlLnRyYXZlcnNlX3doaXRlc3BhY2UodCksaT1pfHwwIT09dC5uZXdsaW5lcyksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlKSl7dmFyIG89MTxuLmF0dHJfY291bnQ7aWYodGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2V4cGFuZF9tdWx0aWxpbmUmJjE9PT1uLmF0dHJfY291bnQpe3ZhciBzLGw9ITAsaD0wO2Rve2lmKChzPXIucGVlayhoKSkudHlwZT09PWMuQVRUUklCVVRFKXtsPSExO2JyZWFrfX13aGlsZSgoaCs9MSk8NCYmcy50eXBlIT09Yy5FT0YmJnMudHlwZSE9PWMuVEFHX0NMT1NFKTtvPSFsfW8mJihlLnByaW50X25ld2xpbmUoITEpLGk9ITApfWUucHJpbnRfdG9rZW4odCksaT1pfHxlLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQoKSxuLmhhc193cmFwcGVkX2F0dHJzPWl9cmV0dXJuIGF9LHAucHJvdG90eXBlLl9oYW5kbGVfdGV4dD1mdW5jdGlvbihlLHQsbil7dmFyIHI9e3RleHQ6dC50ZXh0LHR5cGU6IlRLX0NPTlRFTlQifTtyZXR1cm4gbi5jdXN0b21fYmVhdXRpZmllcl9uYW1lP3RoaXMuX3ByaW50X2N1c3RvbV9iZWF0aWZpZXJfdGV4dChlLHQsbik6bi5pc191bmZvcm1hdHRlZHx8bi5pc19jb250ZW50X3VuZm9ybWF0dGVkP2UuYWRkX3Jhd190b2tlbih0KTooZS50cmF2ZXJzZV93aGl0ZXNwYWNlKHQpLGUucHJpbnRfdG9rZW4odCkpLHJ9LHAucHJvdG90eXBlLl9wcmludF9jdXN0b21fYmVhdGlmaWVyX3RleHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7aWYoIiIhPT10LnRleHQpe3ZhciBpLGE9dC50ZXh0LG89MSxzPSIiLGw9IiIsbz0oImphdmFzY3JpcHQiPT09bi5jdXN0b21fYmVhdXRpZmllcl9uYW1lJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fanNfYmVhdXRpZnk/aT10aGlzLl9qc19iZWF1dGlmeToiY3NzIj09PW4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZSYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX2Nzc19iZWF1dGlmeT9pPXRoaXMuX2Nzc19iZWF1dGlmeToiaHRtbCI9PT1uLmN1c3RvbV9iZWF1dGlmaWVyX25hbWUmJihpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBwKGUsdCxyLl9qc19iZWF1dGlmeSxyLl9jc3NfYmVhdXRpZnkpLmJlYXV0aWZ5KCl9KSwia2VlcCI9PT10aGlzLl9vcHRpb25zLmluZGVudF9zY3JpcHRzP289MDoic2VwYXJhdGUiPT09dGhpcy5fb3B0aW9ucy5pbmRlbnRfc2NyaXB0cyYmKG89LWUuaW5kZW50X2xldmVsKSxlLmdldF9mdWxsX2luZGVudChvKSk7aWYoYT1hLnJlcGxhY2UoL1xuWyBcdF0qJC8sIiIpLCJodG1sIiE9PW4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZSYmIjwiPT09YVswXSYmYS5tYXRjaCgvXig8IS0tfDwhXFtDREFUQVxbKS8pKXt2YXIgbj0vXig8IS0tW15cbl0qfDwhXFtDREFUQVxbKShcbj8pKFsgXHRcbl0qKShbXHNcU10qKSgtLT58XV0+KSQvLmV4ZWMoYSk7aWYoIW4pcmV0dXJuIHZvaWQgZS5hZGRfcmF3X3Rva2VuKHQpO3M9bytuWzFdKyJcbiIsYT1uWzRdLG5bNV0mJihsPW8rbls1XSksYT1hLnJlcGxhY2UoL1xuWyBcdF0qJC8sIiIpLChuWzJdfHwtMSE9PW5bM10uaW5kZXhPZigiXG4iKSkmJihuPW5bM10ubWF0Y2goL1sgXHRdKyQvKSkmJih0LndoaXRlc3BhY2VfYmVmb3JlPW5bMF0pfWE9YSYmKGk/KChuPWZ1bmN0aW9uKCl7dGhpcy5lb2w9IlxuIn0pLnByb3RvdHlwZT10aGlzLl9vcHRpb25zLnJhd19vcHRpb25zLGkobythLG5ldyBuKSk6bysoYT0oaT10LndoaXRlc3BhY2VfYmVmb3JlKT9hLnJlcGxhY2UobmV3IFJlZ0V4cCgiXG4oIitpKyIpPyIsImciKSwiXG4iKTphKS5yZXBsYWNlKC9cbi9nLCJcbiIrbykpLHMmJihhPWE/cythKyJcbiIrbDpzK2wpLGUucHJpbnRfbmV3bGluZSghMSksYSYmKHQudGV4dD1hLHQud2hpdGVzcGFjZV9iZWZvcmU9IiIsdC5uZXdsaW5lcz0wLGUuYWRkX3Jhd190b2tlbih0KSxlLnByaW50X25ld2xpbmUoITApKX19LHAucHJvdG90eXBlLl9oYW5kbGVfdGFnX29wZW49ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dGhpcy5fZ2V0X3RhZ19vcGVuX3Rva2VuKHQpO3JldHVybiFuLmlzX3VuZm9ybWF0dGVkJiYhbi5pc19jb250ZW50X3VuZm9ybWF0dGVkfHxuLmlzX2VtcHR5X2VsZW1lbnR8fHQudHlwZSE9PWMuVEFHX09QRU58fDAhPT10LnRleHQuaW5kZXhPZigiPC8iKT8oZS50cmF2ZXJzZV93aGl0ZXNwYWNlKHQpLHRoaXMuX3NldF90YWdfcG9zaXRpb24oZSx0LGksbixyKSxpLmlzX2lubGluZV9lbGVtZW50fHxlLnNldF93cmFwX3BvaW50KCksZS5wcmludF90b2tlbih0KSk6KGUuYWRkX3Jhd190b2tlbih0KSxpLnN0YXJ0X3RhZ190b2tlbj10aGlzLl90YWdfc3RhY2sudHJ5X3BvcChpLnRhZ19uYW1lKSksKHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZV9hbGlnbmVkfHx0aGlzLl9pc193cmFwX2F0dHJpYnV0ZXNfYWxpZ25lZF9tdWx0aXBsZXx8dGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlX2FsaWduZWQpJiYoaS5hbGlnbm1lbnRfc2l6ZT10LnRleHQubGVuZ3RoKzEpLGkudGFnX2NvbXBsZXRlfHxpLmlzX3VuZm9ybWF0dGVkfHwoZS5hbGlnbm1lbnRfc2l6ZT1pLmFsaWdubWVudF9zaXplKSxpfTt2YXIgbT1mdW5jdGlvbihlLHQpe3ZhciBuO3RoaXMucGFyZW50PWV8fG51bGwsdGhpcy50ZXh0PSIiLHRoaXMudHlwZT0iVEtfVEFHX09QRU4iLHRoaXMudGFnX25hbWU9IiIsdGhpcy5pc19pbmxpbmVfZWxlbWVudD0hMSx0aGlzLmlzX3VuZm9ybWF0dGVkPSExLHRoaXMuaXNfY29udGVudF91bmZvcm1hdHRlZD0hMSx0aGlzLmlzX2VtcHR5X2VsZW1lbnQ9ITEsdGhpcy5pc19zdGFydF90YWc9ITEsdGhpcy5pc19lbmRfdGFnPSExLHRoaXMuaW5kZW50X2NvbnRlbnQ9ITEsdGhpcy5tdWx0aWxpbmVfY29udGVudD0hMSx0aGlzLmN1c3RvbV9iZWF1dGlmaWVyX25hbWU9bnVsbCx0aGlzLnN0YXJ0X3RhZ190b2tlbj1udWxsLHRoaXMuYXR0cl9jb3VudD0wLHRoaXMuaGFzX3dyYXBwZWRfYXR0cnM9ITEsdGhpcy5hbGlnbm1lbnRfc2l6ZT0wLHRoaXMudGFnX2NvbXBsZXRlPSExLHRoaXMudGFnX3N0YXJ0X2NoYXI9IiIsdGhpcy50YWdfY2hlY2s9IiIsdD8odGhpcy50YWdfc3RhcnRfY2hhcj10LnRleHRbMF0sdGhpcy50ZXh0PXQudGV4dCwiPCI9PT10aGlzLnRhZ19zdGFydF9jaGFyPyhuPXQudGV4dC5tYXRjaCgvXjwoW15ccz5dKikvKSx0aGlzLnRhZ19jaGVjaz1uP25bMV06IiIpOihuPXQudGV4dC5tYXRjaCgvXnt7KD86W1xeXXwjXCo/KT8oW15cc31dKykvKSx0aGlzLnRhZ19jaGVjaz1uP25bMV06IiIsInt7Iz4iPT09dC50ZXh0JiYiPiI9PT10aGlzLnRhZ19jaGVjayYmbnVsbCE9PXQubmV4dCYmKHRoaXMudGFnX2NoZWNrPXQubmV4dC50ZXh0KSksdGhpcy50YWdfY2hlY2s9dGhpcy50YWdfY2hlY2sudG9Mb3dlckNhc2UoKSx0LnR5cGU9PT1jLkNPTU1FTlQmJih0aGlzLnRhZ19jb21wbGV0ZT0hMCksdGhpcy5pc19zdGFydF90YWc9Ii8iIT09dGhpcy50YWdfY2hlY2suY2hhckF0KDApLHRoaXMudGFnX25hbWU9dGhpcy5pc19zdGFydF90YWc/dGhpcy50YWdfY2hlY2s6dGhpcy50YWdfY2hlY2suc3Vic3RyKDEpLHRoaXMuaXNfZW5kX3RhZz0hdGhpcy5pc19zdGFydF90YWd8fHQuY2xvc2VkJiYiLz4iPT09dC5jbG9zZWQudGV4dCx0aGlzLmlzX2VuZF90YWc9dGhpcy5pc19lbmRfdGFnfHwieyI9PT10aGlzLnRhZ19zdGFydF9jaGFyJiYodGhpcy50ZXh0Lmxlbmd0aDwzfHwvW14jXF5dLy50ZXN0KHRoaXMudGV4dC5jaGFyQXQoMikpKSk6dGhpcy50YWdfY29tcGxldGU9ITB9LGw9KHAucHJvdG90eXBlLl9nZXRfdGFnX29wZW5fdG9rZW49ZnVuY3Rpb24oZSl7ZT1uZXcgbSh0aGlzLl90YWdfc3RhY2suZ2V0X3BhcnNlcl90b2tlbigpLGUpO3JldHVybiBlLmFsaWdubWVudF9zaXplPXRoaXMuX29wdGlvbnMud3JhcF9hdHRyaWJ1dGVzX2luZGVudF9zaXplLGUuaXNfZW5kX3RhZz1lLmlzX2VuZF90YWd8fG8oZS50YWdfY2hlY2ssdGhpcy5fb3B0aW9ucy52b2lkX2VsZW1lbnRzKSxlLmlzX2VtcHR5X2VsZW1lbnQ9ZS50YWdfY29tcGxldGV8fGUuaXNfc3RhcnRfdGFnJiZlLmlzX2VuZF90YWcsZS5pc191bmZvcm1hdHRlZD0hZS50YWdfY29tcGxldGUmJm8oZS50YWdfY2hlY2ssdGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZCksZS5pc19jb250ZW50X3VuZm9ybWF0dGVkPSFlLmlzX2VtcHR5X2VsZW1lbnQmJm8oZS50YWdfY2hlY2ssdGhpcy5fb3B0aW9ucy5jb250ZW50X3VuZm9ybWF0dGVkKSxlLmlzX2lubGluZV9lbGVtZW50PW8oZS50YWdfbmFtZSx0aGlzLl9vcHRpb25zLmlubGluZSl8fCJ7Ij09PWUudGFnX3N0YXJ0X2NoYXIsZX0scC5wcm90b3R5cGUuX3NldF90YWdfcG9zaXRpb249ZnVuY3Rpb24oZSx0LG4scixpKXtuLmlzX2VtcHR5X2VsZW1lbnR8fChuLmlzX2VuZF90YWc/bi5zdGFydF90YWdfdG9rZW49dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3Aobi50YWdfbmFtZSk6KHRoaXMuX2RvX29wdGlvbmFsX2VuZF9lbGVtZW50KG4pJiYobi5pc19pbmxpbmVfZWxlbWVudHx8ZS5wcmludF9uZXdsaW5lKCExKSksdGhpcy5fdGFnX3N0YWNrLnJlY29yZF90YWcobiksInNjcmlwdCIhPT1uLnRhZ19uYW1lJiYic3R5bGUiIT09bi50YWdfbmFtZXx8bi5pc191bmZvcm1hdHRlZHx8bi5pc19jb250ZW50X3VuZm9ybWF0dGVkfHwobi5jdXN0b21fYmVhdXRpZmllcl9uYW1lPWEobi50YWdfY2hlY2ssdCkpKSksbyhuLnRhZ19jaGVjayx0aGlzLl9vcHRpb25zLmV4dHJhX2xpbmVycykmJihlLnByaW50X25ld2xpbmUoITEpLGUuX291dHB1dC5qdXN0X2FkZGVkX2JsYW5rbGluZSgpfHxlLnByaW50X25ld2xpbmUoITApKSxuLmlzX2VtcHR5X2VsZW1lbnQ/KCJ7Ij09PW4udGFnX3N0YXJ0X2NoYXImJiJlbHNlIj09PW4udGFnX2NoZWNrJiYodGhpcy5fdGFnX3N0YWNrLmluZGVudF90b190YWcoWyJpZiIsInVubGVzcyIsImVhY2giXSksbi5pbmRlbnRfY29udGVudD0hMCxlLmN1cnJlbnRfbGluZV9oYXNfbWF0Y2goL3t7I2lmLyl8fGUucHJpbnRfbmV3bGluZSghMSkpLCIhLS0iPT09bi50YWdfbmFtZSYmaS50eXBlPT09Yy5UQUdfQ0xPU0UmJnIuaXNfZW5kX3RhZyYmLTE9PT1uLnRleHQuaW5kZXhPZigiXG4iKXx8KG4uaXNfaW5saW5lX2VsZW1lbnR8fG4uaXNfdW5mb3JtYXR0ZWR8fGUucHJpbnRfbmV3bGluZSghMSksdGhpcy5fY2FsY2x1YXRlX3BhcmVudF9tdWx0aWxpbmUoZSxuKSkpOm4uaXNfZW5kX3RhZz8odD0hMSx0PSh0PW4uc3RhcnRfdGFnX3Rva2VuJiZuLnN0YXJ0X3RhZ190b2tlbi5tdWx0aWxpbmVfY29udGVudCl8fCFuLmlzX2lubGluZV9lbGVtZW50JiYhKHIuaXNfaW5saW5lX2VsZW1lbnR8fHIuaXNfdW5mb3JtYXR0ZWQpJiYhKGkudHlwZT09PWMuVEFHX0NMT1NFJiZuLnN0YXJ0X3RhZ190b2tlbj09PXIpJiYiVEtfQ09OVEVOVCIhPT1pLnR5cGUsKHQ9bi5pc19jb250ZW50X3VuZm9ybWF0dGVkfHxuLmlzX3VuZm9ybWF0dGVkPyExOnQpJiZlLnByaW50X25ld2xpbmUoITEpKToobi5pbmRlbnRfY29udGVudD0hbi5jdXN0b21fYmVhdXRpZmllcl9uYW1lLCI8Ij09PW4udGFnX3N0YXJ0X2NoYXImJigiaHRtbCI9PT1uLnRhZ19uYW1lP24uaW5kZW50X2NvbnRlbnQ9dGhpcy5fb3B0aW9ucy5pbmRlbnRfaW5uZXJfaHRtbDoiaGVhZCI9PT1uLnRhZ19uYW1lP24uaW5kZW50X2NvbnRlbnQ9dGhpcy5fb3B0aW9ucy5pbmRlbnRfaGVhZF9pbm5lcl9odG1sOiJib2R5Ij09PW4udGFnX25hbWUmJihuLmluZGVudF9jb250ZW50PXRoaXMuX29wdGlvbnMuaW5kZW50X2JvZHlfaW5uZXJfaHRtbCkpLG4uaXNfaW5saW5lX2VsZW1lbnR8fG4uaXNfdW5mb3JtYXR0ZWR8fCJUS19DT05URU5UIj09PWkudHlwZSYmIW4uaXNfY29udGVudF91bmZvcm1hdHRlZHx8ZS5wcmludF9uZXdsaW5lKCExKSx0aGlzLl9jYWxjbHVhdGVfcGFyZW50X211bHRpbGluZShlLG4pKX0scC5wcm90b3R5cGUuX2NhbGNsdWF0ZV9wYXJlbnRfbXVsdGlsaW5lPWZ1bmN0aW9uKGUsdCl7IXQucGFyZW50fHwhZS5fb3V0cHV0Lmp1c3RfYWRkZWRfbmV3bGluZSgpfHwodC5pc19pbmxpbmVfZWxlbWVudHx8dC5pc191bmZvcm1hdHRlZCkmJnQucGFyZW50LmlzX2lubGluZV9lbGVtZW50fHwodC5wYXJlbnQubXVsdGlsaW5lX2NvbnRlbnQ9ITApfSxbImFkZHJlc3MiLCJhcnRpY2xlIiwiYXNpZGUiLCJibG9ja3F1b3RlIiwiZGV0YWlscyIsImRpdiIsImRsIiwiZmllbGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9vdGVyIiwiZm9ybSIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWRlciIsImhyIiwibWFpbiIsIm5hdiIsIm9sIiwicCIsInByZSIsInNlY3Rpb24iLCJ0YWJsZSIsInVsIl0pLGI9WyJhIiwiYXVkaW8iLCJkZWwiLCJpbnMiLCJtYXAiLCJub3NjcmlwdCIsInZpZGVvIl07cC5wcm90b3R5cGUuX2RvX29wdGlvbmFsX2VuZF9lbGVtZW50PWZ1bmN0aW9uKGUpe3ZhciB0LG49bnVsbDtpZighZS5pc19lbXB0eV9lbGVtZW50JiZlLmlzX3N0YXJ0X3RhZyYmZS5wYXJlbnQpcmV0dXJuImJvZHkiPT09ZS50YWdfbmFtZT9uPW58fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJoZWFkIik6ImxpIj09PWUudGFnX25hbWU/bj1ufHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgibGkiLFsib2wiLCJ1bCJdKToiZGQiPT09ZS50YWdfbmFtZXx8ImR0Ij09PWUudGFnX25hbWU/bj0obj1ufHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiZHQiLFsiZGwiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiZGQiLFsiZGwiXSk6InAiPT09ZS5wYXJlbnQudGFnX25hbWUmJi0xIT09bC5pbmRleE9mKGUudGFnX25hbWUpPyh0PWUucGFyZW50LnBhcmVudCkmJi0xIT09Yi5pbmRleE9mKHQudGFnX25hbWUpfHwobj1ufHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgicCIpKToicnAiPT09ZS50YWdfbmFtZXx8InJ0Ij09PWUudGFnX25hbWU/bj0obj1ufHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgicnQiLFsicnVieSIsInJ0YyJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJycCIsWyJydWJ5IiwicnRjIl0pOiJvcHRncm91cCI9PT1lLnRhZ19uYW1lP249bnx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoIm9wdGdyb3VwIixbInNlbGVjdCJdKToib3B0aW9uIj09PWUudGFnX25hbWU/bj1ufHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgib3B0aW9uIixbInNlbGVjdCIsImRhdGFsaXN0Iiwib3B0Z3JvdXAiXSk6ImNvbGdyb3VwIj09PWUudGFnX25hbWU/bj1ufHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiY2FwdGlvbiIsWyJ0YWJsZSJdKToidGhlYWQiPT09ZS50YWdfbmFtZT9uPShuPW58fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjYXB0aW9uIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNvbGdyb3VwIixbInRhYmxlIl0pOiJ0Ym9keSI9PT1lLnRhZ19uYW1lfHwidGZvb3QiPT09ZS50YWdfbmFtZT9uPShuPShuPShuPW58fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjYXB0aW9uIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNvbGdyb3VwIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInRoZWFkIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInRib2R5IixbInRhYmxlIl0pOiJ0ciI9PT1lLnRhZ19uYW1lP249KG49KG49bnx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNhcHRpb24iLFsidGFibGUiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiY29sZ3JvdXAiLFsidGFibGUiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgidHIiLFsidGFibGUiLCJ0aGVhZCIsInRib2R5IiwidGZvb3QiXSk6InRoIiE9PWUudGFnX25hbWUmJiJ0ZCIhPT1lLnRhZ19uYW1lfHwobj0obj1ufHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgidGQiLFsidGFibGUiLCJ0aGVhZCIsInRib2R5IiwidGZvb3QiLCJ0ciJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJ0aCIsWyJ0YWJsZSIsInRoZWFkIiwidGJvZHkiLCJ0Zm9vdCIsInRyIl0pKSxlLnBhcmVudD10aGlzLl90YWdfc3RhY2suZ2V0X3BhcnNlcl90b2tlbigpLG59LGUuZXhwb3J0cy5CZWF1dGlmaWVyPXB9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDYpLk9wdGlvbnM7ZnVuY3Rpb24gaShlKXtyLmNhbGwodGhpcyxlLCJodG1sIiksMT09PXRoaXMudGVtcGxhdGluZy5sZW5ndGgmJiJhdXRvIj09PXRoaXMudGVtcGxhdGluZ1swXSYmKHRoaXMudGVtcGxhdGluZz1bImRqYW5nbyIsImVyYiIsImhhbmRsZWJhcnMiLCJwaHAiXSksdGhpcy5pbmRlbnRfaW5uZXJfaHRtbD10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X2lubmVyX2h0bWwiKSx0aGlzLmluZGVudF9ib2R5X2lubmVyX2h0bWw9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9ib2R5X2lubmVyX2h0bWwiLCEwKSx0aGlzLmluZGVudF9oZWFkX2lubmVyX2h0bWw9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9oZWFkX2lubmVyX2h0bWwiLCEwKSx0aGlzLmluZGVudF9oYW5kbGViYXJzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfaGFuZGxlYmFycyIsITApLHRoaXMud3JhcF9hdHRyaWJ1dGVzPXRoaXMuX2dldF9zZWxlY3Rpb24oIndyYXBfYXR0cmlidXRlcyIsWyJhdXRvIiwiZm9yY2UiLCJmb3JjZS1hbGlnbmVkIiwiZm9yY2UtZXhwYW5kLW11bHRpbGluZSIsImFsaWduZWQtbXVsdGlwbGUiLCJwcmVzZXJ2ZSIsInByZXNlcnZlLWFsaWduZWQiXSksdGhpcy53cmFwX2F0dHJpYnV0ZXNfaW5kZW50X3NpemU9dGhpcy5fZ2V0X251bWJlcigid3JhcF9hdHRyaWJ1dGVzX2luZGVudF9zaXplIix0aGlzLmluZGVudF9zaXplKSx0aGlzLmV4dHJhX2xpbmVycz10aGlzLl9nZXRfYXJyYXkoImV4dHJhX2xpbmVycyIsWyJoZWFkIiwiYm9keSIsIi9odG1sIl0pLHRoaXMuaW5saW5lPXRoaXMuX2dldF9hcnJheSgiaW5saW5lIixbImEiLCJhYmJyIiwiYXJlYSIsImF1ZGlvIiwiYiIsImJkaSIsImJkbyIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2l0ZSIsImNvZGUiLCJkYXRhIiwiZGF0YWxpc3QiLCJkZWwiLCJkZm4iLCJlbSIsImVtYmVkIiwiaSIsImlmcmFtZSIsImltZyIsImlucHV0IiwiaW5zIiwia2JkIiwia2V5Z2VuIiwibGFiZWwiLCJtYXAiLCJtYXJrIiwibWF0aCIsIm1ldGVyIiwibm9zY3JpcHQiLCJvYmplY3QiLCJvdXRwdXQiLCJwcm9ncmVzcyIsInEiLCJydWJ5IiwicyIsInNhbXAiLCJzZWxlY3QiLCJzbWFsbCIsInNwYW4iLCJzdHJvbmciLCJzdWIiLCJzdXAiLCJzdmciLCJ0ZW1wbGF0ZSIsInRleHRhcmVhIiwidGltZSIsInUiLCJ2YXIiLCJ2aWRlbyIsIndiciIsInRleHQiLCJhY3JvbnltIiwiYmlnIiwic3RyaWtlIiwidHQiXSksdGhpcy52b2lkX2VsZW1lbnRzPXRoaXMuX2dldF9hcnJheSgidm9pZF9lbGVtZW50cyIsWyJhcmVhIiwiYmFzZSIsImJyIiwiY29sIiwiZW1iZWQiLCJociIsImltZyIsImlucHV0Iiwia2V5Z2VuIiwibGluayIsIm1lbnVpdGVtIiwibWV0YSIsInBhcmFtIiwic291cmNlIiwidHJhY2siLCJ3YnIiLCIhZG9jdHlwZSIsIj94bWwiLCJiYXNlZm9udCIsImlzaW5kZXgiXSksdGhpcy51bmZvcm1hdHRlZD10aGlzLl9nZXRfYXJyYXkoInVuZm9ybWF0dGVkIixbXSksdGhpcy5jb250ZW50X3VuZm9ybWF0dGVkPXRoaXMuX2dldF9hcnJheSgiY29udGVudF91bmZvcm1hdHRlZCIsWyJwcmUiLCJ0ZXh0YXJlYSJdKSx0aGlzLnVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJ1bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlciIpLHRoaXMuaW5kZW50X3NjcmlwdHM9dGhpcy5fZ2V0X3NlbGVjdGlvbigiaW5kZW50X3NjcmlwdHMiLFsibm9ybWFsIiwia2VlcCIsInNlcGFyYXRlIl0pfWkucHJvdG90eXBlPW5ldyByLGUuZXhwb3J0cy5PcHRpb25zPWl9LGZ1bmN0aW9uKGUsYyx0KXtmdW5jdGlvbiBuKGUsdCl7ci5jYWxsKHRoaXMsZSx0KSx0aGlzLl9jdXJyZW50X3RhZ19uYW1lPSIiO3ZhciBlPW5ldyBvKHRoaXMuX2lucHV0KS5yZWFkX29wdGlvbnModGhpcy5fb3B0aW9ucyksdD1uZXcgcyh0aGlzLl9pbnB1dCk7dGhpcy5fX3BhdHRlcm5zPXt3b3JkOmUudW50aWwoL1tcblxyXHQgPF0vKSxzaW5nbGVfcXVvdGU6ZS51bnRpbF9hZnRlcigvJy8pLGRvdWJsZV9xdW90ZTplLnVudGlsX2FmdGVyKC8iLyksYXR0cmlidXRlOmUudW50aWwoL1tcblxyXHQgPT5dfFwvPi8pLGVsZW1lbnRfbmFtZTplLnVudGlsKC9bXG5cclx0ID5cL10vKSxoYW5kbGViYXJzX2NvbW1lbnQ6dC5zdGFydGluZ193aXRoKC97eyEtLS8pLnVudGlsX2FmdGVyKC8tLX19LyksaGFuZGxlYmFyczp0LnN0YXJ0aW5nX3dpdGgoL3t7LykudW50aWxfYWZ0ZXIoL319LyksaGFuZGxlYmFyc19vcGVuOnQudW50aWwoL1tcblxyXHQgfV0vKSxoYW5kbGViYXJzX3Jhd19jbG9zZTp0LnVudGlsKC99fS8pLGNvbW1lbnQ6dC5zdGFydGluZ193aXRoKC88IS0tLykudW50aWxfYWZ0ZXIoLy0tPi8pLGNkYXRhOnQuc3RhcnRpbmdfd2l0aCgvPCFcW0NEQVRBXFsvKS51bnRpbF9hZnRlcigvXV0+LyksY29uZGl0aW9uYWxfY29tbWVudDp0LnN0YXJ0aW5nX3dpdGgoLzwhXFsvKS51bnRpbF9hZnRlcigvXT4vKSxwcm9jZXNzaW5nOnQuc3RhcnRpbmdfd2l0aCgvPFw/LykudW50aWxfYWZ0ZXIoL1w/Pi8pfSx0aGlzLl9vcHRpb25zLmluZGVudF9oYW5kbGViYXJzJiYodGhpcy5fX3BhdHRlcm5zLndvcmQ9dGhpcy5fX3BhdHRlcm5zLndvcmQuZXhjbHVkZSgiaGFuZGxlYmFycyIpKSx0aGlzLl91bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlcj1udWxsLHRoaXMuX29wdGlvbnMudW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXImJihlPXRoaXMuX2lucHV0LmdldF9saXRlcmFsX3JlZ2V4cCh0aGlzLl9vcHRpb25zLnVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyKSx0aGlzLl9fcGF0dGVybnMudW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXI9dC5tYXRjaGluZyhlKS51bnRpbF9hZnRlcihlKSl9dmFyIHI9dCg5KS5Ub2tlbml6ZXIsaT10KDkpLlRPS0VOLGE9dCgxMykuRGlyZWN0aXZlcyxvPXQoMTQpLlRlbXBsYXRhYmxlUGF0dGVybixzPXQoMTIpLlBhdHRlcm4sbD17VEFHX09QRU46IlRLX1RBR19PUEVOIixUQUdfQ0xPU0U6IlRLX1RBR19DTE9TRSIsQVRUUklCVVRFOiJUS19BVFRSSUJVVEUiLEVRVUFMUzoiVEtfRVFVQUxTIixWQUxVRToiVEtfVkFMVUUiLENPTU1FTlQ6IlRLX0NPTU1FTlQiLFRFWFQ6IlRLX1RFWFQiLFVOS05PV046IlRLX1VOS05PV04iLFNUQVJUOmkuU1RBUlQsUkFXOmkuUkFXLEVPRjppLkVPRn0saD1uZXcgYSgvPFwhLS0vLC8tLT4vKTsobi5wcm90b3R5cGU9bmV3IHIpLl9pc19jb21tZW50PWZ1bmN0aW9uKGUpe3JldHVybiExfSxuLnByb3RvdHlwZS5faXNfb3BlbmluZz1mdW5jdGlvbihlKXtyZXR1cm4gZS50eXBlPT09bC5UQUdfT1BFTn0sbi5wcm90b3R5cGUuX2lzX2Nsb3Npbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50eXBlPT09bC5UQUdfQ0xPU0UmJnQmJigoIj4iPT09ZS50ZXh0fHwiLz4iPT09ZS50ZXh0KSYmIjwiPT09dC50ZXh0WzBdfHwifX0iPT09ZS50ZXh0JiYieyI9PT10LnRleHRbMF0mJiJ7Ij09PXQudGV4dFsxXSl9LG4ucHJvdG90eXBlLl9yZXNldD1mdW5jdGlvbigpe3RoaXMuX2N1cnJlbnRfdGFnX25hbWU9IiJ9LG4ucHJvdG90eXBlLl9nZXRfbmV4dF90b2tlbj1mdW5jdGlvbihlLHQpe3RoaXMuX3JlYWRXaGl0ZXNwYWNlKCk7dmFyIG49dGhpcy5faW5wdXQucGVlaygpO3JldHVybiBudWxsPT09bj90aGlzLl9jcmVhdGVfdG9rZW4obC5FT0YsIiIpOnRoaXMuX3JlYWRfb3Blbl9oYW5kbGViYXJzKG4sdCl8fHRoaXMuX3JlYWRfYXR0cmlidXRlKG4sZSx0KXx8dGhpcy5fcmVhZF9jbG9zZShuLHQpfHx0aGlzLl9yZWFkX3Jhd19jb250ZW50KG4sZSx0KXx8dGhpcy5fcmVhZF9jb250ZW50X3dvcmQobil8fHRoaXMuX3JlYWRfY29tbWVudF9vcl9jZGF0YShuKXx8dGhpcy5fcmVhZF9wcm9jZXNzaW5nKG4pfHx0aGlzLl9yZWFkX29wZW4obix0KXx8dGhpcy5fY3JlYXRlX3Rva2VuKGwuVU5LTk9XTix0aGlzLl9pbnB1dC5uZXh0KCkpfSxuLnByb3RvdHlwZS5fcmVhZF9jb21tZW50X29yX2NkYXRhPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGwsbj1udWxsLHI9bnVsbDtyZXR1cm4iPCI9PT1lJiYoIiEiPT09dGhpcy5faW5wdXQucGVlaygxKSYmKChuPXRoaXMuX19wYXR0ZXJucy5jb21tZW50LnJlYWQoKSk/KHI9aC5nZXRfZGlyZWN0aXZlcyhuKSkmJiJzdGFydCI9PT1yLmlnbm9yZSYmKG4rPWgucmVhZElnbm9yZWQodGhpcy5faW5wdXQpKTpuPXRoaXMuX19wYXR0ZXJucy5jZGF0YS5yZWFkKCkpLG4mJigodD10aGlzLl9jcmVhdGVfdG9rZW4obC5DT01NRU5ULG4pKS5kaXJlY3RpdmVzPXIpKSx0fSxuLnByb3RvdHlwZS5fcmVhZF9wcm9jZXNzaW5nPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGwsbj1udWxsO3JldHVybiI8IiE9PWV8fChuPSIhIiE9PShlPXRoaXMuX2lucHV0LnBlZWsoMSkpJiYiPyIhPT1lP246KG49dGhpcy5fX3BhdHRlcm5zLmNvbmRpdGlvbmFsX2NvbW1lbnQucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLnByb2Nlc3NpbmcucmVhZCgpKSYmKCh0PXRoaXMuX2NyZWF0ZV90b2tlbihsLkNPTU1FTlQsbikpLmRpcmVjdGl2ZXM9bnVsbCksdH0sbi5wcm90b3R5cGUuX3JlYWRfb3Blbj1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGwscj1udWxsO3JldHVybiB0fHwiPCI9PT1lJiYobj10aGlzLl9pbnB1dC5uZXh0KCksIi8iPT09dGhpcy5faW5wdXQucGVlaygpJiYobis9dGhpcy5faW5wdXQubmV4dCgpKSxuKz10aGlzLl9fcGF0dGVybnMuZWxlbWVudF9uYW1lLnJlYWQoKSxyPXRoaXMuX2NyZWF0ZV90b2tlbihsLlRBR19PUEVOLG4pKSxyfSxuLnByb3RvdHlwZS5fcmVhZF9vcGVuX2hhbmRsZWJhcnM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsLHI9bnVsbDtyZXR1cm4gdHx8dGhpcy5fb3B0aW9ucy5pbmRlbnRfaGFuZGxlYmFycyYmInsiPT09ZSYmInsiPT09dGhpcy5faW5wdXQucGVlaygxKSYmKHI9IiEiPT09dGhpcy5faW5wdXQucGVlaygyKT8obj0obj10aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFyc19jb21tZW50LnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzLnJlYWQoKSx0aGlzLl9jcmVhdGVfdG9rZW4obC5DT01NRU5ULG4pKToobj10aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFyc19vcGVuLnJlYWQoKSx0aGlzLl9jcmVhdGVfdG9rZW4obC5UQUdfT1BFTixuKSkpLHJ9LG4ucHJvdG90eXBlLl9yZWFkX2Nsb3NlPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbCxyPW51bGw7cmV0dXJuIHQmJigiPCI9PT10LnRleHRbMF0mJigiPiI9PT1lfHwiLyI9PT1lJiYiPiI9PT10aGlzLl9pbnB1dC5wZWVrKDEpKT8obj10aGlzLl9pbnB1dC5uZXh0KCksIi8iPT09ZSYmKG4rPXRoaXMuX2lucHV0Lm5leHQoKSkscj10aGlzLl9jcmVhdGVfdG9rZW4obC5UQUdfQ0xPU0UsbikpOiJ7Ij09PXQudGV4dFswXSYmIn0iPT09ZSYmIn0iPT09dGhpcy5faW5wdXQucGVlaygxKSYmKHRoaXMuX2lucHV0Lm5leHQoKSx0aGlzLl9pbnB1dC5uZXh0KCkscj10aGlzLl9jcmVhdGVfdG9rZW4obC5UQUdfQ0xPU0UsIn19IikpKSxyfSxuLnByb3RvdHlwZS5fcmVhZF9hdHRyaWJ1dGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW51bGw7cmV0dXJuIG4mJiI8Ij09PW4udGV4dFswXSYmKCI9Ij09PWU/cj10aGlzLl9jcmVhdGVfdG9rZW4obC5FUVVBTFMsdGhpcy5faW5wdXQubmV4dCgpKTonIic9PT1lfHwiJyI9PT1lPyhuPXRoaXMuX2lucHV0Lm5leHQoKSxuKz0oJyInPT09ZT90aGlzLl9fcGF0dGVybnMuZG91YmxlX3F1b3RlOnRoaXMuX19wYXR0ZXJucy5zaW5nbGVfcXVvdGUpLnJlYWQoKSxyPXRoaXMuX2NyZWF0ZV90b2tlbihsLlZBTFVFLG4pKTooZT10aGlzLl9fcGF0dGVybnMuYXR0cmlidXRlLnJlYWQoKSkmJihyPXQudHlwZT09PWwuRVFVQUxTP3RoaXMuX2NyZWF0ZV90b2tlbihsLlZBTFVFLGUpOnRoaXMuX2NyZWF0ZV90b2tlbihsLkFUVFJJQlVURSxlKSkpLHJ9LG4ucHJvdG90eXBlLl9pc19jb250ZW50X3VuZm9ybWF0dGVkPWZ1bmN0aW9uKGUpe3JldHVybi0xPT09dGhpcy5fb3B0aW9ucy52b2lkX2VsZW1lbnRzLmluZGV4T2YoZSkmJigtMSE9PXRoaXMuX29wdGlvbnMuY29udGVudF91bmZvcm1hdHRlZC5pbmRleE9mKGUpfHwtMSE9PXRoaXMuX29wdGlvbnMudW5mb3JtYXR0ZWQuaW5kZXhPZihlKSl9LG4ucHJvdG90eXBlLl9yZWFkX3Jhd19jb250ZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0iIjtpZihuJiYieyI9PT1uLnRleHRbMF0pcj10aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFyc19yYXdfY2xvc2UucmVhZCgpO2Vsc2UgaWYodC50eXBlPT09bC5UQUdfQ0xPU0UmJiI8Ij09PXQub3BlbmVkLnRleHRbMF0mJiIvIiE9PXQudGV4dFswXSl7bj10Lm9wZW5lZC50ZXh0LnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpO2lmKCJzY3JpcHQiPT09bnx8InN0eWxlIj09PW4pe3Q9dGhpcy5fcmVhZF9jb21tZW50X29yX2NkYXRhKGUpO2lmKHQpcmV0dXJuIHQudHlwZT1sLlRFWFQsdDtyPXRoaXMuX2lucHV0LnJlYWRVbnRpbChuZXcgUmVnRXhwKCI8LyIrbisiW1xcblxcclxcdCBdKj8+IiwiaWciKSl9ZWxzZSB0aGlzLl9pc19jb250ZW50X3VuZm9ybWF0dGVkKG4pJiYocj10aGlzLl9pbnB1dC5yZWFkVW50aWwobmV3IFJlZ0V4cCgiPC8iK24rIltcXG5cXHJcXHQgXSo/PiIsImlnIikpKX1yZXR1cm4gcj90aGlzLl9jcmVhdGVfdG9rZW4obC5URVhULHIpOm51bGx9LG4ucHJvdG90eXBlLl9yZWFkX2NvbnRlbnRfd29yZD1mdW5jdGlvbihlKXt2YXIgdD0iIjtpZih0PSh0PXRoaXMuX29wdGlvbnMudW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXImJmU9PT10aGlzLl9vcHRpb25zLnVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyWzBdP3RoaXMuX19wYXR0ZXJucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlci5yZWFkKCk6dCl8fHRoaXMuX19wYXR0ZXJucy53b3JkLnJlYWQoKSlyZXR1cm4gdGhpcy5fY3JlYXRlX3Rva2VuKGwuVEVYVCx0KX0sZS5leHBvcnRzLlRva2VuaXplcj1uLGUuZXhwb3J0cy5UT0tFTj1sfV0sUmk9e30sSWk9ZnVuY3Rpb24gZSh0KXt2YXIgbj1SaVt0XTtpZih2b2lkIDAhPT1uKXJldHVybiBuLmV4cG9ydHM7bj1SaVt0XT17ZXhwb3J0czp7fX07cmV0dXJuIE1pW3RdKG4sbi5leHBvcnRzLGUpLG4uZXhwb3J0c30oMTgpLEFpPUlpLE5pPXs0NzA6ZT0+e2Z1bmN0aW9uIHUoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIlBhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgIitKU09OLnN0cmluZ2lmeShlKSl9ZnVuY3Rpb24gYShlLHQpe2Zvcih2YXIgbixyPSIiLGk9MCxhPS0xLG89MCxzPTA7czw9ZS5sZW5ndGg7KytzKXtpZihzPGUubGVuZ3RoKW49ZS5jaGFyQ29kZUF0KHMpO2Vsc2V7aWYoNDc9PT1uKWJyZWFrO249NDd9aWYoNDc9PT1uKXtpZihhIT09cy0xJiYxIT09bylpZihhIT09cy0xJiYyPT09byl7aWYoci5sZW5ndGg8Mnx8MiE9PWl8fDQ2IT09ci5jaGFyQ29kZUF0KHIubGVuZ3RoLTEpfHw0NiE9PXIuY2hhckNvZGVBdChyLmxlbmd0aC0yKSlpZigyPHIubGVuZ3RoKXt2YXIgbD1yLmxhc3RJbmRleE9mKCIvIik7aWYobCE9PXIubGVuZ3RoLTEpe2k9LTE9PT1sPyhyPSIiLDApOihyPXIuc2xpY2UoMCxsKSkubGVuZ3RoLTEtci5sYXN0SW5kZXhPZigiLyIpLGE9cyxvPTA7Y29udGludWV9fWVsc2UgaWYoMj09PXIubGVuZ3RofHwxPT09ci5sZW5ndGgpe3I9IiIsYT1zLG89aT0wO2NvbnRpbnVlfXQmJigwPHIubGVuZ3RoP3IrPSIvLi4iOnI9Ii4uIixpPTIpfWVsc2UgMDxyLmxlbmd0aD9yKz0iLyIrZS5zbGljZShhKzEscyk6cj1lLnNsaWNlKGErMSxzKSxpPXMtYS0xO2E9cyxvPTB9ZWxzZSA0Nj09PW4mJi0xIT09bz8rK286bz0tMX1yZXR1cm4gcn12YXIgcD17cmVzb2x2ZTpmdW5jdGlvbigpe2Zvcih2YXIgZSx0PSIiLG49ITEscj1hcmd1bWVudHMubGVuZ3RoLTE7LTE8PXImJiFuO3ItLSl7dmFyIGk9MDw9cj9hcmd1bWVudHNbcl06ZT12b2lkIDA9PT1lP3Byb2Nlc3MuY3dkKCk6ZTt1KGkpLDAhPT1pLmxlbmd0aCYmKHQ9aSsiLyIrdCxuPTQ3PT09aS5jaGFyQ29kZUF0KDApKX1yZXR1cm4gdD1hKHQsIW4pLG4/MDx0Lmxlbmd0aD8iLyIrdDoiLyI6MDx0Lmxlbmd0aD90OiIuIn0sbm9ybWFsaXplOmZ1bmN0aW9uKGUpe2lmKHUoZSksMD09PWUubGVuZ3RoKXJldHVybiIuIjt2YXIgdD00Nz09PWUuY2hhckNvZGVBdCgwKSxuPTQ3PT09ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpO3JldHVybiAwPChlPTAhPT0oZT1hKGUsIXQpKS5sZW5ndGh8fHQ/ZToiLiIpLmxlbmd0aCYmbiYmKGUrPSIvIiksdD8iLyIrZTplfSxpc0Fic29sdXRlOmZ1bmN0aW9uKGUpe3JldHVybiB1KGUpLDA8ZS5sZW5ndGgmJjQ3PT09ZS5jaGFyQ29kZUF0KDApfSxqb2luOmZ1bmN0aW9uKCl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIi4iO2Zvcih2YXIgZSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoOysrdCl7dmFyIG49YXJndW1lbnRzW3RdO3UobiksMDxuLmxlbmd0aCYmKHZvaWQgMD09PWU/ZT1uOmUrPSIvIituKX1yZXR1cm4gdm9pZCAwPT09ZT8iLiI6cC5ub3JtYWxpemUoZSl9LHJlbGF0aXZlOmZ1bmN0aW9uKGUsdCl7aWYodShlKSx1KHQpLGU9PT10KXJldHVybiIiO2lmKChlPXAucmVzb2x2ZShlKSk9PT0odD1wLnJlc29sdmUodCkpKXJldHVybiIiO2Zvcih2YXIgbj0xO248ZS5sZW5ndGgmJjQ3PT09ZS5jaGFyQ29kZUF0KG4pOysrbik7Zm9yKHZhciByPWUubGVuZ3RoLGk9ci1uLGE9MTthPHQubGVuZ3RoJiY0Nz09PXQuY2hhckNvZGVBdChhKTsrK2EpO2Zvcih2YXIgYz10Lmxlbmd0aC1hLG89aTxjP2k6YyxzPS0xLGw9MDtsPD1vOysrbCl7aWYobD09PW8pe2lmKG88Yyl7aWYoNDc9PT10LmNoYXJDb2RlQXQoYStsKSlyZXR1cm4gdC5zbGljZShhK2wrMSk7aWYoMD09PWwpcmV0dXJuIHQuc2xpY2UoYStsKX1lbHNlIG88aSYmKDQ3PT09ZS5jaGFyQ29kZUF0KG4rbCk/cz1sOjA9PT1sJiYocz0wKSk7YnJlYWt9dmFyIGQ9ZS5jaGFyQ29kZUF0KG4rbCk7aWYoZCE9PXQuY2hhckNvZGVBdChhK2wpKWJyZWFrOzQ3PT09ZCYmKHM9bCl9Zm9yKHZhciBoPSIiLGw9bitzKzE7bDw9cjsrK2wpbCE9PXImJjQ3IT09ZS5jaGFyQ29kZUF0KGwpfHwoMD09PWgubGVuZ3RoP2grPSIuLiI6aCs9Ii8uLiIpO3JldHVybiAwPGgubGVuZ3RoP2grdC5zbGljZShhK3MpOig0Nz09PXQuY2hhckNvZGVBdChhKz1zKSYmKythLHQuc2xpY2UoYSkpfSxfbWFrZUxvbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGRpcm5hbWU6ZnVuY3Rpb24oZSl7aWYodShlKSwwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2Zvcih2YXIgdD00Nz09PWUuY2hhckNvZGVBdCgwKSxuPS0xLHI9ITAsaT1lLmxlbmd0aC0xOzE8PWk7LS1pKWlmKDQ3PT09ZS5jaGFyQ29kZUF0KGkpKXtpZighcil7bj1pO2JyZWFrfX1lbHNlIHI9ITE7cmV0dXJuLTE9PT1uP3Q/Ii8iOiIuIjp0JiYxPT09bj8iLy8iOmUuc2xpY2UoMCxuKX0sYmFzZW5hbWU6ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDAhPT10JiYic3RyaW5nIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignImV4dCIgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZycpO3UoZSk7dmFyIG49MCxyPS0xLGk9ITA7aWYodm9pZCAwIT09dCYmMDx0Lmxlbmd0aCYmdC5sZW5ndGg8PWUubGVuZ3RoKXtpZih0Lmxlbmd0aD09PWUubGVuZ3RoJiZ0PT09ZSlyZXR1cm4iIjtmb3IodmFyIGE9dC5sZW5ndGgtMSxvPS0xLHM9ZS5sZW5ndGgtMTswPD1zOy0tcyl7dmFyIGw9ZS5jaGFyQ29kZUF0KHMpO2lmKDQ3PT09bCl7aWYoIWkpe249cysxO2JyZWFrfX1lbHNlLTE9PT1vJiYoaT0hMSxvPXMrMSksMDw9YSYmKGw9PT10LmNoYXJDb2RlQXQoYSk/LTE9PS0tYSYmKHI9cyk6KGE9LTEscj1vKSl9cmV0dXJuIG49PT1yP3I9bzotMT09PXImJihyPWUubGVuZ3RoKSxlLnNsaWNlKG4scil9Zm9yKHM9ZS5sZW5ndGgtMTswPD1zOy0tcylpZig0Nz09PWUuY2hhckNvZGVBdChzKSl7aWYoIWkpe249cysxO2JyZWFrfX1lbHNlLTE9PT1yJiYoaT0hMSxyPXMrMSk7cmV0dXJuLTE9PT1yPyIiOmUuc2xpY2UobixyKX0sZXh0bmFtZTpmdW5jdGlvbihlKXt1KGUpO2Zvcih2YXIgdD0tMSxuPTAscj0tMSxpPSEwLGE9MCxvPWUubGVuZ3RoLTE7MDw9bzstLW8pe3ZhciBzPWUuY2hhckNvZGVBdChvKTtpZig0NyE9PXMpLTE9PT1yJiYoaT0hMSxyPW8rMSksNDY9PT1zPy0xPT09dD90PW86MSE9PWEmJihhPTEpOi0xIT09dCYmKGE9LTEpO2Vsc2UgaWYoIWkpe249bysxO2JyZWFrfX1yZXR1cm4tMT09PXR8fC0xPT09cnx8MD09PWF8fDE9PT1hJiZ0PT09ci0xJiZ0PT09bisxPyIiOmUuc2xpY2UodCxyKX0sZm9ybWF0OmZ1bmN0aW9uKGUpe2lmKG51bGw9PT1lfHwib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJwYXRoT2JqZWN0IiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIGUpO3JldHVybiB0PWUuZGlyfHxlLnJvb3Qsbj1lLmJhc2V8fChlLm5hbWV8fCIiKSsoZS5leHR8fCIiKSx0P3Q9PT1lLnJvb3Q/dCtuOnQrIi8iK246bjt2YXIgdCxufSxwYXJzZTpmdW5jdGlvbihlKXt1KGUpO3ZhciB0PXtyb290OiIiLGRpcjoiIixiYXNlOiIiLGV4dDoiIixuYW1lOiIifTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIHQ7Zm9yKHZhciBuLHI9NDc9PT1lLmNoYXJDb2RlQXQoMCksYz1yPyh0LnJvb3Q9Ii8iLDEpOjAsaT0tMSxhPTAsbz0tMSxzPSEwLGw9ZS5sZW5ndGgtMSxoPTA7Yzw9bDstLWwpaWYoNDchPT0obj1lLmNoYXJDb2RlQXQobCkpKS0xPT09byYmKHM9ITEsbz1sKzEpLDQ2PT09bj8tMT09PWk/aT1sOjEhPT1oJiYoaD0xKTotMSE9PWkmJihoPS0xKTtlbHNlIGlmKCFzKXthPWwrMTticmVha31yZXR1cm4tMT09PWl8fC0xPT09b3x8MD09PWh8fDE9PT1oJiZpPT09by0xJiZpPT09YSsxPy0xIT09byYmKHQuYmFzZT10Lm5hbWU9MD09PWEmJnI/ZS5zbGljZSgxLG8pOmUuc2xpY2UoYSxvKSk6KDA9PT1hJiZyPyh0Lm5hbWU9ZS5zbGljZSgxLGkpLHQuYmFzZT1lLnNsaWNlKDEsbykpOih0Lm5hbWU9ZS5zbGljZShhLGkpLHQuYmFzZT1lLnNsaWNlKGEsbykpLHQuZXh0PWUuc2xpY2UoaSxvKSksMDxhP3QuZGlyPWUuc2xpY2UoMCxhLTEpOnImJih0LmRpcj0iLyIpLHR9LHNlcDoiLyIsZGVsaW1pdGVyOiI6Iix3aW4zMjpudWxsLHBvc2l4Om51bGx9O3AucG9zaXg9cCxlLmV4cG9ydHM9cH0sNDQ3OihjLGUsdCk9Pnt2YXIgcjt0LnIoZSksdC5kKGUse1VSSTooKT0+ZyxVdGlsczooKT0+bH0pLCJvYmplY3QiPT10eXBlb2YgcHJvY2Vzcz9yPSJ3aW4zMiI9PT1wcm9jZXNzLnBsYXRmb3JtOiJvYmplY3QiPT10eXBlb2YgbmF2aWdhdG9yJiYocj0wPD1uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIldpbmRvd3MiKSk7YT1mdW5jdGlvbihlLHQpe3JldHVybihhPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0pKGUsdCl9O3ZhciBhLGQ9L15cd1tcd1xkKy4tXSokLyx1PS9eXC8vLHA9L15cL1wvLztmdW5jdGlvbiBtKGUsdCl7aWYoIWUuc2NoZW1lJiZ0KXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogU2NoZW1lIGlzIG1pc3Npbmc6IHtzY2hlbWU6ICIiLCBhdXRob3JpdHk6ICInLmNvbmNhdChlLmF1dGhvcml0eSwnIiwgcGF0aDogIicpLmNvbmNhdChlLnBhdGgsJyIsIHF1ZXJ5OiAiJykuY29uY2F0KGUucXVlcnksJyIsIGZyYWdtZW50OiAiJykuY29uY2F0KGUuZnJhZ21lbnQsJyJ9JykpO2lmKGUuc2NoZW1lJiYhZC50ZXN0KGUuc2NoZW1lKSl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IFNjaGVtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuIik7aWYoZS5wYXRoKWlmKGUuYXV0aG9yaXR5KXtpZighdS50ZXN0KGUucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBjb250YWlucyBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNvbXBvbmVudCBtdXN0IGVpdGhlciBiZSBlbXB0eSBvciBiZWdpbiB3aXRoIGEgc2xhc2ggKCIvIikgY2hhcmFjdGVyJyl9ZWxzZSBpZihwLnRlc3QoZS5wYXRoKSl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IElmIGEgVVJJIGRvZXMgbm90IGNvbnRhaW4gYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjYW5ub3QgYmVnaW4gd2l0aCB0d28gc2xhc2ggY2hhcmFjdGVycyAoIi8vIiknKX12YXIgZj0vXigoW146Lz8jXSs/KTopPyhcL1wvKFteLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/LyxnPShuLmlzVXJpPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2Ygbnx8ISFlJiYic3RyaW5nIj09dHlwZW9mIGUuYXV0aG9yaXR5JiYic3RyaW5nIj09dHlwZW9mIGUuZnJhZ21lbnQmJiJzdHJpbmciPT10eXBlb2YgZS5wYXRoJiYic3RyaW5nIj09dHlwZW9mIGUucXVlcnkmJiJzdHJpbmciPT10eXBlb2YgZS5zY2hlbWUmJiJzdHJpbmciPT10eXBlb2YgZS5mc1BhdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLndpdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnRvU3RyaW5nfSxPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsImZzUGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiB5KHRoaXMsITEpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLG4ucHJvdG90eXBlLndpdGg9ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIHRoaXM7dmFyIHQ9ZS5zY2hlbWUsbj1lLmF1dGhvcml0eSxyPWUucGF0aCxpPWUucXVlcnksZT1lLmZyYWdtZW50O3JldHVybiB2b2lkIDA9PT10P3Q9dGhpcy5zY2hlbWU6bnVsbD09PXQmJih0PSIiKSx2b2lkIDA9PT1uP249dGhpcy5hdXRob3JpdHk6bnVsbD09PW4mJihuPSIiKSx2b2lkIDA9PT1yP3I9dGhpcy5wYXRoOm51bGw9PT1yJiYocj0iIiksdm9pZCAwPT09aT9pPXRoaXMucXVlcnk6bnVsbD09PWkmJihpPSIiKSx2b2lkIDA9PT1lP2U9dGhpcy5mcmFnbWVudDpudWxsPT09ZSYmKGU9IiIpLHQ9PT10aGlzLnNjaGVtZSYmbj09PXRoaXMuYXV0aG9yaXR5JiZyPT09dGhpcy5wYXRoJiZpPT09dGhpcy5xdWVyeSYmZT09PXRoaXMuZnJhZ21lbnQ/dGhpczpuZXcgbyh0LG4scixpLGUpfSxuLnBhcnNlPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITEpO2U9Zi5leGVjKGUpO3JldHVybiBlP25ldyBvKGVbMl18fCIiLGkoZVs0XXx8IiIpLGkoZVs1XXx8IiIpLGkoZVs3XXx8IiIpLGkoZVs5XXx8IiIpLHQpOm5ldyBvKCIiLCIiLCIiLCIiLCIiKX0sbi5maWxlPWZ1bmN0aW9uKGUpe3ZhciB0LG49IiI7cmV0dXJuIi8iPT09KGU9cj9lLnJlcGxhY2UoL1xcL2csIi8iKTplKVswXSYmIi8iPT09ZVsxXSYmKGU9LTE9PT0odD1lLmluZGV4T2YoIi8iLDIpKT8obj1lLnN1YnN0cmluZygyKSwiLyIpOihuPWUuc3Vic3RyaW5nKDIsdCksZS5zdWJzdHJpbmcodCl8fCIvIikpLG5ldyBvKCJmaWxlIixuLGUsIiIsIiIpfSxuLmZyb209ZnVuY3Rpb24oZSl7ZT1uZXcgbyhlLnNjaGVtZSxlLmF1dGhvcml0eSxlLnBhdGgsZS5xdWVyeSxlLmZyYWdtZW50KTtyZXR1cm4gbShlLCEwKSxlfSxuLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4gcyh0aGlzLGU9dm9pZCAwPT09ZT8hMTplKX0sbi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG4ucmV2aXZlPWZ1bmN0aW9uKGUpe2lmKGUpe2lmKGUgaW5zdGFuY2VvZiBuKXJldHVybiBlO3ZhciB0PW5ldyBvKGUpO3JldHVybiB0Ll9mb3JtYXR0ZWQ9ZS5leHRlcm5hbCx0Ll9mc1BhdGg9ZS5fc2VwPT09Yj9lLmZzUGF0aDpudWxsLHR9cmV0dXJuIGV9LG4pLGI9cj8xOnZvaWQgMCxvPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT1udWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIGUuX2Zvcm1hdHRlZD1udWxsLGUuX2ZzUGF0aD1udWxsLGV9dmFyIG49ZSxyPXQ7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHImJm51bGwhPT1yKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcocikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gaSgpe3RoaXMuY29uc3RydWN0b3I9bn1yZXR1cm4gYShuLHIpLG4ucHJvdG90eXBlPW51bGw9PT1yP09iamVjdC5jcmVhdGUocik6KGkucHJvdG90eXBlPXIucHJvdG90eXBlLG5ldyBpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImZzUGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mc1BhdGh8fCh0aGlzLl9mc1BhdGg9eSh0aGlzLCExKSksdGhpcy5fZnNQYXRofSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybihlPXZvaWQgMD09PWU/ITE6ZSk/cyh0aGlzLCEwKToodGhpcy5fZm9ybWF0dGVkfHwodGhpcy5fZm9ybWF0dGVkPXModGhpcywhMSkpLHRoaXMuX2Zvcm1hdHRlZCl9LGUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBlPXskbWlkOjF9O3JldHVybiB0aGlzLl9mc1BhdGgmJihlLmZzUGF0aD10aGlzLl9mc1BhdGgsZS5fc2VwPWIpLHRoaXMuX2Zvcm1hdHRlZCYmKGUuZXh0ZXJuYWw9dGhpcy5fZm9ybWF0dGVkKSx0aGlzLnBhdGgmJihlLnBhdGg9dGhpcy5wYXRoKSx0aGlzLnNjaGVtZSYmKGUuc2NoZW1lPXRoaXMuc2NoZW1lKSx0aGlzLmF1dGhvcml0eSYmKGUuYXV0aG9yaXR5PXRoaXMuYXV0aG9yaXR5KSx0aGlzLnF1ZXJ5JiYoZS5xdWVyeT10aGlzLnF1ZXJ5KSx0aGlzLmZyYWdtZW50JiYoZS5mcmFnbWVudD10aGlzLmZyYWdtZW50KSxlfSxlfShnKSxfPSgoZT17fSlbNThdPSIlM0EiLGVbNDddPSIlMkYiLGVbNjNdPSIlM0YiLGVbMzVdPSIlMjMiLGVbOTFdPSIlNUIiLGVbOTNdPSIlNUQiLGVbNjRdPSIlNDAiLGVbMzNdPSIlMjEiLGVbMzZdPSIlMjQiLGVbMzhdPSIlMjYiLGVbMzldPSIlMjciLGVbNDBdPSIlMjgiLGVbNDFdPSIlMjkiLGVbNDJdPSIlMkEiLGVbNDNdPSIlMkIiLGVbNDRdPSIlMkMiLGVbNTldPSIlM0IiLGVbNjFdPSIlM0QiLGVbMzJdPSIlMjAiLGUpO2Z1bmN0aW9uIG4oZSx0LG4scixpLGEpe3ZvaWQgMD09PWEmJihhPSExKSwib2JqZWN0Ij09dHlwZW9mIGU/KHRoaXMuc2NoZW1lPWUuc2NoZW1lfHwiIix0aGlzLmF1dGhvcml0eT1lLmF1dGhvcml0eXx8IiIsdGhpcy5wYXRoPWUucGF0aHx8IiIsdGhpcy5xdWVyeT1lLnF1ZXJ5fHwiIix0aGlzLmZyYWdtZW50PWUuZnJhZ21lbnR8fCIiKToodGhpcy5zY2hlbWU9ZXx8YT9lOiJmaWxlIix0aGlzLmF1dGhvcml0eT10fHwiIix0aGlzLnBhdGg9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSJodHRwcyI6Y2FzZSJodHRwIjpjYXNlImZpbGUiOnQ/Ii8iIT09dFswXSYmKHQ9Ii8iK3QpOnQ9Ii8ifXJldHVybiB0fSh0aGlzLnNjaGVtZSxufHwiIiksdGhpcy5xdWVyeT1yfHwiIix0aGlzLmZyYWdtZW50PWl8fCIiLG0odGhpcyxhKSl9ZnVuY3Rpb24gdyhlLHQpe2Zvcih2YXIgbj12b2lkIDAscj0tMSxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBhPWUuY2hhckNvZGVBdChpKTs5Nzw9YSYmYTw9MTIyfHw2NTw9YSYmYTw9OTB8fDQ4PD1hJiZhPD01N3x8NDU9PT1hfHw0Nj09PWF8fDk1PT09YXx8MTI2PT09YXx8dCYmNDc9PT1hPygtMSE9PXImJihuKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocixpKSkscj0tMSksdm9pZCAwIT09biYmKG4rPWUuY2hhckF0KGkpKSk6KHZvaWQgMD09PW4mJihuPWUuc3Vic3RyKDAsaSkpLHZvaWQgMCE9PShhPV9bYV0pPygtMSE9PXImJihuKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocixpKSkscj0tMSksbis9YSk6LTE9PT1yJiYocj1pKSl9cmV0dXJuLTEhPT1yJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKHIpKSksdm9pZCAwIT09bj9uOmV9ZnVuY3Rpb24gdihlKXtmb3IodmFyIHQ9dm9pZCAwLG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZS5jaGFyQ29kZUF0KG4pOzM1PT09cnx8NjM9PT1yPyh2b2lkIDA9PT10JiYodD1lLnN1YnN0cigwLG4pKSx0Kz1fW3JdKTp2b2lkIDAhPT10JiYodCs9ZVtuXSl9cmV0dXJuIHZvaWQgMCE9PXQ/dDplfWZ1bmN0aW9uIHkoZSx0KXt0PWUuYXV0aG9yaXR5JiYxPGUucGF0aC5sZW5ndGgmJiJmaWxlIj09PWUuc2NoZW1lPyIvLyIuY29uY2F0KGUuYXV0aG9yaXR5KS5jb25jYXQoZS5wYXRoKTo0Nz09PWUucGF0aC5jaGFyQ29kZUF0KDApJiYoNjU8PWUucGF0aC5jaGFyQ29kZUF0KDEpJiZlLnBhdGguY2hhckNvZGVBdCgxKTw9OTB8fDk3PD1lLnBhdGguY2hhckNvZGVBdCgxKSYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTEyMikmJjU4PT09ZS5wYXRoLmNoYXJDb2RlQXQoMik/dD9lLnBhdGguc3Vic3RyKDEpOmUucGF0aFsxXS50b0xvd2VyQ2FzZSgpK2UucGF0aC5zdWJzdHIoMik6ZS5wYXRoO3JldHVybiB0PXI/dC5yZXBsYWNlKC9cLy9nLCJcXCIpOnR9ZnVuY3Rpb24gcyhlLHQpe3ZhciBuLHIsaT10P3Y6dyxhPSIiLG89ZS5zY2hlbWUscz1lLmF1dGhvcml0eSxsPWUucGF0aCxoPWUucXVlcnksZT1lLmZyYWdtZW50O3JldHVybiBvJiYoYT1hK28rIjoiKSwhcyYmImZpbGUiIT09b3x8KGErPSIvLyIpLHMmJigtMSE9PShvPXMuaW5kZXhPZigiQCIpKSYmKG49cy5zdWJzdHIoMCxvKSxzPXMuc3Vic3RyKG8rMSksLTE9PT0obz1uLmluZGV4T2YoIjoiKSk/YSs9aShuLCExKTphPShhPWEraShuLnN1YnN0cigwLG8pLCExKSsiOiIpK2kobi5zdWJzdHIobysxKSwhMSksYSs9IkAiKSwtMT09PShvPShzPXMudG9Mb3dlckNhc2UoKSkuaW5kZXhPZigiOiIpKT9hKz1pKHMsITEpOmE9KGErPWkocy5zdWJzdHIoMCxvKSwhMSkpK3Muc3Vic3RyKG8pKSxsJiYoMzw9bC5sZW5ndGgmJjQ3PT09bC5jaGFyQ29kZUF0KDApJiY1OD09PWwuY2hhckNvZGVBdCgyKT82NTw9KHI9bC5jaGFyQ29kZUF0KDEpKSYmcjw9OTAmJihsPSIvIi5jb25jYXQoU3RyaW5nLmZyb21DaGFyQ29kZShyKzMyKSwiOiIpLmNvbmNhdChsLnN1YnN0cigzKSkpOjI8PWwubGVuZ3RoJiY1OD09PWwuY2hhckNvZGVBdCgxKSYmNjU8PShyPWwuY2hhckNvZGVBdCgwKSkmJnI8PTkwJiYobD0iIi5jb25jYXQoU3RyaW5nLmZyb21DaGFyQ29kZShyKzMyKSwiOiIpLmNvbmNhdChsLnN1YnN0cigyKSkpLGErPWkobCwhMCkpLGgmJihhPShhKz0iPyIpK2koaCwhMSkpLGE9ZT8oYSs9IiMiKSsodD9lOncoZSwhMSkpOmF9dmFyIFQ9LyglWzAtOUEtWmEtel1bMC05QS1aYS16XSkrL2c7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZS5tYXRjaChUKT9lLnJlcGxhY2UoVCxmdW5jdGlvbiB0KG4pe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KG4pfWNhdGNoKGUpe3JldHVybiAzPG4ubGVuZ3RoP24uc3Vic3RyKDAsMykrdChuLnN1YnN0cigzKSk6bn19KTplfWZ1bmN0aW9uIGsoZSx0LG4pe2lmKG58fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgcixpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKSFyJiZpIGluIHR8fCgocj1yfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDAsaSkpW2ldPXRbaV0pO3JldHVybiBlLmNvbmNhdChyfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSl9dmFyIGwsZT10KDQ3MCksaD1lLnBvc2l4fHxlOyh0PWw9bHx8e30pLmpvaW5QYXRoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3JldHVybiBlLndpdGgoe3BhdGg6aC5qb2luLmFwcGx5KGgsayhbZS5wYXRoXSx0LCExKSl9KX0sdC5yZXNvbHZlUGF0aD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTt2YXIgcj1lLnBhdGh8fCIvIjtyZXR1cm4gZS53aXRoKHtwYXRoOmgucmVzb2x2ZS5hcHBseShoLGsoW3JdLHQsITEpKX0pfSx0LmRpcm5hbWU9ZnVuY3Rpb24oZSl7dmFyIHQ9aC5kaXJuYW1lKGUucGF0aCk7cmV0dXJuIDE9PT10Lmxlbmd0aCYmNDY9PT10LmNoYXJDb2RlQXQoMCk/ZTplLndpdGgoe3BhdGg6dH0pfSx0LmJhc2VuYW1lPWZ1bmN0aW9uKGUpe3JldHVybiBoLmJhc2VuYW1lKGUucGF0aCl9LHQuZXh0bmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gaC5leHRuYW1lKGUucGF0aCl9fX0sVWk9e30scWkuZD0oZSx0KT0+e2Zvcih2YXIgbiBpbiB0KXFpLm8odCxuKSYmIXFpLm8oZSxuKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTohMCxnZXQ6dFtuXX0pfSxxaS5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSxxaS5yPWU9PnsidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfTt2YXIgRmk9cWkoNDQ3KVsiVVJJIl07ZnVuY3Rpb24gVmkoZSl7dmFyIHQ9ZVswXTtyZXR1cm4gZT10IT09ZVtlLmxlbmd0aC0xXXx8IiciIT09dCYmJyInIT09dD9lOmUuc3Vic3RyKDEsZS5sZW5ndGgtMil9ZnVuY3Rpb24gQmkoZSx0LG4scixpLGEpe3ZhciBvPVZpKG4pO2lmKHM9byxsPWUubGFuZ3VhZ2VJZCxzLmxlbmd0aCYmKCJoYW5kbGViYXJzIiE9PWx8fCEve3t8fX0vLnRlc3QocykpJiYvXGIod1tcd1xkKy4tXSo6XC9cLyk/W15ccygpPD5dKyg/OlwoW1x3XGRdK1wpfChbXls6cHVuY3Q6XVxzXXxcLz8pKS8udGVzdChzKSl7by5sZW5ndGg8bi5sZW5ndGgmJihyKyssaS0tKTt2YXIgcyxsPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCEvXlxzKmphdmFzY3JpcHRcOi9pLnRlc3QodCkmJiEvW1xuXHJdLy50ZXN0KHQpKXJldHVybiB0PXQucmVwbGFjZSgvXlxzKi9nLCIiKSwvXmh0dHBzPzpcL1wvL2kudGVzdCh0KXx8L15maWxlOlwvXC8vaS50ZXN0KHQpP3Q6L15cIy9pLnRlc3QodCk/ZSt0Oi9eXC9cLy9pLnRlc3QodCk/KFhyKGUsImh0dHBzOi8vIik/Imh0dHBzIjoiaHR0cCIpKyI6Iit0LnJlcGxhY2UoL15ccyovZywiIik6bj9uLnJlc29sdmVSZWZlcmVuY2UodCxyfHxlKTp0fShlLnVyaSxvLHQsYSk7aWYobCYmZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBGaS5wYXJzZShlKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KGwpKXJldHVybntyYW5nZTp2bi5jcmVhdGUoZS5wb3NpdGlvbkF0KHIpLGUucG9zaXRpb25BdChpKSksdGFyZ2V0Omx9fX1mdW5jdGlvbiBLaShlLHQpe2Zvcih2YXIgbixyPVtdLGk9RnIoZS5nZXRUZXh0KCksMCksYz1pLnNjYW4oKSxhPXZvaWQgMCxvPSExLHM9dm9pZCAwLGQ9e307YyE9PU0uRU9TOyl7c3dpdGNoKGMpe2Nhc2UgTS5TdGFydFRhZzpzfHwobz0iYmFzZSI9PT1pLmdldFRva2VuVGV4dCgpLnRvTG93ZXJDYXNlKCkpO2JyZWFrO2Nhc2UgTS5BdHRyaWJ1dGVOYW1lOmE9aS5nZXRUb2tlblRleHQoKS50b0xvd2VyQ2FzZSgpO2JyZWFrO2Nhc2UgTS5BdHRyaWJ1dGVWYWx1ZToic3JjIj09PWF8fCJocmVmIj09PWE/KG49aS5nZXRUb2tlblRleHQoKSxvfHwoaD1CaShlLHQsbixpLmdldFRva2VuT2Zmc2V0KCksaS5nZXRUb2tlbkVuZCgpLHMpKSYmci5wdXNoKGgpLG8mJnZvaWQgMD09PXMmJihzPVZpKG4pKSYmdCYmKHM9dC5yZXNvbHZlUmVmZXJlbmNlKHMsZS51cmkpKSxvPSExLGE9dm9pZCAwKToiaWQiPT09YSYmKGRbVmkoaS5nZXRUb2tlblRleHQoKSldPWkuZ2V0VG9rZW5PZmZzZXQoKSl9Yz1pLnNjYW4oKX1mb3IodmFyIHU9MCxwPXI7dTxwLmxlbmd0aDt1Kyspe3ZhciBsLGg9cFt1XSxtPWUudXJpKyIjIjtoLnRhcmdldCYmWHIoaC50YXJnZXQsbSkmJih2b2lkIDAhPT0obD1kW2gudGFyZ2V0LnN1YnN0cihtLmxlbmd0aCldKSYmKGw9ZS5wb3NpdGlvbkF0KGwpLGgudGFyZ2V0PW0rKGwubGluZSsxKSsiLCIrKGwuY2hhcmFjdGVyKzEpKSl9cmV0dXJuIHJ9ZnVuY3Rpb24gamkoZSx0LG4pe3ZhciByPWUub2Zmc2V0QXQodCksbj1uLmZpbmROb2RlQXQocik7aWYoIW4udGFnKXJldHVybltdO3ZhciByPVtdLGk9SmkoTS5TdGFydFRhZyxlLG4uc3RhcnQpLGU9Im51bWJlciI9PXR5cGVvZiBuLmVuZFRhZ1N0YXJ0JiZKaShNLkVuZFRhZyxlLG4uZW5kVGFnU3RhcnQpO3JldHVybihpJiYkaShpLHQpfHxlJiYkaShlLHQpKSYmKGkmJnIucHVzaCh7a2luZDppci5SZWFkLHJhbmdlOml9KSxlJiZyLnB1c2goe2tpbmQ6aXIuUmVhZCxyYW5nZTplfSkpLHJ9ZnVuY3Rpb24gR2koZSx0KXtyZXR1cm4gZS5saW5lPHQubGluZXx8ZS5saW5lPT09dC5saW5lJiZlLmNoYXJhY3Rlcjw9dC5jaGFyYWN0ZXJ9ZnVuY3Rpb24gJGkoZSx0KXtyZXR1cm4gR2koZS5zdGFydCx0KSYmR2kodCxlLmVuZCl9ZnVuY3Rpb24gSmkoZSx0LG4pe2Zvcih2YXIgcj1Gcih0LmdldFRleHQoKSxuKSxpPXIuc2NhbigpO2khPT1NLkVPUyYmaSE9PWU7KWk9ci5zY2FuKCk7cmV0dXJuIGkhPT1NLkVPUz97c3RhcnQ6dC5wb3NpdGlvbkF0KHIuZ2V0VG9rZW5PZmZzZXQoKSksZW5kOnQucG9zaXRpb25BdChyLmdldFRva2VuRW5kKCkpfTpudWxsfWZ1bmN0aW9uIFhpKHQsZSl7dmFyIG49W107cmV0dXJuIGUucm9vdHMuZm9yRWFjaChmdW5jdGlvbihlKXshZnVuY3Rpb24gdChuLGUscixpKXt2YXIgYT1ZaShlKTt2YXIgbz15bi5jcmVhdGUobi51cmksdm4uY3JlYXRlKG4ucG9zaXRpb25BdChlLnN0YXJ0KSxuLnBvc2l0aW9uQXQoZS5lbmQpKSk7bz17bmFtZTphLGxvY2F0aW9uOm8sY29udGFpbmVyTmFtZTpyLGtpbmQ6c3IuRmllbGR9O2kucHVzaChvKTtlLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oZSl7dChuLGUsYSxpKX0pfSh0LGUsIiIsbil9KSxufWZ1bmN0aW9uIFlpKGUpe3ZhciB0LG49ZS50YWc7cmV0dXJuIGUuYXR0cmlidXRlcyYmKHQ9ZS5hdHRyaWJ1dGVzLmlkLGU9ZS5hdHRyaWJ1dGVzLmNsYXNzLHQmJihuKz0iIyIrdC5yZXBsYWNlKC9bXCJcJ10vZywiIikpLGUmJihuKz1lLnJlcGxhY2UoL1tcIlwnXS9nLCIiKS5zcGxpdCgvXHMrLykubWFwKGZ1bmN0aW9uKGUpe3JldHVybiIuIitlfSkuam9pbigiIikpKSxufHwiPyJ9ZnVuY3Rpb24gUWkoZSx0LG4scil7dmFyIHQ9ZS5vZmZzZXRBdCh0KSxyPXIuZmluZE5vZGVBdCh0KTtpZighci50YWcpcmV0dXJuIG51bGw7aWYoIWZ1bmN0aW9uKGUsdCxuKXtpZihlLmVuZFRhZ1N0YXJ0JiZlLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoPD10JiZ0PD1lLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoK24ubGVuZ3RoKXJldHVybiEwO3JldHVybiBlLnN0YXJ0KyI8Ii5sZW5ndGg8PXQmJnQ8PWUuc3RhcnQrIjwiLmxlbmd0aCtuLmxlbmd0aH0ocix0LHIudGFnKSlyZXR1cm4gbnVsbDt2YXIgdD1bXSxpPXtzdGFydDplLnBvc2l0aW9uQXQoci5zdGFydCsiPCIubGVuZ3RoKSxlbmQ6ZS5wb3NpdGlvbkF0KHIuc3RhcnQrIjwiLmxlbmd0aCtyLnRhZy5sZW5ndGgpfTtyZXR1cm4gdC5wdXNoKHtyYW5nZTppLG5ld1RleHQ6bn0pLHIuZW5kVGFnU3RhcnQmJihpPXtzdGFydDplLnBvc2l0aW9uQXQoci5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCksZW5kOmUucG9zaXRpb25BdChyLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoK3IudGFnLmxlbmd0aCl9LHQucHVzaCh7cmFuZ2U6aSxuZXdUZXh0Om59KSksKHI9e30pW2UudXJpLnRvU3RyaW5nKCldPXQse2NoYW5nZXM6cn19ZnVuY3Rpb24gWmkoZSx0LG4pe3ZhciByLHQ9ZS5vZmZzZXRBdCh0KSxuPW4uZmluZE5vZGVBdCh0KTtyZXR1cm4gbi50YWcmJm4uZW5kVGFnU3RhcnQ/bi5zdGFydCsiPCIubGVuZ3RoPD10JiZ0PD1uLnN0YXJ0KyI8Ii5sZW5ndGgrbi50YWcubGVuZ3RoPyhyPXQtIjwiLmxlbmd0aC1uLnN0YXJ0K24uZW5kVGFnU3RhcnQrIjwvIi5sZW5ndGgsZS5wb3NpdGlvbkF0KHIpKTpuLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoPD10JiZ0PD1uLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoK24udGFnLmxlbmd0aD8ocj10LSI8LyIubGVuZ3RoLW4uZW5kVGFnU3RhcnQrbi5zdGFydCsiPCIubGVuZ3RoLGUucG9zaXRpb25BdChyKSk6bnVsbDpudWxsfWZ1bmN0aW9uIGVhKGUsdCxuKXt2YXIgdD1lLm9mZnNldEF0KHQpLG49bi5maW5kTm9kZUF0KHQpLHI9bi50YWc/bi50YWcubGVuZ3RoOjA7cmV0dXJuIG4uZW5kVGFnU3RhcnQmJihuLnN0YXJ0KyI8Ii5sZW5ndGg8PXQmJnQ8PW4uc3RhcnQrIjwiLmxlbmd0aCtyfHxuLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoPD10JiZ0PD1uLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoK3IpP1t2bi5jcmVhdGUoZS5wb3NpdGlvbkF0KG4uc3RhcnQrIjwiLmxlbmd0aCksZS5wb3NpdGlvbkF0KG4uc3RhcnQrIjwiLmxlbmd0aCtyKSksdm4uY3JlYXRlKGUucG9zaXRpb25BdChuLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoKSxlLnBvc2l0aW9uQXQobi5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCtyKSldOm51bGx9ZnVuY3Rpb24gdGEoZSxjKXt2YXIgdD1GcihlLmdldFRleHQoKSksZD10LnNjYW4oKSx1PVtdLG49W10scD1udWxsLG09LTE7ZnVuY3Rpb24gZihlKXt1LnB1c2goZSksbT1lLnN0YXJ0TGluZX1mb3IoO2QhPT1NLkVPUzspe3N3aXRjaChkKXtjYXNlIE0uU3RhcnRUYWc6dmFyIGc9dC5nZXRUb2tlblRleHQoKSxyPWUucG9zaXRpb25BdCh0LmdldFRva2VuT2Zmc2V0KCkpLmxpbmU7bi5wdXNoKHtzdGFydExpbmU6cix0YWdOYW1lOmd9KSxwPWc7YnJlYWs7Y2FzZSBNLkVuZFRhZzpwPXQuZ2V0VG9rZW5UZXh0KCk7YnJlYWs7Y2FzZSBNLlN0YXJ0VGFnQ2xvc2U6aWYoIXB8fCFLcihwKSlicmVhaztjYXNlIE0uRW5kVGFnQ2xvc2U6Y2FzZSBNLlN0YXJ0VGFnU2VsZkNsb3NlOmZvcih2YXIgaT1uLmxlbmd0aC0xOzA8PWkmJm5baV0udGFnTmFtZSE9PXA7KWktLTswPD1pJiYoXz1uW2ldLG4ubGVuZ3RoPWksZz1lLnBvc2l0aW9uQXQodC5nZXRUb2tlbk9mZnNldCgpKS5saW5lLChyPV8uc3RhcnRMaW5lKTwoYT1nLTEpJiZtIT09ciYmZih7c3RhcnRMaW5lOnIsZW5kTGluZTphfSkpO2JyZWFrO2Nhc2UgTS5Db21tZW50OnZhciByPWUucG9zaXRpb25BdCh0LmdldFRva2VuT2Zmc2V0KCkpLmxpbmUsYj10LmdldFRva2VuVGV4dCgpLm1hdGNoKC9eXHMqIyhyZWdpb25cYil8KGVuZHJlZ2lvblxiKS8pO2lmKGIpaWYoYlsxXSluLnB1c2goe3N0YXJ0TGluZTpyLHRhZ05hbWU6IiJ9KTtlbHNle2Zvcih2YXIgXyxhLGk9bi5sZW5ndGgtMTswPD1pJiZuW2ldLnRhZ05hbWUubGVuZ3RoOylpLS07MDw9aSYmKF89bltpXSxuLmxlbmd0aD1pLGE9ciwocj1fLnN0YXJ0TGluZSk8YSYmbSE9PXImJmYoe3N0YXJ0TGluZTpyLGVuZExpbmU6YSxraW5kOlRuLlJlZ2lvbn0pKX1lbHNlIHI8KGE9ZS5wb3NpdGlvbkF0KHQuZ2V0VG9rZW5PZmZzZXQoKSt0LmdldFRva2VuTGVuZ3RoKCkpLmxpbmUpJiZmKHtzdGFydExpbmU6cixlbmRMaW5lOmEsa2luZDpUbi5Db21tZW50fSl9ZD10LnNjYW4oKX1jPWMmJmMucmFuZ2VMaW1pdHx8TnVtYmVyLk1BWF9WQUxVRTtpZih1Lmxlbmd0aD5jKXt2YXIgbz11LHc9YztvPW8uc29ydChmdW5jdGlvbihlLHQpe3ZhciBuPWUuc3RhcnRMaW5lLXQuc3RhcnRMaW5lO3JldHVybiBuPTA9PT1uP2UuZW5kTGluZS10LmVuZExpbmU6bn0pO2Zvcih2YXIgcz12b2lkIDAsdj1bXSx5PVtdLFQ9W10saz1mdW5jdGlvbihlLHQpeyh5W2VdPXQpPDMwJiYoVFt0XT0oVFt0XXx8MCkrMSl9LGw9MDtsPG8ubGVuZ3RoO2wrKyl7dmFyIGg9b1tsXTtpZihzKXtpZihoLnN0YXJ0TGluZT5zLnN0YXJ0TGluZSlpZihoLmVuZExpbmU8PXMuZW5kTGluZSl2LnB1c2gocykscz1oLGsobCx2Lmxlbmd0aCk7ZWxzZSBpZihoLnN0YXJ0TGluZT5zLmVuZExpbmUpe2Zvcig7KHM9di5wb3AoKSkmJmguc3RhcnRMaW5lPnMuZW5kTGluZTspO3MmJnYucHVzaChzKSxzPWgsayhsLHYubGVuZ3RoKX19ZWxzZSBzPWgsayhsLDApfWZvcih2YXIgUz0wLEM9MCxsPTA7bDxULmxlbmd0aDtsKyspe3ZhciB4PVRbbF07aWYoeCl7aWYodzx4K1Mpe0M9bDticmVha31TKz14fX1mb3IodmFyIEw9W10sbD0wO2w8by5sZW5ndGg7bCsrKXt2YXIgRT15W2xdOyJudW1iZXIiPT10eXBlb2YgRSYmKEU8Q3x8RT09PUMmJlMrKzx3KSYmTC5wdXNoKG9bbF0pfXJldHVybiBMfXJldHVybiB1fWZ1bmN0aW9uIG5hKG8sZSl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1mdW5jdGlvbihlLHQpe3ZhciBuPSRyKGUuZ2V0VGV4dCgpKSx0PWUub2Zmc2V0QXQodCksbj1uLmZpbmROb2RlQXQodCkscj1mdW5jdGlvbihlKXt2YXIgdD1lLG49W107Zm9yKDt0LnBhcmVudDspKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0VGFnRW5kJiZlLmVuZFRhZ1N0YXJ0JiZlLnN0YXJ0VGFnRW5kPGUuZW5kVGFnU3RhcnQ/W1tlLnN0YXJ0VGFnRW5kLGUuZW5kVGFnU3RhcnRdLFtlLnN0YXJ0LGUuZW5kXV06W1tlLnN0YXJ0LGUuZW5kXV19KSh0PXQucGFyZW50KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBuLnB1c2goZSl9KTtyZXR1cm4gbn0obik7aWYobi5zdGFydFRhZ0VuZCYmIW4uZW5kVGFnU3RhcnQpe2lmKG4uc3RhcnRUYWdFbmQhPT1uLmVuZClyZXR1cm5bW24uc3RhcnQsbi5lbmRdXTt2YXIgaT12bi5jcmVhdGUoZS5wb3NpdGlvbkF0KG4uc3RhcnRUYWdFbmQtMiksZS5wb3NpdGlvbkF0KG4uc3RhcnRUYWdFbmQpKTtyZXR1cm4iLz4iPT09ZS5nZXRUZXh0KGkpP3IudW5zaGlmdChbbi5zdGFydCsxLG4uc3RhcnRUYWdFbmQtMl0pOnIudW5zaGlmdChbbi5zdGFydCsxLG4uc3RhcnRUYWdFbmQtMV0pLHI9KGk9cmEoZSxuLHQpKS5jb25jYXQocil9aWYoIW4uc3RhcnRUYWdFbmR8fCFuLmVuZFRhZ1N0YXJ0KXJldHVybiByO3JldHVybiByLnVuc2hpZnQoW24uc3RhcnQsbi5lbmRdKSxuLnN0YXJ0PHQmJnQ8bi5zdGFydFRhZ0VuZD8oci51bnNoaWZ0KFtuLnN0YXJ0KzEsbi5zdGFydFRhZ0VuZC0xXSksaT1yYShlLG4sdCkscj1pLmNvbmNhdChyKSk6KG4uc3RhcnRUYWdFbmQ8PXQmJnQ8PW4uZW5kVGFnU3RhcnQ/ci51bnNoaWZ0KFtuLnN0YXJ0VGFnRW5kLG4uZW5kVGFnU3RhcnRdKTp0Pj1uLmVuZFRhZ1N0YXJ0KzImJnIudW5zaGlmdChbbi5lbmRUYWdTdGFydCsyLG4uZW5kLTFdKSxyKX0obyxlKSxuPXZvaWQgMCxyPXZvaWQgMCxpPXQubGVuZ3RoLTE7MDw9aTtpLS0pe3ZhciBhPXRbaV07biYmYVswXT09PW5bMF0mJmFbMV09PT1uWzFdfHwocj1jci5jcmVhdGUodm4uY3JlYXRlKG8ucG9zaXRpb25BdCh0W2ldWzBdKSxvLnBvc2l0aW9uQXQodFtpXVsxXSkpLHIpKSxuPWF9cmV0dXJuIHI9cnx8Y3IuY3JlYXRlKHZuLmNyZWF0ZShlLGUpKX0pfWZ1bmN0aW9uIHJhKGUsdCxjKXtmb3IodmFyIGQ9dm4uY3JlYXRlKGUucG9zaXRpb25BdCh0LnN0YXJ0KSxlLnBvc2l0aW9uQXQodC5lbmQpKSxlPWUuZ2V0VGV4dChkKSxuPWMtdC5zdGFydCxyPUZyKGUpLGk9ci5zY2FuKCksYT10LnN0YXJ0LG89W10scz0hMSxsPS0xO2khPT1NLkVPUzspe3N3aXRjaChpKXtjYXNlIE0uQXR0cmlidXRlTmFtZTppZihuPHIuZ2V0VG9rZW5PZmZzZXQoKSl7cz0hMTticmVha31uPD1yLmdldFRva2VuRW5kKCkmJm8udW5zaGlmdChbci5nZXRUb2tlbk9mZnNldCgpLHIuZ2V0VG9rZW5FbmQoKV0pLHM9ITAsbD1yLmdldFRva2VuT2Zmc2V0KCk7YnJlYWs7Y2FzZSBNLkF0dHJpYnV0ZVZhbHVlOmlmKCFzKWJyZWFrO3ZhciBoPXIuZ2V0VG9rZW5UZXh0KCk7aWYobjxyLmdldFRva2VuT2Zmc2V0KCkpe28ucHVzaChbbCxyLmdldFRva2VuRW5kKCldKTticmVha31uPj1yLmdldFRva2VuT2Zmc2V0KCkmJm48PXIuZ2V0VG9rZW5FbmQoKSYmKG8udW5zaGlmdChbci5nZXRUb2tlbk9mZnNldCgpLHIuZ2V0VG9rZW5FbmQoKV0pLCgnIic9PT1oWzBdJiYnIic9PT1oW2gubGVuZ3RoLTFdfHwiJyI9PT1oWzBdJiYiJyI9PT1oW2gubGVuZ3RoLTFdKSYmbj49ci5nZXRUb2tlbk9mZnNldCgpKzEmJm48PXIuZ2V0VG9rZW5FbmQoKS0xJiZvLnVuc2hpZnQoW3IuZ2V0VG9rZW5PZmZzZXQoKSsxLHIuZ2V0VG9rZW5FbmQoKS0xXSksby5wdXNoKFtsLHIuZ2V0VG9rZW5FbmQoKV0pKX1pPXIuc2NhbigpfXJldHVybiBvLm1hcChmdW5jdGlvbihlKXtyZXR1cm5bZVswXSthLGVbMV0rYV19KX12YXIgaWE9e3ZlcnNpb246MS4xLHRhZ3M6W3tuYW1lOiJodG1sIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaHRtbCBlbGVtZW50IHJlcHJlc2VudHMgdGhlIHJvb3Qgb2YgYW4gSFRNTCBkb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToibWFuaWZlc3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlNwZWNpZmllcyB0aGUgVVJJIG9mIGEgcmVzb3VyY2UgbWFuaWZlc3QgaW5kaWNhdGluZyByZXNvdXJjZXMgdGhhdCBzaG91bGQgYmUgY2FjaGVkIGxvY2FsbHkuIFNlZSBbVXNpbmcgdGhlIGFwcGxpY2F0aW9uIGNhY2hlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML1VzaW5nX3RoZV9hcHBsaWNhdGlvbl9jYWNoZSkgZm9yIGRldGFpbHMuIn19LHtuYW1lOiJ2ZXJzaW9uIixkZXNjcmlwdGlvbjonU3BlY2lmaWVzIHRoZSB2ZXJzaW9uIG9mIHRoZSBIVE1MIFtEb2N1bWVudCBUeXBlIERlZmluaXRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvRFREICJEb2N1bWVudCBUeXBlIERlZmluaXRpb246IEluIEhUTUwsIHRoZSBkb2N0eXBlIGlzIHRoZSByZXF1aXJlZCAiPCFET0NUWVBFIGh0bWw+IiBwcmVhbWJsZSBmb3VuZCBhdCB0aGUgdG9wIG9mIGFsbCBkb2N1bWVudHMuIEl0cyBzb2xlIHB1cnBvc2UgaXMgdG8gcHJldmVudCBhIGJyb3dzZXIgZnJvbSBzd2l0Y2hpbmcgaW50byBzby1jYWxsZWQg4oCccXVpcmtzIG1vZGXigJ0gd2hlbiByZW5kZXJpbmcgYSBkb2N1bWVudDsgdGhhdCBpcywgdGhlICI8IURPQ1RZUEUgaHRtbD4iIGRvY3R5cGUgZW5zdXJlcyB0aGF0IHRoZSBicm93c2VyIG1ha2VzIGEgYmVzdC1lZmZvcnQgYXR0ZW1wdCBhdCBmb2xsb3dpbmcgdGhlIHJlbGV2YW50IHNwZWNpZmljYXRpb25zLCByYXRoZXIgdGhhbiB1c2luZyBhIGRpZmZlcmVudCByZW5kZXJpbmcgbW9kZSB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIHNvbWUgc3BlY2lmaWNhdGlvbnMuIikgdGhhdCBnb3Zlcm5zIHRoZSBjdXJyZW50IGRvY3VtZW50LiBUaGlzIGF0dHJpYnV0ZSBpcyBub3QgbmVlZGVkLCBiZWNhdXNlIGl0IGlzIHJlZHVuZGFudCB3aXRoIHRoZSB2ZXJzaW9uIGluZm9ybWF0aW9uIGluIHRoZSBkb2N1bWVudCB0eXBlIGRlY2xhcmF0aW9uLid9LHtuYW1lOiJ4bWxucyIsZGVzY3JpcHRpb246J1NwZWNpZmllcyB0aGUgWE1MIE5hbWVzcGFjZSBvZiB0aGUgZG9jdW1lbnQuIERlZmF1bHQgdmFsdWUgaXMgYCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sImAuIFRoaXMgaXMgcmVxdWlyZWQgaW4gZG9jdW1lbnRzIHBhcnNlZCB3aXRoIFhNTCBwYXJzZXJzLCBhbmQgb3B0aW9uYWwgaW4gdGV4dC9odG1sIGRvY3VtZW50cy4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2h0bWwifV19LHtuYW1lOiJoZWFkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaGVhZCBlbGVtZW50IHJlcHJlc2VudHMgYSBjb2xsZWN0aW9uIG9mIG1ldGFkYXRhIGZvciB0aGUgRG9jdW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6InByb2ZpbGUiLGRlc2NyaXB0aW9uOiJUaGUgVVJJcyBvZiBvbmUgb3IgbW9yZSBtZXRhZGF0YSBwcm9maWxlcywgc2VwYXJhdGVkIGJ5IHdoaXRlIHNwYWNlLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaGVhZCJ9XX0se25hbWU6InRpdGxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGl0bGUgZWxlbWVudCByZXByZXNlbnRzIHRoZSBkb2N1bWVudCdzIHRpdGxlIG9yIG5hbWUuIEF1dGhvcnMgc2hvdWxkIHVzZSB0aXRsZXMgdGhhdCBpZGVudGlmeSB0aGVpciBkb2N1bWVudHMgZXZlbiB3aGVuIHRoZXkgYXJlIHVzZWQgb3V0IG9mIGNvbnRleHQsIGZvciBleGFtcGxlIGluIGEgdXNlcidzIGhpc3Rvcnkgb3IgYm9va21hcmtzLCBvciBpbiBzZWFyY2ggcmVzdWx0cy4gVGhlIGRvY3VtZW50J3MgdGl0bGUgaXMgb2Z0ZW4gZGlmZmVyZW50IGZyb20gaXRzIGZpcnN0IGhlYWRpbmcsIHNpbmNlIHRoZSBmaXJzdCBoZWFkaW5nIGRvZXMgbm90IGhhdmUgdG8gc3RhbmQgYWxvbmUgd2hlbiB0YWtlbiBvdXQgb2YgY29udGV4dC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aXRsZSJ9XX0se25hbWU6ImJhc2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiYXNlIGVsZW1lbnQgYWxsb3dzIGF1dGhvcnMgdG8gc3BlY2lmeSB0aGUgZG9jdW1lbnQgYmFzZSBVUkwgZm9yIHRoZSBwdXJwb3NlcyBvZiByZXNvbHZpbmcgcmVsYXRpdmUgVVJMcywgYW5kIHRoZSBuYW1lIG9mIHRoZSBkZWZhdWx0IGJyb3dzaW5nIGNvbnRleHQgZm9yIHRoZSBwdXJwb3NlcyBvZiBmb2xsb3dpbmcgaHlwZXJsaW5rcy4gVGhlIGVsZW1lbnQgZG9lcyBub3QgcmVwcmVzZW50IGFueSBjb250ZW50IGJleW9uZCB0aGlzIGluZm9ybWF0aW9uLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJocmVmIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYmFzZSBVUkwgdG8gYmUgdXNlZCB0aHJvdWdob3V0IHRoZSBkb2N1bWVudCBmb3IgcmVsYXRpdmUgVVJMIGFkZHJlc3Nlcy4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLCB0aGlzIGVsZW1lbnQgbXVzdCBjb21lIGJlZm9yZSBhbnkgb3RoZXIgZWxlbWVudHMgd2l0aCBhdHRyaWJ1dGVzIHdob3NlIHZhbHVlcyBhcmUgVVJMcy4gQWJzb2x1dGUgYW5kIHJlbGF0aXZlIFVSTHMgYXJlIGFsbG93ZWQuIn19LHtuYW1lOiJ0YXJnZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgbmFtZSBvciBrZXl3b3JkIGluZGljYXRpbmcgdGhlIGRlZmF1bHQgbG9jYXRpb24gdG8gZGlzcGxheSB0aGUgcmVzdWx0IHdoZW4gaHlwZXJsaW5rcyBvciBmb3JtcyBjYXVzZSBuYXZpZ2F0aW9uLCBmb3IgZWxlbWVudHMgdGhhdCBkbyBub3QgaGF2ZSBhbiBleHBsaWNpdCB0YXJnZXQgcmVmZXJlbmNlLiBJdCBpcyBhIG5hbWUgb2YsIG9yIGtleXdvcmQgZm9yLCBhIF9icm93c2luZyBjb250ZXh0XyAoZm9yIGV4YW1wbGU6IHRhYiwgd2luZG93LCBvciBpbmxpbmUgZnJhbWUpLiBUaGUgZm9sbG93aW5nIGtleXdvcmRzIGhhdmUgc3BlY2lhbCBtZWFuaW5nczpcblxuKiAgIGBfc2VsZmA6IExvYWQgdGhlIHJlc3VsdCBpbnRvIHRoZSBzYW1lIGJyb3dzaW5nIGNvbnRleHQgYXMgdGhlIGN1cnJlbnQgb25lLiBUaGlzIHZhbHVlIGlzIHRoZSBkZWZhdWx0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZC5cbiogICBgX2JsYW5rYDogTG9hZCB0aGUgcmVzdWx0IGludG8gYSBuZXcgdW5uYW1lZCBicm93c2luZyBjb250ZXh0LlxuKiAgIGBfcGFyZW50YDogTG9hZCB0aGUgcmVzdWx0IGludG8gdGhlIHBhcmVudCBicm93c2luZyBjb250ZXh0IG9mIHRoZSBjdXJyZW50IG9uZS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIG9wdGlvbiBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuKiAgIGBfdG9wYDogTG9hZCB0aGUgcmVzdWx0IGludG8gdGhlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0ICh0aGF0IGlzLCB0aGUgYnJvd3NpbmcgY29udGV4dCB0aGF0IGlzIGFuIGFuY2VzdG9yIG9mIHRoZSBjdXJyZW50IG9uZSwgYW5kIGhhcyBubyBwYXJlbnQpLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgb3B0aW9uIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgdGhpcyBlbGVtZW50IG11c3QgY29tZSBiZWZvcmUgYW55IG90aGVyIGVsZW1lbnRzIHdpdGggYXR0cmlidXRlcyB3aG9zZSB2YWx1ZXMgYXJlIFVSTHMuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYmFzZSJ9XX0se25hbWU6ImxpbmsiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsaW5rIGVsZW1lbnQgYWxsb3dzIGF1dGhvcnMgdG8gbGluayB0aGVpciBkb2N1bWVudCB0byBvdGhlciByZXNvdXJjZXMuIn0sYXR0cmlidXRlczpbe25hbWU6ImhyZWYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgW1VSTF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9VUkwgIlVSTDogVW5pZm9ybSBSZXNvdXJjZSBMb2NhdG9yIChVUkwpIGlzIGEgdGV4dCBzdHJpbmcgc3BlY2lmeWluZyB3aGVyZSBhIHJlc291cmNlIGNhbiBiZSBmb3VuZCBvbiB0aGUgSW50ZXJuZXQuIikgb2YgdGhlIGxpbmtlZCByZXNvdXJjZS4gQSBVUkwgY2FuIGJlIGFic29sdXRlIG9yIHJlbGF0aXZlLid9fSx7bmFtZToiY3Jvc3NvcmlnaW4iLHZhbHVlU2V0OiJ4byIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgd2hldGhlciBbQ09SU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9DT1JTICJDT1JTOiBDT1JTIChDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZykgaXMgYSBzeXN0ZW0sIGNvbnNpc3Rpbmcgb2YgdHJhbnNtaXR0aW5nIEhUVFAgaGVhZGVycywgdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgYnJvd3NlcnMgYmxvY2sgZnJvbnRlbmQgSmF2YVNjcmlwdCBjb2RlIGZyb20gYWNjZXNzaW5nIHJlc3BvbnNlcyBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzLiIpIG11c3QgYmUgdXNlZCB3aGVuIGZldGNoaW5nIHRoZSByZXNvdXJjZS4gW0NPUlMtZW5hYmxlZCBpbWFnZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQ09SU19FbmFibGVkX0ltYWdlKSBjYW4gYmUgcmV1c2VkIGluIHRoZSBbYDxjYW52YXM+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhbnZhcyAiVXNlIHRoZSBIVE1MIDxjYW52YXM+IGVsZW1lbnQgd2l0aCBlaXRoZXIgdGhlIGNhbnZhcyBzY3JpcHRpbmcgQVBJIG9yIHRoZSBXZWJHTCBBUEkgdG8gZHJhdyBncmFwaGljcyBhbmQgYW5pbWF0aW9ucy4iKSBlbGVtZW50IHdpdGhvdXQgYmVpbmcgX3RhaW50ZWRfLiBUaGUgYWxsb3dlZCB2YWx1ZXMgYXJlOlxuXG5gYW5vbnltb3VzYFxuXG5BIGNyb3NzLW9yaWdpbiByZXF1ZXN0IChpLmUuIHdpdGggYW4gW2BPcmlnaW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvT3JpZ2luICJUaGUgT3JpZ2luIHJlcXVlc3QgaGVhZGVyIGluZGljYXRlcyB3aGVyZSBhIGZldGNoIG9yaWdpbmF0ZXMgZnJvbS4gSXQgZG9lc25cJ3QgaW5jbHVkZSBhbnkgcGF0aCBpbmZvcm1hdGlvbiwgYnV0IG9ubHkgdGhlIHNlcnZlciBuYW1lLiBJdCBpcyBzZW50IHdpdGggQ09SUyByZXF1ZXN0cywgYXMgd2VsbCBhcyB3aXRoIFBPU1QgcmVxdWVzdHMuIEl0IGlzIHNpbWlsYXIgdG8gdGhlIFJlZmVyZXIgaGVhZGVyLCBidXQsIHVubGlrZSB0aGlzIGhlYWRlciwgaXQgZG9lc25cJ3QgZGlzY2xvc2UgdGhlIHdob2xlIHBhdGguIikgSFRUUCBoZWFkZXIpIGlzIHBlcmZvcm1lZCwgYnV0IG5vIGNyZWRlbnRpYWwgaXMgc2VudCAoaS5lLiBubyBjb29raWUsIFguNTA5IGNlcnRpZmljYXRlLCBvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uKS4gSWYgdGhlIHNlcnZlciBkb2VzIG5vdCBnaXZlIGNyZWRlbnRpYWxzIHRvIHRoZSBvcmlnaW4gc2l0ZSAoYnkgbm90IHNldHRpbmcgdGhlIFtgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiAiVGhlIEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiByZXNwb25zZSBoZWFkZXIgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJlc3BvbnNlIGNhbiBiZSBzaGFyZWQgd2l0aCByZXF1ZXN0aW5nIGNvZGUgZnJvbSB0aGUgZ2l2ZW4gb3JpZ2luLiIpIEhUVFAgaGVhZGVyKSB0aGUgaW1hZ2Ugd2lsbCBiZSB0YWludGVkIGFuZCBpdHMgdXNhZ2UgcmVzdHJpY3RlZC5cblxuYHVzZS1jcmVkZW50aWFsc2BcblxuQSBjcm9zcy1vcmlnaW4gcmVxdWVzdCAoaS5lLiB3aXRoIGFuIGBPcmlnaW5gIEhUVFAgaGVhZGVyKSBpcyBwZXJmb3JtZWQgYWxvbmcgd2l0aCBhIGNyZWRlbnRpYWwgc2VudCAoaS5lLiBhIGNvb2tpZSwgY2VydGlmaWNhdGUsIGFuZC9vciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uIGlzIHBlcmZvcm1lZCkuIElmIHRoZSBzZXJ2ZXIgZG9lcyBub3QgZ2l2ZSBjcmVkZW50aWFscyB0byB0aGUgb3JpZ2luIHNpdGUgKHRocm91Z2ggW2BBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsc2BdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9BY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscyAiVGhlIEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzIHJlc3BvbnNlIGhlYWRlciB0ZWxscyBicm93c2VycyB3aGV0aGVyIHRvIGV4cG9zZSB0aGUgcmVzcG9uc2UgdG8gZnJvbnRlbmQgSmF2YVNjcmlwdCBjb2RlIHdoZW4gdGhlIHJlcXVlc3RcJ3MgY3JlZGVudGlhbHMgbW9kZSAoUmVxdWVzdC5jcmVkZW50aWFscykgaXMgImluY2x1ZGUiLiIpIEhUVFAgaGVhZGVyKSwgdGhlIHJlc291cmNlIHdpbGwgYmUgX3RhaW50ZWRfIGFuZCBpdHMgdXNhZ2UgcmVzdHJpY3RlZC5cblxuSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgcHJlc2VudCwgdGhlIHJlc291cmNlIGlzIGZldGNoZWQgd2l0aG91dCBhIFtDT1JTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0NPUlMgIkNPUlM6IENPUlMgKENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nKSBpcyBhIHN5c3RlbSwgY29uc2lzdGluZyBvZiB0cmFuc21pdHRpbmcgSFRUUCBoZWFkZXJzLCB0aGF0IGRldGVybWluZXMgd2hldGhlciBicm93c2VycyBibG9jayBmcm9udGVuZCBKYXZhU2NyaXB0IGNvZGUgZnJvbSBhY2Nlc3NpbmcgcmVzcG9uc2VzIGZvciBjcm9zcy1vcmlnaW4gcmVxdWVzdHMuIikgcmVxdWVzdCAoaS5lLiB3aXRob3V0IHNlbmRpbmcgdGhlIGBPcmlnaW5gIEhUVFAgaGVhZGVyKSwgcHJldmVudGluZyBpdHMgbm9uLXRhaW50ZWQgdXNhZ2UuIElmIGludmFsaWQsIGl0IGlzIGhhbmRsZWQgYXMgaWYgdGhlIGVudW1lcmF0ZWQga2V5d29yZCAqKmFub255bW91cyoqIHdhcyB1c2VkLiBTZWUgW0NPUlMgc2V0dGluZ3MgYXR0cmlidXRlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9DT1JTX3NldHRpbmdzX2F0dHJpYnV0ZXMpIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLid9fSx7bmFtZToicmVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBuYW1lcyBhIHJlbGF0aW9uc2hpcCBvZiB0aGUgbGlua2VkIGRvY3VtZW50IHRvIHRoZSBjdXJyZW50IGRvY3VtZW50LiBUaGUgYXR0cmlidXRlIG11c3QgYmUgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgW2xpbmsgdHlwZXMgdmFsdWVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0xpbmtfdHlwZXMpLiJ9fSx7bmFtZToibWVkaWEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgbWVkaWEgdGhhdCB0aGUgbGlua2VkIHJlc291cmNlIGFwcGxpZXMgdG8uIEl0cyB2YWx1ZSBtdXN0IGJlIGEgbWVkaWEgdHlwZSAvIFttZWRpYSBxdWVyeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL01lZGlhX3F1ZXJpZXMpLiBUaGlzIGF0dHJpYnV0ZSBpcyBtYWlubHkgdXNlZnVsIHdoZW4gbGlua2luZyB0byBleHRlcm5hbCBzdHlsZXNoZWV0cyDigJQgaXQgYWxsb3dzIHRoZSB1c2VyIGFnZW50IHRvIHBpY2sgdGhlIGJlc3QgYWRhcHRlZCBvbmUgZm9yIHRoZSBkZXZpY2UgaXQgcnVucyBvbi5cblxuKipOb3RlczoqKlxuXG4qICAgSW4gSFRNTCA0LCB0aGlzIGNhbiBvbmx5IGJlIGEgc2ltcGxlIHdoaXRlLXNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIG1lZGlhIGRlc2NyaXB0aW9uIGxpdGVyYWxzLCBpLmUuLCBbbWVkaWEgdHlwZXMgYW5kIGdyb3Vwc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0BtZWRpYSksIHdoZXJlIGRlZmluZWQgYW5kIGFsbG93ZWQgYXMgdmFsdWVzIGZvciB0aGlzIGF0dHJpYnV0ZSwgc3VjaCBhcyBgcHJpbnRgLCBgc2NyZWVuYCwgYGF1cmFsYCwgYGJyYWlsbGVgLiBIVE1MNSBleHRlbmRlZCB0aGlzIHRvIGFueSBraW5kIG9mIFttZWRpYSBxdWVyaWVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvTWVkaWFfcXVlcmllcyksIHdoaWNoIGFyZSBhIHN1cGVyc2V0IG9mIHRoZSBhbGxvd2VkIHZhbHVlcyBvZiBIVE1MIDQuXG4qICAgQnJvd3NlcnMgbm90IHN1cHBvcnRpbmcgW0NTUzMgTWVkaWEgUXVlcmllc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL01lZGlhX3F1ZXJpZXMpIHdvbid0IG5lY2Vzc2FyaWx5IHJlY29nbml6ZSB0aGUgYWRlcXVhdGUgbGluazsgZG8gbm90IGZvcmdldCB0byBzZXQgZmFsbGJhY2sgbGlua3MsIHRoZSByZXN0cmljdGVkIHNldCBvZiBtZWRpYSBxdWVyaWVzIGRlZmluZWQgaW4gSFRNTCA0LiJ9fSx7bmFtZToiaHJlZmxhbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIGxpbmtlZCByZXNvdXJjZS4gSXQgaXMgcHVyZWx5IGFkdmlzb3J5LiBBbGxvd2VkIHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBieSBbQkNQNDddKGh0dHBzOi8vd3d3LmlldGYub3JnL3JmYy9iY3AvYmNwNDcudHh0KS4gVXNlIHRoaXMgYXR0cmlidXRlIG9ubHkgaWYgdGhlIFtgaHJlZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hI2F0dHItaHJlZikgYXR0cmlidXRlIGlzIHByZXNlbnQuIn19LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIGRlZmluZSB0aGUgdHlwZSBvZiB0aGUgY29udGVudCBsaW5rZWQgdG8uIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIHNob3VsZCBiZSBhIE1JTUUgdHlwZSBzdWNoIGFzICoqdGV4dC9odG1sKiosICoqdGV4dC9jc3MqKiwgYW5kIHNvIG9uLiBUaGUgY29tbW9uIHVzZSBvZiB0aGlzIGF0dHJpYnV0ZSBpcyB0byBkZWZpbmUgdGhlIHR5cGUgb2Ygc3R5bGVzaGVldCBiZWluZyByZWZlcmVuY2VkIChzdWNoIGFzICoqdGV4dC9jc3MqKiksIGJ1dCBnaXZlbiB0aGF0IENTUyBpcyB0aGUgb25seSBzdHlsZXNoZWV0IGxhbmd1YWdlIHVzZWQgb24gdGhlIHdlYiwgbm90IG9ubHkgaXMgaXQgcG9zc2libGUgdG8gb21pdCB0aGUgYHR5cGVgIGF0dHJpYnV0ZSwgYnV0IGlzIGFjdHVhbGx5IG5vdyByZWNvbW1lbmRlZCBwcmFjdGljZS4gSXQgaXMgYWxzbyB1c2VkIG9uIGByZWw9InByZWxvYWQiYCBsaW5rIHR5cGVzLCB0byBtYWtlIHN1cmUgdGhlIGJyb3dzZXIgb25seSBkb3dubG9hZHMgZmlsZSB0eXBlcyB0aGF0IGl0IHN1cHBvcnRzLid9fSx7bmFtZToic2l6ZXMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGRlZmluZXMgdGhlIHNpemVzIG9mIHRoZSBpY29ucyBmb3IgdmlzdWFsIG1lZGlhIGNvbnRhaW5lZCBpbiB0aGUgcmVzb3VyY2UuIEl0IG11c3QgYmUgcHJlc2VudCBvbmx5IGlmIHRoZSBbYHJlbGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9saW5rI2F0dHItcmVsKSBjb250YWlucyBhIHZhbHVlIG9mIGBpY29uYCBvciBhIG5vbi1zdGFuZGFyZCB0eXBlIHN1Y2ggYXMgQXBwbGUncyBgYXBwbGUtdG91Y2gtaWNvbmAuIEl0IG1heSBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYGFueWAsIG1lYW5pbmcgdGhhdCB0aGUgaWNvbiBjYW4gYmUgc2NhbGVkIHRvIGFueSBzaXplIGFzIGl0IGlzIGluIGEgdmVjdG9yIGZvcm1hdCwgbGlrZSBgaW1hZ2Uvc3ZnK3htbGAuXG4qICAgYSB3aGl0ZS1zcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBzaXplcywgZWFjaCBpbiB0aGUgZm9ybWF0IGBfPHdpZHRoIGluIHBpeGVscz5feF88aGVpZ2h0IGluIHBpeGVscz5fYCBvciBgXzx3aWR0aCBpbiBwaXhlbHM+X1hfPGhlaWdodCBpbiBwaXhlbHM+X2AuIEVhY2ggb2YgdGhlc2Ugc2l6ZXMgbXVzdCBiZSBjb250YWluZWQgaW4gdGhlIHJlc291cmNlLlxuXG4qKk5vdGU6KiogTW9zdCBpY29uIGZvcm1hdHMgYXJlIG9ubHkgYWJsZSB0byBzdG9yZSBvbmUgc2luZ2xlIGljb247IHRoZXJlZm9yZSBtb3N0IG9mIHRoZSB0aW1lIHRoZSBbYHNpemVzYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLXNpemVzKSBjb250YWlucyBvbmx5IG9uZSBlbnRyeS4gTVMncyBJQ08gZm9ybWF0IGRvZXMsIGFzIHdlbGwgYXMgQXBwbGUncyBJQ05TLiBJQ08gaXMgbW9yZSB1YmlxdWl0b3VzOyB5b3Ugc2hvdWxkIGRlZmluaXRlbHkgdXNlIGl0LiJ9fSx7bmFtZToiYXMiLGRlc2NyaXB0aW9uOidUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IHVzZWQgd2hlbiBgcmVsPSJwcmVsb2FkImAgb3IgYHJlbD0icHJlZmV0Y2giYCBoYXMgYmVlbiBzZXQgb24gdGhlIGA8bGluaz5gIGVsZW1lbnQuIEl0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiBjb250ZW50IGJlaW5nIGxvYWRlZCBieSB0aGUgYDxsaW5rPmAsIHdoaWNoIGlzIG5lY2Vzc2FyeSBmb3IgY29udGVudCBwcmlvcml0aXphdGlvbiwgcmVxdWVzdCBtYXRjaGluZywgYXBwbGljYXRpb24gb2YgY29ycmVjdCBbY29udGVudCBzZWN1cml0eSBwb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvQ1NQKSwgYW5kIHNldHRpbmcgb2YgY29ycmVjdCBbYEFjY2VwdGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9BY2NlcHQgIlRoZSBBY2NlcHQgcmVxdWVzdCBIVFRQIGhlYWRlciBhZHZlcnRpc2VzIHdoaWNoIGNvbnRlbnQgdHlwZXMsIGV4cHJlc3NlZCBhcyBNSU1FIHR5cGVzLCB0aGUgY2xpZW50IGlzIGFibGUgdG8gdW5kZXJzdGFuZC4gVXNpbmcgY29udGVudCBuZWdvdGlhdGlvbiwgdGhlIHNlcnZlciB0aGVuIHNlbGVjdHMgb25lIG9mIHRoZSBwcm9wb3NhbHMsIHVzZXMgaXQgYW5kIGluZm9ybXMgdGhlIGNsaWVudCBvZiBpdHMgY2hvaWNlIHdpdGggdGhlIENvbnRlbnQtVHlwZSByZXNwb25zZSBoZWFkZXIuIEJyb3dzZXJzIHNldCBhZGVxdWF0ZSB2YWx1ZXMgZm9yIHRoaXMgaGVhZGVyIGRlcGVuZGluZyBvbsKgdGhlIGNvbnRleHQgd2hlcmUgdGhlIHJlcXVlc3QgaXMgZG9uZTogd2hlbiBmZXRjaGluZyBhIENTUyBzdHlsZXNoZWV0IGEgZGlmZmVyZW50IHZhbHVlIGlzIHNldCBmb3IgdGhlIHJlcXVlc3QgdGhhbiB3aGVuIGZldGNoaW5nIGFuIGltYWdlLMKgdmlkZW8gb3IgYSBzY3JpcHQuIikgcmVxdWVzdCBoZWFkZXIuJ30se25hbWU6ImltcG9ydGFuY2UiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhlIHJlbGF0aXZlIGltcG9ydGFuY2Ugb2YgdGhlIHJlc291cmNlLiBQcmlvcml0eSBoaW50cyBhcmUgZGVsZWdhdGVkIHVzaW5nIHRoZSB2YWx1ZXM6In0se25hbWU6ImltcG9ydGFuY2UiLGRlc2NyaXB0aW9uOicqKmBhdXRvYCoqOiBJbmRpY2F0ZXPCoCoqbm/CoHByZWZlcmVuY2UqKi4gVGhlIGJyb3dzZXIgbWF5IHVzZSBpdHMgb3duIGhldXJpc3RpY3MgdG8gZGVjaWRlIHRoZSBwcmlvcml0eSBvZiB0aGUgcmVzb3VyY2UuXG5cbioqYGhpZ2hgKio6IEluZGljYXRlcyB0byB0aGXCoGJyb3dzZXLCoHRoYXQgdGhlIHJlc291cmNlIGlzIG9mwqAqKmhpZ2gqKiBwcmlvcml0eS5cblxuKipgbG93YCoqOsKgSW5kaWNhdGVzIHRvIHRoZcKgYnJvd3NlcsKgdGhhdCB0aGUgcmVzb3VyY2UgaXMgb2bCoCoqbG93KiogcHJpb3JpdHkuXG5cbioqTm90ZToqKiBUaGUgYGltcG9ydGFuY2VgIGF0dHJpYnV0ZSBtYXkgb25seSBiZSB1c2VkIGZvciB0aGUgYDxsaW5rPmAgZWxlbWVudCBpZiBgcmVsPSJwcmVsb2FkImAgb3IgYHJlbD0icHJlZmV0Y2giYCBpcyBwcmVzZW50Lid9LHtuYW1lOiJpbnRlZ3JpdHkiLGRlc2NyaXB0aW9uOiJDb250YWlucyBpbmxpbmUgbWV0YWRhdGEg4oCUIGEgYmFzZTY0LWVuY29kZWQgY3J5cHRvZ3JhcGhpYyBoYXNoIG9mIHRoZSByZXNvdXJjZSAoZmlsZSkgeW914oCZcmUgdGVsbGluZyB0aGUgYnJvd3NlciB0byBmZXRjaC4gVGhlIGJyb3dzZXIgY2FuIHVzZSB0aGlzIHRvIHZlcmlmeSB0aGF0IHRoZSBmZXRjaGVkIHJlc291cmNlIGhhcyBiZWVuIGRlbGl2ZXJlZCBmcmVlIG9mIHVuZXhwZWN0ZWQgbWFuaXB1bGF0aW9uLiBTZWUgW1N1YnJlc291cmNlIEludGVncml0eV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvU3VicmVzb3VyY2VfSW50ZWdyaXR5KS4ifSx7bmFtZToicmVmZXJyZXJwb2xpY3kiLGRlc2NyaXB0aW9uOidBIHN0cmluZyBpbmRpY2F0aW5nIHdoaWNoIHJlZmVycmVyIHRvIHVzZSB3aGVuIGZldGNoaW5nIHRoZSByZXNvdXJjZTpcblxuKiAgIGBuby1yZWZlcnJlcmAgbWVhbnMgdGhhdCB0aGUgW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQuXG4qICAgYG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlYCBtZWFucyB0aGF0IG5vIFtgUmVmZXJlcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyICJUaGUgUmVmZXJlciByZXF1ZXN0IGhlYWRlciBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgcHJldmlvdXMgd2ViIHBhZ2UgZnJvbSB3aGljaCBhIGxpbmsgdG8gdGhlIGN1cnJlbnRseSByZXF1ZXN0ZWQgcGFnZSB3YXMgZm9sbG93ZWQuIFRoZSBSZWZlcmVyIGhlYWRlciBhbGxvd3Mgc2VydmVycyB0byBpZGVudGlmeSB3aGVyZSBwZW9wbGUgYXJlIHZpc2l0aW5nIHRoZW0gZnJvbSBhbmQgbWF5IHVzZSB0aGF0IGRhdGEgZm9yIGFuYWx5dGljcywgbG9nZ2luZywgb3Igb3B0aW1pemVkIGNhY2hpbmcsIGZvciBleGFtcGxlLiIpIGhlYWRlciB3aWxsIGJlIHNlbnQgd2hlbiBuYXZpZ2F0aW5nIHRvIGFuIG9yaWdpbiB3aXRob3V0IFRMUyAoSFRUUFMpLiBUaGlzIGlzIGEgdXNlciBhZ2VudOKAmXMgZGVmYXVsdCBiZWhhdmlvciwgaWYgbm8gcG9saWN5IGlzIG90aGVyd2lzZSBzcGVjaWZpZWQuXG4qICAgYG9yaWdpbmAgbWVhbnMgdGhhdCB0aGUgcmVmZXJyZXIgd2lsbCBiZSB0aGUgb3JpZ2luIG9mIHRoZSBwYWdlLCB3aGljaCBpcyByb3VnaGx5IHRoZSBzY2hlbWUsIHRoZSBob3N0LCBhbmQgdGhlIHBvcnQuXG4qICAgYG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmAgbWVhbnMgdGhhdCBuYXZpZ2F0aW5nIHRvIG90aGVyIG9yaWdpbnMgd2lsbCBiZSBsaW1pdGVkIHRvIHRoZSBzY2hlbWUsIHRoZSBob3N0LCBhbmQgdGhlIHBvcnQsIHdoaWxlIG5hdmlnYXRpbmcgb24gdGhlIHNhbWUgb3JpZ2luIHdpbGwgaW5jbHVkZSB0aGUgcmVmZXJyZXJcJ3MgcGF0aC5cbiogICBgdW5zYWZlLXVybGAgbWVhbnMgdGhhdCB0aGUgcmVmZXJyZXIgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW4gYW5kIHRoZSBwYXRoIChidXQgbm90IHRoZSBmcmFnbWVudCwgcGFzc3dvcmQsIG9yIHVzZXJuYW1lKS4gVGhpcyBjYXNlIGlzIHVuc2FmZSBiZWNhdXNlIGl0IGNhbiBsZWFrIG9yaWdpbnMgYW5kIHBhdGhzIGZyb20gVExTLXByb3RlY3RlZCByZXNvdXJjZXMgdG8gaW5zZWN1cmUgb3JpZ2lucy4nfSx7bmFtZToidGl0bGUiLGRlc2NyaXB0aW9uOidUaGUgYHRpdGxlYCBhdHRyaWJ1dGUgaGFzIHNwZWNpYWwgc2VtYW50aWNzIG9uIHRoZSBgPGxpbms+YCBlbGVtZW50LiBXaGVuIHVzZWQgb24gYSBgPGxpbmsgcmVsPSJzdHlsZXNoZWV0Ij5gIGl0IGRlZmluZXMgYSBbcHJlZmVycmVkIG9yIGFuIGFsdGVybmF0ZSBzdHlsZXNoZWV0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQWx0ZXJuYXRpdmVfc3R5bGVfc2hlZXRzKS4gSW5jb3JyZWN0bHkgdXNpbmcgaXQgbWF5IFtjYXVzZSB0aGUgc3R5bGVzaGVldCB0byBiZSBpZ25vcmVkXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NvcnJlY3RseV9Vc2luZ19UaXRsZXNfV2l0aF9FeHRlcm5hbF9TdHlsZXNoZWV0cykuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9saW5rIn1dfSx7bmFtZToibWV0YSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1ldGEgZWxlbWVudCByZXByZXNlbnRzIHZhcmlvdXMga2luZHMgb2YgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgZXhwcmVzc2VkIHVzaW5nIHRoZSB0aXRsZSwgYmFzZSwgbGluaywgc3R5bGUsIGFuZCBzY3JpcHQgZWxlbWVudHMuIn0sYXR0cmlidXRlczpbe25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGRlZmluZXMgdGhlIG5hbWUgb2YgYSBwaWVjZSBvZiBkb2N1bWVudC1sZXZlbCBtZXRhZGF0YS4gSXQgc2hvdWxkIG5vdCBiZSBzZXQgaWYgb25lIG9mIHRoZSBhdHRyaWJ1dGVzIFtgaXRlbXByb3BgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzI2F0dHItaXRlbXByb3ApLCBbYGh0dHAtZXF1aXZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWh0dHAtZXF1aXYpIG9yIFtgY2hhcnNldGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItY2hhcnNldCkgaXMgYWxzbyBzZXQuXG5cblRoaXMgbWV0YWRhdGEgbmFtZSBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHZhbHVlIGNvbnRhaW5lZCBieSB0aGUgW2Bjb250ZW50YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jb250ZW50KSBhdHRyaWJ1dGUuIFRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoZSBuYW1lIGF0dHJpYnV0ZSBhcmU6XG5cbiogICBgYXBwbGljYXRpb24tbmFtZWAgd2hpY2ggZGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24gcnVubmluZyBpbiB0aGUgd2ViIHBhZ2UuXG4gICAgXG4gICAgKipOb3RlOioqXG4gICAgXG4gICAgKiAgIEJyb3dzZXJzIG1heSB1c2UgdGhpcyB0byBpZGVudGlmeSB0aGUgYXBwbGljYXRpb24uIEl0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBbYDx0aXRsZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGl0bGUgIlRoZSBIVE1MIFRpdGxlIGVsZW1lbnQgKDx0aXRsZT4pIGRlZmluZXMgdGhlIGRvY3VtZW50XCdzIHRpdGxlIHRoYXQgaXMgc2hvd24gaW4gYSBicm93c2VyXCdzIHRpdGxlIGJhciBvciBhIHBhZ2VcJ3MgdGFiLiIpIGVsZW1lbnQsIHdoaWNoIHVzdWFsbHkgY29udGFpbiB0aGUgYXBwbGljYXRpb24gbmFtZSwgYnV0IG1heSBhbHNvIGNvbnRhaW4gaW5mb3JtYXRpb24gbGlrZSB0aGUgZG9jdW1lbnQgbmFtZSBvciBhIHN0YXR1cy5cbiAgICAqICAgU2ltcGxlIHdlYiBwYWdlcyBzaG91bGRuXCd0IGRlZmluZSBhbiBhcHBsaWNhdGlvbi1uYW1lLlxuICAgIFxuKiAgIGBhdXRob3JgIHdoaWNoIGRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIGRvY3VtZW50XCdzIGF1dGhvci5cbiogICBgZGVzY3JpcHRpb25gIHdoaWNoIGNvbnRhaW5zIGEgc2hvcnQgYW5kIGFjY3VyYXRlIHN1bW1hcnkgb2YgdGhlIGNvbnRlbnQgb2YgdGhlIHBhZ2UuIFNldmVyYWwgYnJvd3NlcnMsIGxpa2UgRmlyZWZveCBhbmQgT3BlcmEsIHVzZSB0aGlzIGFzIHRoZSBkZWZhdWx0IGRlc2NyaXB0aW9uIG9mIGJvb2ttYXJrZWQgcGFnZXMuXG4qICAgYGdlbmVyYXRvcmAgd2hpY2ggY29udGFpbnMgdGhlIGlkZW50aWZpZXIgb2YgdGhlIHNvZnR3YXJlIHRoYXQgZ2VuZXJhdGVkIHRoZSBwYWdlLlxuKiAgIGBrZXl3b3Jkc2Agd2hpY2ggY29udGFpbnMgd29yZHMgcmVsZXZhbnQgdG8gdGhlIHBhZ2VcJ3MgY29udGVudCBzZXBhcmF0ZWQgYnkgY29tbWFzLlxuKiAgIGByZWZlcnJlcmAgd2hpY2ggY29udHJvbHMgdGhlIFtgUmVmZXJlcmAgSFRUUCBoZWFkZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyKSBhdHRhY2hlZCB0byByZXF1ZXN0cyBzZW50IGZyb20gdGhlIGRvY3VtZW50OlxuICAgIFxuICAgIFZhbHVlcyBmb3IgdGhlIGBjb250ZW50YCBhdHRyaWJ1dGUgb2YgYDxtZXRhIG5hbWU9InJlZmVycmVyIj5gXG4gICAgXG4gICAgYG5vLXJlZmVycmVyYFxuICAgIFxuICAgIERvIG5vdCBzZW5kIGEgSFRUUCBgUmVmZXJyZXJgIGhlYWRlci5cbiAgICBcbiAgICBgb3JpZ2luYFxuICAgIFxuICAgIFNlbmQgdGhlIFtvcmlnaW5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvT3JpZ2luKSBvZiB0aGUgZG9jdW1lbnQuXG4gICAgXG4gICAgYG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlYFxuICAgIFxuICAgIFNlbmQgdGhlIFtvcmlnaW5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvT3JpZ2luKSBhcyBhIHJlZmVycmVyIHRvIFVSTHMgYXMgc2VjdXJlIGFzIHRoZSBjdXJyZW50IHBhZ2UsIChodHRwc+KGkmh0dHBzKSwgYnV0IGRvZXMgbm90IHNlbmQgYSByZWZlcnJlciB0byBsZXNzIHNlY3VyZSBVUkxzIChodHRwc+KGkmh0dHApLiBUaGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW91ci5cbiAgICBcbiAgICBgb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYFxuICAgIFxuICAgIFNlbmQgdGhlIGZ1bGwgVVJMIChzdHJpcHBlZCBvZiBwYXJhbWV0ZXJzKSBmb3Igc2FtZS1vcmlnaW4gcmVxdWVzdHMsIGJ1dCBvbmx5IHNlbmQgdGhlIFtvcmlnaW5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvT3JpZ2luKSBmb3Igb3RoZXIgY2FzZXMuXG4gICAgXG4gICAgYHNhbWUtb3JpZ2luYFxuICAgIFxuICAgIEEgcmVmZXJyZXIgd2lsbCBiZSBzZW50IGZvciBbc2FtZS1zaXRlIG9yaWdpbnNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1NhbWUtb3JpZ2luX3BvbGljeSksIGJ1dCBjcm9zcy1vcmlnaW4gcmVxdWVzdHMgd2lsbCBjb250YWluIG5vIHJlZmVycmVyIGluZm9ybWF0aW9uLlxuICAgIFxuICAgIGBzdHJpY3Qtb3JpZ2luYFxuICAgIFxuICAgIE9ubHkgc2VuZCB0aGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBhcyB0aGUgcmVmZXJyZXIgdG8gYS1wcmlvcmkgYXMtbXVjaC1zZWN1cmUgZGVzdGluYXRpb24gKEhUVFBTLT5IVFRQUyksIGJ1dCBkb25cJ3Qgc2VuZCBpdCB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChIVFRQUy0+SFRUUCkuXG4gICAgXG4gICAgYHN0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gXG4gICAgXG4gICAgU2VuZCBhIGZ1bGwgVVJMIHdoZW4gcGVyZm9ybWluZyBhIHNhbWUtb3JpZ2luIHJlcXVlc3QsIG9ubHkgc2VuZCB0aGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCB0byBhLXByaW9yaSBhcy1tdWNoLXNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFMtPkhUVFBTKSwgYW5kIHNlbmQgbm8gaGVhZGVyIHRvIGEgbGVzcyBzZWN1cmUgZGVzdGluYXRpb24gKEhUVFBTLT5IVFRQKS5cbiAgICBcbiAgICBgdW5zYWZlLVVSTGBcbiAgICBcbiAgICBTZW5kIHRoZSBmdWxsIFVSTCAoc3RyaXBwZWQgb2YgcGFyYW1ldGVycykgZm9yIHNhbWUtb3JpZ2luIG9yIGNyb3NzLW9yaWdpbiByZXF1ZXN0cy5cbiAgICBcbiAgICAqKk5vdGVzOioqXG4gICAgXG4gICAgKiAgIFNvbWUgYnJvd3NlcnMgc3VwcG9ydCB0aGUgZGVwcmVjYXRlZCB2YWx1ZXMgb2YgYGFsd2F5c2AsIGBkZWZhdWx0YCwgYW5kIGBuZXZlcmAgZm9yIHJlZmVycmVyLlxuICAgICogICBEeW5hbWljYWxseSBpbnNlcnRpbmcgYDxtZXRhIG5hbWU9InJlZmVycmVyIj5gICh3aXRoIFtgZG9jdW1lbnQud3JpdGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnQvd3JpdGUpIG9yIFtgYXBwZW5kQ2hpbGRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTm9kZS9hcHBlbmRDaGlsZCkpIG1ha2VzIHRoZSByZWZlcnJlciBiZWhhdmlvdXIgdW5wcmVkaWN0YWJsZS5cbiAgICAqICAgV2hlbiBzZXZlcmFsIGNvbmZsaWN0aW5nIHBvbGljaWVzIGFyZSBkZWZpbmVkLCB0aGUgbm8tcmVmZXJyZXIgcG9saWN5IGlzIGFwcGxpZWQuXG4gICAgXG5cblRoaXMgYXR0cmlidXRlIG1heSBhbHNvIGhhdmUgYSB2YWx1ZSB0YWtlbiBmcm9tIHRoZSBleHRlbmRlZCBsaXN0IGRlZmluZWQgb24gW1dIQVRXRyBXaWtpIE1ldGFFeHRlbnNpb25zIHBhZ2VdKGh0dHBzOi8vd2lraS53aGF0d2cub3JnL3dpa2kvTWV0YUV4dGVuc2lvbnMpLiBBbHRob3VnaCBub25lIGhhdmUgYmVlbiBmb3JtYWxseSBhY2NlcHRlZCB5ZXQsIGEgZmV3IGNvbW1vbmx5IHVzZWQgbmFtZXMgYXJlOlxuXG4qICAgYGNyZWF0b3JgIHdoaWNoIGRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIGNyZWF0b3Igb2YgdGhlIGRvY3VtZW50LCBzdWNoIGFzIGFuIG9yZ2FuaXphdGlvbiBvciBpbnN0aXR1dGlvbi4gSWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUsIHNldmVyYWwgW2A8bWV0YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSAiVGhlIEhUTUwgPG1ldGE+IGVsZW1lbnQgcmVwcmVzZW50cyBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBvdGhlciBIVE1MIG1ldGEtcmVsYXRlZCBlbGVtZW50cywgbGlrZSA8YmFzZT4sIDxsaW5rPiwgPHNjcmlwdD4sIDxzdHlsZT4gb3IgPHRpdGxlPi4iKSBlbGVtZW50cyBzaG91bGQgYmUgdXNlZC5cbiogICBgZ29vZ2xlYm90YCwgYSBzeW5vbnltIG9mIGByb2JvdHNgLCBpcyBvbmx5IGZvbGxvd2VkIGJ5IEdvb2dsZWJvdCAodGhlIGluZGV4aW5nIGNyYXdsZXIgZm9yIEdvb2dsZSkuXG4qICAgYHB1Ymxpc2hlcmAgd2hpY2ggZGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgZG9jdW1lbnRcJ3MgcHVibGlzaGVyLlxuKiAgIGByb2JvdHNgIHdoaWNoIGRlZmluZXMgdGhlIGJlaGF2aW91ciB0aGF0IGNvb3BlcmF0aXZlIGNyYXdsZXJzLCBvciAicm9ib3RzIiwgc2hvdWxkIHVzZSB3aXRoIHRoZSBwYWdlLiBJdCBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSB2YWx1ZXMgYmVsb3c6XG4gICAgXG4gICAgVmFsdWVzIGZvciB0aGUgY29udGVudCBvZiBgPG1ldGEgbmFtZT0icm9ib3RzIj5gXG4gICAgXG4gICAgVmFsdWVcbiAgICBcbiAgICBEZXNjcmlwdGlvblxuICAgIFxuICAgIFVzZWQgYnlcbiAgICBcbiAgICBgaW5kZXhgXG4gICAgXG4gICAgQWxsb3dzIHRoZSByb2JvdCB0byBpbmRleCB0aGUgcGFnZSAoZGVmYXVsdCkuXG4gICAgXG4gICAgQWxsXG4gICAgXG4gICAgYG5vaW5kZXhgXG4gICAgXG4gICAgUmVxdWVzdHMgdGhlIHJvYm90IHRvIG5vdCBpbmRleCB0aGUgcGFnZS5cbiAgICBcbiAgICBBbGxcbiAgICBcbiAgICBgZm9sbG93YFxuICAgIFxuICAgIEFsbG93cyB0aGUgcm9ib3QgdG8gZm9sbG93IHRoZSBsaW5rcyBvbiB0aGUgcGFnZSAoZGVmYXVsdCkuXG4gICAgXG4gICAgQWxsXG4gICAgXG4gICAgYG5vZm9sbG93YFxuICAgIFxuICAgIFJlcXVlc3RzIHRoZSByb2JvdCB0byBub3QgZm9sbG93IHRoZSBsaW5rcyBvbiB0aGUgcGFnZS5cbiAgICBcbiAgICBBbGxcbiAgICBcbiAgICBgbm9uZWBcbiAgICBcbiAgICBFcXVpdmFsZW50IHRvIGBub2luZGV4LCBub2ZvbGxvd2BcbiAgICBcbiAgICBbR29vZ2xlXShodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS93ZWJtYXN0ZXJzL2Fuc3dlci83OTgxMilcbiAgICBcbiAgICBgbm9vZHBgXG4gICAgXG4gICAgUHJldmVudHMgdXNpbmcgdGhlIFtPcGVuIERpcmVjdG9yeSBQcm9qZWN0XShodHRwczovL3d3dy5kbW96Lm9yZy8pIGRlc2NyaXB0aW9uLCBpZiBhbnksIGFzIHRoZSBwYWdlIGRlc2NyaXB0aW9uIGluIHNlYXJjaCBlbmdpbmUgcmVzdWx0cy5cbiAgICBcbiAgICBbR29vZ2xlXShodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS93ZWJtYXN0ZXJzL2Fuc3dlci8zNTYyNCNub2Rtb3opLCBbWWFob29dKGh0dHBzOi8vaGVscC55YWhvby5jb20va2Ivc2VhcmNoLWZvci1kZXNrdG9wL21ldGEtdGFncy1yb2JvdHN0eHQteWFob28tc2VhcmNoLXNsbjIyMTMuaHRtbCNjb250NSksIFtCaW5nXShodHRwczovL3d3dy5iaW5nLmNvbS93ZWJtYXN0ZXIvaGVscC93aGljaC1yb2JvdHMtbWV0YXRhZ3MtZG9lcy1iaW5nLXN1cHBvcnQtNTE5OGQyNDApXG4gICAgXG4gICAgYG5vYXJjaGl2ZWBcbiAgICBcbiAgICBSZXF1ZXN0cyB0aGUgc2VhcmNoIGVuZ2luZSBub3QgdG8gY2FjaGUgdGhlIHBhZ2UgY29udGVudC5cbiAgICBcbiAgICBbR29vZ2xlXShodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS93ZWJtYXN0ZXJzL2NvbnRyb2wtY3Jhd2wtaW5kZXgvZG9jcy9yb2JvdHNfbWV0YV90YWcjdmFsaWQtaW5kZXhpbmctLXNlcnZpbmctZGlyZWN0aXZlcyksIFtZYWhvb10oaHR0cHM6Ly9oZWxwLnlhaG9vLmNvbS9rYi9zZWFyY2gtZm9yLWRlc2t0b3AvU0xOMjIxMy5odG1sKSwgW0JpbmddKGh0dHBzOi8vd3d3LmJpbmcuY29tL3dlYm1hc3Rlci9oZWxwL3doaWNoLXJvYm90cy1tZXRhdGFncy1kb2VzLWJpbmctc3VwcG9ydC01MTk4ZDI0MClcbiAgICBcbiAgICBgbm9zbmlwcGV0YFxuICAgIFxuICAgIFByZXZlbnRzIGRpc3BsYXlpbmcgYW55IGRlc2NyaXB0aW9uIG9mIHRoZSBwYWdlIGluIHNlYXJjaCBlbmdpbmUgcmVzdWx0cy5cbiAgICBcbiAgICBbR29vZ2xlXShodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS93ZWJtYXN0ZXJzL2NvbnRyb2wtY3Jhd2wtaW5kZXgvZG9jcy9yb2JvdHNfbWV0YV90YWcjdmFsaWQtaW5kZXhpbmctLXNlcnZpbmctZGlyZWN0aXZlcyksIFtCaW5nXShodHRwczovL3d3dy5iaW5nLmNvbS93ZWJtYXN0ZXIvaGVscC93aGljaC1yb2JvdHMtbWV0YXRhZ3MtZG9lcy1iaW5nLXN1cHBvcnQtNTE5OGQyNDApXG4gICAgXG4gICAgYG5vaW1hZ2VpbmRleGBcbiAgICBcbiAgICBSZXF1ZXN0cyB0aGlzIHBhZ2Ugbm90IHRvIGFwcGVhciBhcyB0aGUgcmVmZXJyaW5nIHBhZ2Ugb2YgYW4gaW5kZXhlZCBpbWFnZS5cbiAgICBcbiAgICBbR29vZ2xlXShodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS93ZWJtYXN0ZXJzL2NvbnRyb2wtY3Jhd2wtaW5kZXgvZG9jcy9yb2JvdHNfbWV0YV90YWcjdmFsaWQtaW5kZXhpbmctLXNlcnZpbmctZGlyZWN0aXZlcylcbiAgICBcbiAgICBgbm9jYWNoZWBcbiAgICBcbiAgICBTeW5vbnltIG9mIGBub2FyY2hpdmVgLlxuICAgIFxuICAgIFtCaW5nXShodHRwczovL3d3dy5iaW5nLmNvbS93ZWJtYXN0ZXIvaGVscC93aGljaC1yb2JvdHMtbWV0YXRhZ3MtZG9lcy1iaW5nLXN1cHBvcnQtNTE5OGQyNDApXG4gICAgXG4gICAgKipOb3RlczoqKlxuICAgIFxuICAgICogICBPbmx5IGNvb3BlcmF0aXZlIHJvYm90cyBmb2xsb3cgdGhlc2UgcnVsZXMuIERvIG5vdCBleHBlY3QgdG8gcHJldmVudCBlLW1haWwgaGFydmVzdGVycyB3aXRoIHRoZW0uXG4gICAgKiAgIFRoZSByb2JvdCBzdGlsbCBuZWVkcyB0byBhY2Nlc3MgdGhlIHBhZ2UgaW4gb3JkZXIgdG8gcmVhZCB0aGVzZSBydWxlcy4gVG8gcHJldmVudCBiYW5kd2lkdGggY29uc3VtcHRpb24sIHVzZSBhIF9bcm9ib3RzLnR4dF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9yb2JvdHMudHh0ICJyb2JvdHMudHh0OiBSb2JvdHMudHh0IGlzIGEgZmlsZSB3aGljaCBpcyB1c3VhbGx5IHBsYWNlZCBpbiB0aGUgcm9vdCBvZiBhbnkgd2Vic2l0ZS4gSXQgZGVjaWRlcyB3aGV0aGVywqBjcmF3bGVycyBhcmUgcGVybWl0dGVkIG9yIGZvcmJpZGRlbiBhY2Nlc3MgdG8gdGhlIHdlYiBzaXRlLiIpXyBmaWxlLlxuICAgICogICBJZiB5b3Ugd2FudCB0byByZW1vdmUgYSBwYWdlLCBgbm9pbmRleGAgd2lsbCB3b3JrLCBidXQgb25seSBhZnRlciB0aGUgcm9ib3QgdmlzaXRzIHRoZSBwYWdlIGFnYWluLiBFbnN1cmUgdGhhdCB0aGUgYHJvYm90cy50eHRgIGZpbGUgaXMgbm90IHByZXZlbnRpbmcgcmV2aXNpdHMuXG4gICAgKiAgIFNvbWUgdmFsdWVzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUsIGxpa2UgYGluZGV4YCBhbmQgYG5vaW5kZXhgLCBvciBgZm9sbG93YCBhbmQgYG5vZm9sbG93YC4gSW4gdGhlc2UgY2FzZXMgdGhlIHJvYm90XCdzIGJlaGF2aW91ciBpcyB1bmRlZmluZWQgYW5kIG1heSB2YXJ5IGJldHdlZW4gdGhlbS5cbiAgICAqICAgU29tZSBjcmF3bGVyIHJvYm90cywgbGlrZSBHb29nbGUsIFlhaG9vIGFuZCBCaW5nLCBzdXBwb3J0IHRoZSBzYW1lIHZhbHVlcyBmb3IgdGhlIEhUVFAgaGVhZGVyIGBYLVJvYm90cy1UYWdgOyB0aGlzIGFsbG93cyBub24tSFRNTCBkb2N1bWVudHMgbGlrZSBpbWFnZXMgdG8gdXNlIHRoZXNlIHJ1bGVzLlxuICAgIFxuKiAgIGBzbHVycGAsIGlzIGEgc3lub255bSBvZiBgcm9ib3RzYCwgYnV0IG9ubHkgZm9yIFNsdXJwIC0gdGhlIGNyYXdsZXIgZm9yIFlhaG9vIFNlYXJjaC5cbiogICBgdmlld3BvcnRgLCB3aGljaCBnaXZlcyBoaW50cyBhYm91dCB0aGUgc2l6ZSBvZiB0aGUgaW5pdGlhbCBzaXplIG9mIHRoZSBbdmlld3BvcnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3Nhcnkvdmlld3BvcnQgInZpZXdwb3J0OiBBIHZpZXdwb3J0IHJlcHJlc2VudHMgYSBwb2x5Z29uYWwgKG5vcm1hbGx5IHJlY3Rhbmd1bGFyKSBhcmVhIGluIGNvbXB1dGVyIGdyYXBoaWNzIHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIHZpZXdlZC4gSW4gd2ViIGJyb3dzZXIgdGVybXMsIGl0IHJlZmVycyB0byB0aGUgcGFydCBvZiB0aGUgZG9jdW1lbnQgeW91XCdyZSB2aWV3aW5nIHdoaWNoIGlzIGN1cnJlbnRseSB2aXNpYmxlIGluIGl0cyB3aW5kb3cgKG9yIHRoZSBzY3JlZW4sIGlmIHRoZSBkb2N1bWVudCBpcyBiZWluZyB2aWV3ZWQgaW4gZnVsbCBzY3JlZW4gbW9kZSkuIENvbnRlbnQgb3V0c2lkZSB0aGUgdmlld3BvcnQgaXMgbm90IHZpc2libGUgb25zY3JlZW4gdW50aWwgc2Nyb2xsZWQgaW50byB2aWV3LiIpLiBVc2VkIGJ5IG1vYmlsZSBkZXZpY2VzIG9ubHkuXG4gICAgXG4gICAgVmFsdWVzIGZvciB0aGUgY29udGVudCBvZiBgPG1ldGEgbmFtZT0idmlld3BvcnQiPmBcbiAgICBcbiAgICBWYWx1ZVxuICAgIFxuICAgIFBvc3NpYmxlIHN1YnZhbHVlc1xuICAgIFxuICAgIERlc2NyaXB0aW9uXG4gICAgXG4gICAgYHdpZHRoYFxuICAgIFxuICAgIEEgcG9zaXRpdmUgaW50ZWdlciBudW1iZXIsIG9yIHRoZSB0ZXh0IGBkZXZpY2Utd2lkdGhgXG4gICAgXG4gICAgRGVmaW5lcyB0aGUgcGl4ZWwgd2lkdGggb2YgdGhlIHZpZXdwb3J0IHRoYXQgeW91IHdhbnQgdGhlIHdlYiBzaXRlIHRvIGJlIHJlbmRlcmVkIGF0LlxuICAgIFxuICAgIGBoZWlnaHRgXG4gICAgXG4gICAgQSBwb3NpdGl2ZSBpbnRlZ2VyLCBvciB0aGUgdGV4dCBgZGV2aWNlLWhlaWdodGBcbiAgICBcbiAgICBEZWZpbmVzIHRoZSBoZWlnaHQgb2YgdGhlIHZpZXdwb3J0LiBOb3QgdXNlZCBieSBhbnkgYnJvd3Nlci5cbiAgICBcbiAgICBgaW5pdGlhbC1zY2FsZWBcbiAgICBcbiAgICBBIHBvc2l0aXZlIG51bWJlciBiZXR3ZWVuIGAwLjBgIGFuZCBgMTAuMGBcbiAgICBcbiAgICBEZWZpbmVzIHRoZSByYXRpbyBiZXR3ZWVuIHRoZSBkZXZpY2Ugd2lkdGggKGBkZXZpY2Utd2lkdGhgIGluIHBvcnRyYWl0IG1vZGUgb3IgYGRldmljZS1oZWlnaHRgIGluIGxhbmRzY2FwZSBtb2RlKSBhbmQgdGhlIHZpZXdwb3J0IHNpemUuXG4gICAgXG4gICAgYG1heGltdW0tc2NhbGVgXG4gICAgXG4gICAgQSBwb3NpdGl2ZSBudW1iZXIgYmV0d2VlbiBgMC4wYCBhbmQgYDEwLjBgXG4gICAgXG4gICAgRGVmaW5lcyB0aGUgbWF4aW11bSBhbW91bnQgdG8gem9vbSBpbi4gSXQgbXVzdCBiZSBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSBgbWluaW11bS1zY2FsZWAgb3IgdGhlIGJlaGF2aW91ciBpcyB1bmRlZmluZWQuIEJyb3dzZXIgc2V0dGluZ3MgY2FuIGlnbm9yZSB0aGlzIHJ1bGUgYW5kIGlPUzEwKyBpZ25vcmVzIGl0IGJ5IGRlZmF1bHQuXG4gICAgXG4gICAgYG1pbmltdW0tc2NhbGVgXG4gICAgXG4gICAgQSBwb3NpdGl2ZSBudW1iZXIgYmV0d2VlbiBgMC4wYCBhbmQgYDEwLjBgXG4gICAgXG4gICAgRGVmaW5lcyB0aGUgbWluaW11bSB6b29tIGxldmVsLiBJdCBtdXN0IGJlIHNtYWxsZXIgb3IgZXF1YWwgdG8gdGhlIGBtYXhpbXVtLXNjYWxlYCBvciB0aGUgYmVoYXZpb3VyIGlzIHVuZGVmaW5lZC4gQnJvd3NlciBzZXR0aW5ncyBjYW4gaWdub3JlIHRoaXMgcnVsZSBhbmQgaU9TMTArIGlnbm9yZXMgaXQgYnkgZGVmYXVsdC5cbiAgICBcbiAgICBgdXNlci1zY2FsYWJsZWBcbiAgICBcbiAgICBgeWVzYCBvciBgbm9gXG4gICAgXG4gICAgSWYgc2V0IHRvIGBub2AsIHRoZSB1c2VyIGlzIG5vdCBhYmxlIHRvIHpvb20gaW4gdGhlIHdlYnBhZ2UuIFRoZSBkZWZhdWx0IGlzIGB5ZXNgLiBCcm93c2VyIHNldHRpbmdzIGNhbiBpZ25vcmUgdGhpcyBydWxlLCBhbmQgaU9TMTArIGlnbm9yZXMgaXQgYnkgZGVmYXVsdC5cbiAgICBcbiAgICBTcGVjaWZpY2F0aW9uXG4gICAgXG4gICAgU3RhdHVzXG4gICAgXG4gICAgQ29tbWVudFxuICAgIFxuICAgIFtDU1MgRGV2aWNlIEFkYXB0YXRpb24gIFxuICAgIFRoZSBkZWZpbml0aW9uIG9mIFwnPG1ldGEgbmFtZT0idmlld3BvcnQiPlwnIGluIHRoYXQgc3BlY2lmaWNhdGlvbi5dKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZGV2aWNlLWFkYXB0LyN2aWV3cG9ydC1tZXRhKVxuICAgIFxuICAgIFdvcmtpbmcgRHJhZnRcbiAgICBcbiAgICBOb24tbm9ybWF0aXZlbHkgZGVzY3JpYmVzIHRoZSBWaWV3cG9ydCBNRVRBIGVsZW1lbnRcbiAgICBcbiAgICBTZWUgYWxzbzogW2BAdmlld3BvcnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQHZpZXdwb3J0ICJUaGUgQHZpZXdwb3J0IENTUyBhdC1ydWxlIGxldHMgeW91IGNvbmZpZ3VyZSB0aGUgdmlld3BvcnQgdGhyb3VnaCB3aGljaCB0aGUgZG9jdW1lbnQgaXMgdmlld2VkLiBJdFwncyBwcmltYXJpbHkgdXNlZCBmb3IgbW9iaWxlIGRldmljZXMsIGJ1dCBpcyBhbHNvIHVzZWQgYnkgZGVza3RvcCBicm93c2VycyB0aGF0IHN1cHBvcnQgZmVhdHVyZXMgbGlrZSAic25hcCB0byBlZGdlIiAoc3VjaCBhcyBNaWNyb3NvZnQgRWRnZSkuIilcbiAgICBcbiAgICAqKk5vdGVzOioqXG4gICAgXG4gICAgKiAgIFRob3VnaCB1bnN0YW5kYXJkaXplZCwgdGhpcyBkZWNsYXJhdGlvbiBpcyByZXNwZWN0ZWQgYnkgbW9zdCBtb2JpbGUgYnJvd3NlcnMgZHVlIHRvIGRlLWZhY3RvIGRvbWluYW5jZS5cbiAgICAqICAgVGhlIGRlZmF1bHQgdmFsdWVzIG1heSB2YXJ5IGJldHdlZW4gZGV2aWNlcyBhbmQgYnJvd3NlcnMuXG4gICAgKiAgIFRvIGxlYXJuIGFib3V0IHRoaXMgZGVjbGFyYXRpb24gaW4gRmlyZWZveCBmb3IgTW9iaWxlLCBzZWUgW3RoaXMgYXJ0aWNsZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb2JpbGUvVmlld3BvcnRfbWV0YV90YWcgIk1vYmlsZS9WaWV3cG9ydCBtZXRhIHRhZyIpLid9fSx7bmFtZToiaHR0cC1lcXVpdiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonRGVmaW5lcyBhIHByYWdtYSBkaXJlY3RpdmUuIFRoZSBhdHRyaWJ1dGUgaXMgbmFtZWQgYCoqaHR0cC1lcXVpdioqKGFsZW50KWAgYmVjYXVzZSBhbGwgdGhlIGFsbG93ZWQgdmFsdWVzIGFyZSBuYW1lcyBvZiBwYXJ0aWN1bGFyIEhUVFAgaGVhZGVyczpcblxuKiAgIGAiY29udGVudC1sYW5ndWFnZSJgICBcbiAgICBEZWZpbmVzIHRoZSBkZWZhdWx0IGxhbmd1YWdlIG9mIHRoZSBwYWdlLiBJdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgW2xhbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvbGFuZykgYXR0cmlidXRlIG9uIGFueSBlbGVtZW50LlxuICAgIFxuICAgICoqV2FybmluZzoqKiBEbyBub3QgdXNlIHRoaXMgdmFsdWUsIGFzIGl0IGlzIG9ic29sZXRlLiBQcmVmZXIgdGhlIGBsYW5nYCBhdHRyaWJ1dGUgb24gdGhlIFtgPGh0bWw+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2h0bWwgIlRoZSBIVE1MIDxodG1sPiBlbGVtZW50IHJlcHJlc2VudHMgdGhlIHJvb3QgKHRvcC1sZXZlbCBlbGVtZW50KSBvZiBhbiBIVE1MIGRvY3VtZW50LCBzbyBpdCBpcyBhbHNvIHJlZmVycmVkIHRvIGFzIHRoZSByb290IGVsZW1lbnQuIEFsbCBvdGhlciBlbGVtZW50cyBtdXN0IGJlIGRlc2NlbmRhbnRzIG9mIHRoaXMgZWxlbWVudC4iKSBlbGVtZW50LlxuICAgIFxuKiAgIGAiY29udGVudC1zZWN1cml0eS1wb2xpY3kiYCAgXG4gICAgQWxsb3dzIHBhZ2UgYXV0aG9ycyB0byBkZWZpbmUgYSBbY29udGVudCBwb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L0NTUC9DU1BfcG9saWN5X2RpcmVjdGl2ZXMpIGZvciB0aGUgY3VycmVudCBwYWdlLiBDb250ZW50IHBvbGljaWVzIG1vc3RseSBzcGVjaWZ5IGFsbG93ZWQgc2VydmVyIG9yaWdpbnMgYW5kIHNjcmlwdCBlbmRwb2ludHMgd2hpY2ggaGVscCBndWFyZCBhZ2FpbnN0IGNyb3NzLXNpdGUgc2NyaXB0aW5nIGF0dGFja3MuXG4qICAgYCJjb250ZW50LXR5cGUiYCAgXG4gICAgRGVmaW5lcyB0aGUgW01JTUUgdHlwZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9NSU1FX3R5cGUpIG9mIHRoZSBkb2N1bWVudCwgZm9sbG93ZWQgYnkgaXRzIGNoYXJhY3RlciBlbmNvZGluZy4gSXQgZm9sbG93cyB0aGUgc2FtZSBzeW50YXggYXMgdGhlIEhUVFAgYGNvbnRlbnQtdHlwZWAgZW50aXR5LWhlYWRlciBmaWVsZCwgYnV0IGFzIGl0IGlzIGluc2lkZSBhIEhUTUwgcGFnZSwgbW9zdCB2YWx1ZXMgb3RoZXIgdGhhbiBgdGV4dC9odG1sYCBhcmUgaW1wb3NzaWJsZS4gVGhlcmVmb3JlIHRoZSB2YWxpZCBzeW50YXggZm9yIGl0cyBgY29udGVudGAgaXMgdGhlIHN0cmluZyBcJ2B0ZXh0L2h0bWxgXCcgZm9sbG93ZWQgYnkgYSBjaGFyYWN0ZXIgc2V0IHdpdGggdGhlIGZvbGxvd2luZyBzeW50YXg6IFwnYDsgY2hhcnNldD1fSUFOQWNoYXJzZXRfYFwnLCB3aGVyZSBgSUFOQWNoYXJzZXRgIGlzIHRoZSBfcHJlZmVycmVkIE1JTUUgbmFtZV8gZm9yIGEgY2hhcmFjdGVyIHNldCBhcyBbZGVmaW5lZCBieSB0aGUgSUFOQS5dKGh0dHBzOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2NoYXJhY3Rlci1zZXRzKVxuICAgIFxuICAgICoqV2FybmluZzoqKiBEbyBub3QgdXNlIHRoaXMgdmFsdWUsIGFzIGl0IGlzIG9ic29sZXRlLiBVc2UgdGhlIFtgY2hhcnNldGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItY2hhcnNldCkgYXR0cmlidXRlIG9uIHRoZSBbYDxtZXRhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhICJUaGUgSFRNTCA8bWV0YT4gZWxlbWVudCByZXByZXNlbnRzIG1ldGFkYXRhIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IG90aGVyIEhUTUwgbWV0YS1yZWxhdGVkIGVsZW1lbnRzLCBsaWtlIDxiYXNlPiwgPGxpbms+LCA8c2NyaXB0PiwgPHN0eWxlPiBvciA8dGl0bGU+LiIpIGVsZW1lbnQuXG4gICAgXG4gICAgKipOb3RlOioqIEFzIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgY2FuXCd0IGNoYW5nZSBkb2N1bWVudHNcJyB0eXBlcyBpbiBYSFRNTCBvciBIVE1MNVwncyBYSFRNTCBzZXJpYWxpemF0aW9uLCBuZXZlciBzZXQgdGhlIE1JTUUgdHlwZSB0byBhbiBYSFRNTCBNSU1FIHR5cGUgd2l0aCBgPG1ldGE+YC5cbiAgICBcbiogICBgInJlZnJlc2giYCAgXG4gICAgVGhpcyBpbnN0cnVjdGlvbiBzcGVjaWZpZXM6XG4gICAgKiAgIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyB1bnRpbCB0aGUgcGFnZSBzaG91bGQgYmUgcmVsb2FkZWQgLSBvbmx5IGlmIHRoZSBbYGNvbnRlbnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNvbnRlbnQpIGF0dHJpYnV0ZSBjb250YWlucyBhIHBvc2l0aXZlIGludGVnZXIuXG4gICAgKiAgIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyB1bnRpbCB0aGUgcGFnZSBzaG91bGQgcmVkaXJlY3QgdG8gYW5vdGhlciAtIG9ubHkgaWYgdGhlIFtgY29udGVudGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItY29udGVudCkgYXR0cmlidXRlIGNvbnRhaW5zIGEgcG9zaXRpdmUgaW50ZWdlciBmb2xsb3dlZCBieSB0aGUgc3RyaW5nIFwnYDt1cmw9YFwnLCBhbmQgYSB2YWxpZCBVUkwuXG4qICAgYCJzZXQtY29va2llImAgIFxuICAgIERlZmluZXMgYSBbY29va2llXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL2Nvb2tpZSkgZm9yIHRoZSBwYWdlLiBJdHMgY29udGVudCBtdXN0IGZvbGxvdyB0aGUgc3ludGF4IGRlZmluZWQgaW4gdGhlIFtJRVRGIEhUVFAgQ29va2llIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLWh0dHBzdGF0ZS1jb29raWUtMTQpLlxuICAgIFxuICAgICoqV2FybmluZzoqKiBEbyBub3QgdXNlIHRoaXMgaW5zdHJ1Y3Rpb24sIGFzIGl0IGlzIG9ic29sZXRlLiBVc2UgdGhlIEhUVFAgaGVhZGVyIFtgU2V0LUNvb2tpZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9TZXQtQ29va2llKSBpbnN0ZWFkLid9fSx7bmFtZToiY29udGVudCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgdGhlIHZhbHVlIGZvciB0aGUgW2BodHRwLWVxdWl2YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1odHRwLWVxdWl2KSBvciBbYG5hbWVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLW5hbWUpIGF0dHJpYnV0ZSwgZGVwZW5kaW5nIG9uIHdoaWNoIGlzIHVzZWQuIn19LHtuYW1lOiJjaGFyc2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBkZWNsYXJlcyB0aGUgcGFnZVwncyBjaGFyYWN0ZXIgZW5jb2RpbmcuIEl0IG11c3QgY29udGFpbiBhIFtzdGFuZGFyZCBJQU5BIE1JTUUgbmFtZSBmb3IgY2hhcmFjdGVyIGVuY29kaW5nc10oaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvY2hhcmFjdGVyLXNldHMpLiBBbHRob3VnaCB0aGUgc3RhbmRhcmQgZG9lc25cJ3QgcmVxdWVzdCBhIHNwZWNpZmljIGVuY29kaW5nLCBpdCBzdWdnZXN0czpcblxuKiAgIEF1dGhvcnMgYXJlIGVuY291cmFnZWQgdG8gdXNlIFtgVVRGLThgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1VURi04KS5cbiogICBBdXRob3JzIHNob3VsZCBub3QgdXNlIEFTQ0lJLWluY29tcGF0aWJsZSBlbmNvZGluZ3MgdG8gYXZvaWQgc2VjdXJpdHkgcmlzazogYnJvd3NlcnMgbm90IHN1cHBvcnRpbmcgdGhlbSBtYXkgaW50ZXJwcmV0IGhhcm1mdWwgY29udGVudCBhcyBIVE1MLiBUaGlzIGhhcHBlbnMgd2l0aCB0aGUgYEpJU19DNjIyNi0xOTgzYCwgYEpJU19YMDIxMi0xOTkwYCwgYEhaLUdCLTIzMTJgLCBgSk9IQUJgLCB0aGUgSVNPLTIwMjIgZmFtaWx5IGFuZCB0aGUgRUJDRElDIGZhbWlseS5cblxuKipOb3RlOioqIEFTQ0lJLWluY29tcGF0aWJsZSBlbmNvZGluZ3MgYXJlIHRob3NlIHRoYXQgZG9uXCd0IG1hcCB0aGUgOC1iaXQgY29kZSBwb2ludHMgYDB4MjBgIHRvIGAweDdFYCB0byB0aGUgYDB4MDAyMGAgdG8gYDB4MDA3RWAgVW5pY29kZSBjb2RlIHBvaW50cylcblxuKiAgIEF1dGhvcnMgKiptdXN0IG5vdCoqIHVzZSBgQ0VTVS04YCwgYFVURi03YCwgYEJPQ1UtMWAgYW5kL29yIGBTQ1NVYCBhcyBbY3Jvc3Mtc2l0ZSBzY3JpcHRpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQ3Jvc3Mtc2l0ZV9zY3JpcHRpbmcpIGF0dGFja3Mgd2l0aCB0aGVzZSBlbmNvZGluZ3MgaGF2ZSBiZWVuIGRlbW9uc3RyYXRlZC5cbiogICBBdXRob3JzIHNob3VsZCBub3QgdXNlIGBVVEYtMzJgIGJlY2F1c2Ugbm90IGFsbCBIVE1MNSBlbmNvZGluZyBhbGdvcml0aG1zIGNhbiBkaXN0aW5ndWlzaCBpdCBmcm9tIGBVVEYtMTZgLlxuXG4qKk5vdGVzOioqXG5cbiogICBUaGUgZGVjbGFyZWQgY2hhcmFjdGVyIGVuY29kaW5nIG11c3QgbWF0Y2ggdGhlIG9uZSB0aGUgcGFnZSB3YXMgc2F2ZWQgd2l0aCB0byBhdm9pZCBnYXJibGVkIGNoYXJhY3RlcnMgYW5kIHNlY3VyaXR5IGhvbGVzLlxuKiAgIFRoZSBbYDxtZXRhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhICJUaGUgSFRNTCA8bWV0YT4gZWxlbWVudCByZXByZXNlbnRzIG1ldGFkYXRhIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IG90aGVyIEhUTUwgbWV0YS1yZWxhdGVkIGVsZW1lbnRzLCBsaWtlIDxiYXNlPiwgPGxpbms+LCA8c2NyaXB0PiwgPHN0eWxlPiBvciA8dGl0bGU+LiIpIGVsZW1lbnQgZGVjbGFyaW5nIHRoZSBlbmNvZGluZyBtdXN0IGJlIGluc2lkZSB0aGUgW2A8aGVhZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaGVhZCAiVGhlIEhUTUwgPGhlYWQ+IGVsZW1lbnQgcHJvdmlkZXMgZ2VuZXJhbCBpbmZvcm1hdGlvbiAobWV0YWRhdGEpIGFib3V0IHRoZSBkb2N1bWVudCwgaW5jbHVkaW5nIGl0cyB0aXRsZSBhbmQgbGlua3MgdG8gaXRzwqBzY3JpcHRzIGFuZCBzdHlsZSBzaGVldHMuIikgZWxlbWVudCBhbmQgKip3aXRoaW4gdGhlIGZpcnN0IDEwMjQgYnl0ZXMqKiBvZiB0aGUgSFRNTCBhcyBzb21lIGJyb3dzZXJzIG9ubHkgbG9vayBhdCB0aG9zZSBieXRlcyBiZWZvcmUgY2hvb3NpbmcgYW4gZW5jb2RpbmcuXG4qICAgVGhpcyBbYDxtZXRhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhICJUaGUgSFRNTCA8bWV0YT4gZWxlbWVudCByZXByZXNlbnRzIG1ldGFkYXRhIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IG90aGVyIEhUTUwgbWV0YS1yZWxhdGVkIGVsZW1lbnRzLCBsaWtlIDxiYXNlPiwgPGxpbms+LCA8c2NyaXB0PiwgPHN0eWxlPiBvciA8dGl0bGU+LiIpIGVsZW1lbnQgaXMgb25seSBvbmUgcGFydCBvZiB0aGUgW2FsZ29yaXRobSB0byBkZXRlcm1pbmUgYSBwYWdlXCdzIGNoYXJhY3RlciBzZXRdKGh0dHBzOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjZW5jb2Rpbmctc25pZmZpbmctYWxnb3JpdGhtICJBbGdvcml0aG0gY2hhcnNldCBwYWdlIikuIFRoZSBbYENvbnRlbnQtVHlwZWAgaGVhZGVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQ29udGVudC1UeXBlKSBhbmQgYW55IFtCeXRlLU9yZGVyIE1hcmtzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0J5dGUtT3JkZXJfTWFyayAiVGhlIGRlZmluaXRpb24gb2YgdGhhdCB0ZXJtIChCeXRlLU9yZGVyIE1hcmtzKSBoYXMgbm90IGJlZW4gd3JpdHRlbiB5ZXQ7IHBsZWFzZSBjb25zaWRlciBjb250cmlidXRpbmcgaXQhIikgb3ZlcnJpZGUgdGhpcyBlbGVtZW50LlxuKiAgIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGRlZmluZSB0aGUgY2hhcmFjdGVyIGVuY29kaW5nLiBJZiBhIHBhZ2VcJ3MgZW5jb2RpbmcgaXMgdW5kZWZpbmVkLCBjcm9zcy1zY3JpcHRpbmcgdGVjaG5pcXVlcyBhcmUgcG9zc2libGUsIHN1Y2ggYXMgdGhlIFtgVVRGLTdgIGZhbGxiYWNrIGNyb3NzLXNjcmlwdGluZyB0ZWNobmlxdWVdKGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZG9jdHlwZS1taXJyb3Ivd2lraS9BcnRpY2xlVXRmNykuXG4qICAgVGhlIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgZWxlbWVudCB3aXRoIGEgYGNoYXJzZXRgIGF0dHJpYnV0ZSBpcyBhIHN5bm9ueW0gZm9yIHRoZSBwcmUtSFRNTDUgYDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PV9JQU5BY2hhcnNldF8iPmAsIHdoZXJlIF9gSUFOQWNoYXJzZXRgXyBjb250YWlucyB0aGUgdmFsdWUgb2YgdGhlIGVxdWl2YWxlbnQgW2BjaGFyc2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jaGFyc2V0KSBhdHRyaWJ1dGUuIFRoaXMgc3ludGF4IGlzIHN0aWxsIGFsbG93ZWQsIGFsdGhvdWdoIG5vIGxvbmdlciByZWNvbW1lbmRlZC4nfX0se25hbWU6InNjaGVtZSIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGRlZmluZXMgdGhlIHNjaGVtZSBpbiB3aGljaCBtZXRhZGF0YSBpcyBkZXNjcmliZWQuIEEgc2NoZW1lIGlzIGEgY29udGV4dCBsZWFkaW5nIHRvIHRoZSBjb3JyZWN0IGludGVycHJldGF0aW9ucyBvZiB0aGUgW2Bjb250ZW50YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jb250ZW50KSB2YWx1ZSwgbGlrZSBhIGZvcm1hdC5cblxuKipXYXJuaW5nOioqIERvIG5vdCB1c2UgdGhpcyB2YWx1ZSwgYXMgaXQgaXMgb2Jzb2xldGUuIFRoZXJlIGlzIG5vIHJlcGxhY2VtZW50IGFzIHRoZXJlIHdhcyBubyByZWFsIHVzYWdlIGZvciBpdC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEifV19LHtuYW1lOiJzdHlsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHN0eWxlIGVsZW1lbnQgYWxsb3dzIGF1dGhvcnMgdG8gZW1iZWQgc3R5bGUgaW5mb3JtYXRpb24gaW4gdGhlaXIgZG9jdW1lbnRzLiBUaGUgc3R5bGUgZWxlbWVudCBpcyBvbmUgb2Ygc2V2ZXJhbCBpbnB1dHMgdG8gdGhlIHN0eWxpbmcgcHJvY2Vzc2luZyBtb2RlbC4gVGhlIGVsZW1lbnQgZG9lcyBub3QgcmVwcmVzZW50IGNvbnRlbnQgZm9yIHRoZSB1c2VyLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJtZWRpYSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB3aGljaCBtZWRpYSB0aGUgc3R5bGUgc2hvdWxkIGJlIGFwcGxpZWQgdG8uIEl0cyB2YWx1ZSBpcyBhIFttZWRpYSBxdWVyeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvR3VpZGUvQ1NTL01lZGlhX3F1ZXJpZXMpLCB3aGljaCBkZWZhdWx0cyB0byBgYWxsYCBpZiB0aGUgYXR0cmlidXRlIGlzIG1pc3NpbmcuIn19LHtuYW1lOiJub25jZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBjcnlwdG9ncmFwaGljIG5vbmNlIChudW1iZXIgdXNlZCBvbmNlKSB1c2VkIHRvIHdoaXRlbGlzdCBpbmxpbmUgc3R5bGVzIGluIGEgW3N0eWxlLXNyYyBDb250ZW50LVNlY3VyaXR5LVBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0NvbnRlbnQtU2VjdXJpdHktUG9saWN5L3N0eWxlLXNyYykuIFRoZSBzZXJ2ZXIgbXVzdCBnZW5lcmF0ZSBhIHVuaXF1ZSBub25jZSB2YWx1ZSBlYWNoIHRpbWUgaXQgdHJhbnNtaXRzIGEgcG9saWN5LiBJdCBpcyBjcml0aWNhbCB0byBwcm92aWRlIGEgbm9uY2UgdGhhdCBjYW5ub3QgYmUgZ3Vlc3NlZCBhcyBieXBhc3NpbmcgYSByZXNvdXJjZeKAmXMgcG9saWN5IGlzIG90aGVyd2lzZSB0cml2aWFsLiJ9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgc3R5bGluZyBsYW5ndWFnZSBhcyBhIE1JTUUgdHlwZSAoY2hhcnNldCBzaG91bGQgbm90IGJlIHNwZWNpZmllZCkuIFRoaXMgYXR0cmlidXRlIGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byBgdGV4dC9jc3NgIGlmIGl0IGlzIG5vdCBzcGVjaWZpZWQg4oCUIHRoZXJlIGlzIHZlcnkgbGl0dGxlIHJlYXNvbiB0byBpbmNsdWRlIHRoaXMgaW4gbW9kZXJuIHdlYiBkb2N1bWVudHMuIn19LHtuYW1lOiJzY29wZWQiLHZhbHVlU2V0OiJ2In0se25hbWU6InRpdGxlIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIFthbHRlcm5hdGl2ZSBzdHlsZSBzaGVldF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0FsdGVybmF0aXZlX3N0eWxlX3NoZWV0cykgc2V0cy4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3N0eWxlIn1dfSx7bmFtZToiYm9keSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJvZHkgZWxlbWVudCByZXByZXNlbnRzIHRoZSBjb250ZW50IG9mIHRoZSBkb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToib25hZnRlcnByaW50IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIGFmdGVyIHRoZSB1c2VyIGhhcyBwcmludGVkIHRoZSBkb2N1bWVudC4ifX0se25hbWU6Im9uYmVmb3JlcHJpbnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgdXNlciByZXF1ZXN0cyBwcmludGluZyBvZiB0aGUgZG9jdW1lbnQuIn19LHtuYW1lOiJvbmJlZm9yZXVubG9hZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBkb2N1bWVudCBpcyBhYm91dCB0byBiZSB1bmxvYWRlZC4ifX0se25hbWU6Im9uaGFzaGNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBmcmFnbWVudCBpZGVudGlmaWVyIHBhcnQgKHN0YXJ0aW5nIHdpdGggdGhlIGhhc2ggKGAnIydgKSBjaGFyYWN0ZXIpIG9mIHRoZSBkb2N1bWVudCdzIGN1cnJlbnQgYWRkcmVzcyBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9ubGFuZ3VhZ2VjaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgcHJlZmVycmVkIGxhbmd1YWdlcyBjaGFuZ2VkLiJ9fSx7bmFtZToib25tZXNzYWdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGhhcyByZWNlaXZlZCBhIG1lc3NhZ2UuIn19LHtuYW1lOiJvbm9mZmxpbmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBuZXR3b3JrIGNvbW11bmljYXRpb24gaGFzIGZhaWxlZC4ifX0se25hbWU6Im9ub25saW5lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gbmV0d29yayBjb21tdW5pY2F0aW9uIGhhcyBiZWVuIHJlc3RvcmVkLiJ9fSx7bmFtZToib25wYWdlaGlkZSJ9LHtuYW1lOiJvbnBhZ2VzaG93In0se25hbWU6Im9ucG9wc3RhdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgdXNlciBoYXMgbmF2aWdhdGVkIHNlc3Npb24gaGlzdG9yeS4ifX0se25hbWU6Im9uc3RvcmFnZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBzdG9yYWdlIGFyZWEgaGFzIGNoYW5nZWQuIn19LHtuYW1lOiJvbnVubG9hZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBkb2N1bWVudCBpcyBnb2luZyBhd2F5LiJ9fSx7bmFtZToiYWxpbmsiLGRlc2NyaXB0aW9uOidDb2xvciBvZiB0ZXh0IGZvciBoeXBlcmxpbmtzIHdoZW4gc2VsZWN0ZWQuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYGNvbG9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NvbG9yICJUaGUgY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGZvcmVncm91bmQgY29sb3IgdmFsdWUgb2YgYW4gZWxlbWVudFwncyB0ZXh0IGFuZCB0ZXh0IGRlY29yYXRpb25zLCBhbmQgc2V0cyB0aGUgY3VycmVudGNvbG9yIHZhbHVlLiIpIHByb3BlcnR5IGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIFtgOmFjdGl2ZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy86YWN0aXZlICJUaGUgOmFjdGl2ZSBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW4gZWxlbWVudCAoc3VjaCBhcyBhIGJ1dHRvbikgdGhhdCBpcyBiZWluZyBhY3RpdmF0ZWQgYnkgdGhlIHVzZXIuIikgcHNldWRvLWNsYXNzIGluc3RlYWQuXyd9LHtuYW1lOiJiYWNrZ3JvdW5kIixkZXNjcmlwdGlvbjonVVJJIG9mIGEgaW1hZ2UgdG8gdXNlIGFzIGEgYmFja2dyb3VuZC4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgYmFja2dyb3VuZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kICJUaGUgYmFja2dyb3VuZCBzaG9ydGhhbmQgQ1NTIHByb3BlcnR5IHNldHMgYWxsIGJhY2tncm91bmQgc3R5bGUgcHJvcGVydGllcyBhdCBvbmNlLCBzdWNoIGFzIGNvbG9yLCBpbWFnZSwgb3JpZ2luIGFuZCBzaXplLCBvciByZXBlYXQgbWV0aG9kLiIpIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGluc3RlYWQuXyd9LHtuYW1lOiJiZ2NvbG9yIixkZXNjcmlwdGlvbjonQmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIGRvY3VtZW50LiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BiYWNrZ3JvdW5kLWNvbG9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtY29sb3IgIlRoZSBiYWNrZ3JvdW5kLWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGVsZW1lbnQuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6ImJvdHRvbW1hcmdpbiIsZGVzY3JpcHRpb246J1RoZSBtYXJnaW4gb2YgdGhlIGJvdHRvbSBvZiB0aGUgYm9keS4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgbWFyZ2luLWJvdHRvbWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tYm90dG9tICJUaGUgbWFyZ2luLWJvdHRvbSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gdGhlIGJvdHRvbSBvZiBhbiBlbGVtZW50LiBBIHBvc2l0aXZlIHZhbHVlIHBsYWNlcyBpdCBmYXJ0aGVyIGZyb20gaXRzIG5laWdoYm9ycywgd2hpbGUgYSBuZWdhdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgY2xvc2VyLiIpIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGluc3RlYWQuXyd9LHtuYW1lOiJsZWZ0bWFyZ2luIixkZXNjcmlwdGlvbjonVGhlIG1hcmdpbiBvZiB0aGUgbGVmdCBvZiB0aGUgYm9keS4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgbWFyZ2luLWxlZnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luLWxlZnQgIlRoZSBtYXJnaW4tbGVmdCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gdGhlIGxlZnQgc2lkZSBvZiBhbiBlbGVtZW50LiBBIHBvc2l0aXZlIHZhbHVlIHBsYWNlcyBpdCBmYXJ0aGVyIGZyb20gaXRzIG5laWdoYm9ycywgd2hpbGUgYSBuZWdhdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgY2xvc2VyLiIpIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGluc3RlYWQuXyd9LHtuYW1lOiJsaW5rIixkZXNjcmlwdGlvbjonQ29sb3Igb2YgdGV4dCBmb3IgdW52aXNpdGVkIGh5cGVydGV4dCBsaW5rcy4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sb3IgIlRoZSBjb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgZm9yZWdyb3VuZCBjb2xvciB2YWx1ZSBvZiBhbiBlbGVtZW50XCdzIHRleHQgYW5kIHRleHQgZGVjb3JhdGlvbnMsIGFuZCBzZXRzIHRoZSBjdXJyZW50Y29sb3IgdmFsdWUuIikgcHJvcGVydHkgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgW2A6bGlua2BdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy86bGluayAiVGhlIDpsaW5rIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiB2aXNpdGVkLiBJdCBtYXRjaGVzIGV2ZXJ5IHVudmlzaXRlZCA8YT4sIDxhcmVhPiwgb3IgPGxpbms+IGVsZW1lbnQgdGhhdCBoYXMgYW4gaHJlZiBhdHRyaWJ1dGUuIikgcHNldWRvLWNsYXNzIGluc3RlYWQuXyd9LHtuYW1lOiJvbmJsdXIiLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGxvc2VzIGZvY3VzLiJ9LHtuYW1lOiJvbmVycm9yIixkZXNjcmlwdGlvbjoiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBkb2N1bWVudCBmYWlscyB0byBsb2FkIHByb3Blcmx5LiJ9LHtuYW1lOiJvbmZvY3VzIixkZXNjcmlwdGlvbjoiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBkb2N1bWVudCByZWNlaXZlcyBmb2N1cy4ifSx7bmFtZToib25sb2FkIixkZXNjcmlwdGlvbjoiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBkb2N1bWVudCBoYXMgZmluaXNoZWQgbG9hZGluZy4ifSx7bmFtZToib25yZWRvIixkZXNjcmlwdGlvbjoiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB1c2VyIGhhcyBtb3ZlZCBmb3J3YXJkIGluIHVuZG8gdHJhbnNhY3Rpb24gaGlzdG9yeS4ifSx7bmFtZToib25yZXNpemUiLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGhhcyBiZWVuIHJlc2l6ZWQuIn0se25hbWU6Im9udW5kbyIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgdXNlciBoYXMgbW92ZWQgYmFja3dhcmQgaW4gdW5kbyB0cmFuc2FjdGlvbiBoaXN0b3J5LiJ9LHtuYW1lOiJyaWdodG1hcmdpbiIsZGVzY3JpcHRpb246J1RoZSBtYXJnaW4gb2YgdGhlIHJpZ2h0IG9mIHRoZSBib2R5LiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BtYXJnaW4tcmlnaHRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luLXJpZ2h0ICJUaGUgbWFyZ2luLXJpZ2h0IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiB0aGUgcmlnaHQgc2lkZSBvZiBhbiBlbGVtZW50LiBBIHBvc2l0aXZlIHZhbHVlIHBsYWNlcyBpdCBmYXJ0aGVyIGZyb20gaXRzIG5laWdoYm9ycywgd2hpbGUgYSBuZWdhdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgY2xvc2VyLiIpIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGluc3RlYWQuXyd9LHtuYW1lOiJ0ZXh0IixkZXNjcmlwdGlvbjonRm9yZWdyb3VuZCBjb2xvciBvZiB0ZXh0LiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2Bjb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9jb2xvciAiVGhlIGNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHZhbHVlIG9mIGFuIGVsZW1lbnRcJ3MgdGV4dCBhbmQgdGV4dCBkZWNvcmF0aW9ucywgYW5kIHNldHMgdGhlIGN1cnJlbnRjb2xvciB2YWx1ZS4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToidG9wbWFyZ2luIixkZXNjcmlwdGlvbjonVGhlIG1hcmdpbiBvZiB0aGUgdG9wIG9mIHRoZSBib2R5LiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BtYXJnaW4tdG9wYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbi10b3AgIlRoZSBtYXJnaW4tdG9wIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiB0aGUgdG9wIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6InZsaW5rIixkZXNjcmlwdGlvbjonQ29sb3Igb2YgdGV4dCBmb3IgdmlzaXRlZCBoeXBlcnRleHQgbGlua3MuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYGNvbG9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NvbG9yICJUaGUgY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGZvcmVncm91bmQgY29sb3IgdmFsdWUgb2YgYW4gZWxlbWVudFwncyB0ZXh0IGFuZCB0ZXh0IGRlY29yYXRpb25zLCBhbmQgc2V0cyB0aGUgY3VycmVudGNvbG9yIHZhbHVlLiIpIHByb3BlcnR5IGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIFtgOnZpc2l0ZWRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvOnZpc2l0ZWQgIlRoZSA6dmlzaXRlZCBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgbGlua3MgdGhhdCB0aGUgdXNlciBoYXMgYWxyZWFkeSB2aXNpdGVkLiBGb3IgcHJpdmFjeSByZWFzb25zLCB0aGUgc3R5bGVzIHRoYXQgY2FuIGJlIG1vZGlmaWVkIHVzaW5nIHRoaXMgc2VsZWN0b3IgYXJlIHZlcnkgbGltaXRlZC4iKSBwc2V1ZG8tY2xhc3MgaW5zdGVhZC5fJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ib2R5In1dfSx7bmFtZToiYXJ0aWNsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGFydGljbGUgZWxlbWVudCByZXByZXNlbnRzIGEgY29tcGxldGUsIG9yIHNlbGYtY29udGFpbmVkLCBjb21wb3NpdGlvbiBpbiBhIGRvY3VtZW50LCBwYWdlLCBhcHBsaWNhdGlvbiwgb3Igc2l0ZSBhbmQgdGhhdCBpcywgaW4gcHJpbmNpcGxlLCBpbmRlcGVuZGVudGx5IGRpc3RyaWJ1dGFibGUgb3IgcmV1c2FibGUsIGUuZy4gaW4gc3luZGljYXRpb24uIFRoaXMgY291bGQgYmUgYSBmb3J1bSBwb3N0LCBhIG1hZ2F6aW5lIG9yIG5ld3NwYXBlciBhcnRpY2xlLCBhIGJsb2cgZW50cnksIGEgdXNlci1zdWJtaXR0ZWQgY29tbWVudCwgYW4gaW50ZXJhY3RpdmUgd2lkZ2V0IG9yIGdhZGdldCwgb3IgYW55IG90aGVyIGluZGVwZW5kZW50IGl0ZW0gb2YgY29udGVudC4gRWFjaCBhcnRpY2xlIHNob3VsZCBiZSBpZGVudGlmaWVkLCB0eXBpY2FsbHkgYnkgaW5jbHVkaW5nIGEgaGVhZGluZyAoaDHigJNoNiBlbGVtZW50KSBhcyBhIGNoaWxkIG9mIHRoZSBhcnRpY2xlIGVsZW1lbnQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXJ0aWNsZSJ9XX0se25hbWU6InNlY3Rpb24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzZWN0aW9uIGVsZW1lbnQgcmVwcmVzZW50cyBhIGdlbmVyaWMgc2VjdGlvbiBvZiBhIGRvY3VtZW50IG9yIGFwcGxpY2F0aW9uLiBBIHNlY3Rpb24sIGluIHRoaXMgY29udGV4dCwgaXMgYSB0aGVtYXRpYyBncm91cGluZyBvZiBjb250ZW50LiBFYWNoIHNlY3Rpb24gc2hvdWxkIGJlIGlkZW50aWZpZWQsIHR5cGljYWxseSBieSBpbmNsdWRpbmcgYSBoZWFkaW5nICggaDEtIGg2IGVsZW1lbnQpIGFzIGEgY2hpbGQgb2YgdGhlIHNlY3Rpb24gZWxlbWVudC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zZWN0aW9uIn1dfSx7bmFtZToibmF2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmF2IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gb2YgYSBwYWdlIHRoYXQgbGlua3MgdG8gb3RoZXIgcGFnZXMgb3IgdG8gcGFydHMgd2l0aGluIHRoZSBwYWdlOiBhIHNlY3Rpb24gd2l0aCBuYXZpZ2F0aW9uIGxpbmtzLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L25hdiJ9XX0se25hbWU6ImFzaWRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYXNpZGUgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBvZiBhIHBhZ2UgdGhhdCBjb25zaXN0cyBvZiBjb250ZW50IHRoYXQgaXMgdGFuZ2VudGlhbGx5IHJlbGF0ZWQgdG8gdGhlIGNvbnRlbnQgYXJvdW5kIHRoZSBhc2lkZSBlbGVtZW50LCBhbmQgd2hpY2ggY291bGQgYmUgY29uc2lkZXJlZCBzZXBhcmF0ZSBmcm9tIHRoYXQgY29udGVudC4gU3VjaCBzZWN0aW9ucyBhcmUgb2Z0ZW4gcmVwcmVzZW50ZWQgYXMgc2lkZWJhcnMgaW4gcHJpbnRlZCB0eXBvZ3JhcGh5LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2FzaWRlIn1dfSx7bmFtZToiaDEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoMSBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIGhlYWRpbmcuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvSGVhZGluZ19FbGVtZW50cyJ9XX0se25hbWU6ImgyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaDIgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBoZWFkaW5nLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L0hlYWRpbmdfRWxlbWVudHMifV19LHtuYW1lOiJoMyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGgzIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gaGVhZGluZy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9IZWFkaW5nX0VsZW1lbnRzIn1dfSx7bmFtZToiaDQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoNCBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIGhlYWRpbmcuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvSGVhZGluZ19FbGVtZW50cyJ9XX0se25hbWU6Img1IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaDUgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBoZWFkaW5nLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L0hlYWRpbmdfRWxlbWVudHMifV19LHtuYW1lOiJoNiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGg2IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gaGVhZGluZy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9IZWFkaW5nX0VsZW1lbnRzIn1dfSx7bmFtZToiaGVhZGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaGVhZGVyIGVsZW1lbnQgcmVwcmVzZW50cyBpbnRyb2R1Y3RvcnkgY29udGVudCBmb3IgaXRzIG5lYXJlc3QgYW5jZXN0b3Igc2VjdGlvbmluZyBjb250ZW50IG9yIHNlY3Rpb25pbmcgcm9vdCBlbGVtZW50LiBBIGhlYWRlciB0eXBpY2FsbHkgY29udGFpbnMgYSBncm91cCBvZiBpbnRyb2R1Y3Rvcnkgb3IgbmF2aWdhdGlvbmFsIGFpZHMuIFdoZW4gdGhlIG5lYXJlc3QgYW5jZXN0b3Igc2VjdGlvbmluZyBjb250ZW50IG9yIHNlY3Rpb25pbmcgcm9vdCBlbGVtZW50IGlzIHRoZSBib2R5IGVsZW1lbnQsIHRoZW4gaXQgYXBwbGllcyB0byB0aGUgd2hvbGUgcGFnZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9oZWFkZXIifV19LHtuYW1lOiJmb290ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBmb290ZXIgZWxlbWVudCByZXByZXNlbnRzIGEgZm9vdGVyIGZvciBpdHMgbmVhcmVzdCBhbmNlc3RvciBzZWN0aW9uaW5nIGNvbnRlbnQgb3Igc2VjdGlvbmluZyByb290IGVsZW1lbnQuIEEgZm9vdGVyIHR5cGljYWxseSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBpdHMgc2VjdGlvbiBzdWNoIGFzIHdobyB3cm90ZSBpdCwgbGlua3MgdG8gcmVsYXRlZCBkb2N1bWVudHMsIGNvcHlyaWdodCBkYXRhLCBhbmQgdGhlIGxpa2UuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9vdGVyIn1dfSx7bmFtZToiYWRkcmVzcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGFkZHJlc3MgZWxlbWVudCByZXByZXNlbnRzIHRoZSBjb250YWN0IGluZm9ybWF0aW9uIGZvciBpdHMgbmVhcmVzdCBhcnRpY2xlIG9yIGJvZHkgZWxlbWVudCBhbmNlc3Rvci4gSWYgdGhhdCBpcyB0aGUgYm9keSBlbGVtZW50LCB0aGVuIHRoZSBjb250YWN0IGluZm9ybWF0aW9uIGFwcGxpZXMgdG8gdGhlIGRvY3VtZW50IGFzIGEgd2hvbGUuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYWRkcmVzcyJ9XX0se25hbWU6InAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwIGVsZW1lbnQgcmVwcmVzZW50cyBhIHBhcmFncmFwaC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9wIn1dfSx7bmFtZToiaHIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBociBlbGVtZW50IHJlcHJlc2VudHMgYSBwYXJhZ3JhcGgtbGV2ZWwgdGhlbWF0aWMgYnJlYWssIGUuZy4gYSBzY2VuZSBjaGFuZ2UgaW4gYSBzdG9yeSwgb3IgYSB0cmFuc2l0aW9uIHRvIGFub3RoZXIgdG9waWMgd2l0aGluIGEgc2VjdGlvbiBvZiBhIHJlZmVyZW5jZSBib29rLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246IlNldHMgdGhlIGFsaWdubWVudCBvZiB0aGUgcnVsZSBvbiB0aGUgcGFnZS4gSWYgbm8gdmFsdWUgaXMgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBgbGVmdGAuIn0se25hbWU6ImNvbG9yIixkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgdGhlIHJ1bGUgdGhyb3VnaCBjb2xvciBuYW1lIG9yIGhleGFkZWNpbWFsIHZhbHVlLiJ9LHtuYW1lOiJub3NoYWRlIixkZXNjcmlwdGlvbjoiU2V0cyB0aGUgcnVsZSB0byBoYXZlIG5vIHNoYWRpbmcuIn0se25hbWU6InNpemUiLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBoZWlnaHQsIGluIHBpeGVscywgb2YgdGhlIHJ1bGUuIn0se25hbWU6IndpZHRoIixkZXNjcmlwdGlvbjoiU2V0cyB0aGUgbGVuZ3RoIG9mIHRoZSBydWxlIG9uIHRoZSBwYWdlIHRocm91Z2ggYSBwaXhlbCBvciBwZXJjZW50YWdlIHZhbHVlLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaHIifV19LHtuYW1lOiJwcmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwcmUgZWxlbWVudCByZXByZXNlbnRzIGEgYmxvY2sgb2YgcHJlZm9ybWF0dGVkIHRleHQsIGluIHdoaWNoIHN0cnVjdHVyZSBpcyByZXByZXNlbnRlZCBieSB0eXBvZ3JhcGhpYyBjb252ZW50aW9ucyByYXRoZXIgdGhhbiBieSBlbGVtZW50cy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY29scyIsZGVzY3JpcHRpb246J0NvbnRhaW5zIHRoZSBfcHJlZmVycmVkXyBjb3VudCBvZiBjaGFyYWN0ZXJzIHRoYXQgYSBsaW5lIHNob3VsZCBoYXZlLiBJdCB3YXMgYSBub24tc3RhbmRhcmQgc3lub255bSBvZiBbYHdpZHRoYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3ByZSNhdHRyLXdpZHRoKS4gVG8gYWNoaWV2ZSBzdWNoIGFuIGVmZmVjdCwgdXNlIENTUyBbYHdpZHRoYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3dpZHRoICJUaGUgd2lkdGggQ1NTIHByb3BlcnR5IHNldHMgYW4gZWxlbWVudFwncyB3aWR0aC4gQnkgZGVmYXVsdCBpdCBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgY29udGVudCBhcmVhLCBidXQgaWYgYm94LXNpemluZyBpcyBzZXQgdG8gYm9yZGVyLWJveCwgaXQgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGJvcmRlciBhcmVhLiIpIGluc3RlYWQuJ30se25hbWU6IndpZHRoIixkZXNjcmlwdGlvbjonQ29udGFpbnMgdGhlIF9wcmVmZXJyZWRfIGNvdW50IG9mIGNoYXJhY3RlcnMgdGhhdCBhIGxpbmUgc2hvdWxkIGhhdmUuIFRob3VnaCB0ZWNobmljYWxseSBzdGlsbCBpbXBsZW1lbnRlZCwgdGhpcyBhdHRyaWJ1dGUgaGFzIG5vIHZpc3VhbCBlZmZlY3Q7IHRvIGFjaGlldmUgc3VjaCBhbiBlZmZlY3QsIHVzZSBDU1MgW2B3aWR0aGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy93aWR0aCAiVGhlIHdpZHRoIENTUyBwcm9wZXJ0eSBzZXRzIGFuIGVsZW1lbnRcJ3Mgd2lkdGguIEJ5IGRlZmF1bHQgaXQgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGNvbnRlbnQgYXJlYSwgYnV0IGlmIGJveC1zaXppbmcgaXMgc2V0IHRvIGJvcmRlci1ib3gsIGl0IHNldHMgdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIgYXJlYS4iKSBpbnN0ZWFkLid9LHtuYW1lOiJ3cmFwIixkZXNjcmlwdGlvbjonSXMgYSBfaGludF8gaW5kaWNhdGluZyBob3cgdGhlIG92ZXJmbG93IG11c3QgaGFwcGVuLiBJbiBtb2Rlcm4gYnJvd3NlciB0aGlzIGhpbnQgaXMgaWdub3JlZCBhbmQgbm8gdmlzdWFsIGVmZmVjdCByZXN1bHRzIGluIGl0cyBwcmVzZW50OyB0byBhY2hpZXZlIHN1Y2ggYW4gZWZmZWN0LCB1c2UgQ1NTIFtgd2hpdGUtc3BhY2VgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1Mvd2hpdGUtc3BhY2UgIlRoZSB3aGl0ZS1zcGFjZSBDU1MgcHJvcGVydHkgc2V0cyBob3cgd2hpdGUgc3BhY2UgaW5zaWRlIGFuIGVsZW1lbnQgaXMgaGFuZGxlZC4iKSBpbnN0ZWFkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcHJlIn1dfSx7bmFtZToiYmxvY2txdW90ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJsb2NrcXVvdGUgZWxlbWVudCByZXByZXNlbnRzIGNvbnRlbnQgdGhhdCBpcyBxdW90ZWQgZnJvbSBhbm90aGVyIHNvdXJjZSwgb3B0aW9uYWxseSB3aXRoIGEgY2l0YXRpb24gd2hpY2ggbXVzdCBiZSB3aXRoaW4gYSBmb290ZXIgb3IgY2l0ZSBlbGVtZW50LCBhbmQgb3B0aW9uYWxseSB3aXRoIGluLWxpbmUgY2hhbmdlcyBzdWNoIGFzIGFubm90YXRpb25zIGFuZCBhYmJyZXZpYXRpb25zLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjaXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIFVSTCB0aGF0IGRlc2lnbmF0ZXMgYSBzb3VyY2UgZG9jdW1lbnQgb3IgbWVzc2FnZSBmb3IgdGhlIGluZm9ybWF0aW9uIHF1b3RlZC4gVGhpcyBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgdG8gcG9pbnQgdG8gaW5mb3JtYXRpb24gZXhwbGFpbmluZyB0aGUgY29udGV4dCBvciB0aGUgcmVmZXJlbmNlIGZvciB0aGUgcXVvdGUuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYmxvY2txdW90ZSJ9XX0se25hbWU6Im9sIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgb2wgZWxlbWVudCByZXByZXNlbnRzIGEgbGlzdCBvZiBpdGVtcywgd2hlcmUgdGhlIGl0ZW1zIGhhdmUgYmVlbiBpbnRlbnRpb25hbGx5IG9yZGVyZWQsIHN1Y2ggdGhhdCBjaGFuZ2luZyB0aGUgb3JkZXIgd291bGQgY2hhbmdlIHRoZSBtZWFuaW5nIG9mIHRoZSBkb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToicmV2ZXJzZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIHNwZWNpZmllcyB0aGF0IHRoZSBpdGVtcyBvZiB0aGUgbGlzdCBhcmUgc3BlY2lmaWVkIGluIHJldmVyc2VkIG9yZGVyLiJ9fSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgaW50ZWdlciBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBzdGFydCB2YWx1ZSBmb3IgbnVtYmVyaW5nIHRoZSBpbmRpdmlkdWFsIGxpc3QgaXRlbXMuIEFsdGhvdWdoIHRoZSBvcmRlcmluZyB0eXBlIG9mIGxpc3QgZWxlbWVudHMgbWlnaHQgYmUgUm9tYW4gbnVtZXJhbHMsIHN1Y2ggYXMgWFhYSSwgb3IgbGV0dGVycywgdGhlIHZhbHVlIG9mIHN0YXJ0IGlzIGFsd2F5cyByZXByZXNlbnRlZCBhcyBhIG51bWJlci4gVG8gc3RhcnQgbnVtYmVyaW5nIGVsZW1lbnRzIGZyb20gdGhlIGxldHRlciAiQyIsIHVzZSBgPG9sIHN0YXJ0PSIzIj5gLlxuXG4qKk5vdGUqKjogVGhpcyBhdHRyaWJ1dGUgd2FzIGRlcHJlY2F0ZWQgaW4gSFRNTDQsIGJ1dCByZWludHJvZHVjZWQgaW4gSFRNTDUuJ319LHtuYW1lOiJ0eXBlIix2YWx1ZVNldDoibHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgbnVtYmVyaW5nIHR5cGU6XG5cbiogICBgJ2EnYCBpbmRpY2F0ZXMgbG93ZXJjYXNlIGxldHRlcnMsXG4qICAgYCdBJ2AgaW5kaWNhdGVzIHVwcGVyY2FzZSBsZXR0ZXJzLFxuKiAgIGAnaSdgIGluZGljYXRlcyBsb3dlcmNhc2UgUm9tYW4gbnVtZXJhbHMsXG4qICAgYCdJJ2AgaW5kaWNhdGVzIHVwcGVyY2FzZSBSb21hbiBudW1lcmFscyxcbiogICBhbmQgYCcxJ2AgaW5kaWNhdGVzIG51bWJlcnMgKGRlZmF1bHQpLlxuXG5UaGUgdHlwZSBzZXQgaXMgdXNlZCBmb3IgdGhlIGVudGlyZSBsaXN0IHVubGVzcyBhIGRpZmZlcmVudCBbYHR5cGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGkjYXR0ci10eXBlKSBhdHRyaWJ1dGUgaXMgdXNlZCB3aXRoaW4gYW4gZW5jbG9zZWQgW2A8bGk+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xpIFwiVGhlIEhUTUwgPGxpPiBlbGVtZW50IGlzIHVzZWQgdG8gcmVwcmVzZW50IGFuIGl0ZW0gaW4gYSBsaXN0LiBJdCBtdXN0IGJlIGNvbnRhaW5lZCBpbiBhIHBhcmVudCBlbGVtZW50OiBhbiBvcmRlcmVkIGxpc3QgKDxvbD4pLCBhbiB1bm9yZGVyZWQgbGlzdCAoPHVsPiksIG9yIGEgbWVudSAoPG1lbnU+KS4gSW4gbWVudXMgYW5kIHVub3JkZXJlZCBsaXN0cywgbGlzdCBpdGVtcyBhcmUgdXN1YWxseSBkaXNwbGF5ZWQgdXNpbmcgYnVsbGV0IHBvaW50cy4gSW4gb3JkZXJlZCBsaXN0cywgdGhleSBhcmUgdXN1YWxseSBkaXNwbGF5ZWQgd2l0aCBhbiBhc2NlbmRpbmcgY291bnRlciBvbiB0aGUgbGVmdCwgc3VjaCBhcyBhIG51bWJlciBvciBsZXR0ZXIuXCIpIGVsZW1lbnQuXG5cbioqTm90ZToqKiBUaGlzIGF0dHJpYnV0ZSB3YXMgZGVwcmVjYXRlZCBpbiBIVE1MNCwgYnV0IHJlaW50cm9kdWNlZCBpbiBIVE1MNS5cblxuVW5sZXNzIHRoZSB2YWx1ZSBvZiB0aGUgbGlzdCBudW1iZXIgbWF0dGVycyAoZS5nLiBpbiBsZWdhbCBvciB0ZWNobmljYWwgZG9jdW1lbnRzIHdoZXJlIGl0ZW1zIGFyZSB0byBiZSByZWZlcmVuY2VkIGJ5IHRoZWlyIG51bWJlci9sZXR0ZXIpLCB0aGUgQ1NTIFtgbGlzdC1zdHlsZS10eXBlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2xpc3Qtc3R5bGUtdHlwZSBcIlRoZSBsaXN0LXN0eWxlLXR5cGUgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmtlciAoc3VjaCBhcyBhIGRpc2MsIGNoYXJhY3Rlciwgb3IgY3VzdG9tIGNvdW50ZXIgc3R5bGUpIG9mIGEgbGlzdCBpdGVtIGVsZW1lbnQuXCIpIHByb3BlcnR5IHNob3VsZCBiZSB1c2VkIGluc3RlYWQuIn19LHtuYW1lOiJjb21wYWN0IixkZXNjcmlwdGlvbjonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBoaW50cyB0aGF0IHRoZSBsaXN0IHNob3VsZCBiZSByZW5kZXJlZCBpbiBhIGNvbXBhY3Qgc3R5bGUuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIGF0dHJpYnV0ZSBkZXBlbmRzIG9uIHRoZSB1c2VyIGFnZW50IGFuZCBpdCBkb2VzblwndCB3b3JrIGluIGFsbCBicm93c2Vycy5cblxuKipXYXJuaW5nOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUsIGFzIGl0IGhhcyBiZWVuIGRlcHJlY2F0ZWQ6IHRoZSBbYDxvbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb2wgIlRoZSBIVE1MIDxvbD4gZWxlbWVudCByZXByZXNlbnRzIGFuIG9yZGVyZWQgbGlzdCBvZiBpdGVtcywgdHlwaWNhbGx5IHJlbmRlcmVkIGFzIGEgbnVtYmVyZWQgbGlzdC4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpLiBUbyBnaXZlIGFuIGVmZmVjdCBzaW1pbGFyIHRvIHRoZSBgY29tcGFjdGAgYXR0cmlidXRlLCB0aGUgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpIHByb3BlcnR5IFtgbGluZS1oZWlnaHRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbGluZS1oZWlnaHQgIlRoZSBsaW5lLWhlaWdodCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYW1vdW50IG9mIHNwYWNlIHVzZWQgZm9yIGxpbmVzLCBzdWNoIGFzIGluIHRleHQuIE9uIGJsb2NrLWxldmVsIGVsZW1lbnRzLCBpdCBzcGVjaWZpZXMgdGhlIG1pbmltdW0gaGVpZ2h0IG9mIGxpbmUgYm94ZXMgd2l0aGluIHRoZSBlbGVtZW50LiBPbiBub24tcmVwbGFjZWQgaW5saW5lIGVsZW1lbnRzLCBpdCBzcGVjaWZpZXMgdGhlIGhlaWdodCB0aGF0IGlzIHVzZWQgdG8gY2FsY3VsYXRlIGxpbmUgYm94IGhlaWdodC4iKSBjYW4gYmUgdXNlZCB3aXRoIGEgdmFsdWUgb2YgYDgwJWAuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vbCJ9XX0se25hbWU6InVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdWwgZWxlbWVudCByZXByZXNlbnRzIGEgbGlzdCBvZiBpdGVtcywgd2hlcmUgdGhlIG9yZGVyIG9mIHRoZSBpdGVtcyBpcyBub3QgaW1wb3J0YW50IOKAlCB0aGF0IGlzLCB3aGVyZSBjaGFuZ2luZyB0aGUgb3JkZXIgd291bGQgbm90IG1hdGVyaWFsbHkgY2hhbmdlIHRoZSBtZWFuaW5nIG9mIHRoZSBkb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY29tcGFjdCIsZGVzY3JpcHRpb246J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaGludHMgdGhhdCB0aGUgbGlzdCBzaG91bGQgYmUgcmVuZGVyZWQgaW4gYSBjb21wYWN0IHN0eWxlLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBhdHRyaWJ1dGUgZGVwZW5kcyBvbiB0aGUgdXNlciBhZ2VudCBhbmQgaXQgZG9lc25cJ3Qgd29yayBpbiBhbGwgYnJvd3NlcnMuXG5cbioqVXNhZ2Ugbm90ZTrCoCoqRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYXMgaXQgaGFzIGJlZW4gZGVwcmVjYXRlZDogdGhlIFtgPHVsPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC91bCAiVGhlIEhUTUwgPHVsPiBlbGVtZW50IHJlcHJlc2VudHMgYW4gdW5vcmRlcmVkIGxpc3Qgb2YgaXRlbXMsIHR5cGljYWxseSByZW5kZXJlZCBhcyBhIGJ1bGxldGVkIGxpc3QuIikgZWxlbWVudCBzaG91bGQgYmUgc3R5bGVkIHVzaW5nIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKS4gVG8gZ2l2ZSBhIHNpbWlsYXIgZWZmZWN0IGFzIHRoZSBgY29tcGFjdGAgYXR0cmlidXRlLCB0aGUgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpIHByb3BlcnR5IFtsaW5lLWhlaWdodF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MvbGluZS1oZWlnaHQpIGNhbiBiZSB1c2VkIHdpdGggYSB2YWx1ZSBvZiBgODAlYC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3VsIn1dfSx7bmFtZToibGkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsaSBlbGVtZW50IHJlcHJlc2VudHMgYSBsaXN0IGl0ZW0uIElmIGl0cyBwYXJlbnQgZWxlbWVudCBpcyBhbiBvbCwgdWwsIG9yIG1lbnUgZWxlbWVudCwgdGhlbiB0aGUgZWxlbWVudCBpcyBhbiBpdGVtIG9mIHRoZSBwYXJlbnQgZWxlbWVudCdzIGxpc3QsIGFzIGRlZmluZWQgZm9yIHRob3NlIGVsZW1lbnRzLiBPdGhlcndpc2UsIHRoZSBsaXN0IGl0ZW0gaGFzIG5vIGRlZmluZWQgbGlzdC1yZWxhdGVkIHJlbGF0aW9uc2hpcCB0byBhbnkgb3RoZXIgbGkgZWxlbWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToidmFsdWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgaW50ZWdlciBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSBjdXJyZW50IG9yZGluYWwgdmFsdWUgb2YgdGhlIGxpc3QgaXRlbSBhcyBkZWZpbmVkIGJ5IHRoZSBbYDxvbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb2wgIlRoZSBIVE1MIDxvbD4gZWxlbWVudCByZXByZXNlbnRzIGFuIG9yZGVyZWQgbGlzdCBvZiBpdGVtcywgdHlwaWNhbGx5IHJlbmRlcmVkIGFzIGEgbnVtYmVyZWQgbGlzdC4iKSBlbGVtZW50LiBUaGUgb25seSBhbGxvd2VkIHZhbHVlIGZvciB0aGlzIGF0dHJpYnV0ZSBpcyBhIG51bWJlciwgZXZlbiBpZiB0aGUgbGlzdCBpcyBkaXNwbGF5ZWQgd2l0aCBSb21hbiBudW1lcmFscyBvciBsZXR0ZXJzLiBMaXN0IGl0ZW1zIHRoYXQgZm9sbG93IHRoaXMgb25lIGNvbnRpbnVlIG51bWJlcmluZyBmcm9tIHRoZSB2YWx1ZSBzZXQuIFRoZSAqKnZhbHVlKiogYXR0cmlidXRlIGhhcyBubyBtZWFuaW5nIGZvciB1bm9yZGVyZWQgbGlzdHMgKFtgPHVsPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC91bCAiVGhlIEhUTUwgPHVsPiBlbGVtZW50IHJlcHJlc2VudHMgYW4gdW5vcmRlcmVkIGxpc3Qgb2YgaXRlbXMsIHR5cGljYWxseSByZW5kZXJlZCBhcyBhIGJ1bGxldGVkIGxpc3QuIikpIG9yIGZvciBtZW51cyAoW2A8bWVudT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWVudSAiVGhlIEhUTUwgPG1lbnU+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGdyb3VwIG9mIGNvbW1hbmRzIHRoYXQgYSB1c2VyIGNhbiBwZXJmb3JtIG9yIGFjdGl2YXRlLiBUaGlzIGluY2x1ZGVzIGJvdGggbGlzdCBtZW51cywgd2hpY2ggbWlnaHQgYXBwZWFyIGFjcm9zcyB0aGUgdG9wIG9mIGEgc2NyZWVuLCBhcyB3ZWxsIGFzIGNvbnRleHQgbWVudXMsIHN1Y2ggYXMgdGhvc2UgdGhhdCBtaWdodCBhcHBlYXIgdW5kZXJuZWF0aCBhIGJ1dHRvbiBhZnRlciBpdCBoYXMgYmVlbiBjbGlja2VkLiIpKS5cblxuKipOb3RlKio6IFRoaXMgYXR0cmlidXRlIHdhcyBkZXByZWNhdGVkIGluIEhUTUw0LCBidXQgcmVpbnRyb2R1Y2VkIGluIEhUTUw1LlxuXG4qKk5vdGU6KiogUHJpb3IgdG8gR2Vja2/CoDkuMCwgbmVnYXRpdmUgdmFsdWVzIHdlcmUgaW5jb3JyZWN0bHkgY29udmVydGVkIHRvIDAuIFN0YXJ0aW5nIGluIEdlY2tvwqA5LjAgYWxsIGludGVnZXIgdmFsdWVzIGFyZSBjb3JyZWN0bHkgcGFyc2VkLid9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246J1RoaXMgY2hhcmFjdGVyIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIG51bWJlcmluZyB0eXBlOlxuXG4qICAgYGFgOiBsb3dlcmNhc2UgbGV0dGVyc1xuKiAgIGBBYDogdXBwZXJjYXNlIGxldHRlcnNcbiogICBgaWA6IGxvd2VyY2FzZSBSb21hbiBudW1lcmFsc1xuKiAgIGBJYDogdXBwZXJjYXNlIFJvbWFuIG51bWVyYWxzXG4qICAgYDFgOiBudW1iZXJzXG5cblRoaXMgdHlwZSBvdmVycmlkZXMgdGhlIG9uZSB1c2VkIGJ5IGl0cyBwYXJlbnQgW2A8b2w+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29sICJUaGUgSFRNTCA8b2w+IGVsZW1lbnQgcmVwcmVzZW50cyBhbiBvcmRlcmVkIGxpc3Qgb2YgaXRlbXMsIHR5cGljYWxseSByZW5kZXJlZCBhcyBhIG51bWJlcmVkIGxpc3QuIikgZWxlbWVudCwgaWYgYW55LlxuXG4qKlVzYWdlIG5vdGU6KiogVGhpcyBhdHRyaWJ1dGUgaGFzIGJlZW4gZGVwcmVjYXRlZDogdXNlIHRoZSBDU1MgW2BsaXN0LXN0eWxlLXR5cGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbGlzdC1zdHlsZS10eXBlICJUaGUgbGlzdC1zdHlsZS10eXBlIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJrZXIgKHN1Y2ggYXMgYSBkaXNjLCBjaGFyYWN0ZXIsIG9yIGN1c3RvbSBjb3VudGVyIHN0eWxlKSBvZiBhIGxpc3QgaXRlbSBlbGVtZW50LiIpIHByb3BlcnR5IGluc3RlYWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9saSJ9XX0se25hbWU6ImRsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGwgZWxlbWVudCByZXByZXNlbnRzIGFuIGFzc29jaWF0aW9uIGxpc3QgY29uc2lzdGluZyBvZiB6ZXJvIG9yIG1vcmUgbmFtZS12YWx1ZSBncm91cHMgKGEgZGVzY3JpcHRpb24gbGlzdCkuIEEgbmFtZS12YWx1ZSBncm91cCBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBuYW1lcyAoZHQgZWxlbWVudHMpIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIHZhbHVlcyAoZGQgZWxlbWVudHMpLCBpZ25vcmluZyBhbnkgbm9kZXMgb3RoZXIgdGhhbiBkdCBhbmQgZGQgZWxlbWVudHMuIFdpdGhpbiBhIHNpbmdsZSBkbCBlbGVtZW50LCB0aGVyZSBzaG91bGQgbm90IGJlIG1vcmUgdGhhbiBvbmUgZHQgZWxlbWVudCBmb3IgZWFjaCBuYW1lLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RsIn1dfSx7bmFtZToiZHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkdCBlbGVtZW50IHJlcHJlc2VudHMgdGhlIHRlcm0sIG9yIG5hbWUsIHBhcnQgb2YgYSB0ZXJtLWRlc2NyaXB0aW9uIGdyb3VwIGluIGEgZGVzY3JpcHRpb24gbGlzdCAoZGwgZWxlbWVudCkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZHQifV19LHtuYW1lOiJkZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRkIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgZGVzY3JpcHRpb24sIGRlZmluaXRpb24sIG9yIHZhbHVlLCBwYXJ0IG9mIGEgdGVybS1kZXNjcmlwdGlvbiBncm91cCBpbiBhIGRlc2NyaXB0aW9uIGxpc3QgKGRsIGVsZW1lbnQpLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJub3dyYXAiLGRlc2NyaXB0aW9uOiJJZiB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgaXMgc2V0IHRvIGB5ZXNgLCB0aGUgZGVmaW5pdGlvbiB0ZXh0IHdpbGwgbm90IHdyYXAuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBub2AuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kZCJ9XX0se25hbWU6ImZpZ3VyZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGZpZ3VyZSBlbGVtZW50IHJlcHJlc2VudHMgc29tZSBmbG93IGNvbnRlbnQsIG9wdGlvbmFsbHkgd2l0aCBhIGNhcHRpb24sIHRoYXQgaXMgc2VsZi1jb250YWluZWQgKGxpa2UgYSBjb21wbGV0ZSBzZW50ZW5jZSkgYW5kIGlzIHR5cGljYWxseSByZWZlcmVuY2VkIGFzIGEgc2luZ2xlIHVuaXQgZnJvbSB0aGUgbWFpbiBmbG93IG9mIHRoZSBkb2N1bWVudC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9maWd1cmUifV19LHtuYW1lOiJmaWdjYXB0aW9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZmlnY2FwdGlvbiBlbGVtZW50IHJlcHJlc2VudHMgYSBjYXB0aW9uIG9yIGxlZ2VuZCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWdjYXB0aW9uIGVsZW1lbnQncyBwYXJlbnQgZmlndXJlIGVsZW1lbnQsIGlmIGFueS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9maWdjYXB0aW9uIn1dfSx7bmFtZToibWFpbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1haW4gZWxlbWVudCByZXByZXNlbnRzIHRoZSBtYWluIGNvbnRlbnQgb2YgdGhlIGJvZHkgb2YgYSBkb2N1bWVudCBvciBhcHBsaWNhdGlvbi4gVGhlIG1haW4gY29udGVudCBhcmVhIGNvbnNpc3RzIG9mIGNvbnRlbnQgdGhhdCBpcyBkaXJlY3RseSByZWxhdGVkIHRvIG9yIGV4cGFuZHMgdXBvbiB0aGUgY2VudHJhbCB0b3BpYyBvZiBhIGRvY3VtZW50IG9yIGNlbnRyYWwgZnVuY3Rpb25hbGl0eSBvZiBhbiBhcHBsaWNhdGlvbi4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tYWluIn1dfSx7bmFtZToiZGl2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGl2IGVsZW1lbnQgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBhdCBhbGwuIEl0IHJlcHJlc2VudHMgaXRzIGNoaWxkcmVuLiBJdCBjYW4gYmUgdXNlZCB3aXRoIHRoZSBjbGFzcywgbGFuZywgYW5kIHRpdGxlIGF0dHJpYnV0ZXMgdG8gbWFyayB1cCBzZW1hbnRpY3MgY29tbW9uIHRvIGEgZ3JvdXAgb2YgY29uc2VjdXRpdmUgZWxlbWVudHMuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGl2In1dfSx7bmFtZToiYSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhlIGEgZWxlbWVudCBoYXMgYW4gaHJlZiBhdHRyaWJ1dGUsIHRoZW4gaXQgcmVwcmVzZW50cyBhIGh5cGVybGluayAoYSBoeXBlcnRleHQgYW5jaG9yKSBsYWJlbGVkIGJ5IGl0cyBjb250ZW50cy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiaHJlZiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQ29udGFpbnMgYSBVUkwgb3IgYSBVUkwgZnJhZ21lbnQgdGhhdCB0aGUgaHlwZXJsaW5rIHBvaW50cyB0by4ifX0se25hbWU6InRhcmdldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonU3BlY2lmaWVzIHdoZXJlIHRvIGRpc3BsYXkgdGhlIGxpbmtlZCBVUkwuIEl0IGlzIGEgbmFtZSBvZiwgb3Iga2V5d29yZCBmb3IsIGEgX2Jyb3dzaW5nIGNvbnRleHRfOiBhIHRhYiwgd2luZG93LCBvciBgPGlmcmFtZT5gLiBUaGUgZm9sbG93aW5nIGtleXdvcmRzIGhhdmUgc3BlY2lhbCBtZWFuaW5nczpcblxuKiAgIGBfc2VsZmA6IExvYWQgdGhlIFVSTCBpbnRvIHRoZSBzYW1lIGJyb3dzaW5nIGNvbnRleHQgYXMgdGhlIGN1cnJlbnQgb25lLiBUaGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLlxuKiAgIGBfYmxhbmtgOiBMb2FkIHRoZSBVUkwgaW50byBhIG5ldyBicm93c2luZyBjb250ZXh0LiBUaGlzIGlzIHVzdWFsbHkgYSB0YWIsIGJ1dCB1c2VycyBjYW4gY29uZmlndXJlIGJyb3dzZXJzIHRvIHVzZSBuZXcgd2luZG93cyBpbnN0ZWFkLlxuKiAgIGBfcGFyZW50YDogTG9hZCB0aGUgVVJMIGludG8gdGhlIHBhcmVudCBicm93c2luZyBjb250ZXh0IG9mIHRoZSBjdXJyZW50IG9uZS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG4qICAgYF90b3BgOiBMb2FkIHRoZSBVUkwgaW50byB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQgKHRoYXQgaXMsIHRoZSAiaGlnaGVzdCIgYnJvd3NpbmcgY29udGV4dCB0aGF0IGlzIGFuIGFuY2VzdG9yIG9mIHRoZSBjdXJyZW50IG9uZSwgYW5kIGhhcyBubyBwYXJlbnQpLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cblxuKipOb3RlOioqIFdoZW4gdXNpbmcgYHRhcmdldGAsIGNvbnNpZGVyIGFkZGluZyBgcmVsPSJub3JlZmVycmVyImAgdG8gYXZvaWQgZXhwbG9pdGF0aW9uIG9mIHRoZSBgd2luZG93Lm9wZW5lcmAgQVBJLlxuXG4qKk5vdGU6KiogTGlua2luZyB0byBhbm90aGVyIHBhZ2UgdXNpbmcgYHRhcmdldD0iX2JsYW5rImAgd2lsbCBydW4gdGhlIG5ldyBwYWdlIG9uIHRoZSBzYW1lIHByb2Nlc3MgYXMgeW91ciBwYWdlLiBJZiB0aGUgbmV3IHBhZ2UgaXMgZXhlY3V0aW5nIGV4cGVuc2l2ZSBKUywgeW91ciBwYWdlXCdzIHBlcmZvcm1hbmNlIG1heSBzdWZmZXIuIFRvIGF2b2lkIHRoaXMgdXNlIGByZWw9Im5vb3BlbmVyImAuJ319LHtuYW1lOiJkb3dubG9hZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaW5zdHJ1Y3RzIGJyb3dzZXJzIHRvIGRvd25sb2FkIGEgVVJMIGluc3RlYWQgb2YgbmF2aWdhdGluZyB0byBpdCwgc28gdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBzYXZlIGl0IGFzIGEgbG9jYWwgZmlsZS4gSWYgdGhlIGF0dHJpYnV0ZSBoYXMgYSB2YWx1ZSwgaXQgaXMgdXNlZCBhcyB0aGUgcHJlLWZpbGxlZCBmaWxlIG5hbWUgaW4gdGhlIFNhdmUgcHJvbXB0ICh0aGUgdXNlciBjYW4gc3RpbGwgY2hhbmdlIHRoZSBmaWxlIG5hbWUgaWYgdGhleSB3YW50KS4gVGhlcmUgYXJlIG5vIHJlc3RyaWN0aW9ucyBvbiBhbGxvd2VkIHZhbHVlcywgdGhvdWdoIGAvYCBhbmQgYFxcYCBhcmUgY29udmVydGVkIHRvIHVuZGVyc2NvcmVzLiBNb3N0IGZpbGUgc3lzdGVtcyBsaW1pdCBzb21lIHB1bmN0dWF0aW9uIGluIGZpbGUgbmFtZXMsIGFuZCBicm93c2VycyB3aWxsIGFkanVzdCB0aGUgc3VnZ2VzdGVkIG5hbWUgYWNjb3JkaW5nbHkuXG5cbioqTm90ZXM6KipcblxuKiAgIFRoaXMgYXR0cmlidXRlIG9ubHkgd29ya3MgZm9yIFtzYW1lLW9yaWdpbiBVUkxzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TYW1lLW9yaWdpbl9wb2xpY3kpLlxuKiAgIEFsdGhvdWdoIEhUVFAocykgVVJMcyBuZWVkIHRvIGJlIGluIHRoZSBzYW1lLW9yaWdpbiwgW2BibG9iOmAgVVJMc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1VSTC5jcmVhdGVPYmplY3RVUkwpIGFuZCBbYGRhdGE6YCBVUkxzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0Jhc2ljc19vZl9IVFRQL0RhdGFfVVJJcykgYXJlIGFsbG93ZWQgc28gdGhhdCBjb250ZW50IGdlbmVyYXRlZCBieSBKYXZhU2NyaXB0LCBzdWNoIGFzIHBpY3R1cmVzIGNyZWF0ZWQgaW4gYW4gaW1hZ2UtZWRpdG9yIFdlYiBhcHAsIGNhbiBiZSBkb3dubG9hZGVkLlxuKiAgIElmIHRoZSBIVFRQIGhlYWRlciBbYENvbnRlbnQtRGlzcG9zaXRpb246YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0NvbnRlbnQtRGlzcG9zaXRpb24pIGdpdmVzIGEgZGlmZmVyZW50IGZpbGVuYW1lIHRoYW4gdGhpcyBhdHRyaWJ1dGUsIHRoZSBIVFRQIGhlYWRlciB0YWtlcyBwcmlvcml0eSBvdmVyIHRoaXMgYXR0cmlidXRlLlxuKiAgIElmIGBDb250ZW50LURpc3Bvc2l0aW9uOmAgaXMgc2V0IHRvIGBpbmxpbmVgLCBGaXJlZm94IHByaW9yaXRpemVzIGBDb250ZW50LURpc3Bvc2l0aW9uYCwgbGlrZSB0aGUgZmlsZW5hbWUgY2FzZSwgd2hpbGUgQ2hyb21lIHByaW9yaXRpemVzIHRoZSBgZG93bmxvYWRgIGF0dHJpYnV0ZS4ifX0se25hbWU6InBpbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0NvbnRhaW5zIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgVVJMcyB0byB3aGljaCwgd2hlbiB0aGUgaHlwZXJsaW5rIGlzIGZvbGxvd2VkLCBbYFBPU1RgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL01ldGhvZHMvUE9TVCAiVGhlIEhUVFAgUE9TVCBtZXRob2Qgc2VuZHMgZGF0YSB0byB0aGUgc2VydmVyLiBUaGUgdHlwZSBvZiB0aGUgYm9keSBvZiB0aGUgcmVxdWVzdCBpcyBpbmRpY2F0ZWQgYnkgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIuIikgcmVxdWVzdHMgd2l0aCB0aGUgYm9keSBgUElOR2Agd2lsbCBiZSBzZW50IGJ5IHRoZSBicm93c2VyIChpbiB0aGUgYmFja2dyb3VuZCkuIFR5cGljYWxseSB1c2VkIGZvciB0cmFja2luZy4nfX0se25hbWU6InJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiU3BlY2lmaWVzIHRoZSByZWxhdGlvbnNoaXAgb2YgdGhlIHRhcmdldCBvYmplY3QgdG8gdGhlIGxpbmsgb2JqZWN0LiBUaGUgdmFsdWUgaXMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBbbGluayB0eXBlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9MaW5rX3R5cGVzKS4ifX0se25hbWU6ImhyZWZsYW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIGh1bWFuIGxhbmd1YWdlIG9mIHRoZSBsaW5rZWQgcmVzb3VyY2UuIEl0IGlzIHB1cmVseSBhZHZpc29yeSwgd2l0aCBubyBidWlsdC1pbiBmdW5jdGlvbmFsaXR5LiBBbGxvd2VkIHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBieSBbQkNQNDddKGh0dHBzOi8vd3d3LmlldGYub3JnL3JmYy9iY3AvYmNwNDcudHh0ICJUYWdzIGZvciBJZGVudGlmeWluZyBMYW5ndWFnZXMiKS4nfX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1NwZWNpZmllcyB0aGUgbWVkaWEgdHlwZSBpbiB0aGUgZm9ybSBvZiBhIFtNSU1FIHR5cGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvTUlNRV90eXBlICJNSU1FIHR5cGU6IEHCoE1JTUUgdHlwZcKgKG5vdyBwcm9wZXJseSBjYWxsZWQgIm1lZGlhIHR5cGUiLCBidXTCoGFsc28gc29tZXRpbWVzICJjb250ZW50IHR5cGUiKSBpcyBhIHN0cmluZyBzZW50IGFsb25nwqB3aXRoIGEgZmlsZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIHRoZSBmaWxlIChkZXNjcmliaW5nIHRoZSBjb250ZW50IGZvcm1hdCwgZm9yIGV4YW1wbGUsIGEgc291bmQgZmlsZSBtaWdodCBiZSBsYWJlbGVkwqBhdWRpby9vZ2csIG9yIGFuIGltYWdlIGZpbGXCoGltYWdlL3BuZykuIikgZm9yIHRoZSBsaW5rZWQgVVJMLiBJdCBpcyBwdXJlbHkgYWR2aXNvcnksIHdpdGggbm8gYnVpbHQtaW4gZnVuY3Rpb25hbGl0eS4nfX0se25hbWU6InJlZmVycmVycG9saWN5IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHdoaWNoIFtyZWZlcnJlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIpIHRvIHNlbmQgd2hlbiBmZXRjaGluZyB0aGUgVVJMOlxuXG4qICAgYCduby1yZWZlcnJlcidgIG1lYW5zIHRoZSBgUmVmZXJlcjpgIGhlYWRlciB3aWxsIG5vdCBiZSBzZW50LlxuKiAgIGAnbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGUnYCBtZWFucyBubyBgUmVmZXJlcjpgIGhlYWRlciB3aWxsIGJlIHNlbnQgd2hlbiBuYXZpZ2F0aW5nIHRvIGFuIG9yaWdpbiB3aXRob3V0IEhUVFBTLiBUaGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLlxuKiAgIGAnb3JpZ2luJ2AgbWVhbnMgdGhlIHJlZmVycmVyIHdpbGwgYmUgdGhlIFtvcmlnaW5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvT3JpZ2luKSBvZiB0aGUgcGFnZSwgbm90IGluY2x1ZGluZyBpbmZvcm1hdGlvbiBhZnRlciB0aGUgZG9tYWluLlxuKiAgIGAnb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luJ2AgbWVhbmluZyB0aGF0IG5hdmlnYXRpb25zIHRvIG90aGVyIG9yaWdpbnMgd2lsbCBiZSBsaW1pdGVkIHRvIHRoZSBzY2hlbWUsIHRoZSBob3N0IGFuZCB0aGUgcG9ydCwgd2hpbGUgbmF2aWdhdGlvbnMgb24gdGhlIHNhbWUgb3JpZ2luIHdpbGwgaW5jbHVkZSB0aGUgcmVmZXJyZXIncyBwYXRoLlxuKiAgIGAnc3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbidgXG4qICAgYCd1bnNhZmUtdXJsJ2AgbWVhbnMgdGhlIHJlZmVycmVyIHdpbGwgaW5jbHVkZSB0aGUgb3JpZ2luIGFuZCBwYXRoLCBidXQgbm90IHRoZSBmcmFnbWVudCwgcGFzc3dvcmQsIG9yIHVzZXJuYW1lLiBUaGlzIGlzIHVuc2FmZSBiZWNhdXNlIGl0IGNhbiBsZWFrIGRhdGEgZnJvbSBzZWN1cmUgVVJMcyB0byBpbnNlY3VyZSBvbmVzLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSJ9XX0se25hbWU6ImVtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZW0gZWxlbWVudCByZXByZXNlbnRzIHN0cmVzcyBlbXBoYXNpcyBvZiBpdHMgY29udGVudHMuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZW0ifV19LHtuYW1lOiJzdHJvbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzdHJvbmcgZWxlbWVudCByZXByZXNlbnRzIHN0cm9uZyBpbXBvcnRhbmNlLCBzZXJpb3VzbmVzcywgb3IgdXJnZW5jeSBmb3IgaXRzIGNvbnRlbnRzLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3N0cm9uZyJ9XX0se25hbWU6InNtYWxsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc21hbGwgZWxlbWVudCByZXByZXNlbnRzIHNpZGUgY29tbWVudHMgc3VjaCBhcyBzbWFsbCBwcmludC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zbWFsbCJ9XX0se25hbWU6InMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzIGVsZW1lbnQgcmVwcmVzZW50cyBjb250ZW50cyB0aGF0IGFyZSBubyBsb25nZXIgYWNjdXJhdGUgb3Igbm8gbG9uZ2VyIHJlbGV2YW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3MifV19LHtuYW1lOiJjaXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY2l0ZSBlbGVtZW50IHJlcHJlc2VudHMgYSByZWZlcmVuY2UgdG8gYSBjcmVhdGl2ZSB3b3JrLiBJdCBtdXN0IGluY2x1ZGUgdGhlIHRpdGxlIG9mIHRoZSB3b3JrIG9yIHRoZSBuYW1lIG9mIHRoZSBhdXRob3IocGVyc29uLCBwZW9wbGUgb3Igb3JnYW5pemF0aW9uKSBvciBhbiBVUkwgcmVmZXJlbmNlLCBvciBhIHJlZmVyZW5jZSBpbiBhYmJyZXZpYXRlZCBmb3JtIGFzIHBlciB0aGUgY29udmVudGlvbnMgdXNlZCBmb3IgdGhlIGFkZGl0aW9uIG9mIGNpdGF0aW9uIG1ldGFkYXRhLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NpdGUifV19LHtuYW1lOiJxIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcSBlbGVtZW50IHJlcHJlc2VudHMgc29tZSBwaHJhc2luZyBjb250ZW50IHF1b3RlZCBmcm9tIGFub3RoZXIgc291cmNlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjaXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgaXMgYSBVUkwgdGhhdCBkZXNpZ25hdGVzIGEgc291cmNlIGRvY3VtZW50IG9yIG1lc3NhZ2UgZm9yIHRoZSBpbmZvcm1hdGlvbiBxdW90ZWQuIFRoaXMgYXR0cmlidXRlIGlzIGludGVuZGVkIHRvIHBvaW50IHRvIGluZm9ybWF0aW9uIGV4cGxhaW5pbmcgdGhlIGNvbnRleHQgb3IgdGhlIHJlZmVyZW5jZSBmb3IgdGhlIHF1b3RlLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3EifV19LHtuYW1lOiJkZm4iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkZm4gZWxlbWVudCByZXByZXNlbnRzIHRoZSBkZWZpbmluZyBpbnN0YW5jZSBvZiBhIHRlcm0uIFRoZSBwYXJhZ3JhcGgsIGRlc2NyaXB0aW9uIGxpc3QgZ3JvdXAsIG9yIHNlY3Rpb24gdGhhdCBpcyB0aGUgbmVhcmVzdCBhbmNlc3RvciBvZiB0aGUgZGZuIGVsZW1lbnQgbXVzdCBhbHNvIGNvbnRhaW4gdGhlIGRlZmluaXRpb24ocykgZm9yIHRoZSB0ZXJtIGdpdmVuIGJ5IHRoZSBkZm4gZWxlbWVudC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kZm4ifV19LHtuYW1lOiJhYmJyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYWJiciBlbGVtZW50IHJlcHJlc2VudHMgYW4gYWJicmV2aWF0aW9uIG9yIGFjcm9ueW0sIG9wdGlvbmFsbHkgd2l0aCBpdHMgZXhwYW5zaW9uLiBUaGUgdGl0bGUgYXR0cmlidXRlIG1heSBiZSB1c2VkIHRvIHByb3ZpZGUgYW4gZXhwYW5zaW9uIG9mIHRoZSBhYmJyZXZpYXRpb24uIFRoZSBhdHRyaWJ1dGUsIGlmIHNwZWNpZmllZCwgbXVzdCBjb250YWluIGFuIGV4cGFuc2lvbiBvZiB0aGUgYWJicmV2aWF0aW9uLCBhbmQgbm90aGluZyBlbHNlLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2FiYnIifV19LHtuYW1lOiJydWJ5IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcnVieSBlbGVtZW50IGFsbG93cyBvbmUgb3IgbW9yZSBzcGFucyBvZiBwaHJhc2luZyBjb250ZW50IHRvIGJlIG1hcmtlZCB3aXRoIHJ1YnkgYW5ub3RhdGlvbnMuIFJ1YnkgYW5ub3RhdGlvbnMgYXJlIHNob3J0IHJ1bnMgb2YgdGV4dCBwcmVzZW50ZWQgYWxvbmdzaWRlIGJhc2UgdGV4dCwgcHJpbWFyaWx5IHVzZWQgaW4gRWFzdCBBc2lhbiB0eXBvZ3JhcGh5IGFzIGEgZ3VpZGUgZm9yIHByb251bmNpYXRpb24gb3IgdG8gaW5jbHVkZSBvdGhlciBhbm5vdGF0aW9ucy4gSW4gSmFwYW5lc2UsIHRoaXMgZm9ybSBvZiB0eXBvZ3JhcGh5IGlzIGFsc28ga25vd24gYXMgZnVyaWdhbmEuIFJ1YnkgdGV4dCBjYW4gYXBwZWFyIG9uIGVpdGhlciBzaWRlLCBhbmQgc29tZXRpbWVzIGJvdGggc2lkZXMsIG9mIHRoZSBiYXNlIHRleHQsIGFuZCBpdCBpcyBwb3NzaWJsZSB0byBjb250cm9sIGl0cyBwb3NpdGlvbiB1c2luZyBDU1MuIEEgbW9yZSBjb21wbGV0ZSBpbnRyb2R1Y3Rpb24gdG8gcnVieSBjYW4gYmUgZm91bmQgaW4gdGhlIFVzZSBDYXNlcyAmIEV4cGxvcmF0b3J5IEFwcHJvYWNoZXMgZm9yIFJ1YnkgTWFya3VwIGRvY3VtZW50IGFzIHdlbGwgYXMgaW4gQ1NTIFJ1YnkgTW9kdWxlIExldmVsIDEuIFtSVUJZLVVDXSBbQ1NTUlVCWV0ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ydWJ5In1dfSx7bmFtZToicmIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSByYiBlbGVtZW50IG1hcmtzIHRoZSBiYXNlIHRleHQgY29tcG9uZW50IG9mIGEgcnVieSBhbm5vdGF0aW9uLiBXaGVuIGl0IGlzIHRoZSBjaGlsZCBvZiBhIHJ1YnkgZWxlbWVudCwgaXQgZG9lc24ndCByZXByZXNlbnQgYW55dGhpbmcgaXRzZWxmLCBidXQgaXRzIHBhcmVudCBydWJ5IGVsZW1lbnQgdXNlcyBpdCBhcyBwYXJ0IG9mIGRldGVybWluaW5nIHdoYXQgaXQgcmVwcmVzZW50cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9yYiJ9XX0se25hbWU6InJ0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcnQgZWxlbWVudCBtYXJrcyB0aGUgcnVieSB0ZXh0IGNvbXBvbmVudCBvZiBhIHJ1YnkgYW5ub3RhdGlvbi4gV2hlbiBpdCBpcyB0aGUgY2hpbGQgb2YgYSBydWJ5IGVsZW1lbnQgb3Igb2YgYW4gcnRjIGVsZW1lbnQgdGhhdCBpcyBpdHNlbGYgdGhlIGNoaWxkIG9mIGEgcnVieSBlbGVtZW50LCBpdCBkb2Vzbid0IHJlcHJlc2VudCBhbnl0aGluZyBpdHNlbGYsIGJ1dCBpdHMgYW5jZXN0b3IgcnVieSBlbGVtZW50IHVzZXMgaXQgYXMgcGFydCBvZiBkZXRlcm1pbmluZyB3aGF0IGl0IHJlcHJlc2VudHMuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcnQifV19LHtuYW1lOiJycCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHJwIGVsZW1lbnQgaXMgdXNlZCB0byBwcm92aWRlIGZhbGxiYWNrIHRleHQgdG8gYmUgc2hvd24gYnkgdXNlciBhZ2VudHMgdGhhdCBkb24ndCBzdXBwb3J0IHJ1YnkgYW5ub3RhdGlvbnMuIE9uZSB3aWRlc3ByZWFkIGNvbnZlbnRpb24gaXMgdG8gcHJvdmlkZSBwYXJlbnRoZXNlcyBhcm91bmQgdGhlIHJ1YnkgdGV4dCBjb21wb25lbnQgb2YgYSBydWJ5IGFubm90YXRpb24uIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcnAifV19LHtuYW1lOiJ0aW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGltZSBlbGVtZW50IHJlcHJlc2VudHMgaXRzIGNvbnRlbnRzLCBhbG9uZyB3aXRoIGEgbWFjaGluZS1yZWFkYWJsZSBmb3JtIG9mIHRob3NlIGNvbnRlbnRzIGluIHRoZSBkYXRldGltZSBhdHRyaWJ1dGUuIFRoZSBraW5kIG9mIGNvbnRlbnQgaXMgbGltaXRlZCB0byB2YXJpb3VzIGtpbmRzIG9mIGRhdGVzLCB0aW1lcywgdGltZS16b25lIG9mZnNldHMsIGFuZCBkdXJhdGlvbnMsIGFzIGRlc2NyaWJlZCBiZWxvdy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZGF0ZXRpbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgdGltZSBhbmQvb3IgZGF0ZSBvZiB0aGUgZWxlbWVudCBhbmQgbXVzdCBiZSBpbiBvbmUgb2YgdGhlIGZvcm1hdHMgZGVzY3JpYmVkIGJlbG93LiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RpbWUifV19LHtuYW1lOiJjb2RlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY29kZSBlbGVtZW50IHJlcHJlc2VudHMgYSBmcmFnbWVudCBvZiBjb21wdXRlciBjb2RlLiBUaGlzIGNvdWxkIGJlIGFuIFhNTCBlbGVtZW50IG5hbWUsIGEgZmlsZSBuYW1lLCBhIGNvbXB1dGVyIHByb2dyYW0sIG9yIGFueSBvdGhlciBzdHJpbmcgdGhhdCBhIGNvbXB1dGVyIHdvdWxkIHJlY29nbml6ZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2RlIn1dfSx7bmFtZToidmFyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdmFyIGVsZW1lbnQgcmVwcmVzZW50cyBhIHZhcmlhYmxlLiBUaGlzIGNvdWxkIGJlIGFuIGFjdHVhbCB2YXJpYWJsZSBpbiBhIG1hdGhlbWF0aWNhbCBleHByZXNzaW9uIG9yIHByb2dyYW1taW5nIGNvbnRleHQsIGFuIGlkZW50aWZpZXIgcmVwcmVzZW50aW5nIGEgY29uc3RhbnQsIGEgc3ltYm9sIGlkZW50aWZ5aW5nIGEgcGh5c2ljYWwgcXVhbnRpdHksIGEgZnVuY3Rpb24gcGFyYW1ldGVyLCBvciBqdXN0IGJlIGEgdGVybSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgaW4gcHJvc2UuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdmFyIn1dfSx7bmFtZToic2FtcCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNhbXAgZWxlbWVudCByZXByZXNlbnRzIHNhbXBsZSBvciBxdW90ZWQgb3V0cHV0IGZyb20gYW5vdGhlciBwcm9ncmFtIG9yIGNvbXB1dGluZyBzeXN0ZW0uIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2FtcCJ9XX0se25hbWU6ImtiZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGtiZCBlbGVtZW50IHJlcHJlc2VudHMgdXNlciBpbnB1dCAodHlwaWNhbGx5IGtleWJvYXJkIGlucHV0LCBhbHRob3VnaCBpdCBtYXkgYWxzbyBiZSB1c2VkIHRvIHJlcHJlc2VudCBvdGhlciBpbnB1dCwgc3VjaCBhcyB2b2ljZSBjb21tYW5kcykuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQva2JkIn1dfSx7bmFtZToic3ViIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc3ViIGVsZW1lbnQgcmVwcmVzZW50cyBhIHN1YnNjcmlwdC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zdWIifV19LHtuYW1lOiJzdXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzdXAgZWxlbWVudCByZXByZXNlbnRzIGEgc3VwZXJzY3JpcHQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3VwIn1dfSx7bmFtZToiaSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGkgZWxlbWVudCByZXByZXNlbnRzIGEgc3BhbiBvZiB0ZXh0IGluIGFuIGFsdGVybmF0ZSB2b2ljZSBvciBtb29kLCBvciBvdGhlcndpc2Ugb2Zmc2V0IGZyb20gdGhlIG5vcm1hbCBwcm9zZSBpbiBhIG1hbm5lciBpbmRpY2F0aW5nIGEgZGlmZmVyZW50IHF1YWxpdHkgb2YgdGV4dCwgc3VjaCBhcyBhIHRheG9ub21pYyBkZXNpZ25hdGlvbiwgYSB0ZWNobmljYWwgdGVybSwgYW4gaWRpb21hdGljIHBocmFzZSBmcm9tIGFub3RoZXIgbGFuZ3VhZ2UsIHRyYW5zbGl0ZXJhdGlvbiwgYSB0aG91Z2h0LCBvciBhIHNoaXAgbmFtZSBpbiBXZXN0ZXJuIHRleHRzLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2kifV19LHtuYW1lOiJiIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYiBlbGVtZW50IHJlcHJlc2VudHMgYSBzcGFuIG9mIHRleHQgdG8gd2hpY2ggYXR0ZW50aW9uIGlzIGJlaW5nIGRyYXduIGZvciB1dGlsaXRhcmlhbiBwdXJwb3NlcyB3aXRob3V0IGNvbnZleWluZyBhbnkgZXh0cmEgaW1wb3J0YW5jZSBhbmQgd2l0aCBubyBpbXBsaWNhdGlvbiBvZiBhbiBhbHRlcm5hdGUgdm9pY2Ugb3IgbW9vZCwgc3VjaCBhcyBrZXkgd29yZHMgaW4gYSBkb2N1bWVudCBhYnN0cmFjdCwgcHJvZHVjdCBuYW1lcyBpbiBhIHJldmlldywgYWN0aW9uYWJsZSB3b3JkcyBpbiBpbnRlcmFjdGl2ZSB0ZXh0LWRyaXZlbiBzb2Z0d2FyZSwgb3IgYW4gYXJ0aWNsZSBsZWRlLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2IifV19LHtuYW1lOiJ1IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdSBlbGVtZW50IHJlcHJlc2VudHMgYSBzcGFuIG9mIHRleHQgd2l0aCBhbiB1bmFydGljdWxhdGVkLCB0aG91Z2ggZXhwbGljaXRseSByZW5kZXJlZCwgbm9uLXRleHR1YWwgYW5ub3RhdGlvbiwgc3VjaCBhcyBsYWJlbGluZyB0aGUgdGV4dCBhcyBiZWluZyBhIHByb3BlciBuYW1lIGluIENoaW5lc2UgdGV4dCAoYSBDaGluZXNlIHByb3BlciBuYW1lIG1hcmspLCBvciBsYWJlbGluZyB0aGUgdGV4dCBhcyBiZWluZyBtaXNzcGVsdC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC91In1dfSx7bmFtZToibWFyayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1hcmsgZWxlbWVudCByZXByZXNlbnRzIGEgcnVuIG9mIHRleHQgaW4gb25lIGRvY3VtZW50IG1hcmtlZCBvciBoaWdobGlnaHRlZCBmb3IgcmVmZXJlbmNlIHB1cnBvc2VzLCBkdWUgdG8gaXRzIHJlbGV2YW5jZSBpbiBhbm90aGVyIGNvbnRleHQuIFdoZW4gdXNlZCBpbiBhIHF1b3RhdGlvbiBvciBvdGhlciBibG9jayBvZiB0ZXh0IHJlZmVycmVkIHRvIGZyb20gdGhlIHByb3NlLCBpdCBpbmRpY2F0ZXMgYSBoaWdobGlnaHQgdGhhdCB3YXMgbm90IG9yaWdpbmFsbHkgcHJlc2VudCBidXQgd2hpY2ggaGFzIGJlZW4gYWRkZWQgdG8gYnJpbmcgdGhlIHJlYWRlcidzIGF0dGVudGlvbiB0byBhIHBhcnQgb2YgdGhlIHRleHQgdGhhdCBtaWdodCBub3QgaGF2ZSBiZWVuIGNvbnNpZGVyZWQgaW1wb3J0YW50IGJ5IHRoZSBvcmlnaW5hbCBhdXRob3Igd2hlbiB0aGUgYmxvY2sgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiwgYnV0IHdoaWNoIGlzIG5vdyB1bmRlciBwcmV2aW91c2x5IHVuZXhwZWN0ZWQgc2NydXRpbnkuIFdoZW4gdXNlZCBpbiB0aGUgbWFpbiBwcm9zZSBvZiBhIGRvY3VtZW50LCBpdCBpbmRpY2F0ZXMgYSBwYXJ0IG9mIHRoZSBkb2N1bWVudCB0aGF0IGhhcyBiZWVuIGhpZ2hsaWdodGVkIGR1ZSB0byBpdHMgbGlrZWx5IHJlbGV2YW5jZSB0byB0aGUgdXNlcidzIGN1cnJlbnQgYWN0aXZpdHkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWFyayJ9XX0se25hbWU6ImJkaSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJkaSBlbGVtZW50IHJlcHJlc2VudHMgYSBzcGFuIG9mIHRleHQgdGhhdCBpcyB0byBiZSBpc29sYXRlZCBmcm9tIGl0cyBzdXJyb3VuZGluZ3MgZm9yIHRoZSBwdXJwb3NlcyBvZiBiaWRpcmVjdGlvbmFsIHRleHQgZm9ybWF0dGluZy4gW0JJREldIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYmRpIn1dfSx7bmFtZToiYmRvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYmRvIGVsZW1lbnQgcmVwcmVzZW50cyBleHBsaWNpdCB0ZXh0IGRpcmVjdGlvbmFsaXR5IGZvcm1hdHRpbmcgY29udHJvbCBmb3IgaXRzIGNoaWxkcmVuLiBJdCBhbGxvd3MgYXV0aG9ycyB0byBvdmVycmlkZSB0aGUgVW5pY29kZSBiaWRpcmVjdGlvbmFsIGFsZ29yaXRobSBieSBleHBsaWNpdGx5IHNwZWNpZnlpbmcgYSBkaXJlY3Rpb24gb3ZlcnJpZGUuIFtCSURJXSJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkaXIiLGRlc2NyaXB0aW9uOiJUaGUgZGlyZWN0aW9uIGluIHdoaWNoIHRleHQgc2hvdWxkIGJlIHJlbmRlcmVkIGluIHRoaXMgZWxlbWVudCdzIGNvbnRlbnRzLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGx0cmA6IEluZGljYXRlcyB0aGF0IHRoZSB0ZXh0IHNob3VsZCBnbyBpbiBhIGxlZnQtdG8tcmlnaHQgZGlyZWN0aW9uLlxuKiAgIGBydGxgOiBJbmRpY2F0ZXMgdGhhdCB0aGUgdGV4dCBzaG91bGQgZ28gaW4gYSByaWdodC10by1sZWZ0IGRpcmVjdGlvbi4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2JkbyJ9XX0se25hbWU6InNwYW4iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzcGFuIGVsZW1lbnQgZG9lc24ndCBtZWFuIGFueXRoaW5nIG9uIGl0cyBvd24sIGJ1dCBjYW4gYmUgdXNlZnVsIHdoZW4gdXNlZCB0b2dldGhlciB3aXRoIHRoZSBnbG9iYWwgYXR0cmlidXRlcywgZS5nLiBjbGFzcywgbGFuZywgb3IgZGlyLiBJdCByZXByZXNlbnRzIGl0cyBjaGlsZHJlbi4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zcGFuIn1dfSx7bmFtZToiYnIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiciBlbGVtZW50IHJlcHJlc2VudHMgYSBsaW5lIGJyZWFrLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjbGVhciIsZGVzY3JpcHRpb246IkluZGljYXRlcyB3aGVyZSB0byBiZWdpbiB0aGUgbmV4dCBsaW5lIGFmdGVyIHRoZSBicmVhay4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2JyIn1dfSx7bmFtZToid2JyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgd2JyIGVsZW1lbnQgcmVwcmVzZW50cyBhIGxpbmUgYnJlYWsgb3Bwb3J0dW5pdHkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvd2JyIn1dfSx7bmFtZToiaW5zIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaW5zIGVsZW1lbnQgcmVwcmVzZW50cyBhbiBhZGRpdGlvbiB0byB0aGUgZG9jdW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBVUkkgb2YgYSByZXNvdXJjZSB0aGF0IGV4cGxhaW5zIHRoZSBjaGFuZ2UsIHN1Y2ggYXMgYSBsaW5rIHRvIG1lZXRpbmcgbWludXRlcyBvciBhIHRpY2tldCBpbiBhIHRyb3VibGVzaG9vdGluZyBzeXN0ZW0uIn0se25hbWU6ImRhdGV0aW1lIixkZXNjcmlwdGlvbjonVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSB0aW1lIGFuZCBkYXRlIG9mIHRoZSBjaGFuZ2UgYW5kIG11c3QgYmUgYSB2YWxpZCBkYXRlIHdpdGggYW4gb3B0aW9uYWwgdGltZSBzdHJpbmcuIElmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgcGFyc2VkIGFzIGEgZGF0ZSB3aXRoIGFuIG9wdGlvbmFsIHRpbWUgc3RyaW5nLCB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgdGltZSBzdGFtcC4gRm9yIHRoZSBmb3JtYXQgb2YgdGhlIHN0cmluZyB3aXRob3V0IGEgdGltZSwgc2VlIFtGb3JtYXQgb2YgYSB2YWxpZCBkYXRlIHN0cmluZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMjRm9ybWF0X29mX2FfdmFsaWRfZGF0ZV9zdHJpbmcgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKSBpbiBbRGF0ZSBhbmQgdGltZSBmb3JtYXRzIHVzZWQgaW4gSFRNTF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKS4gVGhlIGZvcm1hdCBvZiB0aGUgc3RyaW5nIGlmIGl0IGluY2x1ZGVzIGJvdGggZGF0ZSBhbmQgdGltZSBpcyBjb3ZlcmVkIGluIFtGb3JtYXQgb2YgYSB2YWxpZCBsb2NhbCBkYXRlIGFuZCB0aW1lIHN0cmluZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMjRm9ybWF0X29mX2FfdmFsaWRfbG9jYWxfZGF0ZV9hbmRfdGltZV9zdHJpbmcgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKSBpbiBbRGF0ZSBhbmQgdGltZSBmb3JtYXRzIHVzZWQgaW4gSFRNTF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKS4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucyJ9XX0se25hbWU6ImRlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRlbCBlbGVtZW50IHJlcHJlc2VudHMgYSByZW1vdmFsIGZyb20gdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjaXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIFVSSSBmb3IgYSByZXNvdXJjZSB0aGF0IGV4cGxhaW5zIHRoZSBjaGFuZ2UgKGZvciBleGFtcGxlLCBtZWV0aW5nIG1pbnV0ZXMpLiJ9fSx7bmFtZToiZGF0ZXRpbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgdGltZSBhbmQgZGF0ZSBvZiB0aGUgY2hhbmdlIGFuZCBtdXN0IGJlIGEgdmFsaWQgZGF0ZSBzdHJpbmcgd2l0aCBhbiBvcHRpb25hbCB0aW1lLiBJZiB0aGUgdmFsdWUgY2Fubm90IGJlIHBhcnNlZCBhcyBhIGRhdGUgd2l0aCBhbiBvcHRpb25hbCB0aW1lIHN0cmluZywgdGhlIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIHRpbWUgc3RhbXAuIEZvciB0aGUgZm9ybWF0IG9mIHRoZSBzdHJpbmcgd2l0aG91dCBhIHRpbWUsIHNlZSBbRm9ybWF0IG9mIGEgdmFsaWQgZGF0ZSBzdHJpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRGF0ZV9hbmRfdGltZV9mb3JtYXRzI0Zvcm1hdF9vZl9hX3ZhbGlkX2RhdGVfc3RyaW5nICJDZXJ0YWluIEhUTUwgZWxlbWVudHMgdXNlIGRhdGUgYW5kL29yIHRpbWUgdmFsdWVzLiBUaGUgZm9ybWF0cyBvZiB0aGUgc3RyaW5ncyB0aGF0IHNwZWNpZnkgdGhlc2UgYXJlIGRlc2NyaWJlZCBpbiB0aGlzIGFydGljbGUuIikgaW4gW0RhdGUgYW5kIHRpbWUgZm9ybWF0cyB1c2VkIGluIEhUTUxdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRGF0ZV9hbmRfdGltZV9mb3JtYXRzICJDZXJ0YWluIEhUTUwgZWxlbWVudHMgdXNlIGRhdGUgYW5kL29yIHRpbWUgdmFsdWVzLiBUaGUgZm9ybWF0cyBvZiB0aGUgc3RyaW5ncyB0aGF0IHNwZWNpZnkgdGhlc2UgYXJlIGRlc2NyaWJlZCBpbiB0aGlzIGFydGljbGUuIikuIFRoZSBmb3JtYXQgb2YgdGhlIHN0cmluZyBpZiBpdCBpbmNsdWRlcyBib3RoIGRhdGUgYW5kIHRpbWUgaXMgY292ZXJlZCBpbiBbRm9ybWF0IG9mIGEgdmFsaWQgbG9jYWwgZGF0ZSBhbmQgdGltZSBzdHJpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRGF0ZV9hbmRfdGltZV9mb3JtYXRzI0Zvcm1hdF9vZl9hX3ZhbGlkX2xvY2FsX2RhdGVfYW5kX3RpbWVfc3RyaW5nICJDZXJ0YWluIEhUTUwgZWxlbWVudHMgdXNlIGRhdGUgYW5kL29yIHRpbWUgdmFsdWVzLiBUaGUgZm9ybWF0cyBvZiB0aGUgc3RyaW5ncyB0aGF0IHNwZWNpZnkgdGhlc2UgYXJlIGRlc2NyaWJlZCBpbiB0aGlzIGFydGljbGUuIikgaW4gW0RhdGUgYW5kIHRpbWUgZm9ybWF0cyB1c2VkIGluIEhUTUxdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRGF0ZV9hbmRfdGltZV9mb3JtYXRzICJDZXJ0YWluIEhUTUwgZWxlbWVudHMgdXNlIGRhdGUgYW5kL29yIHRpbWUgdmFsdWVzLiBUaGUgZm9ybWF0cyBvZiB0aGUgc3RyaW5ncyB0aGF0IHNwZWNpZnkgdGhlc2UgYXJlIGRlc2NyaWJlZCBpbiB0aGlzIGFydGljbGUuIikuJ319XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGVsIn1dfSx7bmFtZToicGljdHVyZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBpY3R1cmUgZWxlbWVudCBpcyBhIGNvbnRhaW5lciB3aGljaCBwcm92aWRlcyBtdWx0aXBsZSBzb3VyY2VzIHRvIGl0cyBjb250YWluZWQgaW1nIGVsZW1lbnQgdG8gYWxsb3cgYXV0aG9ycyB0byBkZWNsYXJhdGl2ZWx5IGNvbnRyb2wgb3IgZ2l2ZSBoaW50cyB0byB0aGUgdXNlciBhZ2VudCBhYm91dCB3aGljaCBpbWFnZSByZXNvdXJjZSB0byB1c2UsIGJhc2VkIG9uIHRoZSBzY3JlZW4gcGl4ZWwgZGVuc2l0eSwgdmlld3BvcnQgc2l6ZSwgaW1hZ2UgZm9ybWF0LCBhbmQgb3RoZXIgZmFjdG9ycy4gSXQgcmVwcmVzZW50cyBpdHMgY2hpbGRyZW4uIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcGljdHVyZSJ9XX0se25hbWU6ImltZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gaW1nIGVsZW1lbnQgcmVwcmVzZW50cyBhbiBpbWFnZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWx0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIGFuIGFsdGVybmF0aXZlIHRleHQgZGVzY3JpcHRpb24gb2YgdGhlIGltYWdlLlxuXG4qKk5vdGU6KiogQnJvd3NlcnMgZG8gbm90IGFsd2F5cyBkaXNwbGF5IHRoZSBpbWFnZSByZWZlcmVuY2VkIGJ5IHRoZSBlbGVtZW50LiBUaGlzIGlzIHRoZSBjYXNlIGZvciBub24tZ3JhcGhpY2FsIGJyb3dzZXJzIChpbmNsdWRpbmcgdGhvc2UgdXNlZCBieSBwZW9wbGUgd2l0aCB2aXN1YWwgaW1wYWlybWVudHMpLCBpZiB0aGUgdXNlciBjaG9vc2VzIG5vdCB0byBkaXNwbGF5IGltYWdlcywgb3IgaWYgdGhlIGJyb3dzZXIgY2Fubm90IGRpc3BsYXkgdGhlIGltYWdlIGJlY2F1c2UgaXQgaXMgaW52YWxpZCBvciBhbiBbdW5zdXBwb3J0ZWQgdHlwZV0oI1N1cHBvcnRlZF9pbWFnZV9mb3JtYXRzKS4gSW4gdGhlc2UgY2FzZXMsIHRoZSBicm93c2VyIG1heSByZXBsYWNlIHRoZSBpbWFnZSB3aXRoIHRoZSB0ZXh0IGRlZmluZWQgaW4gdGhpcyBlbGVtZW50XCdzIGBhbHRgIGF0dHJpYnV0ZS4gWW91IHNob3VsZCwgZm9yIHRoZXNlIHJlYXNvbnMgYW5kIG90aGVycywgcHJvdmlkZSBhIHVzZWZ1bCB2YWx1ZSBmb3IgYGFsdGAgd2hlbmV2ZXIgcG9zc2libGUuXG5cbioqTm90ZToqKiBPbWl0dGluZyB0aGlzIGF0dHJpYnV0ZSBhbHRvZ2V0aGVyIGluZGljYXRlcyB0aGF0IHRoZSBpbWFnZSBpcyBhIGtleSBwYXJ0IG9mIHRoZSBjb250ZW50LCBhbmQgbm8gdGV4dHVhbCBlcXVpdmFsZW50IGlzIGF2YWlsYWJsZS4gU2V0dGluZyB0aGlzIGF0dHJpYnV0ZSB0byBhbiBlbXB0eSBzdHJpbmcgKGBhbHQ9IiJgKSBpbmRpY2F0ZXMgdGhhdCB0aGlzIGltYWdlIGlzIF9ub3RfIGEga2V5IHBhcnQgb2YgdGhlIGNvbnRlbnQgKGRlY29yYXRpdmUpLCBhbmQgdGhhdCBub24tdmlzdWFsIGJyb3dzZXJzIG1heSBvbWl0IGl0IGZyb20gcmVuZGVyaW5nLid9fSx7bmFtZToic3JjIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaW1hZ2UgVVJMLiBUaGlzIGF0dHJpYnV0ZSBpcyBtYW5kYXRvcnkgZm9yIHRoZSBgPGltZz5gIGVsZW1lbnQuIE9uIGJyb3dzZXJzIHN1cHBvcnRpbmcgYHNyY3NldGAsIGBzcmNgIGlzIHRyZWF0ZWQgbGlrZSBhIGNhbmRpZGF0ZSBpbWFnZSB3aXRoIGEgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9yIGAxeGAgdW5sZXNzIGFuIGltYWdlIHdpdGggdGhpcyBwaXhlbCBkZW5zaXR5IGRlc2NyaXB0b3IgaXMgYWxyZWFkeSBkZWZpbmVkIGluIGBzcmNzZXQsYCBvciB1bmxlc3MgYHNyY3NldGAgY29udGFpbnMgJ2B3YCcgZGVzY3JpcHRvcnMuIn19LHtuYW1lOiJzcmNzZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgbGlzdCBvZiBvbmUgb3IgbW9yZSBzdHJpbmdzIHNlcGFyYXRlZCBieSBjb21tYXMgaW5kaWNhdGluZyBhIHNldCBvZiBwb3NzaWJsZSBpbWFnZSBzb3VyY2VzIGZvciB0aGUgdXNlciBhZ2VudCB0byB1c2UuIEVhY2ggc3RyaW5nIGlzIGNvbXBvc2VkIG9mOlxuXG4xLiAgYSBVUkwgdG8gYW4gaW1hZ2UsXG4yLiAgb3B0aW9uYWxseSwgd2hpdGVzcGFjZSBmb2xsb3dlZCBieSBvbmUgb2Y6XG4gICAgKiAgIEEgd2lkdGggZGVzY3JpcHRvciwgb3IgYSBwb3NpdGl2ZSBpbnRlZ2VyIGRpcmVjdGx5IGZvbGxvd2VkIGJ5ICdgd2AnLiBUaGUgd2lkdGggZGVzY3JpcHRvciBpcyBkaXZpZGVkIGJ5IHRoZSBzb3VyY2Ugc2l6ZSBnaXZlbiBpbiB0aGUgYHNpemVzYCBhdHRyaWJ1dGUgdG8gY2FsY3VsYXRlIHRoZSBlZmZlY3RpdmUgcGl4ZWwgZGVuc2l0eS5cbiAgICAqICAgQSBwaXhlbCBkZW5zaXR5IGRlc2NyaXB0b3IsIHdoaWNoIGlzIGEgcG9zaXRpdmUgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGRpcmVjdGx5IGZvbGxvd2VkIGJ5ICdgeGAnLlxuXG5JZiBubyBkZXNjcmlwdG9yIGlzIHNwZWNpZmllZCwgdGhlIHNvdXJjZSBpcyBhc3NpZ25lZCB0aGUgZGVmYXVsdCBkZXNjcmlwdG9yOiBgMXhgLlxuXG5JdCBpcyBpbmNvcnJlY3QgdG8gbWl4IHdpZHRoIGRlc2NyaXB0b3JzIGFuZCBwaXhlbCBkZW5zaXR5IGRlc2NyaXB0b3JzIGluIHRoZSBzYW1lIGBzcmNzZXRgIGF0dHJpYnV0ZS4gRHVwbGljYXRlIGRlc2NyaXB0b3JzIChmb3IgaW5zdGFuY2UsIHR3byBzb3VyY2VzIGluIHRoZSBzYW1lIGBzcmNzZXRgIHdoaWNoIGFyZSBib3RoIGRlc2NyaWJlZCB3aXRoICdgMnhgJykgYXJlIGFsc28gaW52YWxpZC5cblxuVGhlIHVzZXIgYWdlbnQgc2VsZWN0cyBhbnkgb25lIG9mIHRoZSBhdmFpbGFibGUgc291cmNlcyBhdCBpdHMgZGlzY3JldGlvbi4gVGhpcyBwcm92aWRlcyB0aGVtIHdpdGggc2lnbmlmaWNhbnQgbGVld2F5IHRvIHRhaWxvciB0aGVpciBzZWxlY3Rpb24gYmFzZWQgb24gdGhpbmdzIGxpa2UgdXNlciBwcmVmZXJlbmNlcyBvciBiYW5kd2lkdGggY29uZGl0aW9ucy4gU2VlIG91ciBbUmVzcG9uc2l2ZSBpbWFnZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTGVhcm4vSFRNTC9NdWx0aW1lZGlhX2FuZF9lbWJlZGRpbmcvUmVzcG9uc2l2ZV9pbWFnZXMpIHR1dG9yaWFsIGZvciBhbiBleGFtcGxlLiJ9fSx7bmFtZToiY3Jvc3NvcmlnaW4iLHZhbHVlU2V0OiJ4byIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgaWYgdGhlIGZldGNoaW5nIG9mIHRoZSByZWxhdGVkIGltYWdlIG11c3QgYmUgZG9uZSB1c2luZyBDT1JTIG9yIG5vdC4gW0NPUlMtZW5hYmxlZCBpbWFnZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ09SU19FbmFibGVkX0ltYWdlKSBjYW4gYmUgcmV1c2VkIGluIHRoZSBbYDxjYW52YXM+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhbnZhcyAiVXNlIHRoZSBIVE1MIDxjYW52YXM+IGVsZW1lbnQgd2l0aCBlaXRoZXIgdGhlIGNhbnZhcyBzY3JpcHRpbmcgQVBJIG9yIHRoZSBXZWJHTCBBUEkgdG8gZHJhdyBncmFwaGljcyBhbmQgYW5pbWF0aW9ucy4iKSBlbGVtZW50IHdpdGhvdXQgYmVpbmcgIlt0YWludGVkXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0NPUlNfZW5hYmxlZF9pbWFnZSNXaGF0X2lzX2FfdGFpbnRlZF9jYW52YXMpLiIgVGhlIGFsbG93ZWQgdmFsdWVzIGFyZTonfX0se25hbWU6InVzZW1hcCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIHBhcnRpYWwgVVJMIChzdGFydGluZyB3aXRoIFwnI1wnKSBvZiBhbiBbaW1hZ2UgbWFwXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0hUTUwvRWxlbWVudC9tYXApIGFzc29jaWF0ZWQgd2l0aCB0aGUgZWxlbWVudC5cblxuKipOb3RlOioqIFlvdSBjYW5ub3QgdXNlIHRoaXMgYXR0cmlidXRlIGlmIHRoZSBgPGltZz5gIGVsZW1lbnQgaXMgYSBkZXNjZW5kYW50IG9mIGFuIFtgPGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2EgIlRoZSBIVE1MIDxhPiBlbGVtZW50IChvciBhbmNob3IgZWxlbWVudCkgY3JlYXRlcyBhIGh5cGVybGluayB0byBvdGhlciB3ZWIgcGFnZXMsIGZpbGVzLCBsb2NhdGlvbnMgd2l0aGluIHRoZSBzYW1lIHBhZ2UsIGVtYWlsIGFkZHJlc3Nlcywgb3IgYW55IG90aGVyIFVSTC4iKSBvciBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgZWxlbWVudC4nfX0se25hbWU6ImlzbWFwIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgaW1hZ2UgaXMgcGFydCBvZiBhIHNlcnZlci1zaWRlIG1hcC4gSWYgc28sIHRoZSBwcmVjaXNlIGNvb3JkaW5hdGVzIG9mIGEgY2xpY2sgYXJlIHNlbnQgdG8gdGhlIHNlcnZlci5cblxuKipOb3RlOioqIFRoaXMgYXR0cmlidXRlIGlzIGFsbG93ZWQgb25seSBpZiB0aGUgYDxpbWc+YCBlbGVtZW50IGlzIGEgZGVzY2VuZGFudCBvZiBhbiBbYDxhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hICJUaGUgSFRNTCA8YT4gZWxlbWVudCAob3IgYW5jaG9yIGVsZW1lbnQpIGNyZWF0ZXMgYSBoeXBlcmxpbmsgdG8gb3RoZXIgd2ViIHBhZ2VzLCBmaWxlcywgbG9jYXRpb25zIHdpdGhpbiB0aGUgc2FtZSBwYWdlLCBlbWFpbCBhZGRyZXNzZXMsIG9yIGFueSBvdGhlciBVUkwuIikgZWxlbWVudCB3aXRoIGEgdmFsaWQgW2BocmVmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2EjYXR0ci1ocmVmKSBhdHRyaWJ1dGUuJ319LHtuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGludHJpbnNpYyB3aWR0aCBvZiB0aGUgaW1hZ2UgaW4gcGl4ZWxzLiJ9fSx7bmFtZToiaGVpZ2h0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaW50cmluc2ljIGhlaWdodCBvZiB0aGUgaW1hZ2UgaW4gcGl4ZWxzLiJ9fSx7bmFtZToiZGVjb2RpbmciLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBhbiBpbWFnZSBkZWNvZGluZyBoaW50IHRvIHRoZSBicm93c2VyLiBUaGUgYWxsb3dlZCB2YWx1ZXMgYXJlOiJ9LHtuYW1lOiJkZWNvZGluZyIsZGVzY3JpcHRpb246ImBzeW5jYFxuXG5EZWNvZGUgdGhlIGltYWdlIHN5bmNocm9ub3VzbHkgZm9yIGF0b21pYyBwcmVzZW50YXRpb24gd2l0aCBvdGhlciBjb250ZW50LlxuXG5gYXN5bmNgXG5cbkRlY29kZSB0aGUgaW1hZ2UgYXN5bmNocm9ub3VzbHkgdG8gcmVkdWNlIGRlbGF5IGluIHByZXNlbnRpbmcgb3RoZXIgY29udGVudC5cblxuYGF1dG9gXG5cbkRlZmF1bHQgbW9kZSwgd2hpY2ggaW5kaWNhdGVzIG5vIHByZWZlcmVuY2UgZm9yIHRoZSBkZWNvZGluZyBtb2RlLiBUaGUgYnJvd3NlciBkZWNpZGVzIHdoYXQgaXMgYmVzdCBmb3IgdGhlIHVzZXIuIn0se25hbWU6ImltcG9ydGFuY2UiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhlIHJlbGF0aXZlIGltcG9ydGFuY2Ugb2YgdGhlIHJlc291cmNlLiBQcmlvcml0eSBoaW50cyBhcmUgZGVsZWdhdGVkIHVzaW5nIHRoZSB2YWx1ZXM6In0se25hbWU6ImltcG9ydGFuY2UiLGRlc2NyaXB0aW9uOiJgYXV0b2A6IEluZGljYXRlc8KgKipub8KgcHJlZmVyZW5jZSoqLiBUaGUgYnJvd3NlciBtYXkgdXNlIGl0cyBvd24gaGV1cmlzdGljcyB0byBkZWNpZGUgdGhlIHByaW9yaXR5IG9mIHRoZSBpbWFnZS5cblxuYGhpZ2hgOiBJbmRpY2F0ZXMgdG8gdGhlwqBicm93c2VywqB0aGF0IHRoZSBpbWFnZSBpcyBvZsKgKipoaWdoKiogcHJpb3JpdHkuXG5cbmBsb3dgOsKgSW5kaWNhdGVzIHRvIHRoZcKgYnJvd3NlcsKgdGhhdCB0aGUgaW1hZ2UgaXMgb2bCoCoqbG93KiogcHJpb3JpdHkuIn0se25hbWU6ImludHJpbnNpY3NpemUiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSB0ZWxscyB0aGUgYnJvd3NlciB0byBpZ25vcmUgdGhlIGFjdHVhbCBpbnRyaW5zaWMgc2l6ZSBvZiB0aGUgaW1hZ2UgYW5kIHByZXRlbmQgaXTigJlzIHRoZSBzaXplIHNwZWNpZmllZCBpbiB0aGUgYXR0cmlidXRlLiBTcGVjaWZpY2FsbHksIHRoZSBpbWFnZSB3b3VsZCByYXN0ZXIgYXQgdGhlc2UgZGltZW5zaW9ucyBhbmQgYG5hdHVyYWxXaWR0aGAvYG5hdHVyYWxIZWlnaHRgIG9uIGltYWdlcyB3b3VsZCByZXR1cm4gdGhlIHZhbHVlcyBzcGVjaWZpZWQgaW4gdGhpcyBhdHRyaWJ1dGUuIFtFeHBsYWluZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9vamFudmFmYWkvaW50cmluc2ljc2l6ZS1hdHRyaWJ1dGUpLCBbZXhhbXBsZXNdKGh0dHBzOi8vZ29vZ2xlY2hyb21lLmdpdGh1Yi5pby9zYW1wbGVzL2ludHJpbnNpYy1zaXplL2luZGV4Lmh0bWwpIn0se25hbWU6InJlZmVycmVycG9saWN5IixkZXNjcmlwdGlvbjoiQSBzdHJpbmcgaW5kaWNhdGluZyB3aGljaCByZWZlcnJlciB0byB1c2Ugd2hlbiBmZXRjaGluZyB0aGUgcmVzb3VyY2U6XG5cbiogICBgbm8tcmVmZXJyZXI6YCBUaGUgW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgXCJUaGUgUmVmZXJlciByZXF1ZXN0IGhlYWRlciBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgcHJldmlvdXMgd2ViIHBhZ2UgZnJvbSB3aGljaCBhIGxpbmsgdG8gdGhlIGN1cnJlbnRseSByZXF1ZXN0ZWQgcGFnZSB3YXMgZm9sbG93ZWQuIFRoZSBSZWZlcmVyIGhlYWRlciBhbGxvd3Mgc2VydmVycyB0byBpZGVudGlmeSB3aGVyZSBwZW9wbGUgYXJlIHZpc2l0aW5nIHRoZW0gZnJvbSBhbmQgbWF5IHVzZSB0aGF0IGRhdGEgZm9yIGFuYWx5dGljcywgbG9nZ2luZywgb3Igb3B0aW1pemVkIGNhY2hpbmcsIGZvciBleGFtcGxlLlwiKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudC5cbiogICBgbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGU6YCBObyBgUmVmZXJlcmAgaGVhZGVyIHdpbGwgYmUgc2VudCB3aGVuIG5hdmlnYXRpbmcgdG8gYW4gb3JpZ2luIHdpdGhvdXQgVExTIChIVFRQUykuIFRoaXMgaXMgYSB1c2VyIGFnZW504oCZcyBkZWZhdWx0IGJlaGF2aW9yIGlmIG5vIHBvbGljeSBpcyBvdGhlcndpc2Ugc3BlY2lmaWVkLlxuKiAgIGBvcmlnaW46YCBUaGUgYFJlZmVyZXJgIGhlYWRlciB3aWxsIGluY2x1ZGUgdGhlIHBhZ2Ugb2Ygb3JpZ2luJ3Mgc2NoZW1lLCB0aGUgaG9zdCwgYW5kIHRoZSBwb3J0LlxuKiAgIGBvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW46YCBOYXZpZ2F0aW5nIHRvIG90aGVyIG9yaWdpbnMgd2lsbCBsaW1pdCB0aGUgaW5jbHVkZWQgcmVmZXJyYWwgZGF0YSB0byB0aGUgc2NoZW1lLCB0aGUgaG9zdCBhbmQgdGhlIHBvcnQsIHdoaWxlIG5hdmlnYXRpbmcgZnJvbSB0aGUgc2FtZSBvcmlnaW4gd2lsbCBpbmNsdWRlIHRoZSByZWZlcnJlcidzIGZ1bGwgcGF0aC5cbiogICBgdW5zYWZlLXVybDpgIFRoZSBgUmVmZXJlcmAgaGVhZGVyIHdpbGwgaW5jbHVkZSB0aGUgb3JpZ2luIGFuZCB0aGUgcGF0aCwgYnV0IG5vdCB0aGUgZnJhZ21lbnQsIHBhc3N3b3JkLCBvciB1c2VybmFtZS4gVGhpcyBjYXNlIGlzIHVuc2FmZSBiZWNhdXNlIGl0IGNhbiBsZWFrIG9yaWdpbnMgYW5kIHBhdGhzIGZyb20gVExTLXByb3RlY3RlZCByZXNvdXJjZXMgdG8gaW5zZWN1cmUgb3JpZ2lucy4ifSx7bmFtZToic2l6ZXMiLGRlc2NyaXB0aW9uOiJBIGxpc3Qgb2Ygb25lIG9yIG1vcmUgc3RyaW5ncyBzZXBhcmF0ZWQgYnkgY29tbWFzIGluZGljYXRpbmcgYSBzZXQgb2Ygc291cmNlIHNpemVzLiBFYWNoIHNvdXJjZSBzaXplIGNvbnNpc3RzIG9mOlxuXG4xLiAgYSBtZWRpYSBjb25kaXRpb24uIFRoaXMgbXVzdCBiZSBvbWl0dGVkIGZvciB0aGUgbGFzdCBpdGVtLlxuMi4gIGEgc291cmNlIHNpemUgdmFsdWUuXG5cblNvdXJjZSBzaXplIHZhbHVlcyBzcGVjaWZ5IHRoZSBpbnRlbmRlZCBkaXNwbGF5IHNpemUgb2YgdGhlIGltYWdlLiBVc2VyIGFnZW50cyB1c2UgdGhlIGN1cnJlbnQgc291cmNlIHNpemUgdG8gc2VsZWN0IG9uZSBvZiB0aGUgc291cmNlcyBzdXBwbGllZCBieSB0aGUgYHNyY3NldGAgYXR0cmlidXRlLCB3aGVuIHRob3NlIHNvdXJjZXMgYXJlIGRlc2NyaWJlZCB1c2luZyB3aWR0aCAoJ2B3YCcpIGRlc2NyaXB0b3JzLiBUaGUgc2VsZWN0ZWQgc291cmNlIHNpemUgYWZmZWN0cyB0aGUgaW50cmluc2ljIHNpemUgb2YgdGhlIGltYWdlICh0aGUgaW1hZ2XigJlzIGRpc3BsYXkgc2l6ZSBpZiBubyBDU1Mgc3R5bGluZyBpcyBhcHBsaWVkKS4gSWYgdGhlIGBzcmNzZXRgIGF0dHJpYnV0ZSBpcyBhYnNlbnQsIG9yIGNvbnRhaW5zIG5vIHZhbHVlcyB3aXRoIGEgd2lkdGggKGB3YCkgZGVzY3JpcHRvciwgdGhlbiB0aGUgYHNpemVzYCBhdHRyaWJ1dGUgaGFzIG5vIGVmZmVjdC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2ltZyJ9XX0se25hbWU6ImlmcmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGlmcmFtZSBlbGVtZW50IHJlcHJlc2VudHMgYSBuZXN0ZWQgYnJvd3NpbmcgY29udGV4dC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3JjIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgVVJMIG9mIHRoZSBwYWdlIHRvIGVtYmVkLiBVc2UgYSB2YWx1ZSBvZiBgYWJvdXQ6YmxhbmtgIHRvIGVtYmVkIGFuIGVtcHR5IHBhZ2UgdGhhdCBjb25mb3JtcyB0byB0aGUgW3NhbWUtb3JpZ2luIHBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvU2FtZS1vcmlnaW5fcG9saWN5I0luaGVyaXRlZF9vcmlnaW5zKS4gQWxzbyBub3RlIHRoYXQgcHJvZ3JhbWF0aWNhbGx5IHJlbW92aW5nIGFuIGA8aWZyYW1lPmBcJ3Mgc3JjIGF0dHJpYnV0ZSAoZS5nLiB2aWEgW2BFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgpYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQvcmVtb3ZlQXR0cmlidXRlICJUaGUgRWxlbWVudCBtZXRob2QgcmVtb3ZlQXR0cmlidXRlKCkgcmVtb3ZlcyB0aGUgYXR0cmlidXRlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGZyb20gdGhlIGVsZW1lbnQuIikpIGNhdXNlcyBgYWJvdXQ6YmxhbmtgIHRvIGJlIGxvYWRlZCBpbiB0aGUgZnJhbWUgaW4gRmlyZWZveCAoZnJvbSB2ZXJzaW9uIDY1KSwgQ2hyb21pdW0tYmFzZWQgYnJvd3NlcnMsIGFuZCBTYWZhcmkvaU9TLid9fSx7bmFtZToic3JjZG9jIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmxpbmUgSFRNTCB0byBlbWJlZCwgb3ZlcnJpZGluZyB0aGUgYHNyY2AgYXR0cmlidXRlLiBJZiBhIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYHNyY2RvY2AgYXR0cmlidXRlLCBpdCB3aWxsIGZhbGwgYmFjayB0byB0aGUgVVJMIGluIHRoZSBgc3JjYCBhdHRyaWJ1dGUuIn19LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBIHRhcmdldGFibGUgbmFtZSBmb3IgdGhlIGVtYmVkZGVkIGJyb3dzaW5nIGNvbnRleHQuIFRoaXMgY2FuIGJlIHVzZWQgaW4gdGhlIGB0YXJnZXRgIGF0dHJpYnV0ZSBvZiB0aGUgW2A8YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSAiVGhlIEhUTUwgPGE+IGVsZW1lbnQgKG9yIGFuY2hvciBlbGVtZW50KSBjcmVhdGVzIGEgaHlwZXJsaW5rIHRvIG90aGVyIHdlYiBwYWdlcywgZmlsZXMsIGxvY2F0aW9ucyB3aXRoaW4gdGhlIHNhbWUgcGFnZSwgZW1haWwgYWRkcmVzc2VzLCBvciBhbnkgb3RoZXIgVVJMLiIpLCBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSwgb3IgW2A8YmFzZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYmFzZSAiVGhlIEhUTUwgPGJhc2U+IGVsZW1lbnQgc3BlY2lmaWVzIHRoZSBiYXNlIFVSTCB0byB1c2UgZm9yIGFsbCByZWxhdGl2ZSBVUkxzIGNvbnRhaW5lZCB3aXRoaW4gYSBkb2N1bWVudC4gVGhlcmUgY2FuIGJlIG9ubHkgb25lIDxiYXNlPiBlbGVtZW50IGluIGEgZG9jdW1lbnQuIikgZWxlbWVudHM7IHRoZSBgZm9ybXRhcmdldGAgYXR0cmlidXRlIG9mIHRoZSBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBvciBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgZWxlbWVudHM7IG9yIHRoZSBgd2luZG93TmFtZWAgcGFyYW1ldGVyIGluIHRoZSBbYHdpbmRvdy5vcGVuKClgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvV2luZG93L29wZW4gIlRoZcKgV2luZG93IGludGVyZmFjZVwncyBvcGVuKCkgbWV0aG9kIGxvYWRzIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2UgaW50byB0aGUgYnJvd3NpbmcgY29udGV4dCAod2luZG93LCA8aWZyYW1lPiBvciB0YWIpIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLiBJZiB0aGUgbmFtZSBkb2VzblwndCBleGlzdCwgdGhlbiBhIG5ldyB3aW5kb3cgaXMgb3BlbmVkIGFuZCB0aGUgc3BlY2lmaWVkIHJlc291cmNlIGlzIGxvYWRlZCBpbnRvIGl0cyBicm93c2luZyBjb250ZXh0LiIpIG1ldGhvZC4nfX0se25hbWU6InNhbmRib3giLHZhbHVlU2V0OiJzYiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQXBwbGllcyBleHRyYSByZXN0cmljdGlvbnMgdG8gdGhlIGNvbnRlbnQgaW4gdGhlIGZyYW1lLiBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBjYW4gZWl0aGVyIGJlIGVtcHR5IHRvIGFwcGx5IGFsbCByZXN0cmljdGlvbnMsIG9yIHNwYWNlLXNlcGFyYXRlZCB0b2tlbnMgdG8gbGlmdCBwYXJ0aWN1bGFyIHJlc3RyaWN0aW9uczpcblxuKiAgIGBhbGxvdy1mb3Jtc2A6IEFsbG93cyB0aGUgcmVzb3VyY2UgdG8gc3VibWl0IGZvcm1zLiBJZiB0aGlzIGtleXdvcmQgaXMgbm90IHVzZWQsIGZvcm0gc3VibWlzc2lvbiBpcyBibG9ja2VkLlxuKiAgIGBhbGxvdy1tb2RhbHNgOiBMZXRzIHRoZSByZXNvdXJjZSBbb3BlbiBtb2RhbCB3aW5kb3dzXShodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNzYW5kYm94ZWQtbW9kYWxzLWZsYWcpLlxuKiAgIGBhbGxvdy1vcmllbnRhdGlvbi1sb2NrYDogTGV0cyB0aGUgcmVzb3VyY2UgW2xvY2sgdGhlIHNjcmVlbiBvcmllbnRhdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1NjcmVlbi9sb2NrT3JpZW50YXRpb24pLlxuKiAgIGBhbGxvdy1wb2ludGVyLWxvY2tgOiBMZXRzIHRoZSByZXNvdXJjZSB1c2UgdGhlIFtQb2ludGVyIExvY2sgQVBJXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYkFQSS9Qb2ludGVyX0xvY2spLlxuKiAgIGBhbGxvdy1wb3B1cHNgOiBBbGxvd3MgcG9wdXBzIChzdWNoIGFzIGB3aW5kb3cub3BlbigpYCwgYHRhcmdldD0iX2JsYW5rImAsIG9yIGBzaG93TW9kYWxEaWFsb2coKWApLiBJZiB0aGlzIGtleXdvcmQgaXMgbm90IHVzZWQsIHRoZSBwb3B1cCB3aWxsIHNpbGVudGx5IGZhaWwgdG8gb3Blbi5cbiogICBgYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94YDogTGV0cyB0aGUgc2FuZGJveGVkIGRvY3VtZW50IG9wZW4gbmV3IHdpbmRvd3Mgd2l0aG91dCB0aG9zZSB3aW5kb3dzIGluaGVyaXRpbmcgdGhlIHNhbmRib3hpbmcuIEZvciBleGFtcGxlLCB0aGlzIGNhbiBzYWZlbHkgc2FuZGJveCBhbiBhZHZlcnRpc2VtZW50IHdpdGhvdXQgZm9yY2luZyB0aGUgc2FtZSByZXN0cmljdGlvbnMgdXBvbiB0aGUgcGFnZSB0aGUgYWQgbGlua3MgdG8uXG4qICAgYGFsbG93LXByZXNlbnRhdGlvbmA6IExldHMgdGhlIHJlc291cmNlIHN0YXJ0IGEgW3ByZXNlbnRhdGlvbiBzZXNzaW9uXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUHJlc2VudGF0aW9uUmVxdWVzdCkuXG4qICAgYGFsbG93LXNhbWUtb3JpZ2luYDogSWYgdGhpcyB0b2tlbiBpcyBub3QgdXNlZCwgdGhlIHJlc291cmNlIGlzIHRyZWF0ZWQgYXMgYmVpbmcgZnJvbSBhIHNwZWNpYWwgb3JpZ2luIHRoYXQgYWx3YXlzIGZhaWxzIHRoZSBbc2FtZS1vcmlnaW4gcG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3NhbWUtb3JpZ2luX3BvbGljeSAic2FtZS1vcmlnaW4gcG9saWN5OiBUaGUgc2FtZS1vcmlnaW4gcG9saWN5IGlzIGEgY3JpdGljYWwgc2VjdXJpdHkgbWVjaGFuaXNtIHRoYXQgcmVzdHJpY3RzIGhvdyBhIGRvY3VtZW50IG9yIHNjcmlwdCBsb2FkZWQgZnJvbSBvbmUgb3JpZ2luIGNhbiBpbnRlcmFjdCB3aXRoIGEgcmVzb3VyY2UgZnJvbSBhbm90aGVyIG9yaWdpbi4iKS5cbiogICBgYWxsb3ctc2NyaXB0c2A6IExldHMgdGhlIHJlc291cmNlIHJ1biBzY3JpcHRzIChidXQgbm90IGNyZWF0ZSBwb3B1cCB3aW5kb3dzKS5cbiogICBgYWxsb3ctc3RvcmFnZS1hY2Nlc3MtYnktdXNlci1hY3RpdmF0aW9uYCA6IExldHMgdGhlIHJlc291cmNlIHJlcXVlc3QgYWNjZXNzIHRvIHRoZSBwYXJlbnRcJ3Mgc3RvcmFnZSBjYXBhYmlsaXRpZXMgd2l0aCB0aGUgW1N0b3JhZ2UgQWNjZXNzIEFQSV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1N0b3JhZ2VfQWNjZXNzX0FQSSkuXG4qICAgYGFsbG93LXRvcC1uYXZpZ2F0aW9uYDogTGV0cyB0aGUgcmVzb3VyY2UgbmF2aWdhdGUgdGhlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0ICh0aGUgb25lIG5hbWVkIGBfdG9wYCkuXG4qICAgYGFsbG93LXRvcC1uYXZpZ2F0aW9uLWJ5LXVzZXItYWN0aXZhdGlvbmA6IExldHMgdGhlIHJlc291cmNlIG5hdmlnYXRlIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dCwgYnV0IG9ubHkgaWYgaW5pdGlhdGVkIGJ5IGEgdXNlciBnZXN0dXJlLlxuXG4qKk5vdGVzIGFib3V0IHNhbmRib3hpbmc6KipcblxuKiAgIFdoZW4gdGhlIGVtYmVkZGVkIGRvY3VtZW50IGhhcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIGVtYmVkZGluZyBwYWdlLCBpdCBpcyAqKnN0cm9uZ2x5IGRpc2NvdXJhZ2VkKiogdG8gdXNlIGJvdGggYGFsbG93LXNjcmlwdHNgIGFuZCBgYWxsb3ctc2FtZS1vcmlnaW5gLCBhcyB0aGF0IGxldHMgdGhlIGVtYmVkZGVkIGRvY3VtZW50IHJlbW92ZSB0aGUgYHNhbmRib3hgIGF0dHJpYnV0ZSDigJQgbWFraW5nIGl0IG5vIG1vcmUgc2VjdXJlIHRoYW4gbm90IHVzaW5nIHRoZSBgc2FuZGJveGAgYXR0cmlidXRlIGF0IGFsbC5cbiogICBTYW5kYm94aW5nIGlzIHVzZWxlc3MgaWYgdGhlIGF0dGFja2VyIGNhbiBkaXNwbGF5IGNvbnRlbnQgb3V0c2lkZSBhIHNhbmRib3hlZCBgaWZyYW1lYCDigJQgc3VjaCBhcyBpZiB0aGUgdmlld2VyIG9wZW5zIHRoZSBmcmFtZSBpbiBhIG5ldyB0YWIuIFN1Y2ggY29udGVudCBzaG91bGQgYmUgYWxzbyBzZXJ2ZWQgZnJvbSBhIF9zZXBhcmF0ZSBvcmlnaW5fIHRvIGxpbWl0IHBvdGVudGlhbCBkYW1hZ2UuXG4qICAgVGhlIGBzYW5kYm94YCBhdHRyaWJ1dGUgaXMgdW5zdXBwb3J0ZWQgaW4gSW50ZXJuZXQgRXhwbG9yZXIgOSBhbmQgZWFybGllci4nfX0se25hbWU6InNlYW1sZXNzIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJhbGxvd2Z1bGxzY3JlZW4iLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidTZXQgdG8gYHRydWVgIGlmIHRoZSBgPGlmcmFtZT5gIGNhbiBhY3RpdmF0ZSBmdWxsc2NyZWVuIG1vZGUgYnkgY2FsbGluZyB0aGUgW2ByZXF1ZXN0RnVsbHNjcmVlbigpYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQvcmVxdWVzdEZ1bGxzY3JlZW4gIlRoZSBFbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKCkgbWV0aG9kIGlzc3VlcyBhbiBhc3luY2hyb25vdXMgcmVxdWVzdCB0byBtYWtlIHRoZSBlbGVtZW50IGJlIGRpc3BsYXllZCBpbiBmdWxsLXNjcmVlbiBtb2RlLiIpIG1ldGhvZC4nfX0se25hbWU6IndpZHRoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgd2lkdGggb2YgdGhlIGZyYW1lIGluIENTUyBwaXhlbHMuIERlZmF1bHQgaXMgYDMwMGAuIn19LHtuYW1lOiJoZWlnaHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoZWlnaHQgb2YgdGhlIGZyYW1lIGluIENTUyBwaXhlbHMuIERlZmF1bHQgaXMgYDE1MGAuIn19LHtuYW1lOiJhbGxvdyIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIFtmZWF0dXJlIHBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9GZWF0dXJlX1BvbGljeSkgZm9yIHRoZSBgPGlmcmFtZT5gLiJ9LHtuYW1lOiJhbGxvd3BheW1lbnRyZXF1ZXN0IixkZXNjcmlwdGlvbjoiU2V0IHRvIGB0cnVlYCBpZiBhIGNyb3NzLW9yaWdpbiBgPGlmcmFtZT5gIHNob3VsZCBiZSBhbGxvd2VkIHRvIGludm9rZSB0aGUgW1BheW1lbnQgUmVxdWVzdCBBUEldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9QYXltZW50X1JlcXVlc3RfQVBJKS4ifSx7bmFtZToiYWxsb3dwYXltZW50cmVxdWVzdCIsZGVzY3JpcHRpb246J1RoaXMgYXR0cmlidXRlIGlzIGNvbnNpZGVyZWQgYSBsZWdhY3kgYXR0cmlidXRlIGFuZCByZWRlZmluZWQgYXMgYGFsbG93PSJwYXltZW50ImAuJ30se25hbWU6ImNzcCIsZGVzY3JpcHRpb246J0EgW0NvbnRlbnQgU2VjdXJpdHkgUG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0NTUCkgZW5mb3JjZWQgZm9yIHRoZSBlbWJlZGRlZCByZXNvdXJjZS4gU2VlIFtgSFRNTElGcmFtZUVsZW1lbnQuY3NwYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxJRnJhbWVFbGVtZW50L2NzcCAiVGhlIGNzcCBwcm9wZXJ0eSBvZiB0aGUgSFRNTElGcmFtZUVsZW1lbnQgaW50ZXJmYWNlIHNwZWNpZmllcyB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgdGhhdCBhbiBlbWJlZGRlZCBkb2N1bWVudCBtdXN0IGFncmVlIHRvIGVuZm9yY2UgdXBvbiBpdHNlbGYuIikgZm9yIGRldGFpbHMuJ30se25hbWU6ImltcG9ydGFuY2UiLGRlc2NyaXB0aW9uOiJUaGUgZG93bmxvYWQgcHJpb3JpdHkgb2YgdGhlIHJlc291cmNlIGluIHRoZSBgPGlmcmFtZT5gJ3MgYHNyY2AgYXR0cmlidXRlLiBBbGxvd2VkIHZhbHVlczpcblxuYGF1dG9gIChkZWZhdWx0KVxuXG5ObyBwcmVmZXJlbmNlLiBUaGUgYnJvd3NlciB1c2VzIGl0cyBvd24gaGV1cmlzdGljcyB0byBkZWNpZGUgdGhlIHByaW9yaXR5IG9mIHRoZSByZXNvdXJjZS5cblxuYGhpZ2hgXG5cblRoZSByZXNvdXJjZSBzaG91bGQgYmUgZG93bmxvYWRlZCBiZWZvcmUgb3RoZXIgbG93ZXItcHJpb3JpdHkgcGFnZSByZXNvdXJjZXMuXG5cbmBsb3dgXG5cblRoZSByZXNvdXJjZSBzaG91bGQgYmUgZG93bmxvYWRlZCBhZnRlciBvdGhlciBoaWdoZXItcHJpb3JpdHkgcGFnZSByZXNvdXJjZXMuIn0se25hbWU6InJlZmVycmVycG9saWN5IixkZXNjcmlwdGlvbjonSW5kaWNhdGVzIHdoaWNoIFtyZWZlcnJlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50L3JlZmVycmVyKSB0byBzZW5kIHdoZW4gZmV0Y2hpbmcgdGhlIGZyYW1lXCdzIHJlc291cmNlOlxuXG4qICAgYG5vLXJlZmVycmVyYDogVGhlIFtgUmVmZXJlcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyICJUaGUgUmVmZXJlciByZXF1ZXN0IGhlYWRlciBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgcHJldmlvdXMgd2ViIHBhZ2UgZnJvbSB3aGljaCBhIGxpbmsgdG8gdGhlIGN1cnJlbnRseSByZXF1ZXN0ZWQgcGFnZSB3YXMgZm9sbG93ZWQuIFRoZSBSZWZlcmVyIGhlYWRlciBhbGxvd3Mgc2VydmVycyB0byBpZGVudGlmeSB3aGVyZSBwZW9wbGUgYXJlIHZpc2l0aW5nIHRoZW0gZnJvbSBhbmQgbWF5IHVzZSB0aGF0IGRhdGEgZm9yIGFuYWx5dGljcywgbG9nZ2luZywgb3Igb3B0aW1pemVkIGNhY2hpbmcsIGZvciBleGFtcGxlLiIpIGhlYWRlciB3aWxsIG5vdCBiZSBzZW50LlxuKiAgIGBuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZWAgKGRlZmF1bHQpOiBUaGUgW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQgdG8gW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9vcmlnaW4gIm9yaWdpbjogV2ViIGNvbnRlbnRcJ3Mgb3JpZ2luIGlzIGRlZmluZWQgYnkgdGhlIHNjaGVtZSAocHJvdG9jb2wpLCBob3N0IChkb21haW4pLCBhbmQgcG9ydCBvZiB0aGUgVVJMIHVzZWQgdG8gYWNjZXNzIGl0LiBUd28gb2JqZWN0cyBoYXZlIHRoZSBzYW1lIG9yaWdpbiBvbmx5IHdoZW4gdGhlIHNjaGVtZSwgaG9zdCwgYW5kIHBvcnQgYWxsIG1hdGNoLiIpcyB3aXRob3V0IFtUTFNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvVExTICJUTFM6IFRyYW5zcG9ydCBMYXllciBTZWN1cml0eSAoVExTKSwgcHJldmlvdXNseSBrbm93biBhcyBTZWN1cmUgU29ja2V0cyBMYXllciAoU1NMKSwgaXMgYSBwcm90b2NvbCB1c2VkIGJ5IGFwcGxpY2F0aW9ucyB0byBjb21tdW5pY2F0ZSBzZWN1cmVseSBhY3Jvc3MgYSBuZXR3b3JrLCBwcmV2ZW50aW5nIHRhbXBlcmluZyB3aXRoIGFuZCBlYXZlc2Ryb3BwaW5nIG9uIGVtYWlsLCB3ZWIgYnJvd3NpbmcsIG1lc3NhZ2luZywgYW5kIG90aGVyIHByb3RvY29scy4iKSAoW0hUVFBTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0hUVFBTICJIVFRQUzogSFRUUFMgKEhUVFAgU2VjdXJlKSBpcyBhbiBlbmNyeXB0ZWQgdmVyc2lvbiBvZiB0aGUgSFRUUCBwcm90b2NvbC4gSXQgdXN1YWxseSB1c2VzIFNTTCBvciBUTFMgdG8gZW5jcnlwdCBhbGwgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGEgY2xpZW50IGFuZCBhIHNlcnZlci4gVGhpcyBzZWN1cmUgY29ubmVjdGlvbiBhbGxvd3MgY2xpZW50cyB0byBzYWZlbHkgZXhjaGFuZ2Ugc2Vuc2l0aXZlIGRhdGEgd2l0aCBhIHNlcnZlciwgZm9yIGV4YW1wbGUgZm9yIGJhbmtpbmcgYWN0aXZpdGllcyBvciBvbmxpbmUgc2hvcHBpbmcuIikpLlxuKiAgIGBvcmlnaW5gOiBUaGUgc2VudCByZWZlcnJlciB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIG9yaWdpbiBvZiB0aGUgcmVmZXJyaW5nIHBhZ2U6IGl0cyBbc2NoZW1lXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0FyY2hpdmUvTW96aWxsYS9VUklTY2hlbWUpLCBbaG9zdF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9ob3N0ICJob3N0OiBBIGhvc3QgaXMgYSBkZXZpY2UgY29ubmVjdGVkIHRvIHRoZSBJbnRlcm5ldCAob3IgYSBsb2NhbCBuZXR3b3JrKS4gU29tZSBob3N0cyBjYWxsZWQgc2VydmVycyBvZmZlciBhZGRpdGlvbmFsIHNlcnZpY2VzIGxpa2Ugc2VydmluZyB3ZWJwYWdlcyBvciBzdG9yaW5nIGZpbGVzIGFuZCBlbWFpbHMuIiksIGFuZCBbcG9ydF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9wb3J0ICJwb3J0OiBGb3IgYSBjb21wdXRlciBjb25uZWN0ZWQgdG8gYSBuZXR3b3JrIHdpdGggYW4gSVAgYWRkcmVzcywgYSBwb3J0IGlzIGEgY29tbXVuaWNhdGlvbiBlbmRwb2ludC4gUG9ydHMgYXJlIGRlc2lnbmF0ZWQgYnkgbnVtYmVycywgYW5kIGJlbG93IDEwMjQgZWFjaCBwb3J0IGlzIGFzc29jaWF0ZWQgYnkgZGVmYXVsdCB3aXRoIGEgc3BlY2lmaWMgcHJvdG9jb2wuIikuXG4qICAgYG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmA6IFRoZSByZWZlcnJlciBzZW50IHRvIG90aGVyIG9yaWdpbnMgd2lsbCBiZSBsaW1pdGVkIHRvIHRoZSBzY2hlbWUsIHRoZSBob3N0LCBhbmQgdGhlIHBvcnQuIE5hdmlnYXRpb25zIG9uIHRoZSBzYW1lIG9yaWdpbiB3aWxsIHN0aWxsIGluY2x1ZGUgdGhlIHBhdGguXG4qICAgYHNhbWUtb3JpZ2luYDogQSByZWZlcnJlciB3aWxsIGJlIHNlbnQgZm9yIFtzYW1lIG9yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9TYW1lLW9yaWdpbl9wb2xpY3kgInNhbWUgb3JpZ2luOiBUaGUgc2FtZS1vcmlnaW4gcG9saWN5IGlzIGEgY3JpdGljYWwgc2VjdXJpdHkgbWVjaGFuaXNtIHRoYXQgcmVzdHJpY3RzIGhvdyBhIGRvY3VtZW50IG9yIHNjcmlwdCBsb2FkZWQgZnJvbSBvbmUgb3JpZ2luIGNhbiBpbnRlcmFjdCB3aXRoIGEgcmVzb3VyY2UgZnJvbSBhbm90aGVyIG9yaWdpbi4iKSwgYnV0IGNyb3NzLW9yaWdpbiByZXF1ZXN0cyB3aWxsIGNvbnRhaW4gbm8gcmVmZXJyZXIgaW5mb3JtYXRpb24uXG4qICAgYHN0cmljdC1vcmlnaW5gOiBPbmx5IHNlbmQgdGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1lbnQgYXMgdGhlIHJlZmVycmVyIHdoZW4gdGhlIHByb3RvY29sIHNlY3VyaXR5IGxldmVsIHN0YXlzIHRoZSBzYW1lIChIVFRQU+KGkkhUVFBTKSwgYnV0IGRvblwndCBzZW5kIGl0IHRvIGEgbGVzcyBzZWN1cmUgZGVzdGluYXRpb24gKEhUVFBT4oaSSFRUUCkuXG4qICAgYHN0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gOiBTZW5kIGEgZnVsbCBVUkwgd2hlbiBwZXJmb3JtaW5nIGEgc2FtZS1vcmlnaW4gcmVxdWVzdCwgb25seSBzZW5kIHRoZSBvcmlnaW4gd2hlbiB0aGUgcHJvdG9jb2wgc2VjdXJpdHkgbGV2ZWwgc3RheXMgdGhlIHNhbWUgKEhUVFBT4oaSSFRUUFMpLCBhbmQgc2VuZCBubyBoZWFkZXIgdG8gYSBsZXNzIHNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFPihpJIVFRQKS5cbiogICBgdW5zYWZlLXVybGA6IFRoZSByZWZlcnJlciB3aWxsIGluY2x1ZGUgdGhlIG9yaWdpbiBfYW5kXyB0aGUgcGF0aCAoYnV0IG5vdCB0aGUgW2ZyYWdtZW50XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy9oYXNoKSwgW3Bhc3N3b3JkXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy9wYXNzd29yZCksIG9yIFt1c2VybmFtZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMvdXNlcm5hbWUpKS4gKipUaGlzIHZhbHVlIGlzIHVuc2FmZSoqLCBiZWNhdXNlIGl0IGxlYWtzIG9yaWdpbnMgYW5kIHBhdGhzIGZyb20gVExTLXByb3RlY3RlZCByZXNvdXJjZXMgdG8gaW5zZWN1cmUgb3JpZ2lucy4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lmcmFtZSJ9XX0se25hbWU6ImVtYmVkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZW1iZWQgZWxlbWVudCBwcm92aWRlcyBhbiBpbnRlZ3JhdGlvbiBwb2ludCBmb3IgYW4gZXh0ZXJuYWwgKHR5cGljYWxseSBub24tSFRNTCkgYXBwbGljYXRpb24gb3IgaW50ZXJhY3RpdmUgY29udGVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3JjIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgVVJMwqBvZiB0aGUgcmVzb3VyY2UgYmVpbmcgZW1iZWRkZWQuIn19LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgTUlNRcKgdHlwZSB0byB1c2UgdG8gc2VsZWN0IHRoZSBwbHVnLWluIHRvIGluc3RhbnRpYXRlLiJ9fSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkaXNwbGF5ZWQgd2lkdGggb2YgdGhlIHJlc291cmNlLCBpbiBbQ1NTIHBpeGVsc10oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy12YWx1ZXMvI3B4KS4gVGhpcyBtdXN0IGJlIGFuIGFic29sdXRlIHZhbHVlOyBwZXJjZW50YWdlcyBhcmUgX25vdF8gYWxsb3dlZC4ifX0se25hbWU6ImhlaWdodCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRpc3BsYXllZCBoZWlnaHQgb2YgdGhlIHJlc291cmNlLCBpbiBbQ1NTIHBpeGVsc10oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy12YWx1ZXMvI3B4KS4gVGhpcyBtdXN0IGJlIGFuIGFic29sdXRlIHZhbHVlOyBwZXJjZW50YWdlcyBhcmUgX25vdF8gYWxsb3dlZC4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9lbWJlZCJ9XX0se25hbWU6Im9iamVjdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG9iamVjdCBlbGVtZW50IGNhbiByZXByZXNlbnQgYW4gZXh0ZXJuYWwgcmVzb3VyY2UsIHdoaWNoLCBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdGhlIHJlc291cmNlLCB3aWxsIGVpdGhlciBiZSB0cmVhdGVkIGFzIGFuIGltYWdlLCBhcyBhIG5lc3RlZCBicm93c2luZyBjb250ZXh0LCBvciBhcyBhbiBleHRlcm5hbCByZXNvdXJjZSB0byBiZSBwcm9jZXNzZWQgYnkgYSBwbHVnaW4uIn0sYXR0cmlidXRlczpbe25hbWU6ImRhdGEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBhZGRyZXNzIG9mIHRoZSByZXNvdXJjZSBhcyBhIHZhbGlkIFVSTC4gQXQgbGVhc3Qgb25lIG9mICoqZGF0YSoqIGFuZCAqKnR5cGUqKiBtdXN0IGJlIGRlZmluZWQuIn19LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgW2NvbnRlbnQgdHlwZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9Db250ZW50X3R5cGUpIG9mIHRoZSByZXNvdXJjZSBzcGVjaWZpZWQgYnkgKipkYXRhKiouIEF0IGxlYXN0IG9uZSBvZiAqKmRhdGEqKiBhbmQgKip0eXBlKiogbXVzdCBiZSBkZWZpbmVkLiJ9fSx7bmFtZToidHlwZW11c3RtYXRjaCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIGlmIHRoZSAqKnR5cGUqKiBhdHRyaWJ1dGUgYW5kIHRoZSBhY3R1YWwgW2NvbnRlbnQgdHlwZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9Db250ZW50X3R5cGUpIG9mIHRoZSByZXNvdXJjZSBtdXN0IG1hdGNoIHRvIGJlIHVzZWQuIn19LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBvZiB2YWxpZCBicm93c2luZyBjb250ZXh0IChIVE1MNSksIG9yIHRoZSBuYW1lIG9mIHRoZSBjb250cm9sIChIVE1MIDQpLiJ9fSx7bmFtZToidXNlbWFwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGhhc2gtbmFtZSByZWZlcmVuY2UgdG8gYSBbYDxtYXA+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21hcCBcIlRoZSBIVE1MIDxtYXA+IGVsZW1lbnQgaXMgdXNlZCB3aXRoIDxhcmVhPiBlbGVtZW50cyB0byBkZWZpbmUgYW4gaW1hZ2UgbWFwIChhIGNsaWNrYWJsZSBsaW5rIGFyZWEpLlwiKSBlbGVtZW50OyB0aGF0IGlzIGEgJyMnIGZvbGxvd2VkIGJ5IHRoZSB2YWx1ZSBvZiBhIFtgbmFtZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tYXAjYXR0ci1uYW1lKSBvZiBhIG1hcCBlbGVtZW50LiJ9fSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIGZvcm0gZWxlbWVudCwgaWYgYW55LCB0aGF0IHRoZSBvYmplY3QgZWxlbWVudCBpcyBhc3NvY2lhdGVkIHdpdGggKGl0cyBfZm9ybSBvd25lcl8pLiBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBtdXN0IGJlIGFuIElEIG9mIGEgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4nfX0se25hbWU6IndpZHRoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgd2lkdGggb2YgdGhlIGRpc3BsYXkgcmVzb3VyY2UsIGluIFtDU1MgcGl4ZWxzXShodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy8jcHgpLiAtLSAoQWJzb2x1dGUgdmFsdWVzIG9ubHkuIFtOTyBwZXJjZW50YWdlc10oaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZW1iZWRkZWQtY29udGVudC5odG1sI2RpbWVuc2lvbi1hdHRyaWJ1dGVzKSkifX0se25hbWU6ImhlaWdodCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhlaWdodCBvZiB0aGUgZGlzcGxheWVkIHJlc291cmNlLCBpbiBbQ1NTIHBpeGVsc10oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy12YWx1ZXMvI3B4KS4gLS0gKEFic29sdXRlIHZhbHVlcyBvbmx5LiBbTk8gcGVyY2VudGFnZXNdKGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2VtYmVkZGVkLWNvbnRlbnQuaHRtbCNkaW1lbnNpb24tYXR0cmlidXRlcykpIn19LHtuYW1lOiJhcmNoaXZlIixkZXNjcmlwdGlvbjoiQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBVUklzIGZvciBhcmNoaXZlcyBvZiByZXNvdXJjZXMgZm9yIHRoZSBvYmplY3QuIn0se25hbWU6ImJvcmRlciIsZGVzY3JpcHRpb246IlRoZSB3aWR0aCBvZiBhIGJvcmRlciBhcm91bmQgdGhlIGNvbnRyb2wsIGluIHBpeGVscy4ifSx7bmFtZToiY2xhc3NpZCIsZGVzY3JpcHRpb246IlRoZSBVUkkgb2YgdGhlIG9iamVjdCdzIGltcGxlbWVudGF0aW9uLiBJdCBjYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoLCBvciBpbiBwbGFjZSBvZiwgdGhlICoqZGF0YSoqIGF0dHJpYnV0ZS4ifSx7bmFtZToiY29kZWJhc2UiLGRlc2NyaXB0aW9uOiJUaGUgYmFzZSBwYXRoIHVzZWQgdG8gcmVzb2x2ZSByZWxhdGl2ZSBVUklzIHNwZWNpZmllZCBieSAqKmNsYXNzaWQqKiwgKipkYXRhKiosIG9yICoqYXJjaGl2ZSoqLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBpcyB0aGUgYmFzZSBVUkkgb2YgdGhlIGN1cnJlbnQgZG9jdW1lbnQuIn0se25hbWU6ImNvZGV0eXBlIixkZXNjcmlwdGlvbjoiVGhlIGNvbnRlbnQgdHlwZSBvZiB0aGUgZGF0YSBzcGVjaWZpZWQgYnkgKipjbGFzc2lkKiouIn0se25hbWU6ImRlY2xhcmUiLGRlc2NyaXB0aW9uOiJUaGUgcHJlc2VuY2Ugb2YgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBtYWtlcyB0aGlzIGVsZW1lbnQgYSBkZWNsYXJhdGlvbiBvbmx5LiBUaGUgb2JqZWN0IG11c3QgYmUgaW5zdGFudGlhdGVkIGJ5IGEgc3Vic2VxdWVudCBgPG9iamVjdD5gIGVsZW1lbnQuIEluIEhUTUw1LCByZXBlYXQgdGhlIDxvYmplY3Q+IGVsZW1lbnQgY29tcGxldGVseSBlYWNoIHRoYXQgdGhhdCB0aGUgcmVzb3VyY2UgaXMgcmV1c2VkLiJ9LHtuYW1lOiJzdGFuZGJ5IixkZXNjcmlwdGlvbjoiQSBtZXNzYWdlIHRoYXQgdGhlIGJyb3dzZXIgY2FuIHNob3cgd2hpbGUgbG9hZGluZyB0aGUgb2JqZWN0J3MgaW1wbGVtZW50YXRpb24gYW5kIGRhdGEuIn0se25hbWU6InRhYmluZGV4IixkZXNjcmlwdGlvbjoiVGhlIHBvc2l0aW9uIG9mIHRoZSBlbGVtZW50IGluIHRoZSB0YWJiaW5nIG5hdmlnYXRpb24gb3JkZXIgZm9yIHRoZSBjdXJyZW50IGRvY3VtZW50LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb2JqZWN0In1dfSx7bmFtZToicGFyYW0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwYXJhbSBlbGVtZW50IGRlZmluZXMgcGFyYW1ldGVycyBmb3IgcGx1Z2lucyBpbnZva2VkIGJ5IG9iamVjdCBlbGVtZW50cy4gSXQgZG9lcyBub3QgcmVwcmVzZW50IGFueXRoaW5nIG9uIGl0cyBvd24uIn0sYXR0cmlidXRlczpbe25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6Ik5hbWUgb2YgdGhlIHBhcmFtZXRlci4ifX0se25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJTcGVjaWZpZXMgdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIuIn19LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjonT25seSB1c2VkIGlmIHRoZSBgdmFsdWV0eXBlYCBpcyBzZXQgdG8gInJlZiIuIFNwZWNpZmllcyB0aGUgTUlNRSB0eXBlIG9mIHZhbHVlcyBmb3VuZCBhdCB0aGUgVVJJIHNwZWNpZmllZCBieSB2YWx1ZS4nfSx7bmFtZToidmFsdWV0eXBlIixkZXNjcmlwdGlvbjonU3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBgdmFsdWVgIGF0dHJpYnV0ZS4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGRhdGE6IERlZmF1bHQgdmFsdWUuIFRoZSB2YWx1ZSBpcyBwYXNzZWQgdG8gdGhlIG9iamVjdFwncyBpbXBsZW1lbnRhdGlvbiBhcyBhIHN0cmluZy5cbiogICByZWY6IFRoZSB2YWx1ZSBpcyBhIFVSSSB0byBhIHJlc291cmNlIHdoZXJlIHJ1bi10aW1lIHZhbHVlcyBhcmUgc3RvcmVkLlxuKiAgIG9iamVjdDogQW4gSUQgb2YgYW5vdGhlciBbYDxvYmplY3Q+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29iamVjdCAiVGhlIEhUTUwgPG9iamVjdD4gZWxlbWVudCByZXByZXNlbnRzIGFuIGV4dGVybmFsIHJlc291cmNlLCB3aGljaCBjYW4gYmUgdHJlYXRlZCBhcyBhbiBpbWFnZSwgYSBuZXN0ZWQgYnJvd3NpbmcgY29udGV4dCwgb3IgYSByZXNvdXJjZSB0byBiZSBoYW5kbGVkIGJ5IGEgcGx1Z2luLiIpIGluIHRoZSBzYW1lIGRvY3VtZW50Lid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcGFyYW0ifV19LHtuYW1lOiJ2aWRlbyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSB2aWRlbyBlbGVtZW50IGlzIHVzZWQgZm9yIHBsYXlpbmcgdmlkZW9zIG9yIG1vdmllcywgYW5kIGF1ZGlvIGZpbGVzIHdpdGggY2FwdGlvbnMuIn0sYXR0cmlidXRlczpbe25hbWU6InNyYyJ9LHtuYW1lOiJjcm9zc29yaWdpbiIsdmFsdWVTZXQ6InhvIn0se25hbWU6InBvc3RlciJ9LHtuYW1lOiJwcmVsb2FkIix2YWx1ZVNldDoicGwifSx7bmFtZToiYXV0b3BsYXkiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlOyBpZiBzcGVjaWZpZWQsIHRoZSB2aWRlbyBhdXRvbWF0aWNhbGx5IGJlZ2lucyB0byBwbGF5IGJhY2sgYXMgc29vbiBhcyBpdCBjYW4gZG8gc28gd2l0aG91dCBzdG9wcGluZyB0byBmaW5pc2ggbG9hZGluZyB0aGUgZGF0YS4ifX0se25hbWU6Im1lZGlhZ3JvdXAifSx7bmFtZToibG9vcCIsdmFsdWVTZXQ6InYifSx7bmFtZToibXV0ZWQiLHZhbHVlU2V0OiJ2In0se25hbWU6ImNvbnRyb2xzIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJ3aWR0aCJ9LHtuYW1lOiJoZWlnaHQifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3ZpZGVvIn1dfSx7bmFtZToiYXVkaW8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGF1ZGlvIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNvdW5kIG9yIGF1ZGlvIHN0cmVhbS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3JjIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgVVJMIG9mIHRoZSBhdWRpbyB0byBlbWJlZC4gVGhpcyBpcyBzdWJqZWN0IHRvIFtIVFRQIGFjY2VzcyBjb250cm9sc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9IVFRQX2FjY2Vzc19jb250cm9sKS4gVGhpcyBpcyBvcHRpb25hbDsgeW91IG1heSBpbnN0ZWFkIHVzZSB0aGUgW2A8c291cmNlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zb3VyY2UgIlRoZSBIVE1MIDxzb3VyY2U+IGVsZW1lbnQgc3BlY2lmaWVzIG11bHRpcGxlIG1lZGlhIHJlc291cmNlcyBmb3IgdGhlIDxwaWN0dXJlPiwgdGhlIDxhdWRpbz4gZWxlbWVudCwgb3IgdGhlIDx2aWRlbz4gZWxlbWVudC4iKSBlbGVtZW50IHdpdGhpbiB0aGUgYXVkaW8gYmxvY2sgdG8gc3BlY2lmeSB0aGUgYXVkaW8gdG8gZW1iZWQuJ319LHtuYW1lOiJjcm9zc29yaWdpbiIsdmFsdWVTZXQ6InhvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIHRvIHVzZSBDT1JTIHRvIGZldGNoIHRoZSByZWxhdGVkIGltYWdlLiBbQ09SUy1lbmFibGVkIHJlc291cmNlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DT1JTX0VuYWJsZWRfSW1hZ2UpIGNhbiBiZSByZXVzZWQgaW4gdGhlIFtgPGNhbnZhcz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FudmFzICJVc2UgdGhlIEhUTUwgPGNhbnZhcz4gZWxlbWVudCB3aXRoIGVpdGhlciB0aGUgY2FudmFzIHNjcmlwdGluZyBBUEkgb3IgdGhlIFdlYkdMIEFQSSB0byBkcmF3IGdyYXBoaWNzIGFuZCBhbmltYXRpb25zLiIpIGVsZW1lbnQgd2l0aG91dCBiZWluZyBfdGFpbnRlZF8uIFRoZSBhbGxvd2VkIHZhbHVlcyBhcmU6XG5cbmFub255bW91c1xuXG5TZW5kcyBhIGNyb3NzLW9yaWdpbiByZXF1ZXN0IHdpdGhvdXQgYSBjcmVkZW50aWFsLiBJbiBvdGhlciB3b3JkcywgaXQgc2VuZHMgdGhlIGBPcmlnaW46YCBIVFRQIGhlYWRlciB3aXRob3V0IGEgY29va2llLCBYLjUwOSBjZXJ0aWZpY2F0ZSwgb3IgcGVyZm9ybWluZyBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uLiBJZiB0aGUgc2VydmVyIGRvZXMgbm90IGdpdmUgY3JlZGVudGlhbHMgdG8gdGhlIG9yaWdpbiBzaXRlIChieSBub3Qgc2V0dGluZyB0aGUgYEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbjpgIEhUVFAgaGVhZGVyKSwgdGhlIGltYWdlIHdpbGwgYmUgX3RhaW50ZWRfLCBhbmQgaXRzIHVzYWdlIHJlc3RyaWN0ZWQuXG5cbnVzZS1jcmVkZW50aWFsc1xuXG5TZW5kcyBhIGNyb3NzLW9yaWdpbiByZXF1ZXN0IHdpdGggYSBjcmVkZW50aWFsLiBJbiBvdGhlciB3b3JkcywgaXQgc2VuZHMgdGhlIGBPcmlnaW46YCBIVFRQIGhlYWRlciB3aXRoIGEgY29va2llLCBhIGNlcnRpZmljYXRlLCBvciBwZXJmb3JtaW5nIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24uIElmIHRoZSBzZXJ2ZXIgZG9lcyBub3QgZ2l2ZSBjcmVkZW50aWFscyB0byB0aGUgb3JpZ2luIHNpdGUgKHRocm91Z2ggYEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzOmAgSFRUUCBoZWFkZXIpLCB0aGUgaW1hZ2Ugd2lsbCBiZSBfdGFpbnRlZF8gYW5kIGl0cyB1c2FnZSByZXN0cmljdGVkLlxuXG5XaGVuIG5vdCBwcmVzZW50LCB0aGUgcmVzb3VyY2UgaXMgZmV0Y2hlZCB3aXRob3V0IGEgQ09SUyByZXF1ZXN0IChpLmUuIHdpdGhvdXQgc2VuZGluZyB0aGUgYE9yaWdpbjpgIEhUVFAgaGVhZGVyKSwgcHJldmVudGluZyBpdHMgbm9uLXRhaW50ZWQgdXNlZCBpbiBbYDxjYW52YXM+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhbnZhcyAiVXNlIHRoZSBIVE1MIDxjYW52YXM+IGVsZW1lbnQgd2l0aCBlaXRoZXIgdGhlIGNhbnZhcyBzY3JpcHRpbmcgQVBJIG9yIHRoZSBXZWJHTCBBUEkgdG8gZHJhdyBncmFwaGljcyBhbmQgYW5pbWF0aW9ucy4iKSBlbGVtZW50cy4gSWYgaW52YWxpZCwgaXQgaXMgaGFuZGxlZCBhcyBpZiB0aGUgZW51bWVyYXRlZCBrZXl3b3JkICoqYW5vbnltb3VzKiogd2FzIHVzZWQuIFNlZSBbQ09SUyBzZXR0aW5ncyBhdHRyaWJ1dGVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0hUTUwvQ09SU19zZXR0aW5nc19hdHRyaWJ1dGVzKSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4nfX0se25hbWU6InByZWxvYWQiLHZhbHVlU2V0OiJwbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCB0byBwcm92aWRlIGEgaGludCB0byB0aGUgYnJvd3NlciBhYm91dCB3aGF0IHRoZSBhdXRob3IgdGhpbmtzIHdpbGwgbGVhZCB0byB0aGUgYmVzdCB1c2VyIGV4cGVyaWVuY2UuIEl0IG1heSBoYXZlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGBub25lYDogSW5kaWNhdGVzIHRoYXQgdGhlIGF1ZGlvIHNob3VsZCBub3QgYmUgcHJlbG9hZGVkLlxuKiAgIGBtZXRhZGF0YWA6IEluZGljYXRlcyB0aGF0IG9ubHkgYXVkaW8gbWV0YWRhdGEgKGUuZy4gbGVuZ3RoKSBpcyBmZXRjaGVkLlxuKiAgIGBhdXRvYDogSW5kaWNhdGVzIHRoYXQgdGhlIHdob2xlIGF1ZGlvIGZpbGUgY2FuIGJlIGRvd25sb2FkZWQsIGV2ZW4gaWYgdGhlIHVzZXIgaXMgbm90IGV4cGVjdGVkIHRvIHVzZSBpdC5cbiogICBfZW1wdHkgc3RyaW5nXzogQSBzeW5vbnltIG9mIHRoZSBgYXV0b2AgdmFsdWUuXG5cbklmIG5vdCBzZXQsIGBwcmVsb2FkYCdzIGRlZmF1bHQgdmFsdWUgaXMgYnJvd3Nlci1kZWZpbmVkIChpLmUuIGVhY2ggYnJvd3NlciBtYXkgaGF2ZSBpdHMgb3duIGRlZmF1bHQgdmFsdWUpLiBUaGUgc3BlYyBhZHZpc2VzIGl0IHRvIGJlIHNldCB0byBgbWV0YWRhdGFgLlxuXG4qKlVzYWdlIG5vdGVzOioqXG5cbiogICBUaGUgYGF1dG9wbGF5YCBhdHRyaWJ1dGUgaGFzIHByZWNlZGVuY2Ugb3ZlcsKgYHByZWxvYWRgLiBJZiBgYXV0b3BsYXlgIGlzIHNwZWNpZmllZCwgdGhlIGJyb3dzZXIgd291bGQgb2J2aW91c2x5IG5lZWQgdG8gc3RhcnQgZG93bmxvYWRpbmcgdGhlIGF1ZGlvIGZvciBwbGF5YmFjay5cbiogICBUaGUgYnJvd3NlciBpcyBub3QgZm9yY2VkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uIHRvIGZvbGxvdyB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGU7IGl0IGlzIGEgbWVyZSBoaW50LiJ9fSx7bmFtZToiYXV0b3BsYXkiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlOsKgaWYgc3BlY2lmaWVkLCB0aGUgYXVkaW8gd2lsbCBhdXRvbWF0aWNhbGx5IGJlZ2luIHBsYXliYWNrIGFzIHNvb24gYXMgaXQgY2FuIGRvIHNvLCB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZSBlbnRpcmUgYXVkaW8gZmlsZSB0byBmaW5pc2ggZG93bmxvYWRpbmcuXG5cbioqTm90ZSoqOiBTaXRlcyB0aGF0IGF1dG9tYXRpY2FsbHkgcGxheSBhdWRpbyAob3IgdmlkZW9zIHdpdGggYW4gYXVkaW8gdHJhY2spIGNhbiBiZSBhbiB1bnBsZWFzYW50IGV4cGVyaWVuY2UgZm9yIHVzZXJzLCBzbyBzaG91bGQgYmUgYXZvaWRlZCB3aGVuIHBvc3NpYmxlLiBJZiB5b3UgbXVzdCBvZmZlciBhdXRvcGxheSBmdW5jdGlvbmFsaXR5LCB5b3Ugc2hvdWxkIG1ha2UgaXQgb3B0LWluIChyZXF1aXJpbmcgYSB1c2VyIHRvIHNwZWNpZmljYWxseSBlbmFibGUgaXQpLiBIb3dldmVyLCB0aGlzIGNhbiBiZSB1c2VmdWwgd2hlbiBjcmVhdGluZyBtZWRpYSBlbGVtZW50cyB3aG9zZSBzb3VyY2Ugd2lsbCBiZSBzZXQgYXQgYSBsYXRlciB0aW1lLCB1bmRlciB1c2VyIGNvbnRyb2wuIn19LHtuYW1lOiJtZWRpYWdyb3VwIn0se25hbWU6Imxvb3AiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlOsKgaWYgc3BlY2lmaWVkLCB0aGUgYXVkaW8gcGxheWVyIHdpbGzCoGF1dG9tYXRpY2FsbHkgc2VlayBiYWNrIHRvIHRoZSBzdGFydMKgdXBvbiByZWFjaGluZyB0aGUgZW5kIG9mIHRoZSBhdWRpby4ifX0se25hbWU6Im11dGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBCb29sZWFuIGF0dHJpYnV0ZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSBhdWRpbyB3aWxsIGJlIGluaXRpYWxseSBzaWxlbmNlZC4gSXRzIGRlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC4ifX0se25hbWU6ImNvbnRyb2xzIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhpcyBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgdGhlIGJyb3dzZXIgd2lsbCBvZmZlciBjb250cm9scyB0byBhbGxvdyB0aGUgdXNlciB0byBjb250cm9sIGF1ZGlvIHBsYXliYWNrLCBpbmNsdWRpbmcgdm9sdW1lLCBzZWVraW5nLCBhbmQgcGF1c2UvcmVzdW1lIHBsYXliYWNrLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2F1ZGlvIn1dfSx7bmFtZToic291cmNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc291cmNlIGVsZW1lbnQgYWxsb3dzIGF1dGhvcnMgdG8gc3BlY2lmeSBtdWx0aXBsZSBhbHRlcm5hdGl2ZSBtZWRpYSByZXNvdXJjZXMgZm9yIG1lZGlhIGVsZW1lbnRzLiBJdCBkb2VzIG5vdCByZXByZXNlbnQgYW55dGhpbmcgb24gaXRzIG93bi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3JjIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidSZXF1aXJlZCBmb3IgW2A8YXVkaW8+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2F1ZGlvICJUaGUgSFRNTCA8YXVkaW8+IGVsZW1lbnQgaXMgdXNlZCB0byBlbWJlZCBzb3VuZCBjb250ZW50IGluIGRvY3VtZW50cy4gSXQgbWF5IGNvbnRhaW4gb25lIG9yIG1vcmUgYXVkaW8gc291cmNlcywgcmVwcmVzZW50ZWQgdXNpbmcgdGhlIHNyYyBhdHRyaWJ1dGUgb3IgdGhlIDxzb3VyY2U+IGVsZW1lbnQ6wqB0aGUgYnJvd3NlciB3aWxsIGNob29zZSB0aGUgbW9zdCBzdWl0YWJsZSBvbmUuIEl0IGNhbiBhbHNvIGJlIHRoZSBkZXN0aW5hdGlvbiBmb3Igc3RyZWFtZWQgbWVkaWEsIHVzaW5nIGEgTWVkaWFTdHJlYW0uIikgYW5kIFtgPHZpZGVvPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC92aWRlbyAiVGhlIEhUTUwgVmlkZW8gZWxlbWVudCAoPHZpZGVvPikgZW1iZWRzIGEgbWVkaWEgcGxheWVyIHdoaWNoIHN1cHBvcnRzIHZpZGVvIHBsYXliYWNrIGludG8gdGhlIGRvY3VtZW50LiIpLCBhZGRyZXNzIG9mIHRoZSBtZWRpYSByZXNvdXJjZS4gVGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIGlzIGlnbm9yZWQgd2hlbiB0aGUgYDxzb3VyY2U+YCBlbGVtZW50IGlzIHBsYWNlZCBpbnNpZGUgYSBbYDxwaWN0dXJlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9waWN0dXJlICJUaGUgSFRNTCA8cGljdHVyZT4gZWxlbWVudCBjb250YWlucyB6ZXJvIG9yIG1vcmUgPHNvdXJjZT4gZWxlbWVudHMgYW5kIG9uZSA8aW1nPiBlbGVtZW50IHRvIHByb3ZpZGUgdmVyc2lvbnMgb2YgYW4gaW1hZ2UgZm9yIGRpZmZlcmVudCBkaXNwbGF5L2RldmljZSBzY2VuYXJpb3MuIikgZWxlbWVudC4nfX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBNSU1FLXR5cGUgb2YgdGhlIHJlc291cmNlLCBvcHRpb25hbGx5IHdpdGggYSBgY29kZWNzYCBwYXJhbWV0ZXIuIFNlZSBbUkZDIDQyODFdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM0MjgxKSBmb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIHNwZWNpZnkgY29kZWNzLiJ9fSx7bmFtZToic2l6ZXMiLGRlc2NyaXB0aW9uOidJcyBhIGxpc3Qgb2Ygc291cmNlIHNpemVzIHRoYXQgZGVzY3JpYmVzIHRoZSBmaW5hbCByZW5kZXJlZCB3aWR0aCBvZiB0aGUgaW1hZ2UgcmVwcmVzZW50ZWQgYnkgdGhlIHNvdXJjZS4gRWFjaCBzb3VyY2Ugc2l6ZSBjb25zaXN0cyBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIG1lZGlhIGNvbmRpdGlvbi1sZW5ndGggcGFpcnMuIFRoaXMgaW5mb3JtYXRpb24gaXMgdXNlZCBieSB0aGUgYnJvd3NlciB0byBkZXRlcm1pbmUsIGJlZm9yZSBsYXlpbmcgdGhlIHBhZ2Ugb3V0LCB3aGljaCBpbWFnZSBkZWZpbmVkIGluIFtgc3Jjc2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NvdXJjZSNhdHRyLXNyY3NldCkgdG8gdXNlLiAgXG5UaGUgYHNpemVzYCBhdHRyaWJ1dGUgaGFzIGFuIGVmZmVjdCBvbmx5IHdoZW4gdGhlIFtgPHNvdXJjZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc291cmNlICJUaGUgSFRNTCA8c291cmNlPiBlbGVtZW50IHNwZWNpZmllcyBtdWx0aXBsZSBtZWRpYSByZXNvdXJjZXMgZm9yIHRoZSA8cGljdHVyZT4sIHRoZSA8YXVkaW8+IGVsZW1lbnQsIG9yIHRoZSA8dmlkZW8+IGVsZW1lbnQuIikgZWxlbWVudCBpcyB0aGUgZGlyZWN0IGNoaWxkIG9mIGEgW2A8cGljdHVyZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcGljdHVyZSAiVGhlIEhUTUwgPHBpY3R1cmU+IGVsZW1lbnQgY29udGFpbnMgemVybyBvciBtb3JlIDxzb3VyY2U+IGVsZW1lbnRzIGFuZCBvbmUgPGltZz4gZWxlbWVudCB0byBwcm92aWRlIHZlcnNpb25zIG9mIGFuIGltYWdlIGZvciBkaWZmZXJlbnQgZGlzcGxheS9kZXZpY2Ugc2NlbmFyaW9zLiIpIGVsZW1lbnQuJ30se25hbWU6InNyY3NldCIsZGVzY3JpcHRpb246IkEgbGlzdCBvZiBvbmUgb3IgbW9yZSBzdHJpbmdzIHNlcGFyYXRlZCBieSBjb21tYXMgaW5kaWNhdGluZyBhIHNldCBvZiBwb3NzaWJsZSBpbWFnZXMgcmVwcmVzZW50ZWQgYnkgdGhlIHNvdXJjZSBmb3IgdGhlIGJyb3dzZXIgdG8gdXNlLiBFYWNoIHN0cmluZyBpcyBjb21wb3NlZCBvZjpcblxuMS4gIG9uZSBVUkwgdG8gYW4gaW1hZ2UsXG4yLiAgYSB3aWR0aCBkZXNjcmlwdG9yLCB0aGF0IGlzIGEgcG9zaXRpdmUgaW50ZWdlciBkaXJlY3RseSBmb2xsb3dlZCBieSBgJ3cnYC4gVGhlIGRlZmF1bHQgdmFsdWUsIGlmIG1pc3NpbmcsIGlzIHRoZSBpbmZpbml0eS5cbjMuICBhIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvciwgdGhhdCBpcyBhIHBvc2l0aXZlIGZsb2F0aW5nIG51bWJlciBkaXJlY3RseSBmb2xsb3dlZCBieSBgJ3gnYC4gVGhlIGRlZmF1bHQgdmFsdWUsIGlmIG1pc3NpbmcsIGlzIGAxeGAuXG5cbkVhY2ggc3RyaW5nIGluIHRoZSBsaXN0IG11c3QgaGF2ZSBhdCBsZWFzdCBhIHdpZHRoIGRlc2NyaXB0b3Igb3IgYSBwaXhlbCBkZW5zaXR5IGRlc2NyaXB0b3IgdG8gYmUgdmFsaWQuIEFtb25nIHRoZSBsaXN0LCB0aGVyZSBtdXN0IGJlIG9ubHkgb25lIHN0cmluZyBjb250YWluaW5nIHRoZSBzYW1lIHR1cGxlIG9mIHdpZHRoIGRlc2NyaXB0b3IgYW5kIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvci4gIFxuVGhlIGJyb3dzZXIgY2hvb3NlcyB0aGUgbW9zdCBhZGVxdWF0ZSBpbWFnZSB0byBkaXNwbGF5IGF0IGEgZ2l2ZW4gcG9pbnQgb2YgdGltZS4gIFxuVGhlIGBzcmNzZXRgIGF0dHJpYnV0ZSBoYXMgYW4gZWZmZWN0IG9ubHkgd2hlbiB0aGUgW2A8c291cmNlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zb3VyY2UgXCJUaGUgSFRNTCA8c291cmNlPiBlbGVtZW50IHNwZWNpZmllcyBtdWx0aXBsZSBtZWRpYSByZXNvdXJjZXMgZm9yIHRoZSA8cGljdHVyZT4sIHRoZSA8YXVkaW8+IGVsZW1lbnQsIG9yIHRoZSA8dmlkZW8+IGVsZW1lbnQuXCIpIGVsZW1lbnQgaXMgdGhlIGRpcmVjdCBjaGlsZCBvZiBhIFtgPHBpY3R1cmU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3BpY3R1cmUgXCJUaGUgSFRNTCA8cGljdHVyZT4gZWxlbWVudCBjb250YWlucyB6ZXJvIG9yIG1vcmUgPHNvdXJjZT4gZWxlbWVudHMgYW5kIG9uZSA8aW1nPiBlbGVtZW50IHRvIHByb3ZpZGUgdmVyc2lvbnMgb2YgYW4gaW1hZ2UgZm9yIGRpZmZlcmVudCBkaXNwbGF5L2RldmljZSBzY2VuYXJpb3MuXCIpIGVsZW1lbnQuIn0se25hbWU6Im1lZGlhIixkZXNjcmlwdGlvbjonW01lZGlhIHF1ZXJ5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9NZWRpYV9xdWVyaWVzKSBvZiB0aGUgcmVzb3VyY2VcJ3MgaW50ZW5kZWQgbWVkaWE7IHRoaXMgc2hvdWxkIGJlIHVzZWQgb25seSBpbiBhIFtgPHBpY3R1cmU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3BpY3R1cmUgIlRoZSBIVE1MIDxwaWN0dXJlPiBlbGVtZW50IGNvbnRhaW5zIHplcm8gb3IgbW9yZSA8c291cmNlPiBlbGVtZW50cyBhbmQgb25lIDxpbWc+IGVsZW1lbnQgdG8gcHJvdmlkZSB2ZXJzaW9ucyBvZiBhbiBpbWFnZSBmb3IgZGlmZmVyZW50IGRpc3BsYXkvZGV2aWNlIHNjZW5hcmlvcy4iKSBlbGVtZW50Lid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc291cmNlIn1dfSx7bmFtZToidHJhY2siLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0cmFjayBlbGVtZW50IGFsbG93cyBhdXRob3JzIHRvIHNwZWNpZnkgZXhwbGljaXQgZXh0ZXJuYWwgdGltZWQgdGV4dCB0cmFja3MgZm9yIG1lZGlhIGVsZW1lbnRzLiBJdCBkb2VzIG5vdCByZXByZXNlbnQgYW55dGhpbmcgb24gaXRzIG93bi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZGVmYXVsdCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSB0cmFjayBzaG91bGQgYmUgZW5hYmxlZCB1bmxlc3MgdGhlIHVzZXIncyBwcmVmZXJlbmNlcyBpbmRpY2F0ZSB0aGF0IGFub3RoZXIgdHJhY2sgaXMgbW9yZSBhcHByb3ByaWF0ZS4gVGhpcyBtYXkgb25seSBiZSB1c2VkIG9uIG9uZSBgdHJhY2tgIGVsZW1lbnQgcGVyIG1lZGlhIGVsZW1lbnQuIn19LHtuYW1lOiJraW5kIix2YWx1ZVNldDoidGsiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkhvdyB0aGUgdGV4dCB0cmFjayBpcyBtZWFudCB0byBiZSB1c2VkLiBJZiBvbWl0dGVkIHRoZSBkZWZhdWx0IGtpbmQgaXMgYHN1YnRpdGxlc2AuIElmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHByZXNlbnQsIGl0IHdpbGwgdXNlIHRoZSBgc3VidGl0bGVzYC4gSWYgdGhlIGF0dHJpYnV0ZSBjb250YWlucyBhbiBpbnZhbGlkIHZhbHVlLCBpdCB3aWxsIHVzZSBgbWV0YWRhdGFgLiAoVmVyc2lvbnMgb2YgQ2hyb21lIGVhcmxpZXIgdGhhbiA1MiB0cmVhdGVkIGFuIGludmFsaWQgdmFsdWUgYXMgYHN1YnRpdGxlc2AuKcKgVGhlIGZvbGxvd2luZyBrZXl3b3JkcyBhcmUgYWxsb3dlZDpcblxuKiAgIGBzdWJ0aXRsZXNgXG4gICAgKiAgIFN1YnRpdGxlcyBwcm92aWRlIHRyYW5zbGF0aW9uIG9mIGNvbnRlbnQgdGhhdCBjYW5ub3QgYmUgdW5kZXJzdG9vZCBieSB0aGUgdmlld2VyLiBGb3IgZXhhbXBsZSBkaWFsb2d1ZSBvciB0ZXh0IHRoYXQgaXMgbm90IEVuZ2xpc2ggaW4gYW4gRW5nbGlzaCBsYW5ndWFnZSBmaWxtLlxuICAgICogICBTdWJ0aXRsZXMgbWF5IGNvbnRhaW4gYWRkaXRpb25hbCBjb250ZW50LCB1c3VhbGx5IGV4dHJhIGJhY2tncm91bmQgaW5mb3JtYXRpb24uIEZvciBleGFtcGxlIHRoZSB0ZXh0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIFN0YXIgV2FycyBmaWxtcywgb3IgdGhlIGRhdGUsIHRpbWUsIGFuZCBsb2NhdGlvbiBvZiBhIHNjZW5lLlxuKiAgIGBjYXB0aW9uc2BcbiAgICAqICAgQ2xvc2VkIGNhcHRpb25zIHByb3ZpZGUgYSB0cmFuc2NyaXB0aW9uIGFuZCBwb3NzaWJseSBhIHRyYW5zbGF0aW9uIG9mIGF1ZGlvLlxuICAgICogICBJdCBtYXkgaW5jbHVkZSBpbXBvcnRhbnQgbm9uLXZlcmJhbCBpbmZvcm1hdGlvbiBzdWNoIGFzIG11c2ljIGN1ZXMgb3Igc291bmQgZWZmZWN0cy4gSXQgbWF5IGluZGljYXRlIHRoZSBjdWUncyBzb3VyY2UgKGUuZy4gbXVzaWMsIHRleHQsIGNoYXJhY3RlcikuXG4gICAgKiAgIFN1aXRhYmxlIGZvciB1c2VycyB3aG8gYXJlIGRlYWYgb3Igd2hlbiB0aGUgc291bmQgaXMgbXV0ZWQuXG4qICAgYGRlc2NyaXB0aW9uc2BcbiAgICAqICAgVGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUgdmlkZW8gY29udGVudC5cbiAgICAqICAgU3VpdGFibGUgZm9yIHVzZXJzIHdobyBhcmUgYmxpbmQgb3Igd2hlcmUgdGhlIHZpZGVvIGNhbm5vdCBiZSBzZWVuLlxuKiAgIGBjaGFwdGVyc2BcbiAgICAqICAgQ2hhcHRlciB0aXRsZXMgYXJlIGludGVuZGVkIHRvIGJlIHVzZWQgd2hlbiB0aGUgdXNlciBpcyBuYXZpZ2F0aW5nIHRoZSBtZWRpYSByZXNvdXJjZS5cbiogICBgbWV0YWRhdGFgXG4gICAgKiAgIFRyYWNrcyB1c2VkIGJ5IHNjcmlwdHMuIE5vdCB2aXNpYmxlIHRvIHRoZSB1c2VyLiJ9fSx7bmFtZToibGFiZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgdXNlci1yZWFkYWJsZSB0aXRsZSBvZiB0aGUgdGV4dCB0cmFjayB3aGljaCBpcyB1c2VkIGJ5IHRoZSBicm93c2VyIHdoZW4gbGlzdGluZyBhdmFpbGFibGUgdGV4dCB0cmFja3MuIn19LHtuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0FkZHJlc3Mgb2YgdGhlIHRyYWNrIChgLnZ0dGAgZmlsZSkuIE11c3QgYmUgYSB2YWxpZCBVUkwuIFRoaXMgYXR0cmlidXRlIG11c3QgYmUgc3BlY2lmaWVkIGFuZCBpdHMgVVJMIHZhbHVlIG11c3QgaGF2ZSB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIGRvY3VtZW50IOKAlCB1bmxlc3MgdGhlIFtgPGF1ZGlvPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hdWRpbyAiVGhlIEhUTUwgPGF1ZGlvPiBlbGVtZW50IGlzIHVzZWQgdG8gZW1iZWQgc291bmQgY29udGVudCBpbiBkb2N1bWVudHMuIEl0IG1heSBjb250YWluIG9uZSBvciBtb3JlIGF1ZGlvIHNvdXJjZXMsIHJlcHJlc2VudGVkIHVzaW5nIHRoZSBzcmMgYXR0cmlidXRlIG9yIHRoZSA8c291cmNlPiBlbGVtZW50OsKgdGhlIGJyb3dzZXIgd2lsbCBjaG9vc2UgdGhlIG1vc3Qgc3VpdGFibGUgb25lLiBJdCBjYW4gYWxzbyBiZSB0aGUgZGVzdGluYXRpb24gZm9yIHN0cmVhbWVkIG1lZGlhLCB1c2luZyBhIE1lZGlhU3RyZWFtLiIpIG9yIFtgPHZpZGVvPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC92aWRlbyAiVGhlIEhUTUwgVmlkZW8gZWxlbWVudCAoPHZpZGVvPikgZW1iZWRzIGEgbWVkaWEgcGxheWVyIHdoaWNoIHN1cHBvcnRzIHZpZGVvIHBsYXliYWNrIGludG8gdGhlIGRvY3VtZW50LiIpIHBhcmVudCBlbGVtZW50IG9mIHRoZSBgdHJhY2tgIGVsZW1lbnQgaGFzIGEgW2Bjcm9zc29yaWdpbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQ09SU19zZXR0aW5nc19hdHRyaWJ1dGVzKSBhdHRyaWJ1dGUuJ319LHtuYW1lOiJzcmNsYW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJMYW5ndWFnZSBvZiB0aGUgdHJhY2sgdGV4dCBkYXRhLiBJdCBtdXN0IGJlIGEgdmFsaWQgW0JDUCA0N10oaHR0cHM6Ly9yMTJhLmdpdGh1Yi5pby9hcHAtc3VidGFncy8pIGxhbmd1YWdlIHRhZy4gSWYgdGhlIGBraW5kYCBhdHRyaWJ1dGUgaXMgc2V0IHRvwqBgc3VidGl0bGVzLGAgdGhlbiBgc3JjbGFuZ2AgbXVzdCBiZSBkZWZpbmVkLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RyYWNrIn1dfSx7bmFtZToibWFwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWFwIGVsZW1lbnQsIGluIGNvbmp1bmN0aW9uIHdpdGggYW4gaW1nIGVsZW1lbnQgYW5kIGFueSBhcmVhIGVsZW1lbnQgZGVzY2VuZGFudHMsIGRlZmluZXMgYW4gaW1hZ2UgbWFwLiBUaGUgZWxlbWVudCByZXByZXNlbnRzIGl0cyBjaGlsZHJlbi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5hbWUgYXR0cmlidXRlIGdpdmVzIHRoZSBtYXAgYSBuYW1lIHNvIHRoYXQgaXQgY2FuIGJlIHJlZmVyZW5jZWQuIFRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBwcmVzZW50IGFuZCBtdXN0IGhhdmUgYSBub24tZW1wdHkgdmFsdWUgd2l0aCBubyBzcGFjZSBjaGFyYWN0ZXJzLiBUaGUgdmFsdWUgb2YgdGhlIG5hbWUgYXR0cmlidXRlIG11c3Qgbm90IGJlIGEgY29tcGF0aWJpbGl0eS1jYXNlbGVzcyBtYXRjaCBmb3IgdGhlIHZhbHVlIG9mIHRoZSBuYW1lIGF0dHJpYnV0ZSBvZiBhbm90aGVyIG1hcCBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50LiBJZiB0aGUgaWQgYXR0cmlidXRlIGlzIGFsc28gc3BlY2lmaWVkLCBib3RoIGF0dHJpYnV0ZXMgbXVzdCBoYXZlIHRoZSBzYW1lIHZhbHVlLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21hcCJ9XX0se25hbWU6ImFyZWEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBhcmVhIGVsZW1lbnQgcmVwcmVzZW50cyBlaXRoZXIgYSBoeXBlcmxpbmsgd2l0aCBzb21lIHRleHQgYW5kIGEgY29ycmVzcG9uZGluZyBhcmVhIG9uIGFuIGltYWdlIG1hcCwgb3IgYSBkZWFkIGFyZWEgb24gYW4gaW1hZ2UgbWFwLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbHQifSx7bmFtZToiY29vcmRzIn0se25hbWU6InNoYXBlIix2YWx1ZVNldDoic2gifSx7bmFtZToiaHJlZiJ9LHtuYW1lOiJ0YXJnZXQifSx7bmFtZToiZG93bmxvYWQifSx7bmFtZToicGluZyJ9LHtuYW1lOiJyZWwifSx7bmFtZToiaHJlZmxhbmcifSx7bmFtZToidHlwZSJ9LHtuYW1lOiJhY2Nlc3NrZXkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBrZXlib2FyZCBuYXZpZ2F0aW9uIGFjY2VsZXJhdG9yIGZvciB0aGUgZWxlbWVudC4gUHJlc3NpbmcgQUxUIG9yIGEgc2ltaWxhciBrZXkgaW4gYXNzb2NpYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBzZWxlY3RzIHRoZSBmb3JtIGNvbnRyb2wgY29ycmVsYXRlZCB3aXRoIHRoYXQga2V5IHNlcXVlbmNlLiBQYWdlIGRlc2lnbmVycyBhcmUgZm9yZXdhcm5lZCB0byBhdm9pZCBrZXkgc2VxdWVuY2VzIGFscmVhZHkgYm91bmQgdG8gYnJvd3NlcnMuIFRoaXMgYXR0cmlidXRlIGlzIGdsb2JhbCBzaW5jZSBIVE1MNS4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2FyZWEifV19LHtuYW1lOiJ0YWJsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRhYmxlIGVsZW1lbnQgcmVwcmVzZW50cyBkYXRhIHdpdGggbW9yZSB0aGFuIG9uZSBkaW1lbnNpb24sIGluIHRoZSBmb3JtIG9mIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImJvcmRlciJ9LHtuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGVzIGhvdyB0aGUgdGFibGUgbXVzdCBiZSBhbGlnbmVkIGluc2lkZSB0aGUgY29udGFpbmluZyBkb2N1bWVudC4gSXQgbWF5IGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBsZWZ0OiB0aGUgdGFibGUgaXMgZGlzcGxheWVkIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGRvY3VtZW50O1xuKiAgIGNlbnRlcjogdGhlIHRhYmxlIGlzIGRpc3BsYXllZCBpbiB0aGUgY2VudGVyIG9mIHRoZSBkb2N1bWVudDtcbiogICByaWdodDogdGhlIHRhYmxlIGlzIGRpc3BsYXllZCBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZG9jdW1lbnQuXG5cbioqVXNhZ2UgTm90ZSoqXG5cbiogICAqKkRvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUqKiwgYXMgaXQgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVGhlIFtgPHRhYmxlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90YWJsZSAiVGhlIEhUTUwgPHRhYmxlPiBlbGVtZW50IHJlcHJlc2VudHMgdGFidWxhciBkYXRhIOKAlCB0aGF0IGlzLCBpbmZvcm1hdGlvbiBwcmVzZW50ZWQgaW4gYSB0d28tZGltZW5zaW9uYWwgdGFibGUgY29tcHJpc2VkIG9mIHJvd3MgYW5kIGNvbHVtbnMgb2YgY2VsbHMgY29udGFpbmluZyBkYXRhLiIpIGVsZW1lbnQgc2hvdWxkIGJlIHN0eWxlZCB1c2luZyBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykuIFNldCBbYG1hcmdpbi1sZWZ0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbi1sZWZ0ICJUaGUgbWFyZ2luLWxlZnQgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSBsZWZ0IHNpZGUgb2YgYW4gZWxlbWVudC4gQSBwb3NpdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgZmFydGhlciBmcm9tIGl0cyBuZWlnaGJvcnMsIHdoaWxlIGEgbmVnYXRpdmUgdmFsdWUgcGxhY2VzIGl0IGNsb3Nlci4iKSBhbmQgW2BtYXJnaW4tcmlnaHRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luLXJpZ2h0ICJUaGUgbWFyZ2luLXJpZ2h0IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiB0aGUgcmlnaHQgc2lkZSBvZiBhbiBlbGVtZW50LiBBIHBvc2l0aXZlIHZhbHVlIHBsYWNlcyBpdCBmYXJ0aGVyIGZyb20gaXRzIG5laWdoYm9ycywgd2hpbGUgYSBuZWdhdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgY2xvc2VyLiIpIHRvIGBhdXRvYCBvciBbYG1hcmdpbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4gIlRoZSBtYXJnaW4gQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIGFsbCBmb3VyIHNpZGVzIG9mIGFuIGVsZW1lbnQuIEl0IGlzIGEgc2hvcnRoYW5kIGZvciBtYXJnaW4tdG9wLCBtYXJnaW4tcmlnaHQsIG1hcmdpbi1ib3R0b20sIGFuZCBtYXJnaW4tbGVmdC4iKSB0byBgMCBhdXRvYCB0byBhY2hpZXZlIGFuIGVmZmVjdCB0aGF0IGlzIHNpbWlsYXIgdG8gdGhlIGFsaWduIGF0dHJpYnV0ZS5cbiogICBQcmlvciB0byBGaXJlZm94IDQsIEZpcmVmb3ggYWxzbyBzdXBwb3J0ZWQgdGhlIGBtaWRkbGVgLCBgYWJzbWlkZGxlYCwgYW5kIGBhYnNjZW50ZXJgIHZhbHVlcyBhcyBzeW5vbnltcyBvZiBgY2VudGVyYCwgaW4gcXVpcmtzIG1vZGUgb25seS4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RhYmxlIn1dfSx7bmFtZToiY2FwdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGNhcHRpb24gZWxlbWVudCByZXByZXNlbnRzIHRoZSB0aXRsZSBvZiB0aGUgdGFibGUgdGhhdCBpcyBpdHMgcGFyZW50LCBpZiBpdCBoYXMgYSBwYXJlbnQgYW5kIHRoYXQgaXMgYSB0YWJsZSBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGVzIGhvdyB0aGUgY2FwdGlvbiBtdXN0IGJlIGFsaWduZWQgd2l0aCByZXNwZWN0IHRvIHRoZSB0YWJsZS4gSXQgbWF5IGhhdmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG5gbGVmdGBcblxuVGhlIGNhcHRpb24gaXMgZGlzcGxheWVkIHRvIHRoZSBsZWZ0IG9mIHRoZSB0YWJsZS5cblxuYHRvcGBcblxuVGhlIGNhcHRpb24gaXMgZGlzcGxheWVkIGFib3ZlIHRoZSB0YWJsZS5cblxuYHJpZ2h0YFxuXG5UaGUgY2FwdGlvbiBpcyBkaXNwbGF5ZWQgdG8gdGhlIHJpZ2h0IG9mIHRoZSB0YWJsZS5cblxuYGJvdHRvbWBcblxuVGhlIGNhcHRpb24gaXMgZGlzcGxheWVkIGJlbG93IHRoZSB0YWJsZS5cblxuKipVc2FnZSBub3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUsIGFzIGl0IGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFRoZSBbYDxjYXB0aW9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYXB0aW9uICJUaGUgSFRNTCBUYWJsZSBDYXB0aW9uIGVsZW1lbnQgKDxjYXB0aW9uPikgc3BlY2lmaWVzIHRoZSBjYXB0aW9uIChvciB0aXRsZSkgb2YgYSB0YWJsZSwgYW5kIGlmIHVzZWQgaXMgYWx3YXlzIHRoZSBmaXJzdCBjaGlsZCBvZiBhIDx0YWJsZT4uIikgZWxlbWVudCBzaG91bGQgYmUgc3R5bGVkIHVzaW5nIHRoZSBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykgcHJvcGVydGllcyBbYGNhcHRpb24tc2lkZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9jYXB0aW9uLXNpZGUgIlRoZSBjYXB0aW9uLXNpZGUgQ1NTIHByb3BlcnR5IHB1dHMgdGhlIGNvbnRlbnQgb2YgYSB0YWJsZVwncyA8Y2FwdGlvbj4gb24gdGhlIHNwZWNpZmllZCBzaWRlLiBUaGUgdmFsdWVzIGFyZSByZWxhdGl2ZSB0byB0aGUgd3JpdGluZy1tb2RlIG9mIHRoZSB0YWJsZS4iKSBhbmQgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FwdGlvbiJ9XX0se25hbWU6ImNvbGdyb3VwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY29sZ3JvdXAgZWxlbWVudCByZXByZXNlbnRzIGEgZ3JvdXAgb2Ygb25lIG9yIG1vcmUgY29sdW1ucyBpbiB0aGUgdGFibGUgdGhhdCBpcyBpdHMgcGFyZW50LCBpZiBpdCBoYXMgYSBwYXJlbnQgYW5kIHRoYXQgaXMgYSB0YWJsZSBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcGFuIn0se25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IGhvcml6b250YWwgYWxpZ25tZW50IG9mIGVhY2ggY29sdW1uIGNlbGwgY29udGVudCB3aWxsIGJlIGhhbmRsZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbGVmdGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsXG4qICAgYGNlbnRlcmAsIGNlbnRlcmluZyB0aGUgY29udGVudCBpbiB0aGUgY2VsbFxuKiAgIGByaWdodGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbFxuKiAgIGBqdXN0aWZ5YCwgaW5zZXJ0aW5nIHNwYWNlcyBpbnRvIHRoZSB0ZXh0dWFsIGNvbnRlbnQgc28gdGhhdCB0aGUgY29udGVudCBpcyBqdXN0aWZpZWQgaW4gdGhlIGNlbGxcbiogICBgY2hhcmAsIGFsaWduaW5nIHRoZSB0ZXh0dWFsIGNvbnRlbnQgb24gYSBzcGVjaWFsIGNoYXJhY3RlciB3aXRoIGEgbWluaW1hbCBvZmZzZXQsIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCNhdHRyLWNoYXJvZmYpIGF0dHJpYnV0ZXMgVW5pbXBsZW1lbnRlZCAoc2VlIFtidWfCoDIyMTJdKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTIgImNoYXJhY3RlciBhbGlnbm1lbnQgbm90IGltcGxlbWVudGVkIChhbGlnbj1jaGFyLCBjaGFyb2ZmPSwgdGV4dC1hbGlnbjo8c3RyaW5nPikiKSkuXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQsIHRoZSBgbGVmdGAgdmFsdWUgaXMgYXNzdW1lZC4gVGhlIGRlc2NlbmRhbnQgW2A8Y29sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wgIlRoZSBIVE1MIDxjb2w+IGVsZW1lbnQgZGVmaW5lcyBhIGNvbHVtbiB3aXRoaW4gYSB0YWJsZSBhbmQgaXMgdXNlZCBmb3IgZGVmaW5pbmcgY29tbW9uIHNlbWFudGljcyBvbiBhbGwgY29tbW9uIGNlbGxzLiBJdCBpcyBnZW5lcmFsbHkgZm91bmQgd2l0aGluIGEgPGNvbGdyb3VwPiBlbGVtZW50LiIpIGVsZW1lbnRzIG1heSBvdmVycmlkZSB0aGlzIHZhbHVlIHVzaW5nIHRoZWlyIG93biBbYGFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCNhdHRyLWFsaWduKSBhdHRyaWJ1dGUuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIChub3Qgc3VwcG9ydGVkKSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlczpcbiAgICAqICAgRG8gbm90IHRyeSB0byBzZXQgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBvbiBhIHNlbGVjdG9yIGdpdmluZyBhIFtgPGNvbGdyb3VwPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCAiVGhlIEhUTUwgPGNvbGdyb3VwPiBlbGVtZW50IGRlZmluZXMgYSBncm91cCBvZiBjb2x1bW5zIHdpdGhpbiBhIHRhYmxlLiIpIGVsZW1lbnQuIEJlY2F1c2UgW2A8dGQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkICJUaGUgSFRNTCA8dGQ+IGVsZW1lbnQgZGVmaW5lcyBhIGNlbGwgb2YgYSB0YWJsZSB0aGF0IGNvbnRhaW5zIGRhdGEuIEl0IHBhcnRpY2lwYXRlcyBpbiB0aGUgdGFibGUgbW9kZWwuIikgZWxlbWVudHMgYXJlIG5vdCBkZXNjZW5kYW50IG9mIHRoZSBbYDxjb2xncm91cD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sZ3JvdXAgIlRoZSBIVE1MIDxjb2xncm91cD4gZWxlbWVudCBkZWZpbmVzIGEgZ3JvdXAgb2YgY29sdW1ucyB3aXRoaW4gYSB0YWJsZS4iKSBlbGVtZW50LCB0aGV5IHdvblwndCBpbmhlcml0IGl0LlxuICAgICogICBJZiB0aGUgdGFibGUgZG9lc25cJ3QgdXNlIGEgW2Bjb2xzcGFuYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY29sc3BhbikgYXR0cmlidXRlLCB1c2Ugb25lIGB0ZDpudGgtY2hpbGQoYW4rYilgIENTUyBzZWxlY3RvciBwZXIgY29sdW1uLCB3aGVyZSBhIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgdGhlIGNvbHVtbnMgaW4gdGhlIHRhYmxlIGFuZCBiIGlzIHRoZSBvcmRpbmFsIHBvc2l0aW9uIG9mIHRoaXMgY29sdW1uIGluIHRoZSB0YWJsZS4gT25seSBhZnRlciB0aGlzIHNlbGVjdG9yIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgY2FuIGJlIHVzZWQuXG4gICAgKiAgIElmIHRoZSB0YWJsZSBkb2VzIHVzZSBhIFtgY29sc3BhbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCNhdHRyLWNvbHNwYW4pIGF0dHJpYnV0ZSwgdGhlIGVmZmVjdCBjYW4gYmUgYWNoaWV2ZWQgYnkgY29tYmluaW5nIGFkZXF1YXRlIENTUyBhdHRyaWJ1dGUgc2VsZWN0b3JzIGxpa2UgYFtjb2xzcGFuPW5dYCwgdGhvdWdoIHRoaXMgaXMgbm90IHRyaXZpYWwuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgaW4gQ1NTMywgeW91IGNhbiB1c2UgdGhlIHZhbHVlIG9mIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sZ3JvdXAjYXR0ci1jaGFyKSBhcyB0aGUgdmFsdWUgb2YgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBVbmltcGxlbWVudGVkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sZ3JvdXAifV19LHtuYW1lOiJjb2wiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIGEgY29sIGVsZW1lbnQgaGFzIGEgcGFyZW50IGFuZCB0aGF0IGlzIGEgY29sZ3JvdXAgZWxlbWVudCB0aGF0IGl0c2VsZiBoYXMgYSBwYXJlbnQgdGhhdCBpcyBhIHRhYmxlIGVsZW1lbnQsIHRoZW4gdGhlIGNvbCBlbGVtZW50IHJlcHJlc2VudHMgb25lIG9yIG1vcmUgY29sdW1ucyBpbiB0aGUgY29sdW1uIGdyb3VwIHJlcHJlc2VudGVkIGJ5IHRoYXQgY29sZ3JvdXAuIn0sYXR0cmlidXRlczpbe25hbWU6InNwYW4ifSx7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgZWFjaCBjb2x1bW4gY2VsbCBjb250ZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGxcbiogICBgY2VudGVyYCwgY2VudGVyaW5nIHRoZSBjb250ZW50IGluIHRoZSBjZWxsXG4qICAgYHJpZ2h0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsXG4qICAgYGp1c3RpZnlgLCBpbnNlcnRpbmcgc3BhY2VzIGludG8gdGhlIHRleHR1YWwgY29udGVudCBzbyB0aGF0IHRoZSBjb250ZW50IGlzIGp1c3RpZmllZCBpbiB0aGUgY2VsbFxuKiAgIGBjaGFyYCwgYWxpZ25pbmcgdGhlIHRleHR1YWwgY29udGVudCBvbiBhIHNwZWNpYWwgY2hhcmFjdGVyIHdpdGggYSBtaW5pbWFsIG9mZnNldCwgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItY2hhcm9mZikgYXR0cmlidXRlcyBVbmltcGxlbWVudGVkIChzZWUgW2J1Z8KgMjIxMl0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMiAiY2hhcmFjdGVyIGFsaWdubWVudCBub3QgaW1wbGVtZW50ZWQgKGFsaWduPWNoYXIsIGNoYXJvZmY9LCB0ZXh0LWFsaWduOjxzdHJpbmc+KSIpKS5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCwgaXRzIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBbYGFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbGdyb3VwI2F0dHItYWxpZ24pIG9mIHRoZSBbYDxjb2xncm91cD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sZ3JvdXAgIlRoZSBIVE1MIDxjb2xncm91cD4gZWxlbWVudCBkZWZpbmVzIGEgZ3JvdXAgb2YgY29sdW1ucyB3aXRoaW4gYSB0YWJsZS4iKSBlbGVtZW50IHRoaXMgYDxjb2w+YCBlbGVtZW50IGJlbG9uZ3MgdG9vLiBJZiB0aGVyZSBhcmUgbm9uZSwgdGhlIGBsZWZ0YCB2YWx1ZSBpcyBhc3N1bWVkLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSAobm90IHN1cHBvcnRlZCkgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXM6XG4gICAgKiAgIERvIG5vdCB0cnkgdG8gc2V0IHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgb24gYSBzZWxlY3RvciBnaXZpbmcgYSBbYDxjb2w+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCAiVGhlIEhUTUwgPGNvbD4gZWxlbWVudCBkZWZpbmVzIGEgY29sdW1uIHdpdGhpbiBhIHRhYmxlIGFuZCBpcyB1c2VkIGZvciBkZWZpbmluZyBjb21tb24gc2VtYW50aWNzIG9uIGFsbCBjb21tb24gY2VsbHMuIEl0IGlzIGdlbmVyYWxseSBmb3VuZCB3aXRoaW4gYSA8Y29sZ3JvdXA+IGVsZW1lbnQuIikgZWxlbWVudC4gQmVjYXVzZSBbYDx0ZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQgIlRoZSBIVE1MIDx0ZD4gZWxlbWVudCBkZWZpbmVzIGEgY2VsbCBvZiBhIHRhYmxlIHRoYXQgY29udGFpbnMgZGF0YS4gSXQgcGFydGljaXBhdGVzIGluIHRoZSB0YWJsZSBtb2RlbC4iKSBlbGVtZW50cyBhcmUgbm90IGRlc2NlbmRhbnQgb2YgdGhlIFtgPGNvbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sICJUaGUgSFRNTCA8Y29sPiBlbGVtZW50IGRlZmluZXMgYSBjb2x1bW4gd2l0aGluIGEgdGFibGUgYW5kIGlzIHVzZWQgZm9yIGRlZmluaW5nIGNvbW1vbiBzZW1hbnRpY3Mgb24gYWxsIGNvbW1vbiBjZWxscy4gSXQgaXMgZ2VuZXJhbGx5IGZvdW5kIHdpdGhpbiBhIDxjb2xncm91cD4gZWxlbWVudC4iKSBlbGVtZW50LCB0aGV5IHdvblwndCBpbmhlcml0IGl0LlxuICAgICogICBJZiB0aGUgdGFibGUgZG9lc25cJ3QgdXNlIGEgW2Bjb2xzcGFuYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY29sc3BhbikgYXR0cmlidXRlLCB1c2UgdGhlIGB0ZDpudGgtY2hpbGQoYW4rYilgIENTUyBzZWxlY3Rvci4gU2V0IGBhYCB0byB6ZXJvIGFuZCBgYmAgdG8gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4gaW4gdGhlIHRhYmxlLCBlLmcuIGB0ZDpudGgtY2hpbGQoMikgeyB0ZXh0LWFsaWduOiByaWdodDsgfWAgdG8gcmlnaHQtYWxpZ24gdGhlIHNlY29uZCBjb2x1bW4uXG4gICAgKiAgIElmIHRoZSB0YWJsZSBkb2VzIHVzZSBhIFtgY29sc3BhbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCNhdHRyLWNvbHNwYW4pIGF0dHJpYnV0ZSwgdGhlIGVmZmVjdCBjYW4gYmUgYWNoaWV2ZWQgYnkgY29tYmluaW5nIGFkZXF1YXRlIENTUyBhdHRyaWJ1dGUgc2VsZWN0b3JzIGxpa2UgYFtjb2xzcGFuPW5dYCwgdGhvdWdoIHRoaXMgaXMgbm90IHRyaXZpYWwuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgaW4gQ1NTMywgeW91IGNhbiB1c2UgdGhlIHZhbHVlIG9mIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItY2hhcikgYXMgdGhlIHZhbHVlIG9mIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgVW5pbXBsZW1lbnRlZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCJ9XX0se25hbWU6InRib2R5IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGJvZHkgZWxlbWVudCByZXByZXNlbnRzIGEgYmxvY2sgb2Ygcm93cyB0aGF0IGNvbnNpc3Qgb2YgYSBib2R5IG9mIGRhdGEgZm9yIHRoZSBwYXJlbnQgdGFibGUgZWxlbWVudCwgaWYgdGhlIHRib2R5IGVsZW1lbnQgaGFzIGEgcGFyZW50IGFuZCBpdCBpcyBhIHRhYmxlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyBob3Jpem9udGFsIGFsaWdubWVudCBvZiBlYWNoIGNlbGwgY29udGVudCB3aWxsIGJlIGhhbmRsZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbGVmdGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsXG4qICAgYGNlbnRlcmAsIGNlbnRlcmluZyB0aGUgY29udGVudCBpbiB0aGUgY2VsbFxuKiAgIGByaWdodGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbFxuKiAgIGBqdXN0aWZ5YCwgaW5zZXJ0aW5nIHNwYWNlcyBpbnRvIHRoZSB0ZXh0dWFsIGNvbnRlbnQgc28gdGhhdCB0aGUgY29udGVudCBpcyBqdXN0aWZpZWQgaW4gdGhlIGNlbGxcbiogICBgY2hhcmAsIGFsaWduaW5nIHRoZSB0ZXh0dWFsIGNvbnRlbnQgb24gYSBzcGVjaWFsIGNoYXJhY3RlciB3aXRoIGEgbWluaW1hbCBvZmZzZXQsIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Ym9keSNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCB0aGUgYGxlZnRgIHZhbHVlIGlzIGFzc3VtZWQuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIChub3Qgc3VwcG9ydGVkKSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlcywgdXNlIHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IG9uIGl0LlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGluIENTUzMsIHlvdSBjYW4gdXNlIHRoZSB2YWx1ZSBvZiB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rib2R5I2F0dHItY2hhcikgYXMgdGhlIHZhbHVlIG9mIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgVW5pbXBsZW1lbnRlZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rib2R5In1dfSx7bmFtZToidGhlYWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0aGVhZCBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGJsb2NrIG9mIHJvd3MgdGhhdCBjb25zaXN0IG9mIHRoZSBjb2x1bW4gbGFiZWxzIChoZWFkZXJzKSBmb3IgdGhlIHBhcmVudCB0YWJsZSBlbGVtZW50LCBpZiB0aGUgdGhlYWQgZWxlbWVudCBoYXMgYSBwYXJlbnQgYW5kIGl0IGlzIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IGhvcml6b250YWwgYWxpZ25tZW50IG9mIGVhY2ggY2VsbCBjb250ZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGxcbiogICBgY2VudGVyYCwgY2VudGVyaW5nIHRoZSBjb250ZW50IGluIHRoZSBjZWxsXG4qICAgYHJpZ2h0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsXG4qICAgYGp1c3RpZnlgLCBpbnNlcnRpbmcgc3BhY2VzIGludG8gdGhlIHRleHR1YWwgY29udGVudCBzbyB0aGF0IHRoZSBjb250ZW50IGlzIGp1c3RpZmllZCBpbiB0aGUgY2VsbFxuKiAgIGBjaGFyYCwgYWxpZ25pbmcgdGhlIHRleHR1YWwgY29udGVudCBvbiBhIHNwZWNpYWwgY2hhcmFjdGVyIHdpdGggYSBtaW5pbWFsIG9mZnNldCwgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoZWFkI2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aGVhZCNhdHRyLWNoYXJvZmYpIGF0dHJpYnV0ZXMgVW5pbXBsZW1lbnRlZCAoc2VlIFtidWfCoDIyMTJdKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTIgImNoYXJhY3RlciBhbGlnbm1lbnQgbm90IGltcGxlbWVudGVkIChhbGlnbj1jaGFyLCBjaGFyb2ZmPSwgdGV4dC1hbGlnbjo8c3RyaW5nPikiKSkuXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQsIHRoZSBgbGVmdGAgdmFsdWUgaXMgYXNzdW1lZC5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgKG5vdCBzdXBwb3J0ZWQpIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzLCB1c2UgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgb24gaXQuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgaW4gQ1NTMywgeW91IGNhbiB1c2UgdGhlIHZhbHVlIG9mIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGhlYWQjYXR0ci1jaGFyKSBhcyB0aGUgdmFsdWUgb2YgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBVbmltcGxlbWVudGVkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGhlYWQifV19LHtuYW1lOiJ0Zm9vdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRmb290IGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgYmxvY2sgb2Ygcm93cyB0aGF0IGNvbnNpc3Qgb2YgdGhlIGNvbHVtbiBzdW1tYXJpZXMgKGZvb3RlcnMpIGZvciB0aGUgcGFyZW50IHRhYmxlIGVsZW1lbnQsIGlmIHRoZSB0Zm9vdCBlbGVtZW50IGhhcyBhIHBhcmVudCBhbmQgaXQgaXMgYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgZWFjaCBjZWxsIGNvbnRlbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbFxuKiAgIGBjZW50ZXJgLCBjZW50ZXJpbmcgdGhlIGNvbnRlbnQgaW4gdGhlIGNlbGxcbiogICBgcmlnaHRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGxcbiogICBganVzdGlmeWAsIGluc2VydGluZyBzcGFjZXMgaW50byB0aGUgdGV4dHVhbCBjb250ZW50IHNvIHRoYXQgdGhlIGNvbnRlbnQgaXMganVzdGlmaWVkIGluIHRoZSBjZWxsXG4qICAgYGNoYXJgLCBhbGlnbmluZyB0aGUgdGV4dHVhbCBjb250ZW50IG9uIGEgc3BlY2lhbCBjaGFyYWN0ZXIgd2l0aCBhIG1pbmltYWwgb2Zmc2V0LCBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rib2R5I2F0dHItY2hhcm9mZikgYXR0cmlidXRlcyBVbmltcGxlbWVudGVkIChzZWUgW2J1Z8KgMjIxMl0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMiAiY2hhcmFjdGVyIGFsaWdubWVudCBub3QgaW1wbGVtZW50ZWQgKGFsaWduPWNoYXIsIGNoYXJvZmY9LCB0ZXh0LWFsaWduOjxzdHJpbmc+KSIpKS5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGBsZWZ0YCB2YWx1ZSBpcyBhc3N1bWVkLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSAobm90IHN1cHBvcnRlZCkgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXMsIHVzZSB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBvbiBpdC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBpbiBDU1MzLCB5b3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Zm9vdCNhdHRyLWNoYXIpIGFzIHRoZSB2YWx1ZSBvZiB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IFVuaW1wbGVtZW50ZWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Zm9vdCJ9XX0se25hbWU6InRyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdHIgZWxlbWVudCByZXByZXNlbnRzIGEgcm93IG9mIGNlbGxzIGluIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonQSBbYERPTVN0cmluZ2BdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9ET01TdHJpbmcgIkRPTVN0cmluZyBpcyBhIFVURi0xNiBTdHJpbmcuIEFzIEphdmFTY3JpcHQgYWxyZWFkeSB1c2VzIHN1Y2ggc3RyaW5ncywgRE9NU3RyaW5nIGlzIG1hcHBlZCBkaXJlY3RseSB0byBhIFN0cmluZy4iKSB3aGljaCBzcGVjaWZpZXMgaG93IHRoZSBjZWxsXCdzIGNvbnRleHQgc2hvdWxkIGJlIGFsaWduZWQgaG9yaXpvbnRhbGx5IHdpdGhpbiB0aGUgY2VsbHMgaW4gdGhlIHJvdzsgdGhpcyBpcyBzaG9ydGhhbmQgZm9yIHVzaW5nIGBhbGlnbmAgb24gZXZlcnkgY2VsbCBpbiB0aGUgcm93IGluZGl2aWR1YWxseS4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuYGxlZnRgXG5cbkFsaWduIHRoZSBjb250ZW50IG9mIGVhY2ggY2VsbCBhdCBpdHMgbGVmdCBlZGdlLlxuXG5gY2VudGVyYFxuXG5DZW50ZXIgdGhlIGNvbnRlbnRzIG9mIGVhY2ggY2VsbCBiZXR3ZWVuIHRoZWlyIGxlZnQgYW5kIHJpZ2h0IGVkZ2VzLlxuXG5gcmlnaHRgXG5cbkFsaWduIHRoZSBjb250ZW50IG9mIGVhY2ggY2VsbCBhdCBpdHMgcmlnaHQgZWRnZS5cblxuYGp1c3RpZnlgXG5cbldpZGVuIHdoaXRlc3BhY2VzIHdpdGhpbiB0aGUgdGV4dCBvZiBlYWNoIGNlbGwgc28gdGhhdCB0aGUgdGV4dCBmaWxscyB0aGUgZnVsbCB3aWR0aCBvZiBlYWNoIGNlbGwgKGZ1bGwganVzdGlmaWNhdGlvbikuXG5cbmBjaGFyYFxuXG5BbGlnbiBlYWNoIGNlbGwgaW4gdGhlIHJvdyBvbiBhIHNwZWNpZmljIGNoYXJhY3RlciAoc3VjaCB0aGF0IGVhY2ggcm93IGluIHRoZSBjb2x1bW4gdGhhdCBpcyBjb25maWd1cmVkIHRoaXMgd2F5IHdpbGwgaG9yaXpvbnRhbGx5IGFsaWduIGl0cyBjZWxscyBvbiB0aGF0IGNoYXJhY3RlcikuIFRoaXMgdXNlcyB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RyI2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ciNhdHRyLWNoYXJvZmYpIHRvIGVzdGFibGlzaCB0aGUgYWxpZ25tZW50IGNoYXJhY3RlciAodHlwaWNhbGx5ICIuIiBvciAiLCIgd2hlbiBhbGlnbmluZyBudW1lcmljYWwgZGF0YSkgYW5kIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IHNob3VsZCBmb2xsb3cgdGhlIGFsaWdubWVudCBjaGFyYWN0ZXIuIFRoaXMgYWxpZ25tZW50IHR5cGUgd2FzIG5ldmVyIHdpZGVseSBzdXBwb3J0ZWQuXG5cbklmIG5vIHZhbHVlIGlzIGV4cHJlc3NseSBzZXQgZm9yIGBhbGlnbmAsIHRoZSBwYXJlbnQgbm9kZVwncyB2YWx1ZSBpcyBpbmhlcml0ZWQuXG5cbkluc3RlYWQgb2YgdXNpbmcgdGhlIG9ic29sZXRlIGBhbGlnbmAgYXR0cmlidXRlLCB5b3Ugc2hvdWxkIGluc3RlYWQgdXNlIHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IHRvIGVzdGFibGlzaCBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgLCBvciBganVzdGlmeWAgYWxpZ25tZW50IGZvciB0aGUgcm93XCdzIGNlbGxzLiBUbyBhcHBseSBjaGFyYWN0ZXItYmFzZWQgYWxpZ25tZW50LCBzZXQgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgdG8gdGhlIGFsaWdubWVudCBjaGFyYWN0ZXIgKHN1Y2ggYXMgYCIuImAgb3IgYCIsImApLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdHIifV19LHtuYW1lOiJ0ZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRkIGVsZW1lbnQgcmVwcmVzZW50cyBhIGRhdGEgY2VsbCBpbiBhIHRhYmxlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjb2xzcGFuIn0se25hbWU6InJvd3NwYW4ifSx7bmFtZToiaGVhZGVycyJ9LHtuYW1lOiJhYmJyIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYSBzaG9ydCBhYmJyZXZpYXRlZCBkZXNjcmlwdGlvbiBvZiB0aGUgY2VsbCdzIGNvbnRlbnQuIFNvbWUgdXNlci1hZ2VudHMsIHN1Y2ggYXMgc3BlZWNoIHJlYWRlcnMsIG1heSBwcmVzZW50IHRoaXMgZGVzY3JpcHRpb24gYmVmb3JlIHRoZSBjb250ZW50IGl0c2VsZi5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBwdXQgdGhlIGFiYnJldmlhdGVkIGRlc2NyaXB0aW9uIGluc2lkZSB0aGUgY2VsbCBhbmQgcGxhY2UgdGhlIGxvbmcgY29udGVudCBpbiB0aGUgKip0aXRsZSoqIGF0dHJpYnV0ZS4ifSx7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgdGhlIGNlbGwgY29udGVudFwncyBob3Jpem9udGFsIGFsaWdubWVudCB3aWxsIGJlIGhhbmRsZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbGVmdGA6IFRoZSBjb250ZW50IGlzIGFsaWduZWQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGwuXG4qICAgYGNlbnRlcmA6IFRoZSBjb250ZW50IGlzIGNlbnRlcmVkIGluIHRoZSBjZWxsLlxuKiAgIGByaWdodGA6IFRoZSBjb250ZW50IGlzIGFsaWduZWQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsLlxuKiAgIGBqdXN0aWZ5YCAod2l0aCB0ZXh0IG9ubHkpOiBUaGUgY29udGVudCBpcyBzdHJldGNoZWQgb3V0IGluc2lkZSB0aGUgY2VsbCBzbyB0aGF0IGl0IGNvdmVycyBpdHMgZW50aXJlIHdpZHRoLlxuKiAgIGBjaGFyYCAod2l0aCB0ZXh0IG9ubHkpOiBUaGUgY29udGVudCBpcyBhbGlnbmVkIHRvIGEgY2hhcmFjdGVyIGluc2lkZSB0aGUgYDx0aD5gIGVsZW1lbnQgd2l0aCBtaW5pbWFsIG9mZnNldC4gVGhpcyBjaGFyYWN0ZXIgaXMgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCNhdHRyLWNoYXJvZmYpIGF0dHJpYnV0ZXMgVW5pbXBsZW1lbnRlZCAoc2VlIFtidWfCoDIyMTJdKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTIgImNoYXJhY3RlciBhbGlnbm1lbnQgbm90IGltcGxlbWVudGVkIChhbGlnbj1jaGFyLCBjaGFyb2ZmPSwgdGV4dC1hbGlnbjo8c3RyaW5nPikiKSkuXG5cblRoZSBkZWZhdWx0IHZhbHVlIHdoZW4gdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCBpcyBgbGVmdGAuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzLCBhcHBseSB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSB0byB0aGUgZWxlbWVudC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBnaXZlIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgdGhlIHNhbWUgdmFsdWUgeW91IHdvdWxkIHVzZSBmb3IgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCNhdHRyLWNoYXIpLiBVbmltcGxlbWVudGVkIGluIENTUzMuJ30se25hbWU6ImF4aXMiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBhIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIHN0cmluZ3MuIEVhY2ggc3RyaW5nIGlzIHRoZSBgaWRgIG9mIGEgZ3JvdXAgb2YgY2VsbHMgdGhhdCB0aGlzIGhlYWRlciBhcHBsaWVzIHRvLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLiJ9LHtuYW1lOiJiZ2NvbG9yIixkZXNjcmlwdGlvbjonVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBlYWNoIGNlbGwgaW4gYSBjb2x1bW4uIEl0IGNvbnNpc3RzIG9mIGEgNi1kaWdpdCBoZXhhZGVjaW1hbCBjb2RlIGFzIGRlZmluZWQgaW4gW3NSR0JdKGh0dHBzOi8vd3d3LnczLm9yZy9HcmFwaGljcy9Db2xvci9zUkdCKSBhbmQgaXMgcHJlZml4ZWQgYnkgXCcjXCcuIFRoaXMgYXR0cmlidXRlIG1heSBiZSB1c2VkIHdpdGggb25lIG9mIHNpeHRlZW4gcHJlZGVmaW5lZCBjb2xvciBzdHJpbmdzOlxuXG7CoFxuXG5gYmxhY2tgID0gIiMwMDAwMDAiXG5cbsKgXG5cbmBncmVlbmAgPSAiIzAwODAwMCJcblxuwqBcblxuYHNpbHZlcmAgPSAiI0MwQzBDMCJcblxuwqBcblxuYGxpbWVgID0gIiMwMEZGMDAiXG5cbsKgXG5cbmBncmF5YCA9ICIjODA4MDgwIlxuXG7CoFxuXG5gb2xpdmVgID0gIiM4MDgwMDAiXG5cbsKgXG5cbmB3aGl0ZWAgPSAiI0ZGRkZGRiJcblxuwqBcblxuYHllbGxvd2AgPSAiI0ZGRkYwMCJcblxuwqBcblxuYG1hcm9vbmAgPSAiIzgwMDAwMCJcblxuwqBcblxuYG5hdnlgID0gIiMwMDAwODAiXG5cbsKgXG5cbmByZWRgID0gIiNGRjAwMDAiXG5cbsKgXG5cbmBibHVlYCA9ICIjMDAwMEZGIlxuXG7CoFxuXG5gcHVycGxlYCA9ICIjODAwMDgwIlxuXG7CoFxuXG5gdGVhbGAgPSAiIzAwODA4MCJcblxuwqBcblxuYGZ1Y2hzaWFgID0gIiNGRjAwRkYiXG5cbsKgXG5cbmBhcXVhYCA9ICIjMDBGRkZGIlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYXMgaXQgaXMgbm9uLXN0YW5kYXJkIGFuZCBvbmx5IGltcGxlbWVudGVkIGluIHNvbWUgdmVyc2lvbnMgb2YgTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyOiBUaGUgW2A8dGQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkICJUaGUgSFRNTCA8dGQ+IGVsZW1lbnQgZGVmaW5lcyBhIGNlbGwgb2YgYSB0YWJsZSB0aGF0IGNvbnRhaW5zIGRhdGEuIEl0IHBhcnRpY2lwYXRlcyBpbiB0aGUgdGFibGUgbW9kZWwuIikgZWxlbWVudCBzaG91bGQgYmUgc3R5bGVkIHVzaW5nIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKS4gVG8gY3JlYXRlIGEgc2ltaWxhciBlZmZlY3QgdXNlIHRoZSBbYGJhY2tncm91bmQtY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1jb2xvciAiVGhlIGJhY2tncm91bmQtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgYW4gZWxlbWVudC4iKSBwcm9wZXJ0eSBpbiBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykgaW5zdGVhZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkIn1dfSx7bmFtZToidGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0aCBlbGVtZW50IHJlcHJlc2VudHMgYSBoZWFkZXIgY2VsbCBpbiBhIHRhYmxlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjb2xzcGFuIn0se25hbWU6InJvd3NwYW4ifSx7bmFtZToiaGVhZGVycyJ9LHtuYW1lOiJzY29wZSIsdmFsdWVTZXQ6InMifSx7bmFtZToic29ydGVkIn0se25hbWU6ImFiYnIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGEgc2hvcnQgYWJicmV2aWF0ZWQgZGVzY3JpcHRpb24gb2YgdGhlIGNlbGwncyBjb250ZW50LiBTb21lIHVzZXItYWdlbnRzLCBzdWNoIGFzIHNwZWVjaCByZWFkZXJzLCBtYXkgcHJlc2VudCB0aGlzIGRlc2NyaXB0aW9uIGJlZm9yZSB0aGUgY29udGVudCBpdHNlbGYuIn19LHtuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyB0aGUgY2VsbCBjb250ZW50XCdzIGhvcml6b250YWwgYWxpZ25tZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YDogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbC5cbiogICBgY2VudGVyYDogVGhlIGNvbnRlbnQgaXMgY2VudGVyZWQgaW4gdGhlIGNlbGwuXG4qICAgYHJpZ2h0YDogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGwuXG4qICAgYGp1c3RpZnlgICh3aXRoIHRleHQgb25seSk6IFRoZSBjb250ZW50IGlzIHN0cmV0Y2hlZCBvdXQgaW5zaWRlIHRoZSBjZWxsIHNvIHRoYXQgaXQgY292ZXJzIGl0cyBlbnRpcmUgd2lkdGguXG4qICAgYGNoYXJgICh3aXRoIHRleHQgb25seSk6IFRoZSBjb250ZW50IGlzIGFsaWduZWQgdG8gYSBjaGFyYWN0ZXIgaW5zaWRlIHRoZSBgPHRoPmAgZWxlbWVudCB3aXRoIG1pbmltYWwgb2Zmc2V0LiBUaGlzIGNoYXJhY3RlciBpcyBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGgjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoI2F0dHItY2hhcm9mZikgYXR0cmlidXRlcy5cblxuVGhlIGRlZmF1bHQgdmFsdWUgd2hlbiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkIGlzIGBsZWZ0YC5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXMsIGFwcGx5IHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IHRvIHRoZSBlbGVtZW50LlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGdpdmUgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSB0aGUgc2FtZSB2YWx1ZSB5b3Ugd291bGQgdXNlIGZvciB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoI2F0dHItY2hhcikuIFVuaW1wbGVtZW50ZWQgaW4gQ1NTMy4nfSx7bmFtZToiYXhpcyIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGEgbGlzdCBvZiBzcGFjZS1zZXBhcmF0ZWQgc3RyaW5ncy4gRWFjaCBzdHJpbmcgaXMgdGhlIGBpZGAgb2YgYSBncm91cCBvZiBjZWxscyB0aGF0IHRoaXMgaGVhZGVyIGFwcGxpZXMgdG8uXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQ6IHVzZSB0aGUgW2BzY29wZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aCNhdHRyLXNjb3BlKSBhdHRyaWJ1dGUgaW5zdGVhZC4ifSx7bmFtZToiYmdjb2xvciIsZGVzY3JpcHRpb246J1RoaXMgYXR0cmlidXRlIGRlZmluZXMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgZWFjaCBjZWxsIGluIGEgY29sdW1uLiBJdCBjb25zaXN0cyBvZiBhIDYtZGlnaXQgaGV4YWRlY2ltYWwgY29kZSBhcyBkZWZpbmVkIGluIFtzUkdCXShodHRwczovL3d3dy53My5vcmcvR3JhcGhpY3MvQ29sb3Ivc1JHQikgYW5kIGlzIHByZWZpeGVkIGJ5IFwnI1wnLiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgdXNlZCB3aXRoIG9uZSBvZiBzaXh0ZWVuIHByZWRlZmluZWQgY29sb3Igc3RyaW5nczpcblxuwqBcblxuYGJsYWNrYCA9ICIjMDAwMDAwIlxuXG7CoFxuXG5gZ3JlZW5gID0gIiMwMDgwMDAiXG5cbsKgXG5cbmBzaWx2ZXJgID0gIiNDMEMwQzAiXG5cbsKgXG5cbmBsaW1lYCA9ICIjMDBGRjAwIlxuXG7CoFxuXG5gZ3JheWAgPSAiIzgwODA4MCJcblxuwqBcblxuYG9saXZlYCA9ICIjODA4MDAwIlxuXG7CoFxuXG5gd2hpdGVgID0gIiNGRkZGRkYiXG5cbsKgXG5cbmB5ZWxsb3dgID0gIiNGRkZGMDAiXG5cbsKgXG5cbmBtYXJvb25gID0gIiM4MDAwMDAiXG5cbsKgXG5cbmBuYXZ5YCA9ICIjMDAwMDgwIlxuXG7CoFxuXG5gcmVkYCA9ICIjRkYwMDAwIlxuXG7CoFxuXG5gYmx1ZWAgPSAiIzAwMDBGRiJcblxuwqBcblxuYHB1cnBsZWAgPSAiIzgwMDA4MCJcblxuwqBcblxuYHRlYWxgID0gIiMwMDgwODAiXG5cbsKgXG5cbmBmdWNoc2lhYCA9ICIjRkYwMEZGIlxuXG7CoFxuXG5gYXF1YWAgPSAiIzAwRkZGRiJcblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUsIGFzIGl0IGlzIG5vbi1zdGFuZGFyZCBhbmQgb25seSBpbXBsZW1lbnRlZCBpbiBzb21lIHZlcnNpb25zIG9mIE1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlcjogVGhlIFtgPHRoPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aCAiVGhlIEhUTUwgPHRoPiBlbGVtZW50IGRlZmluZXMgYSBjZWxsIGFzIGhlYWRlciBvZiBhIGdyb3VwIG9mIHRhYmxlIGNlbGxzLiBUaGUgZXhhY3QgbmF0dXJlIG9mIHRoaXMgZ3JvdXAgaXMgZGVmaW5lZCBieSB0aGUgc2NvcGUgYW5kIGhlYWRlcnMgYXR0cmlidXRlcy4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTKS4gVG8gY3JlYXRlIGEgc2ltaWxhciBlZmZlY3QgdXNlIHRoZSBbYGJhY2tncm91bmQtY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1jb2xvciAiVGhlIGJhY2tncm91bmQtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgYW4gZWxlbWVudC4iKSBwcm9wZXJ0eSBpbiBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MpIGluc3RlYWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aCJ9XX0se25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBmb3JtIGVsZW1lbnQgcmVwcmVzZW50cyBhIGNvbGxlY3Rpb24gb2YgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzLCBzb21lIG9mIHdoaWNoIGNhbiByZXByZXNlbnQgZWRpdGFibGUgdmFsdWVzIHRoYXQgY2FuIGJlIHN1Ym1pdHRlZCB0byBhIHNlcnZlciBmb3IgcHJvY2Vzc2luZy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWNjZXB0LWNoYXJzZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0Egc3BhY2UtIG9yIGNvbW1hLWRlbGltaXRlZCBsaXN0IG9mIGNoYXJhY3RlciBlbmNvZGluZ3MgdGhhdCB0aGUgc2VydmVyIGFjY2VwdHMuIFRoZSBicm93c2VyIHVzZXMgdGhlbSBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcmUgbGlzdGVkLiBUaGUgZGVmYXVsdCB2YWx1ZSwgdGhlIHJlc2VydmVkIHN0cmluZyBgIlVOS05PV04iYCwgaW5kaWNhdGVzIHRoZSBzYW1lIGVuY29kaW5nIGFzIHRoYXQgb2YgdGhlIGRvY3VtZW50IGNvbnRhaW5pbmcgdGhlIGZvcm0gZWxlbWVudC4gIFxuSW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgSFRNTCwgdGhlIGRpZmZlcmVudCBjaGFyYWN0ZXIgZW5jb2RpbmdzIGNvdWxkIGJlIGRlbGltaXRlZCBieSBzcGFjZXMgb3IgY29tbWFzLiBJbiBIVE1MNSwgb25seSBzcGFjZXMgYXJlIGFsbG93ZWQgYXMgZGVsaW1pdGVycy4nfX0se25hbWU6ImFjdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIFVSSSBvZiBhIHByb2dyYW0gdGhhdCBwcm9jZXNzZXMgdGhlIGZvcm0gaW5mb3JtYXRpb24uIFRoaXMgdmFsdWUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBbYGZvcm1hY3Rpb25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItZm9ybWFjdGlvbikgYXR0cmlidXRlIG9uIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIG9yIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQuJ319LHtuYW1lOiJhdXRvY29tcGxldGUiLHZhbHVlU2V0OiJvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciBpbnB1dCBlbGVtZW50cyBjYW4gYnkgZGVmYXVsdCBoYXZlIHRoZWlyIHZhbHVlcyBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlZCBieSB0aGUgYnJvd3Nlci4gVGhpcyBzZXR0aW5nIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGFuIGBhdXRvY29tcGxldGVgIGF0dHJpYnV0ZSBvbiBhbiBlbGVtZW50IGJlbG9uZ2luZyB0byB0aGUgZm9ybS4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBvZmZgOiBUaGUgdXNlciBtdXN0IGV4cGxpY2l0bHkgZW50ZXIgYSB2YWx1ZSBpbnRvIGVhY2ggZmllbGQgZm9yIGV2ZXJ5IHVzZSwgb3IgdGhlIGRvY3VtZW50IHByb3ZpZGVzIGl0cyBvd24gYXV0by1jb21wbGV0aW9uIG1ldGhvZDsgdGhlIGJyb3dzZXIgZG9lcyBub3QgYXV0b21hdGljYWxseSBjb21wbGV0ZSBlbnRyaWVzLlxuKiAgIGBvbmA6IFRoZSBicm93c2VyIGNhbiBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlIHZhbHVlcyBiYXNlZCBvbiB2YWx1ZXMgdGhhdCB0aGUgdXNlciBoYXMgcHJldmlvdXNseSBlbnRlcmVkIGluIHRoZSBmb3JtLlxuXG5Gb3IgbW9zdCBtb2Rlcm4gYnJvd3NlcnMgKGluY2x1ZGluZyBGaXJlZm94IDM4KywgR29vZ2xlIENocm9tZSAzNCssIElFIDExKykgc2V0dGluZyB0aGUgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSB3aWxsIG5vdCBwcmV2ZW50IGEgYnJvd3NlcidzIHBhc3N3b3JkIG1hbmFnZXIgZnJvbSBhc2tpbmcgdGhlIHVzZXIgaWYgdGhleSB3YW50IHRvIHN0b3JlIGxvZ2luIGZpZWxkcyAodXNlcm5hbWUgYW5kIHBhc3N3b3JkKSwgaWYgdGhlIHVzZXIgcGVybWl0cyB0aGUgc3RvcmFnZSB0aGUgYnJvd3NlciB3aWxsIGF1dG9maWxsIHRoZSBsb2dpbiB0aGUgbmV4dCB0aW1lIHRoZSB1c2VyIHZpc2l0cyB0aGUgcGFnZS4gU2VlIFtUaGUgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSBhbmQgbG9naW4gZmllbGRzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TZWN1cmluZ195b3VyX3NpdGUvVHVybmluZ19vZmZfZm9ybV9hdXRvY29tcGxldGlvbiNUaGVfYXV0b2NvbXBsZXRlX2F0dHJpYnV0ZV9hbmRfbG9naW5fZmllbGRzKS4ifX0se25hbWU6ImVuY3R5cGUiLHZhbHVlU2V0OiJldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonV2hlbiB0aGUgdmFsdWUgb2YgdGhlIGBtZXRob2RgIGF0dHJpYnV0ZSBpcyBgcG9zdGAsIGVuY3R5cGUgaXMgdGhlIFtNSU1FIHR5cGVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbWVfdHlwZSkgb2YgY29udGVudCB0aGF0IGlzIHVzZWQgdG8gc3VibWl0IHRoZSBmb3JtIHRvIHRoZSBzZXJ2ZXIuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYDogVGhlIGRlZmF1bHQgdmFsdWUgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLlxuKiAgIGBtdWx0aXBhcnQvZm9ybS1kYXRhYDogVGhlIHZhbHVlIHVzZWQgZm9yIGFuIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQgd2l0aCB0aGUgYHR5cGVgIGF0dHJpYnV0ZSBzZXQgdG8gImZpbGUiLlxuKiAgIGB0ZXh0L3BsYWluYDogKEhUTUw1KVxuXG5UaGlzIHZhbHVlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgW2Bmb3JtZW5jdHlwZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24jYXR0ci1mb3JtZW5jdHlwZSkgYXR0cmlidXRlIG9uIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIG9yIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQuJ319LHtuYW1lOiJtZXRob2QiLHZhbHVlU2V0OiJtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgW0hUVFBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFApIG1ldGhvZCB0aGF0IHRoZSBicm93c2VyIHVzZXMgdG8gc3VibWl0IHRoZSBmb3JtLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYHBvc3RgOiBDb3JyZXNwb25kcyB0byB0aGUgSFRUUCBbUE9TVCBtZXRob2RdKGh0dHBzOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzkuaHRtbCNzZWM5LjUpIDsgZm9ybSBkYXRhIGFyZSBpbmNsdWRlZCBpbiB0aGUgYm9keSBvZiB0aGUgZm9ybSBhbmQgc2VudCB0byB0aGUgc2VydmVyLlxuKiAgIGBnZXRgOiBDb3JyZXNwb25kcyB0byB0aGUgSFRUUCBbR0VUIG1ldGhvZF0oaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjOS5odG1sI3NlYzkuMyk7IGZvcm0gZGF0YSBhcmUgYXBwZW5kZWQgdG8gdGhlIGBhY3Rpb25gIGF0dHJpYnV0ZSBVUkkgd2l0aCBhIFwnP1wnIGFzIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHRpbmcgVVJJIGlzIHNlbnQgdG8gdGhlIHNlcnZlci4gVXNlIHRoaXMgbWV0aG9kIHdoZW4gdGhlIGZvcm0gaGFzIG5vIHNpZGUtZWZmZWN0cyBhbmQgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLlxuKiAgIGBkaWFsb2dgOiBVc2Ugd2hlbiB0aGUgZm9ybSBpcyBpbnNpZGUgYcKgW2A8ZGlhbG9nPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kaWFsb2cgIlRoZSBIVE1MIDxkaWFsb2c+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRpYWxvZyBib3ggb3Igb3RoZXIgaW50ZXJhY3RpdmUgY29tcG9uZW50LCBzdWNoIGFzIGFuIGluc3BlY3RvciBvciB3aW5kb3cuIikgZWxlbWVudCB0byBjbG9zZSB0aGUgZGlhbG9nIHdoZW4gc3VibWl0dGVkLlxuXG5UaGlzIHZhbHVlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgW2Bmb3JtbWV0aG9kYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiNhdHRyLWZvcm1tZXRob2QpIGF0dHJpYnV0ZSBvbiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBvciBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50Lid9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5hbWUgb2YgdGhlIGZvcm0uIEluIEhUTUwgNCwgaXRzIHVzZSBpcyBkZXByZWNhdGVkIChgaWRgIHNob3VsZCBiZSB1c2VkIGluc3RlYWQpLiBJdCBtdXN0IGJlIHVuaXF1ZSBhbW9uZyB0aGUgZm9ybXMgaW4gYSBkb2N1bWVudCBhbmQgbm90IGp1c3QgYW4gZW1wdHkgc3RyaW5nIGluIEhUTUwgNS4ifX0se25hbWU6Im5vdmFsaWRhdGUiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBmb3JtIGlzIG5vdCB0byBiZSB2YWxpZGF0ZWQgd2hlbiBzdWJtaXR0ZWQuIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQgKGFuZCB0aGVyZWZvcmUgdGhlIGZvcm0gaXMgdmFsaWRhdGVkKSwgdGhpcyBkZWZhdWx0IHNldHRpbmcgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBbYGZvcm1ub3ZhbGlkYXRlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiNhdHRyLWZvcm1ub3ZhbGlkYXRlKSBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgb3IgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudCBiZWxvbmdpbmcgdG8gdGhlIGZvcm0uJ319LHtuYW1lOiJ0YXJnZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0EgbmFtZSBvciBrZXl3b3JkIGluZGljYXRpbmcgd2hlcmUgdG8gZGlzcGxheSB0aGUgcmVzcG9uc2UgdGhhdCBpcyByZWNlaXZlZCBhZnRlciBzdWJtaXR0aW5nIHRoZSBmb3JtLiBJbiBIVE1MIDQsIHRoaXMgaXMgdGhlIG5hbWUva2V5d29yZCBmb3IgYSBmcmFtZS4gSW4gSFRNTDUsIGl0IGlzIGEgbmFtZS9rZXl3b3JkIGZvciBhIF9icm93c2luZyBjb250ZXh0XyAoZm9yIGV4YW1wbGUsIHRhYiwgd2luZG93LCBvciBpbmxpbmUgZnJhbWUpLiBUaGUgZm9sbG93aW5nIGtleXdvcmRzIGhhdmUgc3BlY2lhbCBtZWFuaW5nczpcblxuKiAgIGBfc2VsZmA6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIHNhbWUgSFRNTCA0IGZyYW1lIChvciBIVE1MNSBicm93c2luZyBjb250ZXh0KSBhcyB0aGUgY3VycmVudCBvbmUuIFRoaXMgdmFsdWUgaXMgdGhlIGRlZmF1bHQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLlxuKiAgIGBfYmxhbmtgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIGEgbmV3IHVubmFtZWQgSFRNTCA0IHdpbmRvdyBvciBIVE1MNSBicm93c2luZyBjb250ZXh0LlxuKiAgIGBfcGFyZW50YDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgSFRNTCA0IGZyYW1lc2V0IHBhcmVudCBvZiB0aGUgY3VycmVudCBmcmFtZSwgb3IgSFRNTDUgcGFyZW50IGJyb3dzaW5nIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgb25lLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgb3B0aW9uIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG4qICAgYF90b3BgOiBIVE1MIDQ6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIGZ1bGwgb3JpZ2luYWwgd2luZG93LCBhbmQgY2FuY2VsIGFsbCBvdGhlciBmcmFtZXMuIEhUTUw1OiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dCAoaS5lLiwgdGhlIGJyb3dzaW5nIGNvbnRleHQgdGhhdCBpcyBhbiBhbmNlc3RvciBvZiB0aGUgY3VycmVudCBvbmUsIGFuZCBoYXMgbm8gcGFyZW50KS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIG9wdGlvbiBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuKiAgIF9pZnJhbWVuYW1lXzogVGhlIHJlc3BvbnNlIGlzIGRpc3BsYXllZCBpbiBhIG5hbWVkIFtgPGlmcmFtZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaWZyYW1lICJUaGUgSFRNTCBJbmxpbmUgRnJhbWUgZWxlbWVudCAoPGlmcmFtZT4pIHJlcHJlc2VudHMgYSBuZXN0ZWQgYnJvd3NpbmcgY29udGV4dCwgZW1iZWRkaW5nIGFub3RoZXIgSFRNTCBwYWdlIGludG8gdGhlIGN1cnJlbnQgb25lLiIpLlxuXG5IVE1MNTogVGhpcyB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIFtgZm9ybXRhcmdldGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24jYXR0ci1mb3JtdGFyZ2V0KSBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgb3IgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudC4nfX0se25hbWU6ImFjY2VwdCIsZGVzY3JpcHRpb246J0EgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgY29udGVudCB0eXBlcyB0aGF0IHRoZSBzZXJ2ZXIgYWNjZXB0cy5cblxuKipVc2FnZSBub3RlOioqIFRoaXMgYXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQgaW4gSFRNTDUgYW5kIHNob3VsZCBubyBsb25nZXIgYmUgdXNlZC4gSW5zdGVhZCwgdXNlIHRoZSBbYGFjY2VwdGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCNhdHRyLWFjY2VwdCkgYXR0cmlidXRlIG9mIHRoZSBzcGVjaWZpYyBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50Lid9LHtuYW1lOiJhdXRvY2FwaXRhbGl6ZSIsZGVzY3JpcHRpb246IlRoaXMgaXMgYSBub25zdGFuZGFyZCBhdHRyaWJ1dGUgdXNlZCBieSBpT1MgU2FmYXJpIE1vYmlsZSB3aGljaCBjb250cm9scyB3aGV0aGVyIGFuZCBob3cgdGhlIHRleHQgdmFsdWUgZm9yIHRleHR1YWwgZm9ybSBjb250cm9sIGRlc2NlbmRhbnRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGNhcGl0YWxpemVkIGFzIGl0IGlzIGVudGVyZWQvZWRpdGVkIGJ5IHRoZSB1c2VyLiBJZiB0aGUgYGF1dG9jYXBpdGFsaXplYCBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkIG9uIGFuIGluZGl2aWR1YWwgZm9ybSBjb250cm9sIGRlc2NlbmRhbnQsIGl0IHRydW1wcyB0aGUgZm9ybS13aWRlIGBhdXRvY2FwaXRhbGl6ZWAgc2V0dGluZy4gVGhlIG5vbi1kZXByZWNhdGVkIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGluIGlPUyA1IGFuZCBsYXRlci4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYHNlbnRlbmNlc2AuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbm9uZWA6IENvbXBsZXRlbHkgZGlzYWJsZXMgYXV0b21hdGljIGNhcGl0YWxpemF0aW9uXG4qICAgYHNlbnRlbmNlc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSB0aGUgZmlyc3QgbGV0dGVyIG9mIHNlbnRlbmNlcy5cbiogICBgd29yZHNgOiBBdXRvbWF0aWNhbGx5IGNhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiB3b3Jkcy5cbiogICBgY2hhcmFjdGVyc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSBhbGwgY2hhcmFjdGVycy5cbiogICBgb25gOiBEZXByZWNhdGVkIHNpbmNlIGlPUyA1LlxuKiAgIGBvZmZgOiBEZXByZWNhdGVkIHNpbmNlIGlPUyA1LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSJ9XX0se25hbWU6ImxhYmVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbGFiZWwgZWxlbWVudCByZXByZXNlbnRzIGEgY2FwdGlvbiBpbiBhIHVzZXIgaW50ZXJmYWNlLiBUaGUgY2FwdGlvbiBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgZm9ybSBjb250cm9sLCBrbm93biBhcyB0aGUgbGFiZWwgZWxlbWVudCdzIGxhYmVsZWQgY29udHJvbCwgZWl0aGVyIHVzaW5nIHRoZSBmb3IgYXR0cmlidXRlLCBvciBieSBwdXR0aW5nIHRoZSBmb3JtIGNvbnRyb2wgaW5zaWRlIHRoZSBsYWJlbCBlbGVtZW50IGl0c2VsZi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgd2l0aCB3aGljaCB0aGUgbGFiZWwgaXMgYXNzb2NpYXRlZCAoaXRzIF9mb3JtIG93bmVyXykuIElmIHNwZWNpZmllZCwgdGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgaXMgdGhlIGBpZGAgb2YgYSBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50LiBUaGlzIGxldHMgeW91IHBsYWNlIGxhYmVsIGVsZW1lbnRzIGFueXdoZXJlIHdpdGhpbiBhIGRvY3VtZW50LCBub3QganVzdCBhcyBkZXNjZW5kYW50cyBvZiB0aGVpciBmb3JtIGVsZW1lbnRzLid9fSx7bmFtZToiZm9yIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgW2BpZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMjYXR0ci1pZCkgb2YgYSBbbGFiZWxhYmxlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9HdWlkZS9IVE1ML0NvbnRlbnRfY2F0ZWdvcmllcyNGb3JtX2xhYmVsYWJsZSkgZm9ybS1yZWxhdGVkIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQgYXMgdGhlIGA8bGFiZWw+YCBlbGVtZW50LiBUaGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgZG9jdW1lbnQgd2l0aCBhbiBgaWRgIG1hdGNoaW5nIHRoZSB2YWx1ZSBvZiB0aGUgYGZvcmAgYXR0cmlidXRlIGlzIHRoZSBfbGFiZWxlZCBjb250cm9sXyBmb3IgdGhpcyBsYWJlbCBlbGVtZW50LCBpZiBpdCBpcyBhIGxhYmVsYWJsZSBlbGVtZW50LiBJZiBpdCBpc8Kgbm90IGxhYmVsYWJsZSB0aGVuIHRoZSBgZm9yYCBhdHRyaWJ1dGUgaGFzIG5vIGVmZmVjdC4gSWYgdGhlcmUgYXJlIG90aGVyIGVsZW1lbnRzIHdoaWNoIGFsc28gbWF0Y2ggdGhlIGBpZGAgdmFsdWUsIGxhdGVyIGluIHRoZSBkb2N1bWVudCwgdGhleSBhcmUgbm90IGNvbnNpZGVyZWQuXG5cbioqTm90ZSoqOiBBIGA8bGFiZWw+YCBlbGVtZW50IGNhbiBoYXZlIGJvdGggYSBgZm9yYCBhdHRyaWJ1dGUgYW5kIGEgY29udGFpbmVkIGNvbnRyb2wgZWxlbWVudCwgYXMgbG9uZyBhcyB0aGUgYGZvcmAgYXR0cmlidXRlIHBvaW50cyB0byB0aGUgY29udGFpbmVkIGNvbnRyb2wgZWxlbWVudC4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9sYWJlbCJ9XX0se25hbWU6ImlucHV0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaW5wdXQgZWxlbWVudCByZXByZXNlbnRzIGEgdHlwZWQgZGF0YSBmaWVsZCwgdXN1YWxseSB3aXRoIGEgZm9ybSBjb250cm9sIHRvIGFsbG93IHRoZSB1c2VyIHRvIGVkaXQgdGhlIGRhdGEuIn0sYXR0cmlidXRlczpbe25hbWU6ImFjY2VwdCJ9LHtuYW1lOiJhbHQifSx7bmFtZToiYXV0b2NvbXBsZXRlIix2YWx1ZVNldDoiaW5wdXRhdXRvY29tcGxldGUifSx7bmFtZToiYXV0b2ZvY3VzIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJjaGVja2VkIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJkaXJuYW1lIn0se25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJmb3JtIn0se25hbWU6ImZvcm1hY3Rpb24ifSx7bmFtZToiZm9ybWVuY3R5cGUiLHZhbHVlU2V0OiJldCJ9LHtuYW1lOiJmb3JtbWV0aG9kIix2YWx1ZVNldDoiZm0ifSx7bmFtZToiZm9ybW5vdmFsaWRhdGUiLHZhbHVlU2V0OiJ2In0se25hbWU6ImZvcm10YXJnZXQifSx7bmFtZToiaGVpZ2h0In0se25hbWU6ImlucHV0bW9kZSIsdmFsdWVTZXQ6ImltIn0se25hbWU6Imxpc3QifSx7bmFtZToibWF4In0se25hbWU6Im1heGxlbmd0aCJ9LHtuYW1lOiJtaW4ifSx7bmFtZToibWlubGVuZ3RoIn0se25hbWU6Im11bHRpcGxlIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJuYW1lIn0se25hbWU6InBhdHRlcm4ifSx7bmFtZToicGxhY2Vob2xkZXIifSx7bmFtZToicmVhZG9ubHkiLHZhbHVlU2V0OiJ2In0se25hbWU6InJlcXVpcmVkIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJzaXplIn0se25hbWU6InNyYyJ9LHtuYW1lOiJzdGVwIn0se25hbWU6InR5cGUiLHZhbHVlU2V0OiJ0In0se25hbWU6InZhbHVlIn0se25hbWU6IndpZHRoIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCJ9XX0se25hbWU6ImJ1dHRvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJ1dHRvbiBlbGVtZW50IHJlcHJlc2VudHMgYSBidXR0b24gbGFiZWxlZCBieSBpdHMgY29udGVudHMuIn0sYXR0cmlidXRlczpbe25hbWU6ImF1dG9mb2N1cyIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgbGV0cyB5b3Ugc3BlY2lmeSB0aGF0IHRoZSBidXR0b24gc2hvdWxkIGhhdmUgaW5wdXQgZm9jdXMgd2hlbiB0aGUgcGFnZSBsb2FkcywgdW5sZXNzIHRoZSB1c2VyIG92ZXJyaWRlcyBpdCwgZm9yIGV4YW1wbGUgYnkgdHlwaW5nIGluIGEgZGlmZmVyZW50IGNvbnRyb2wuIE9ubHkgb25lIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50IGluIGEgZG9jdW1lbnQgY2FuIGhhdmUgdGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVkLiJ9fSx7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBpbnRlcmFjdCB3aXRoIHRoZSBidXR0b24uIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBidXR0b24gaW5oZXJpdHMgaXRzIHNldHRpbmcgZnJvbSB0aGUgY29udGFpbmluZyBlbGVtZW50LCBmb3IgZXhhbXBsZSBbYDxmaWVsZHNldD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZmllbGRzZXQgIlRoZSBIVE1MIDxmaWVsZHNldD4gZWxlbWVudCBpcyB1c2VkIHRvIGdyb3VwIHNldmVyYWwgY29udHJvbHMgYXMgd2VsbCBhcyBsYWJlbHMgKDxsYWJlbD4pIHdpdGhpbiBhIHdlYiBmb3JtLiIpOyBpZiB0aGVyZSBpcyBubyBjb250YWluaW5nIGVsZW1lbnQgd2l0aCB0aGUgKipkaXNhYmxlZCoqIGF0dHJpYnV0ZSBzZXQsIHRoZW4gdGhlIGJ1dHRvbiBpcyBlbmFibGVkLlxuXG5GaXJlZm94IHdpbGwsIHVubGlrZSBvdGhlciBicm93c2VycywgYnkgZGVmYXVsdCwgW3BlcnNpc3QgdGhlIGR5bmFtaWMgZGlzYWJsZWQgc3RhdGVdKGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU5ODU4MzkvYnVnLXdpdGgtZmlyZWZveC1kaXNhYmxlZC1hdHRyaWJ1dGUtb2YtaW5wdXQtbm90LXJlc2V0dGluZy13aGVuLXJlZnJlc2hpbmcpIG9mIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIGFjcm9zcyBwYWdlIGxvYWRzLiBVc2UgdGhlIFtgYXV0b2NvbXBsZXRlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiNhdHRyLWF1dG9jb21wbGV0ZSkgYXR0cmlidXRlIHRvIGNvbnRyb2wgdGhpcyBmZWF0dXJlLid9fSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIGZvcm0gZWxlbWVudCB0aGF0IHRoZSBidXR0b24gaXMgYXNzb2NpYXRlZCB3aXRoIChpdHMgX2Zvcm0gb3duZXJfKS4gVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgbXVzdCBiZSB0aGUgKippZCoqIGF0dHJpYnV0ZSBvZiBhIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBgPGJ1dHRvbj5gIGVsZW1lbnQgd2lsbCBiZSBhc3NvY2lhdGVkIHRvIGFuIGFuY2VzdG9yIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQsIGlmIG9uZSBleGlzdHMuIFRoaXMgYXR0cmlidXRlIGVuYWJsZXMgeW91IHRvIGFzc29jaWF0ZSBgPGJ1dHRvbj5gIGVsZW1lbnRzIHRvIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnRzIGFueXdoZXJlIHdpdGhpbiBhIGRvY3VtZW50LCBub3QganVzdCBhcyBkZXNjZW5kYW50cyBvZiBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50cy4nfX0se25hbWU6ImZvcm1hY3Rpb24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBVUkkgb2YgYSBwcm9ncmFtIHRoYXQgcHJvY2Vzc2VzIHRoZSBpbmZvcm1hdGlvbiBzdWJtaXR0ZWQgYnkgdGhlIGJ1dHRvbi4gSWYgc3BlY2lmaWVkLCBpdCBvdmVycmlkZXMgdGhlIFtgYWN0aW9uYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0jYXR0ci1hY3Rpb24pIGF0dHJpYnV0ZSBvZiB0aGUgYnV0dG9uJ3MgZm9ybSBvd25lci4ifX0se25hbWU6ImZvcm1lbmN0eXBlIix2YWx1ZVNldDoiZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0lmIHRoZSBidXR0b24gaXMgYSBzdWJtaXQgYnV0dG9uLCB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgY29udGVudCB0aGF0IGlzIHVzZWQgdG8gc3VibWl0IHRoZSBmb3JtIHRvIHRoZSBzZXJ2ZXIuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYDogVGhlIGRlZmF1bHQgdmFsdWUgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLlxuKiAgIGBtdWx0aXBhcnQvZm9ybS1kYXRhYDogVXNlIHRoaXMgdmFsdWUgaWYgeW91IGFyZSB1c2luZyBhbiBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50IHdpdGggdGhlIFtgdHlwZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCNhdHRyLXR5cGUpIGF0dHJpYnV0ZSBzZXQgdG8gYGZpbGVgLlxuKiAgIGB0ZXh0L3BsYWluYFxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIGl0IG92ZXJyaWRlcyB0aGUgW2BlbmN0eXBlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0jYXR0ci1lbmN0eXBlKSBhdHRyaWJ1dGUgb2YgdGhlIGJ1dHRvblwncyBmb3JtIG93bmVyLid9fSx7bmFtZToiZm9ybW1ldGhvZCIsdmFsdWVTZXQ6ImZtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGUgYnV0dG9uIGlzIGEgc3VibWl0IGJ1dHRvbiwgdGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBIVFRQIG1ldGhvZCB0aGF0IHRoZSBicm93c2VyIHVzZXMgdG8gc3VibWl0IHRoZSBmb3JtLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYHBvc3RgOiBUaGUgZGF0YSBmcm9tIHRoZSBmb3JtIGFyZSBpbmNsdWRlZCBpbiB0aGUgYm9keSBvZiB0aGUgZm9ybSBhbmQgc2VudCB0byB0aGUgc2VydmVyLlxuKiAgIGBnZXRgOiBUaGUgZGF0YSBmcm9tIHRoZSBmb3JtIGFyZSBhcHBlbmRlZCB0byB0aGUgKipmb3JtKiogYXR0cmlidXRlIFVSSSwgd2l0aCBhICc/JyBhcyBhIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHRpbmcgVVJJIGlzIHNlbnQgdG8gdGhlIHNlcnZlci4gVXNlIHRoaXMgbWV0aG9kIHdoZW4gdGhlIGZvcm0gaGFzIG5vIHNpZGUtZWZmZWN0cyBhbmQgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLlxuXG5JZiBzcGVjaWZpZWQsIHRoaXMgYXR0cmlidXRlIG92ZXJyaWRlcyB0aGUgW2BtZXRob2RgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLW1ldGhvZCkgYXR0cmlidXRlIG9mIHRoZSBidXR0b24ncyBmb3JtIG93bmVyLiJ9fSx7bmFtZToiZm9ybW5vdmFsaWRhdGUiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGUgYnV0dG9uIGlzIGEgc3VibWl0IGJ1dHRvbiwgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhhdCB0aGUgZm9ybSBpcyBub3QgdG8gYmUgdmFsaWRhdGVkIHdoZW4gaXQgaXMgc3VibWl0dGVkLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIGl0IG92ZXJyaWRlcyB0aGUgW2Bub3ZhbGlkYXRlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0jYXR0ci1ub3ZhbGlkYXRlKSBhdHRyaWJ1dGUgb2YgdGhlIGJ1dHRvbidzIGZvcm0gb3duZXIuIn19LHtuYW1lOiJmb3JtdGFyZ2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGUgYnV0dG9uIGlzIGEgc3VibWl0IGJ1dHRvbiwgdGhpcyBhdHRyaWJ1dGUgaXMgYSBuYW1lIG9yIGtleXdvcmQgaW5kaWNhdGluZyB3aGVyZSB0byBkaXNwbGF5IHRoZSByZXNwb25zZSB0aGF0IGlzIHJlY2VpdmVkIGFmdGVyIHN1Ym1pdHRpbmcgdGhlIGZvcm0uIFRoaXMgaXMgYSBuYW1lIG9mLCBvciBrZXl3b3JkIGZvciwgYSBfYnJvd3NpbmcgY29udGV4dF8gKGZvciBleGFtcGxlLCB0YWIsIHdpbmRvdywgb3IgaW5saW5lIGZyYW1lKS4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLCBpdCBvdmVycmlkZXMgdGhlIFtgdGFyZ2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0jYXR0ci10YXJnZXQpIGF0dHJpYnV0ZSBvZiB0aGUgYnV0dG9uJ3MgZm9ybSBvd25lci4gVGhlIGZvbGxvd2luZyBrZXl3b3JkcyBoYXZlIHNwZWNpYWwgbWVhbmluZ3M6XG5cbiogICBgX3NlbGZgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIHRoZSBzYW1lIGJyb3dzaW5nIGNvbnRleHQgYXMgdGhlIGN1cnJlbnQgb25lLiBUaGlzIHZhbHVlIGlzIHRoZSBkZWZhdWx0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZC5cbiogICBgX2JsYW5rYDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byBhIG5ldyB1bm5hbWVkIGJyb3dzaW5nIGNvbnRleHQuXG4qICAgYF9wYXJlbnRgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIHRoZSBwYXJlbnQgYnJvd3NpbmcgY29udGV4dCBvZiB0aGUgY3VycmVudCBvbmUuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cbiogICBgX3RvcGA6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0ICh0aGF0IGlzLCB0aGUgYnJvd3NpbmcgY29udGV4dCB0aGF0IGlzIGFuIGFuY2VzdG9yIG9mIHRoZSBjdXJyZW50IG9uZSwgYW5kIGhhcyBubyBwYXJlbnQpLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgb3B0aW9uIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuIn19LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBvZiB0aGUgYnV0dG9uLCB3aGljaCBpcyBzdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybSBkYXRhLiJ9fSx7bmFtZToidHlwZSIsdmFsdWVTZXQ6ImJ0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdHlwZSBvZiB0aGUgYnV0dG9uLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYHN1Ym1pdGA6IFRoZSBidXR0b24gc3VibWl0cyB0aGUgZm9ybSBkYXRhIHRvIHRoZSBzZXJ2ZXIuIFRoaXMgaXMgdGhlIGRlZmF1bHQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCBvciBpZiB0aGUgYXR0cmlidXRlIGlzIGR5bmFtaWNhbGx5IGNoYW5nZWQgdG8gYW4gZW1wdHkgb3IgaW52YWxpZCB2YWx1ZS5cbiogICBgcmVzZXRgOiBUaGUgYnV0dG9uIHJlc2V0cyBhbGwgdGhlIGNvbnRyb2xzIHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLlxuKiAgIGBidXR0b25gOiBUaGUgYnV0dG9uIGhhcyBubyBkZWZhdWx0IGJlaGF2aW9yLiBJdCBjYW4gaGF2ZSBjbGllbnQtc2lkZSBzY3JpcHRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZWxlbWVudCdzIGV2ZW50cywgd2hpY2ggYXJlIHRyaWdnZXJlZCB3aGVuIHRoZSBldmVudHMgb2NjdXIuIn19LHtuYW1lOiJ2YWx1ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIGJ1dHRvbi4gSXQgZGVmaW5lcyB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBidXR0b24gd2hpY2ggaXMgc3VibWl0dGVkIHdpdGggdGhlIGZvcm0gZGF0YS4gVGhpcyB2YWx1ZSBpcyBwYXNzZWQgdG8gdGhlIHNlcnZlciBpbiBwYXJhbXMgd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQuIn19LHtuYW1lOiJhdXRvY29tcGxldGUiLGRlc2NyaXB0aW9uOidUaGUgdXNlIG9mIHRoaXMgYXR0cmlidXRlIG9uIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIGlzIG5vbnN0YW5kYXJkIGFuZCBGaXJlZm94LXNwZWNpZmljLiBCeSBkZWZhdWx0LCB1bmxpa2Ugb3RoZXIgYnJvd3NlcnMsIFtGaXJlZm94IHBlcnNpc3RzIHRoZSBkeW5hbWljIGRpc2FibGVkIHN0YXRlXShodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81OTg1ODM5L2J1Zy13aXRoLWZpcmVmb3gtZGlzYWJsZWQtYXR0cmlidXRlLW9mLWlucHV0LW5vdC1yZXNldHRpbmctd2hlbi1yZWZyZXNoaW5nKSBvZiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBhY3Jvc3MgcGFnZSBsb2Fkcy4gU2V0dGluZyB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgdG8gYG9mZmAgKGkuZS4gYGF1dG9jb21wbGV0ZT0ib2ZmImApIGRpc2FibGVzIHRoaXMgZmVhdHVyZS4gU2VlIFtidWfCoDY1NDA3Ml0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU0MDcyICJpZiBkaXNhYmxlZCBzdGF0ZSBpcyBjaGFuZ2VkIHdpdGggamF2YXNjcmlwdCwgdGhlIG5vcm1hbCBzdGF0ZSBkb2VzblwndCByZXR1cm4gYWZ0ZXIgcmVmcmVzaGluZyB0aGUgcGFnZSIpLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uIn1dfSx7bmFtZToic2VsZWN0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc2VsZWN0IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNvbnRyb2wgZm9yIHNlbGVjdGluZyBhbW9uZ3N0IGEgc2V0IG9mIG9wdGlvbnMuIn0sYXR0cmlidXRlczpbe25hbWU6ImF1dG9jb21wbGV0ZSIsdmFsdWVTZXQ6ImlucHV0YXV0b2NvbXBsZXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBIFtgRE9NU3RyaW5nYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RPTVN0cmluZyAiRE9NU3RyaW5nIGlzIGEgVVRGLTE2IFN0cmluZy4gQXMgSmF2YVNjcmlwdCBhbHJlYWR5IHVzZXMgc3VjaCBzdHJpbmdzLCBET01TdHJpbmcgaXMgbWFwcGVkIGRpcmVjdGx5IHRvIGEgU3RyaW5nLiIpIHByb3ZpZGluZyBhIGhpbnQgZm9yIGEgW3VzZXIgYWdlbnRcJ3NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvdXNlcl9hZ2VudCAidXNlciBhZ2VudFwnczogQSB1c2VyIGFnZW50IGlzIGEgY29tcHV0ZXIgcHJvZ3JhbSByZXByZXNlbnRpbmcgYSBwZXJzb24sIGZvciBleGFtcGxlLCBhIGJyb3dzZXIgaW4gYSBXZWIgY29udGV4dC4iKSBhdXRvY29tcGxldGUgZmVhdHVyZS4gU2VlIFtUaGUgSFRNTCBhdXRvY29tcGxldGUgYXR0cmlidXRlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0F0dHJpYnV0ZXMvYXV0b2NvbXBsZXRlKSBmb3IgYSBjb21wbGV0ZSBsaXN0IG9mIHZhbHVlcyBhbmQgZGV0YWlscyBvbiBob3cgdG8gdXNlIGF1dG9jb21wbGV0ZS4nfX0se25hbWU6ImF1dG9mb2N1cyIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgbGV0cyB5b3Ugc3BlY2lmeSB0aGF0IGEgZm9ybSBjb250cm9sIHNob3VsZCBoYXZlIGlucHV0IGZvY3VzIHdoZW4gdGhlIHBhZ2UgbG9hZHMuIE9ubHkgb25lIGZvcm0gZWxlbWVudCBpbiBhIGRvY3VtZW50IGNhbiBoYXZlIHRoZSBgYXV0b2ZvY3VzYCBhdHRyaWJ1dGUuIn19LHtuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgY2Fubm90IGludGVyYWN0IHdpdGggdGhlIGNvbnRyb2wuIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBjb250cm9sIGluaGVyaXRzIGl0cyBzZXR0aW5nIGZyb20gdGhlIGNvbnRhaW5pbmcgZWxlbWVudCwgZm9yIGV4YW1wbGUgYGZpZWxkc2V0YDsgaWYgdGhlcmUgaXMgbm8gY29udGFpbmluZyBlbGVtZW50IHdpdGggdGhlIGBkaXNhYmxlZGAgYXR0cmlidXRlIHNldCwgdGhlbiB0aGUgY29udHJvbCBpcyBlbmFibGVkLiJ9fSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgbGV0cyB5b3Ugc3BlY2lmeSB0aGUgZm9ybSBlbGVtZW50IHRvwqB3aGljaMKgdGhlIHNlbGVjdCBlbGVtZW50IGlzIGFzc29jaWF0ZWTCoCh0aGF0IGlzLCBpdHMgImZvcm0gb3duZXIiKS4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLCBpdHMgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgYGlkYCBvZiBhIGZvcm0gZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4gVGhpcyBlbmFibGVzIHlvdSB0byBwbGFjZSBzZWxlY3QgZWxlbWVudHMgYW55d2hlcmUgd2l0aGluIGEgZG9jdW1lbnQsIG5vdCBqdXN0IGFzIGRlc2NlbmRhbnRzIG9mIHRoZWlyIGZvcm0gZWxlbWVudHMuJ319LHtuYW1lOiJtdWx0aXBsZSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgbXVsdGlwbGUgb3B0aW9ucyBjYW4gYmUgc2VsZWN0ZWQgaW4gdGhlIGxpc3QuIElmIGl0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gb25seSBvbmUgb3B0aW9uIGNhbiBiZSBzZWxlY3RlZCBhdCBhIHRpbWUuIFdoZW4gYG11bHRpcGxlYCBpcyBzcGVjaWZpZWQsIG1vc3QgYnJvd3NlcnMgd2lsbCBzaG93IGEgc2Nyb2xsaW5nIGxpc3QgYm94IGluc3RlYWQgb2YgYSBzaW5nbGUgbGluZSBkcm9wZG93bi4ifX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgY29udHJvbC4ifX0se25hbWU6InJlcXVpcmVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIHRoYXQgYW4gb3B0aW9uIHdpdGggYSBub24tZW1wdHkgc3RyaW5nIHZhbHVlIG11c3QgYmUgc2VsZWN0ZWQuIn19LHtuYW1lOiJzaXplIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGUgY29udHJvbCBpcyBwcmVzZW50ZWQgYXMgYSBzY3JvbGxpbmcgbGlzdCBib3ggKGUuZy4gd2hlbiBgbXVsdGlwbGVgIGlzIHNwZWNpZmllZCksIHRoaXMgYXR0cmlidXRlIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZiByb3dzIGluIHRoZSBsaXN0IHRoYXQgc2hvdWxkIGJlIHZpc2libGUgYXQgb25lIHRpbWUuIEJyb3dzZXJzIGFyZSBub3QgcmVxdWlyZWQgdG8gcHJlc2VudCBhIHNlbGVjdCBlbGVtZW50IGFzIGEgc2Nyb2xsZWQgbGlzdCBib3guIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDAuXG5cbioqTm90ZToqKiBBY2NvcmRpbmcgdG8gdGhlIEhUTUw1IHNwZWNpZmljYXRpb24sIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBzaXplIHNob3VsZCBiZSAxOyBob3dldmVyLCBpbiBwcmFjdGljZSwgdGhpcyBoYXMgYmVlbiBmb3VuZCB0byBicmVhayBzb21lIHdlYiBzaXRlcywgYW5kIG5vIG90aGVyIGJyb3dzZXIgY3VycmVudGx5IGRvZXMgdGhhdCwgc28gTW96aWxsYSBoYXMgb3B0ZWQgdG8gY29udGludWUgdG8gcmV0dXJuIDAgZm9yIHRoZSB0aW1lIGJlaW5nIHdpdGggRmlyZWZveC4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zZWxlY3QifV19LHtuYW1lOiJkYXRhbGlzdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRhdGFsaXN0IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNldCBvZiBvcHRpb24gZWxlbWVudHMgdGhhdCByZXByZXNlbnQgcHJlZGVmaW5lZCBvcHRpb25zIGZvciBvdGhlciBjb250cm9scy4gSW4gdGhlIHJlbmRlcmluZywgdGhlIGRhdGFsaXN0IGVsZW1lbnQgcmVwcmVzZW50cyBub3RoaW5nIGFuZCBpdCwgYWxvbmcgd2l0aCBpdHMgY2hpbGRyZW4sIHNob3VsZCBiZSBoaWRkZW4uIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGF0YWxpc3QifV19LHtuYW1lOiJvcHRncm91cCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG9wdGdyb3VwIGVsZW1lbnQgcmVwcmVzZW50cyBhIGdyb3VwIG9mIG9wdGlvbiBlbGVtZW50cyB3aXRoIGEgY29tbW9uIGxhYmVsLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaXMgc2V0LCBub25lIG9mIHRoZSBpdGVtcyBpbiB0aGlzIG9wdGlvbiBncm91cCBpcyBzZWxlY3RhYmxlLiBPZnRlbiBicm93c2VycyBncmV5IG91dCBzdWNoIGNvbnRyb2wgYW5kIGl0IHdvbid0IHJlY2VpdmUgYW55IGJyb3dzaW5nIGV2ZW50cywgbGlrZSBtb3VzZSBjbGlja3Mgb3IgZm9jdXMtcmVsYXRlZCBvbmVzLiJ9fSx7bmFtZToibGFiZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYW1lIG9mIHRoZSBncm91cCBvZiBvcHRpb25zLCB3aGljaCB0aGUgYnJvd3NlciBjYW4gdXNlIHdoZW4gbGFiZWxpbmcgdGhlIG9wdGlvbnMgaW4gdGhlIHVzZXIgaW50ZXJmYWNlLiBUaGlzIGF0dHJpYnV0ZSBpcyBtYW5kYXRvcnkgaWYgdGhpcyBlbGVtZW50IGlzIHVzZWQuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb3B0Z3JvdXAifV19LHtuYW1lOiJvcHRpb24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBvcHRpb24gZWxlbWVudCByZXByZXNlbnRzIGFuIG9wdGlvbiBpbiBhIHNlbGVjdCBlbGVtZW50IG9yIGFzIHBhcnQgb2YgYSBsaXN0IG9mIHN1Z2dlc3Rpb25zIGluIGEgZGF0YWxpc3QgZWxlbWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidJZiB0aGlzIEJvb2xlYW4gYXR0cmlidXRlIGlzIHNldCwgdGhpcyBvcHRpb24gaXMgbm90IGNoZWNrYWJsZS4gT2Z0ZW4gYnJvd3NlcnMgZ3JleSBvdXQgc3VjaCBjb250cm9sIGFuZCBpdCB3b25cJ3QgcmVjZWl2ZSBhbnkgYnJvd3NpbmcgZXZlbnQsIGxpa2UgbW91c2UgY2xpY2tzIG9yIGZvY3VzLXJlbGF0ZWQgb25lcy4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGVsZW1lbnQgY2FuIHN0aWxsIGJlIGRpc2FibGVkIGlmIG9uZSBvZiBpdHMgYW5jZXN0b3JzIGlzIGEgZGlzYWJsZWQgW2A8b3B0Z3JvdXA+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29wdGdyb3VwICJUaGUgSFRNTCA8b3B0Z3JvdXA+IGVsZW1lbnQgY3JlYXRlcyBhIGdyb3VwaW5nIG9mIG9wdGlvbnMgd2l0aGluIGEgPHNlbGVjdD4gZWxlbWVudC4iKSBlbGVtZW50Lid9fSx7bmFtZToibGFiZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGlzIHRleHQgZm9yIHRoZSBsYWJlbCBpbmRpY2F0aW5nIHRoZSBtZWFuaW5nIG9mIHRoZSBvcHRpb24uIElmIHRoZSBgbGFiZWxgIGF0dHJpYnV0ZSBpc24ndCBkZWZpbmVkLCBpdHMgdmFsdWUgaXMgdGhhdCBvZiB0aGUgZWxlbWVudCB0ZXh0IGNvbnRlbnQuIn19LHtuYW1lOiJzZWxlY3RlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0lmIHByZXNlbnQsIHRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIG9wdGlvbiBpcyBpbml0aWFsbHkgc2VsZWN0ZWQuIElmIHRoZSBgPG9wdGlvbj5gIGVsZW1lbnQgaXMgdGhlIGRlc2NlbmRhbnQgb2YgYSBbYDxzZWxlY3Q+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NlbGVjdCAiVGhlIEhUTUwgPHNlbGVjdD4gZWxlbWVudCByZXByZXNlbnRzIGEgY29udHJvbCB0aGF0IHByb3ZpZGVzIGEgbWVudSBvZiBvcHRpb25zIikgZWxlbWVudCB3aG9zZSBbYG11bHRpcGxlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NlbGVjdCNhdHRyLW11bHRpcGxlKSBhdHRyaWJ1dGUgaXMgbm90IHNldCwgb25seSBvbmUgc2luZ2xlIGA8b3B0aW9uPmAgb2YgdGhpcyBbYDxzZWxlY3Q+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NlbGVjdCAiVGhlIEhUTUwgPHNlbGVjdD4gZWxlbWVudCByZXByZXNlbnRzIGEgY29udHJvbCB0aGF0IHByb3ZpZGVzIGEgbWVudSBvZiBvcHRpb25zIikgZWxlbWVudCBtYXkgaGF2ZSB0aGUgYHNlbGVjdGVkYCBhdHRyaWJ1dGUuJ319LHtuYW1lOiJ2YWx1ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGNvbnRlbnQgb2YgdGhpcyBhdHRyaWJ1dGUgcmVwcmVzZW50cyB0aGUgdmFsdWUgdG8gYmUgc3VibWl0dGVkIHdpdGggdGhlIGZvcm0sIHNob3VsZCB0aGlzIG9wdGlvbiBiZSBzZWxlY3RlZC7CoElmIHRoaXMgYXR0cmlidXRlIGlzIG9taXR0ZWQsIHRoZSB2YWx1ZSBpcyB0YWtlbiBmcm9tIHRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIG9wdGlvbiBlbGVtZW50LiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29wdGlvbiJ9XX0se25hbWU6InRleHRhcmVhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGV4dGFyZWEgZWxlbWVudCByZXByZXNlbnRzIGEgbXVsdGlsaW5lIHBsYWluIHRleHQgZWRpdCBjb250cm9sIGZvciB0aGUgZWxlbWVudCdzIHJhdyB2YWx1ZS4gVGhlIGNvbnRlbnRzIG9mIHRoZSBjb250cm9sIHJlcHJlc2VudCB0aGUgY29udHJvbCdzIGRlZmF1bHQgdmFsdWUuIn0sYXR0cmlidXRlczpbe25hbWU6ImF1dG9jb21wbGV0ZSIsdmFsdWVTZXQ6ImlucHV0YXV0b2NvbXBsZXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2wgY2FuIGJlIGF1dG9tYXRpY2FsbHkgY29tcGxldGVkIGJ5IHRoZSBicm93c2VyLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYG9mZmA6IFRoZSB1c2VyIG11c3QgZXhwbGljaXRseSBlbnRlciBhIHZhbHVlIGludG8gdGhpcyBmaWVsZCBmb3IgZXZlcnkgdXNlLCBvciB0aGUgZG9jdW1lbnQgcHJvdmlkZXMgaXRzIG93biBhdXRvLWNvbXBsZXRpb24gbWV0aG9kOyB0aGUgYnJvd3NlciBkb2VzIG5vdCBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlIHRoZSBlbnRyeS5cbiogICBgb25gOiBUaGUgYnJvd3NlciBjYW4gYXV0b21hdGljYWxseSBjb21wbGV0ZSB0aGUgdmFsdWUgYmFzZWQgb24gdmFsdWVzIHRoYXQgdGhlIHVzZXIgaGFzIGVudGVyZWQgZHVyaW5nIHByZXZpb3VzIHVzZXMuXG5cbklmIHRoZSBgYXV0b2NvbXBsZXRlYCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCBvbiBhIGA8dGV4dGFyZWE+YCBlbGVtZW50LCB0aGVuIHRoZSBicm93c2VyIHVzZXMgdGhlIGBhdXRvY29tcGxldGVgIGF0dHJpYnV0ZSB2YWx1ZSBvZiB0aGUgYDx0ZXh0YXJlYT5gIGVsZW1lbnRcJ3MgZm9ybSBvd25lci4gVGhlIGZvcm0gb3duZXIgaXMgZWl0aGVyIHRoZSBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50IHRoYXQgdGhpcyBgPHRleHRhcmVhPmAgZWxlbWVudCBpcyBhIGRlc2NlbmRhbnQgb2Ygb3IgdGhlIGZvcm0gZWxlbWVudCB3aG9zZSBgaWRgIGlzIHNwZWNpZmllZCBieSB0aGUgYGZvcm1gIGF0dHJpYnV0ZSBvZiB0aGUgaW5wdXQgZWxlbWVudC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgW2BhdXRvY29tcGxldGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLWF1dG9jb21wbGV0ZSkgYXR0cmlidXRlIGluIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpLid9fSx7bmFtZToiYXV0b2ZvY3VzIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBsZXRzIHlvdSBzcGVjaWZ5IHRoYXQgYSBmb3JtIGNvbnRyb2wgc2hvdWxkIGhhdmUgaW5wdXQgZm9jdXMgd2hlbiB0aGUgcGFnZSBsb2Fkcy4gT25seSBvbmUgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQgaW4gYSBkb2N1bWVudCBjYW4gaGF2ZSB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZWQuIn19LHtuYW1lOiJjb2xzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdmlzaWJsZSB3aWR0aCBvZiB0aGUgdGV4dCBjb250cm9sLCBpbiBhdmVyYWdlIGNoYXJhY3RlciB3aWR0aHMuIElmIGl0IGlzIHNwZWNpZmllZCwgaXQgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIElmIGl0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGAyMGAuIn19LHtuYW1lOiJkaXJuYW1lIn0se25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBjYW5ub3QgaW50ZXJhY3Qgd2l0aCB0aGUgY29udHJvbC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGNvbnRyb2wgaW5oZXJpdHMgaXRzIHNldHRpbmcgZnJvbSB0aGUgY29udGFpbmluZyBlbGVtZW50LCBmb3IgZXhhbXBsZSBbYDxmaWVsZHNldD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZmllbGRzZXQgIlRoZSBIVE1MIDxmaWVsZHNldD4gZWxlbWVudCBpcyB1c2VkIHRvIGdyb3VwIHNldmVyYWwgY29udHJvbHMgYXMgd2VsbCBhcyBsYWJlbHMgKDxsYWJlbD4pIHdpdGhpbiBhIHdlYiBmb3JtLiIpOyBpZiB0aGVyZSBpcyBubyBjb250YWluaW5nIGVsZW1lbnQgd2hlbiB0aGUgYGRpc2FibGVkYCBhdHRyaWJ1dGUgaXMgc2V0LCB0aGUgY29udHJvbCBpcyBlbmFibGVkLid9fSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIGZvcm0gZWxlbWVudCB0aGF0IHRoZSBgPHRleHRhcmVhPmAgZWxlbWVudCBpcyBhc3NvY2lhdGVkIHdpdGggKGl0cyAiZm9ybSBvd25lciIpLiBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBtdXN0IGJlIHRoZSBgaWRgIG9mIGEgZm9ybSBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50LiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgYDx0ZXh0YXJlYT5gIGVsZW1lbnQgbXVzdCBiZSBhIGRlc2NlbmRhbnQgb2YgYSBmb3JtIGVsZW1lbnQuIFRoaXMgYXR0cmlidXRlIGVuYWJsZXMgeW91IHRvIHBsYWNlIGA8dGV4dGFyZWE+YCBlbGVtZW50cyBhbnl3aGVyZSB3aXRoaW4gYSBkb2N1bWVudCwgbm90IGp1c3QgYXMgZGVzY2VuZGFudHMgb2YgZm9ybSBlbGVtZW50cy4nfX0se25hbWU6ImlucHV0bW9kZSIsdmFsdWVTZXQ6ImltIn0se25hbWU6Im1heGxlbmd0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgKHVuaWNvZGUgY29kZSBwb2ludHMpIHRoYXQgdGhlIHVzZXIgY2FuIGVudGVyLiBJZiB0aGlzIHZhbHVlIGlzbid0IHNwZWNpZmllZCwgdGhlIHVzZXIgY2FuIGVudGVyIGFuIHVubGltaXRlZCBudW1iZXIgb2YgY2hhcmFjdGVycy4ifX0se25hbWU6Im1pbmxlbmd0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1pbmltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgKHVuaWNvZGUgY29kZSBwb2ludHMpIHJlcXVpcmVkIHRoYXQgdGhlIHVzZXIgc2hvdWxkIGVudGVyLiJ9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5hbWUgb2YgdGhlIGNvbnRyb2wuIn19LHtuYW1lOiJwbGFjZWhvbGRlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBoaW50IHRvIHRoZSB1c2VyIG9mIHdoYXQgY2FuIGJlIGVudGVyZWQgaW4gdGhlIGNvbnRyb2wuIENhcnJpYWdlIHJldHVybnMgb3IgbGluZS1mZWVkcyB3aXRoaW4gdGhlIHBsYWNlaG9sZGVyIHRleHQgbXVzdCBiZSB0cmVhdGVkIGFzIGxpbmUgYnJlYWtzIHdoZW4gcmVuZGVyaW5nIHRoZSBoaW50LlxuXG4qKk5vdGU6KiogUGxhY2Vob2xkZXJzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gc2hvdyBhbiBleGFtcGxlIG9mIHRoZSB0eXBlIG9mIGRhdGEgdGhhdCBzaG91bGQgYmUgZW50ZXJlZCBpbnRvIGEgZm9ybTsgdGhleSBhcmUgX25vdF8gYSBzdWJzdGl0dXRlIGZvciBhIHByb3BlciBbYDxsYWJlbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGFiZWwgIlRoZSBIVE1MIDxsYWJlbD4gZWxlbWVudCByZXByZXNlbnRzIGEgY2FwdGlvbiBmb3IgYW4gaXRlbSBpbiBhIHVzZXIgaW50ZXJmYWNlLiIpIGVsZW1lbnQgdGllZCB0byB0aGUgaW5wdXQuIFNlZSBbTGFiZWxzIGFuZCBwbGFjZWhvbGRlcnNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCNMYWJlbHNfYW5kX3BsYWNlaG9sZGVycyAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGluIFs8aW5wdXQ+OiBUaGUgSW5wdXQgKEZvcm0gSW5wdXQpIGVsZW1lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGZvciBhIGZ1bGwgZXhwbGFuYXRpb24uJ319LHtuYW1lOiJyZWFkb25seSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgY2Fubm90IG1vZGlmeSB0aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2wuIFVubGlrZSB0aGUgYGRpc2FibGVkYCBhdHRyaWJ1dGUsIHRoZSBgcmVhZG9ubHlgIGF0dHJpYnV0ZSBkb2VzIG5vdCBwcmV2ZW50IHRoZSB1c2VyIGZyb20gY2xpY2tpbmcgb3Igc2VsZWN0aW5nIGluIHRoZSBjb250cm9sLiBUaGUgdmFsdWUgb2YgYSByZWFkLW9ubHkgY29udHJvbCBpcyBzdGlsbCBzdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybS4ifX0se25hbWU6InJlcXVpcmVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoYXQgdGhlIHVzZXIgbXVzdCBmaWxsIGluIGEgdmFsdWUgYmVmb3JlIHN1Ym1pdHRpbmcgYSBmb3JtLiJ9fSx7bmFtZToicm93cyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG51bWJlciBvZiB2aXNpYmxlIHRleHQgbGluZXMgZm9yIHRoZSBjb250cm9sLiJ9fSx7bmFtZToid3JhcCIsdmFsdWVTZXQ6InciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyBob3cgdGhlIGNvbnRyb2wgd3JhcHMgdGV4dC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBoYXJkYDogVGhlIGJyb3dzZXIgYXV0b21hdGljYWxseSBpbnNlcnRzIGxpbmUgYnJlYWtzIChDUitMRikgc28gdGhhdCBlYWNoIGxpbmUgaGFzIG5vIG1vcmUgdGhhbiB0aGUgd2lkdGggb2YgdGhlIGNvbnRyb2w7IHRoZSBgY29sc2AgYXR0cmlidXRlIG11c3QgYWxzbyBiZSBzcGVjaWZpZWQgZm9yIHRoaXMgdG8gdGFrZSBlZmZlY3QuXG4qICAgYHNvZnRgOiBUaGUgYnJvd3NlciBlbnN1cmVzIHRoYXQgYWxsIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSBjb25zaXN0IG9mIGEgQ1IrTEYgcGFpciwgYnV0IGRvZXMgbm90IGluc2VydCBhbnkgYWRkaXRpb25hbCBsaW5lIGJyZWFrcy5cbiogICBgb2ZmYCA6IExpa2UgYHNvZnRgIGJ1dCBjaGFuZ2VzIGFwcGVhcmFuY2UgdG8gYHdoaXRlLXNwYWNlOiBwcmVgIHNvIGxpbmUgc2VnbWVudHMgZXhjZWVkaW5nIGBjb2xzYCBhcmUgbm90IHdyYXBwZWQgYW5kIHRoZSBgPHRleHRhcmVhPmAgYmVjb21lcyBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZS5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgYHNvZnRgIGlzIGl0cyBkZWZhdWx0IHZhbHVlLiJ9fSx7bmFtZToiYXV0b2NhcGl0YWxpemUiLGRlc2NyaXB0aW9uOiJUaGlzIGlzIGEgbm9uLXN0YW5kYXJkIGF0dHJpYnV0ZSBzdXBwb3J0ZWQgYnkgV2ViS2l0IG9uIGlPUyAodGhlcmVmb3JlIG5lYXJseSBhbGwgYnJvd3NlcnMgcnVubmluZyBvbiBpT1MsIGluY2x1ZGluZyBTYWZhcmksIEZpcmVmb3gsIGFuZCBDaHJvbWUpLCB3aGljaCBjb250cm9scyB3aGV0aGVyIGFuZCBob3cgdGhlIHRleHQgdmFsdWUgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZWQgYXMgaXQgaXMgZW50ZXJlZC9lZGl0ZWQgYnkgdGhlIHVzZXIuIFRoZSBub24tZGVwcmVjYXRlZCB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBpbiBpT1MgNSBhbmQgbGF0ZXIuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbm9uZWA6IENvbXBsZXRlbHkgZGlzYWJsZXMgYXV0b21hdGljIGNhcGl0YWxpemF0aW9uLlxuKiAgIGBzZW50ZW5jZXNgOiBBdXRvbWF0aWNhbGx5IGNhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiBzZW50ZW5jZXMuXG4qICAgYHdvcmRzYDogQXV0b21hdGljYWxseSBjYXBpdGFsaXplIHRoZSBmaXJzdCBsZXR0ZXIgb2Ygd29yZHMuXG4qICAgYGNoYXJhY3RlcnNgOiBBdXRvbWF0aWNhbGx5IGNhcGl0YWxpemUgYWxsIGNoYXJhY3RlcnMuXG4qICAgYG9uYDogRGVwcmVjYXRlZCBzaW5jZSBpT1MgNS5cbiogICBgb2ZmYDogRGVwcmVjYXRlZCBzaW5jZSBpT1MgNS4ifSx7bmFtZToic3BlbGxjaGVjayIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGV0aGVyIHRoZSBgPHRleHRhcmVhPmAgaXMgc3ViamVjdCB0byBzcGVsbCBjaGVja2luZyBieSB0aGUgdW5kZXJseWluZyBicm93c2VyL09TLiB0aGUgdmFsdWUgY2FuIGJlOlxuXG4qICAgYHRydWVgOiBJbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBuZWVkcyB0byBoYXZlIGl0cyBzcGVsbGluZyBhbmQgZ3JhbW1hciBjaGVja2VkLlxuKiAgIGBkZWZhdWx0YCA6IEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IGlzIHRvIGFjdCBhY2NvcmRpbmcgdG8gYSBkZWZhdWx0IGJlaGF2aW9yLCBwb3NzaWJseSBiYXNlZCBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyBvd24gYHNwZWxsY2hlY2tgIHZhbHVlLlxuKiAgIGBmYWxzZWAgOiBJbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgbm90IGJlIHNwZWxsIGNoZWNrZWQuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZXh0YXJlYSJ9XX0se25hbWU6Im91dHB1dCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG91dHB1dCBlbGVtZW50IHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBhIGNhbGN1bGF0aW9uIHBlcmZvcm1lZCBieSB0aGUgYXBwbGljYXRpb24sIG9yIHRoZSByZXN1bHQgb2YgYSB1c2VyIGFjdGlvbi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZm9yIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIG90aGVyIGVsZW1lbnRz4oCZIFtgaWRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2lkKXMsIGluZGljYXRpbmcgdGhhdCB0aG9zZSBlbGVtZW50cyBjb250cmlidXRlZCBpbnB1dCB2YWx1ZXMgdG8gKG9yIG90aGVyd2lzZSBhZmZlY3RlZCkgdGhlIGNhbGN1bGF0aW9uLiJ9fSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIFtmb3JtIGVsZW1lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtKSB0aGF0IHRoaXMgZWxlbWVudCBpcyBhc3NvY2lhdGVkIHdpdGggKGl0cyAiZm9ybSBvd25lciIpLiBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBtdXN0IGJlIGFuIGBpZGAgb2YgYSBmb3JtIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBvdXRwdXQgZWxlbWVudCBtdXN0IGJlIGEgZGVzY2VuZGFudCBvZiBhIGZvcm0gZWxlbWVudC4gVGhpcyBhdHRyaWJ1dGUgZW5hYmxlcyB5b3UgdG8gcGxhY2Ugb3V0cHV0IGVsZW1lbnRzIGFueXdoZXJlIHdpdGhpbiBhIGRvY3VtZW50LCBub3QganVzdCBhcyBkZXNjZW5kYW50cyBvZiB0aGVpciBmb3JtIGVsZW1lbnRzLid9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIG5hbWUgb2YgdGhlIGVsZW1lbnQsIGV4cG9zZWQgaW4gdGhlIFtgSFRNTEZvcm1FbGVtZW50YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxGb3JtRWxlbWVudCAiVGhlIEhUTUxGb3JtRWxlbWVudCBpbnRlcmZhY2UgcmVwcmVzZW50cyBhIDxmb3JtPiBlbGVtZW50IGluIHRoZSBET007IGl0IGFsbG93cyBhY2Nlc3MgdG8gYW5kIGluIHNvbWUgY2FzZXMgbW9kaWZpY2F0aW9uIG9mIGFzcGVjdHMgb2YgdGhlIGZvcm0sIGFzIHdlbGwgYXMgYWNjZXNzIHRvIGl0cyBjb21wb25lbnQgZWxlbWVudHMuIikgQVBJLid9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L291dHB1dCJ9XX0se25hbWU6InByb2dyZXNzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcHJvZ3Jlc3MgZWxlbWVudCByZXByZXNlbnRzIHRoZSBjb21wbGV0aW9uIHByb2dyZXNzIG9mIGEgdGFzay4gVGhlIHByb2dyZXNzIGlzIGVpdGhlciBpbmRldGVybWluYXRlLCBpbmRpY2F0aW5nIHRoYXQgcHJvZ3Jlc3MgaXMgYmVpbmcgbWFkZSBidXQgdGhhdCBpdCBpcyBub3QgY2xlYXIgaG93IG11Y2ggbW9yZSB3b3JrIHJlbWFpbnMgdG8gYmUgZG9uZSBiZWZvcmUgdGhlIHRhc2sgaXMgY29tcGxldGUgKGUuZy4gYmVjYXVzZSB0aGUgdGFzayBpcyB3YWl0aW5nIGZvciBhIHJlbW90ZSBob3N0IHRvIHJlc3BvbmQpLCBvciB0aGUgcHJvZ3Jlc3MgaXMgYSBudW1iZXIgaW4gdGhlIHJhbmdlIHplcm8gdG8gYSBtYXhpbXVtLCBnaXZpbmcgdGhlIGZyYWN0aW9uIG9mIHdvcmsgdGhhdCBoYXMgc28gZmFyIGJlZW4gY29tcGxldGVkLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJ2YWx1ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyBtdWNoIG9mIHRoZSB0YXNrIHRoYXQgaGFzIGJlZW4gY29tcGxldGVkLiBJdCBtdXN0IGJlIGEgdmFsaWQgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGJldHdlZW4gMCBhbmQgYG1heGAsIG9yIGJldHdlZW4gMCBhbmQgMSBpZiBgbWF4YCBpcyBvbWl0dGVkLiBJZiB0aGVyZSBpcyBubyBgdmFsdWVgIGF0dHJpYnV0ZSwgdGhlIHByb2dyZXNzIGJhciBpcyBpbmRldGVybWluYXRlOyB0aGlzIGluZGljYXRlcyB0aGF0IGFuIGFjdGl2aXR5IGlzIG9uZ29pbmcgd2l0aCBubyBpbmRpY2F0aW9uIG9mIGhvdyBsb25nIGl0IGlzIGV4cGVjdGVkIHRvIHRha2UuIn19LHtuYW1lOiJtYXgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGRlc2NyaWJlcyBob3cgbXVjaCB3b3JrIHRoZSB0YXNrIGluZGljYXRlZCBieSB0aGUgYHByb2dyZXNzYCBlbGVtZW50IHJlcXVpcmVzLiBUaGUgYG1heGAgYXR0cmlidXRlLCBpZiBwcmVzZW50LCBtdXN0IGhhdmUgYSB2YWx1ZSBncmVhdGVyIHRoYW4gemVybyBhbmQgYmUgYSB2YWxpZCBmbG9hdGluZyBwb2ludCBudW1iZXIuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDEuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcHJvZ3Jlc3MifV19LHtuYW1lOiJtZXRlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1ldGVyIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNjYWxhciBtZWFzdXJlbWVudCB3aXRoaW4gYSBrbm93biByYW5nZSwgb3IgYSBmcmFjdGlvbmFsIHZhbHVlOyBmb3IgZXhhbXBsZSBkaXNrIHVzYWdlLCB0aGUgcmVsZXZhbmNlIG9mIGEgcXVlcnkgcmVzdWx0LCBvciB0aGUgZnJhY3Rpb24gb2YgYSB2b3RpbmcgcG9wdWxhdGlvbiB0byBoYXZlIHNlbGVjdGVkIGEgcGFydGljdWxhciBjYW5kaWRhdGUuIn0sYXR0cmlidXRlczpbe25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY3VycmVudCBudW1lcmljIHZhbHVlLiBUaGlzIG11c3QgYmUgYmV0d2VlbiB0aGUgbWluaW11bSBhbmQgbWF4aW11bSB2YWx1ZXMgKGBtaW5gIGF0dHJpYnV0ZSBhbmQgYG1heGAgYXR0cmlidXRlKSBpZiB0aGV5IGFyZSBzcGVjaWZpZWQuIElmIHVuc3BlY2lmaWVkIG9yIG1hbGZvcm1lZCwgdGhlIHZhbHVlIGlzIDAuIElmIHNwZWNpZmllZCwgYnV0IG5vdCB3aXRoaW4gdGhlIHJhbmdlIGdpdmVuIGJ5IHRoZSBgbWluYCBhdHRyaWJ1dGUgYW5kIGBtYXhgIGF0dHJpYnV0ZSwgdGhlIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBuZWFyZXN0IGVuZCBvZiB0aGUgcmFuZ2UuXG5cbioqVXNhZ2Ugbm90ZToqKiBVbmxlc3MgdGhlIGB2YWx1ZWAgYXR0cmlidXRlIGlzIGJldHdlZW4gYDBgIGFuZCBgMWAgKGluY2x1c2l2ZSksIHRoZSBgbWluYCBhbmQgYG1heGAgYXR0cmlidXRlcyBzaG91bGQgZGVmaW5lIHRoZSByYW5nZSBzbyB0aGF0IHRoZSBgdmFsdWVgIGF0dHJpYnV0ZSdzIHZhbHVlIGlzIHdpdGhpbiBpdC4ifX0se25hbWU6Im1pbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxvd2VyIG51bWVyaWMgYm91bmQgb2YgdGhlIG1lYXN1cmVkIHJhbmdlLiBUaGlzIG11c3QgYmUgbGVzcyB0aGFuIHRoZSBtYXhpbXVtIHZhbHVlIChgbWF4YCBhdHRyaWJ1dGUpLCBpZiBzcGVjaWZpZWQuIElmIHVuc3BlY2lmaWVkLCB0aGUgbWluaW11bSB2YWx1ZSBpcyAwLiJ9fSx7bmFtZToibWF4IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdXBwZXIgbnVtZXJpYyBib3VuZCBvZiB0aGUgbWVhc3VyZWQgcmFuZ2UuIFRoaXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIG1pbmltdW0gdmFsdWUgKGBtaW5gIGF0dHJpYnV0ZSksIGlmIHNwZWNpZmllZC4gSWYgdW5zcGVjaWZpZWQsIHRoZSBtYXhpbXVtIHZhbHVlIGlzIDEuIn19LHtuYW1lOiJsb3ciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1cHBlciBudW1lcmljIGJvdW5kIG9mIHRoZSBsb3cgZW5kIG9mIHRoZSBtZWFzdXJlZCByYW5nZS4gVGhpcyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbWluaW11bSB2YWx1ZSAoYG1pbmAgYXR0cmlidXRlKSwgYW5kIGl0IGFsc28gbXVzdCBiZSBsZXNzIHRoYW4gdGhlIGhpZ2ggdmFsdWUgYW5kIG1heGltdW0gdmFsdWUgKGBoaWdoYCBhdHRyaWJ1dGUgYW5kIGBtYXhgIGF0dHJpYnV0ZSwgcmVzcGVjdGl2ZWx5KSwgaWYgYW55IGFyZSBzcGVjaWZpZWQuIElmIHVuc3BlY2lmaWVkLCBvciBpZiBsZXNzIHRoYW4gdGhlIG1pbmltdW0gdmFsdWUsIHRoZSBgbG93YCB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgbWluaW11bSB2YWx1ZS4ifX0se25hbWU6ImhpZ2giLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsb3dlciBudW1lcmljIGJvdW5kIG9mIHRoZSBoaWdoIGVuZCBvZiB0aGUgbWVhc3VyZWQgcmFuZ2UuIFRoaXMgbXVzdCBiZSBsZXNzIHRoYW4gdGhlIG1heGltdW0gdmFsdWUgKGBtYXhgIGF0dHJpYnV0ZSksIGFuZCBpdCBhbHNvIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBsb3cgdmFsdWUgYW5kIG1pbmltdW0gdmFsdWUgKGBsb3dgIGF0dHJpYnV0ZSBhbmQgKiptaW4qKiBhdHRyaWJ1dGUsIHJlc3BlY3RpdmVseSksIGlmIGFueSBhcmUgc3BlY2lmaWVkLiBJZiB1bnNwZWNpZmllZCwgb3IgaWYgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHZhbHVlLCB0aGUgYGhpZ2hgIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBtYXhpbXVtIHZhbHVlLiJ9fSx7bmFtZToib3B0aW11bSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSBvcHRpbWFsIG51bWVyaWMgdmFsdWUuIEl0IG11c3QgYmUgd2l0aGluIHRoZSByYW5nZSAoYXMgZGVmaW5lZCBieSB0aGUgYG1pbmAgYXR0cmlidXRlIGFuZCBgbWF4YCBhdHRyaWJ1dGUpLiBXaGVuIHVzZWQgd2l0aCB0aGUgYGxvd2AgYXR0cmlidXRlIGFuZCBgaGlnaGAgYXR0cmlidXRlLCBpdCBnaXZlcyBhbiBpbmRpY2F0aW9uIHdoZXJlIGFsb25nIHRoZSByYW5nZSBpcyBjb25zaWRlcmVkIHByZWZlcmFibGUuIEZvciBleGFtcGxlLCBpZiBpdCBpcyBiZXR3ZWVuIHRoZSBgbWluYCBhdHRyaWJ1dGUgYW5kIHRoZSBgbG93YCBhdHRyaWJ1dGUsIHRoZW4gdGhlIGxvd2VyIHJhbmdlIGlzIGNvbnNpZGVyZWQgcHJlZmVycmVkLiJ9fSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGFzc29jaWF0ZXMgdGhlIGVsZW1lbnQgd2l0aCBhIGBmb3JtYCBlbGVtZW50IHRoYXQgaGFzIG93bmVyc2hpcCBvZiB0aGUgYG1ldGVyYCBlbGVtZW50LiBGb3IgZXhhbXBsZSwgYSBgbWV0ZXJgIG1pZ2h0IGJlIGRpc3BsYXlpbmcgYSByYW5nZSBjb3JyZXNwb25kaW5nIHRvIGFuIGBpbnB1dGAgZWxlbWVudCBvZiBgdHlwZWAgX251bWJlcl8uIFRoaXMgYXR0cmlidXRlIGlzIG9ubHkgdXNlZCBpZiB0aGUgYG1ldGVyYCBlbGVtZW50IGlzIGJlaW5nIHVzZWQgYXMgYSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudDsgZXZlbiB0aGVuLCBpdCBtYXkgYmUgb21pdHRlZCBpZiB0aGUgZWxlbWVudCBhcHBlYXJzIGFzIGEgZGVzY2VuZGFudCBvZiBhIGBmb3JtYCBlbGVtZW50LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0ZXIifV19LHtuYW1lOiJmaWVsZHNldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGZpZWxkc2V0IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNldCBvZiBmb3JtIGNvbnRyb2xzIG9wdGlvbmFsbHkgZ3JvdXBlZCB1bmRlciBhIGNvbW1vbiBuYW1lLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaXMgc2V0LCBhbGwgZm9ybSBjb250cm9scyB0aGF0IGFyZSBkZXNjZW5kYW50cyBvZiB0aGUgYDxmaWVsZHNldD5gLCBhcmUgZGlzYWJsZWQsIG1lYW5pbmcgdGhleSBhcmUgbm90IGVkaXRhYmxlIGFuZCB3b24ndCBiZSBzdWJtaXR0ZWQgYWxvbmcgd2l0aCB0aGUgYDxmb3JtPmAuIFRoZXkgd29uJ3QgcmVjZWl2ZSBhbnkgYnJvd3NpbmcgZXZlbnRzLCBsaWtlIG1vdXNlIGNsaWNrcyBvciBmb2N1cy1yZWxhdGVkIGV2ZW50cy4gQnkgZGVmYXVsdCBicm93c2VycyBkaXNwbGF5IHN1Y2ggY29udHJvbHMgZ3JheWVkIG91dC4gTm90ZSB0aGF0IGZvcm0gZWxlbWVudHMgaW5zaWRlIHRoZSBbYDxsZWdlbmQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xlZ2VuZCBcIlRoZSBIVE1MIDxsZWdlbmQ+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNhcHRpb24gZm9yIHRoZSBjb250ZW50IG9mIGl0cyBwYXJlbnQgPGZpZWxkc2V0Pi5cIikgZWxlbWVudCB3b24ndCBiZSBkaXNhYmxlZC4ifX0se25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIHRha2VzIHRoZSB2YWx1ZSBvZiB0aGUgYGlkYCBhdHRyaWJ1dGUgb2YgYSBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50IHlvdSB3YW50IHRoZSBgPGZpZWxkc2V0PmAgdG8gYmUgcGFydCBvZiwgZXZlbiBpZiBpdCBpcyBub3QgaW5zaWRlIHRoZSBmb3JtLid9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBncm91cC5cblxuKipOb3RlKio6IFRoZSBjYXB0aW9uIGZvciB0aGUgZmllbGRzZXQgaXMgZ2l2ZW4gYnkgdGhlIGZpcnN0IFtgPGxlZ2VuZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGVnZW5kICJUaGUgSFRNTCA8bGVnZW5kPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjYXB0aW9uIGZvciB0aGUgY29udGVudCBvZiBpdHMgcGFyZW50IDxmaWVsZHNldD4uIikgZWxlbWVudCBuZXN0ZWQgaW5zaWRlIGl0Lid9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2ZpZWxkc2V0In1dfSx7bmFtZToibGVnZW5kIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbGVnZW5kIGVsZW1lbnQgcmVwcmVzZW50cyBhIGNhcHRpb24gZm9yIHRoZSByZXN0IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgbGVnZW5kIGVsZW1lbnQncyBwYXJlbnQgZmllbGRzZXQgZWxlbWVudCwgaWYgYW55LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xlZ2VuZCJ9XX0se25hbWU6ImRldGFpbHMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkZXRhaWxzIGVsZW1lbnQgcmVwcmVzZW50cyBhIGRpc2Nsb3N1cmUgd2lkZ2V0IGZyb20gd2hpY2ggdGhlIHVzZXIgY2FuIG9idGFpbiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9yIGNvbnRyb2xzLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJvcGVuIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIGRldGFpbHMg4oCUIHRoYXQgaXMsIHRoZSBjb250ZW50cyBvZiB0aGUgYDxkZXRhaWxzPmAgZWxlbWVudCDigJQgYXJlIGN1cnJlbnRseSB2aXNpYmxlLiBUaGUgZGVmYXVsdCwgYGZhbHNlYCwgbWVhbnMgdGhlIGRldGFpbHMgYXJlIG5vdCB2aXNpYmxlLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RldGFpbHMifV19LHtuYW1lOiJzdW1tYXJ5IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc3VtbWFyeSBlbGVtZW50IHJlcHJlc2VudHMgYSBzdW1tYXJ5LCBjYXB0aW9uLCBvciBsZWdlbmQgZm9yIHRoZSByZXN0IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgc3VtbWFyeSBlbGVtZW50J3MgcGFyZW50IGRldGFpbHMgZWxlbWVudCwgaWYgYW55LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3N1bW1hcnkifV19LHtuYW1lOiJkaWFsb2ciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkaWFsb2cgZWxlbWVudCByZXByZXNlbnRzIGEgcGFydCBvZiBhbiBhcHBsaWNhdGlvbiB0aGF0IGEgdXNlciBpbnRlcmFjdHMgd2l0aCB0byBwZXJmb3JtIGEgdGFzaywgZm9yIGV4YW1wbGUgYSBkaWFsb2cgYm94LCBpbnNwZWN0b3IsIG9yIHdpbmRvdy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToib3BlbiIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBkaWFsb2cgaXMgYWN0aXZlIGFuZCBhdmFpbGFibGUgZm9yIGludGVyYWN0aW9uLiBXaGVuIHRoZSBgb3BlbmAgYXR0cmlidXRlIGlzIG5vdCBzZXQsIHRoZSBkaWFsb2cgc2hvdWxkbid0IGJlIHNob3duIHRvIHRoZSB1c2VyLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGlhbG9nIn1dfSx7bmFtZToic2NyaXB0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc2NyaXB0IGVsZW1lbnQgYWxsb3dzIGF1dGhvcnMgdG8gaW5jbHVkZSBkeW5hbWljIHNjcmlwdCBhbmQgZGF0YSBibG9ja3MgaW4gdGhlaXIgZG9jdW1lbnRzLiBUaGUgZWxlbWVudCBkb2VzIG5vdCByZXByZXNlbnQgY29udGVudCBmb3IgdGhlIHVzZXIuIn0sYXR0cmlidXRlczpbe25hbWU6InNyYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBVUkkgb2YgYW4gZXh0ZXJuYWwgc2NyaXB0OyB0aGlzIGNhbiBiZSB1c2VkIGFzIGFuIGFsdGVybmF0aXZlIHRvIGVtYmVkZGluZyBhIHNjcmlwdCBkaXJlY3RseSB3aXRoaW4gYSBkb2N1bWVudC5cblxuSWYgYSBgc2NyaXB0YCBlbGVtZW50IGhhcyBhIGBzcmNgIGF0dHJpYnV0ZSBzcGVjaWZpZWQsIGl0IHNob3VsZCBub3QgaGF2ZSBhIHNjcmlwdCBlbWJlZGRlZCBpbnNpZGUgaXRzIHRhZ3MuIn19LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIHR5cGUgb2Ygc2NyaXB0IHJlcHJlc2VudGVkLiBUaGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgd2lsbCBiZSBpbiBvbmUgb2YgdGhlIGZvbGxvd2luZyBjYXRlZ29yaWVzOlxuXG4qICAgKipPbWl0dGVkIG9yIGEgSmF2YVNjcmlwdCBNSU1FIHR5cGU6KiogRm9yIEhUTUw1LWNvbXBsaWFudCBicm93c2VycyB0aGlzIGluZGljYXRlcyB0aGUgc2NyaXB0IGlzIEphdmFTY3JpcHQuIEhUTUw1IHNwZWNpZmljYXRpb24gdXJnZXMgYXV0aG9ycyB0byBvbWl0IHRoZSBhdHRyaWJ1dGUgcmF0aGVyIHRoYW4gcHJvdmlkZSBhIHJlZHVuZGFudCBNSU1FIHR5cGUuIEluIGVhcmxpZXIgYnJvd3NlcnMsIHRoaXMgaWRlbnRpZmllZCB0aGUgc2NyaXB0aW5nIGxhbmd1YWdlIG9mIHRoZSBlbWJlZGRlZCBvciBpbXBvcnRlZCAodmlhIHRoZSBgc3JjYCBhdHRyaWJ1dGUpIGNvZGUuIEphdmFTY3JpcHQgTUlNRSB0eXBlcyBhcmUgW2xpc3RlZCBpbiB0aGUgc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9NSU1FX3R5cGVzI0phdmFTY3JpcHRfdHlwZXMpLlxuKiAgICoqYG1vZHVsZWA6KiogRm9yIEhUTUw1LWNvbXBsaWFudCBicm93c2VycyB0aGUgY29kZSBpcyB0cmVhdGVkIGFzIGEgSmF2YVNjcmlwdCBtb2R1bGUuIFRoZSBwcm9jZXNzaW5nIG9mIHRoZSBzY3JpcHQgY29udGVudHMgaXMgbm90IGFmZmVjdGVkIGJ5IHRoZSBgY2hhcnNldGAgYW5kIGBkZWZlcmAgYXR0cmlidXRlcy4gRm9yIGluZm9ybWF0aW9uIG9uIHVzaW5nIGBtb2R1bGVgLCBzZWUgW0VTNiBpbiBEZXB0aDogTW9kdWxlc10oaHR0cHM6Ly9oYWNrcy5tb3ppbGxhLm9yZy8yMDE1LzA4L2VzNi1pbi1kZXB0aC1tb2R1bGVzLykuIENvZGUgbWF5IGJlaGF2ZSBkaWZmZXJlbnRseSB3aGVuIHRoZSBgbW9kdWxlYCBrZXl3b3JkIGlzIHVzZWQuXG4qICAgKipBbnkgb3RoZXIgdmFsdWU6KiogVGhlIGVtYmVkZGVkIGNvbnRlbnQgaXMgdHJlYXRlZCBhcyBhIGRhdGEgYmxvY2sgd2hpY2ggd29uXCd0IGJlIHByb2Nlc3NlZCBieSB0aGUgYnJvd3Nlci4gRGV2ZWxvcGVycyBtdXN0IHVzZSBhIHZhbGlkIE1JTUUgdHlwZSB0aGF0IGlzIG5vdCBhIEphdmFTY3JpcHQgTUlNRSB0eXBlIHRvIGRlbm90ZSBkYXRhIGJsb2Nrcy4gVGhlIGBzcmNgIGF0dHJpYnV0ZSB3aWxsIGJlIGlnbm9yZWQuXG5cbioqTm90ZToqKiBpbiBGaXJlZm94IHlvdSBjb3VsZCBzcGVjaWZ5IHRoZSB2ZXJzaW9uIG9mIEphdmFTY3JpcHQgY29udGFpbmVkIGluIGEgYDxzY3JpcHQ+YCBlbGVtZW50IGJ5IGluY2x1ZGluZyBhIG5vbi1zdGFuZGFyZCBgdmVyc2lvbmAgcGFyYW1ldGVyIGluc2lkZSB0aGUgYHR5cGVgIGF0dHJpYnV0ZSDigJQgZm9yIGV4YW1wbGUgYHR5cGU9InRleHQvamF2YXNjcmlwdDt2ZXJzaW9uPTEuOCJgLiBUaGlzIGhhcyBiZWVuIHJlbW92ZWQgaW4gRmlyZWZveCA1OSAoc2VlIFtidWfCoDE0Mjg3NDVdKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjg3NDUgIkZJWEVEOiBSZW1vdmUgc3VwcG9ydCBmb3IgdmVyc2lvbiBwYXJhbWV0ZXIgZnJvbSBzY3JpcHQgbG9hZGVyIikpLid9fSx7bmFtZToiY2hhcnNldCJ9LHtuYW1lOiJhc3luYyIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgaXMgYSBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIHRoYXQgdGhlIGJyb3dzZXIgc2hvdWxkLCBpZiBwb3NzaWJsZSwgbG9hZCB0aGUgc2NyaXB0IGFzeW5jaHJvbm91c2x5LlxuXG5UaGlzIGF0dHJpYnV0ZSBtdXN0IG5vdCBiZSB1c2VkIGlmIHRoZSBgc3JjYCBhdHRyaWJ1dGUgaXMgYWJzZW50IChpLmUuIGZvciBpbmxpbmUgc2NyaXB0cykuIElmIGl0IGlzIGluY2x1ZGVkIGluIHRoaXMgY2FzZSBpdCB3aWxsIGhhdmUgbm8gZWZmZWN0LlxuXG5Ccm93c2VycyB1c3VhbGx5IGFzc3VtZSB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBhbmQgbG9hZCBzY3JpcHRzIHN5bmNocm9ub3VzbHksIChpLmUuIGBhc3luYz0iZmFsc2UiYCkgZHVyaW5nIEhUTUwgcGFyc2luZy5cblxuRHluYW1pY2FsbHkgaW5zZXJ0ZWQgc2NyaXB0cyAodXNpbmcgW2Bkb2N1bWVudC5jcmVhdGVFbGVtZW50KClgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnQvY3JlYXRlRWxlbWVudCAiSW4gYW4gSFRNTCBkb2N1bWVudCwgdGhlIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoKSBtZXRob2QgY3JlYXRlcyB0aGUgSFRNTCBlbGVtZW50IHNwZWNpZmllZCBieSB0YWdOYW1lLCBvciBhbiBIVE1MVW5rbm93bkVsZW1lbnQgaWYgdGFnTmFtZSBpc25cJ3QgcmVjb2duaXplZC4iKSkgbG9hZCBhc3luY2hyb25vdXNseSBieSBkZWZhdWx0LCBzbyB0byB0dXJuIG9uIHN5bmNocm9ub3VzIGxvYWRpbmcgKGkuZS4gc2NyaXB0cyBsb2FkIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgaW5zZXJ0ZWQpIHNldCBgYXN5bmM9ImZhbHNlImAuXG5cblNlZSBbQnJvd3NlciBjb21wYXRpYmlsaXR5XSgjQnJvd3Nlcl9jb21wYXRpYmlsaXR5KSBmb3Igbm90ZXMgb24gYnJvd3NlciBzdXBwb3J0LiBTZWUgYWxzbyBbQXN5bmMgc2NyaXB0cyBmb3IgYXNtLmpzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dhbWVzL1RlY2huaXF1ZXMvQXN5bmNfc2NyaXB0cykuJ319LHtuYW1lOiJkZWZlciIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaXMgc2V0IHRvIGluZGljYXRlIHRvIGEgYnJvd3NlciB0aGF0IHRoZSBzY3JpcHQgaXMgbWVhbnQgdG8gYmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIGRvY3VtZW50IGhhcyBiZWVuIHBhcnNlZCwgYnV0IGJlZm9yZSBmaXJpbmcgW2BET01Db250ZW50TG9hZGVkYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvRXZlbnRzL0RPTUNvbnRlbnRMb2FkZWQgIi9lbi1VUy9kb2NzL1dlYi9FdmVudHMvRE9NQ29udGVudExvYWRlZCIpLlxuXG5TY3JpcHRzIHdpdGggdGhlIGBkZWZlcmAgYXR0cmlidXRlIHdpbGwgcHJldmVudCB0aGUgYERPTUNvbnRlbnRMb2FkZWRgIGV2ZW50IGZyb20gZmlyaW5nIHVudGlsIHRoZSBzY3JpcHQgaGFzIGxvYWRlZCBhbmQgZmluaXNoZWQgZXZhbHVhdGluZy5cblxuVGhpcyBhdHRyaWJ1dGUgbXVzdCBub3QgYmUgdXNlZCBpZiB0aGUgYHNyY2AgYXR0cmlidXRlIGlzIGFic2VudCAoaS5lLiBmb3IgaW5saW5lIHNjcmlwdHMpLCBpbiB0aGlzIGNhc2UgaXQgd291bGQgaGF2ZSBubyBlZmZlY3QuXG5cblRvIGFjaGlldmUgYSBzaW1pbGFyIGVmZmVjdCBmb3IgZHluYW1pY2FsbHkgaW5zZXJ0ZWQgc2NyaXB0cyB1c2UgYGFzeW5jPSJmYWxzZSJgIGluc3RlYWQuIFNjcmlwdHMgd2l0aCB0aGUgYGRlZmVyYCBhdHRyaWJ1dGUgd2lsbCBleGVjdXRlIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFwcGVhciBpbiB0aGUgZG9jdW1lbnQuJ319LHtuYW1lOiJjcm9zc29yaWdpbiIsdmFsdWVTZXQ6InhvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidOb3JtYWwgYHNjcmlwdGAgZWxlbWVudHMgcGFzcyBtaW5pbWFsIGluZm9ybWF0aW9uIHRvIHRoZSBbYHdpbmRvdy5vbmVycm9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0dsb2JhbEV2ZW50SGFuZGxlcnMvb25lcnJvciAiVGhlIG9uZXJyb3IgcHJvcGVydHkgb2YgdGhlIEdsb2JhbEV2ZW50SGFuZGxlcnMgbWl4aW4gaXMgYW4gRXZlbnRIYW5kbGVyIHRoYXQgcHJvY2Vzc2VzIGVycm9yIGV2ZW50cy4iKSBmb3Igc2NyaXB0cyB3aGljaCBkbyBub3QgcGFzcyB0aGUgc3RhbmRhcmQgW0NPUlNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQ09SUyAiQ09SUzogQ09SUyAoQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcpIGlzIGEgc3lzdGVtLCBjb25zaXN0aW5nIG9mIHRyYW5zbWl0dGluZyBIVFRQIGhlYWRlcnMsIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIGJyb3dzZXJzIGJsb2NrIGZyb250ZW5kIEphdmFTY3JpcHQgY29kZSBmcm9tIGFjY2Vzc2luZyByZXNwb25zZXMgZm9yIGNyb3NzLW9yaWdpbiByZXF1ZXN0cy4iKSBjaGVja3MuIFRvIGFsbG93IGVycm9yIGxvZ2dpbmcgZm9yIHNpdGVzIHdoaWNoIHVzZSBhIHNlcGFyYXRlIGRvbWFpbiBmb3Igc3RhdGljIG1lZGlhLCB1c2UgdGhpcyBhdHRyaWJ1dGUuIFNlZSBbQ09SUyBzZXR0aW5ncyBhdHRyaWJ1dGVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0NPUlNfc2V0dGluZ3NfYXR0cmlidXRlcykgZm9yIGEgbW9yZSBkZXNjcmlwdGl2ZSBleHBsYW5hdGlvbiBvZiBpdHMgdmFsaWQgYXJndW1lbnRzLid9fSx7bmFtZToibm9uY2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgY3J5cHRvZ3JhcGhpYyBub25jZSAobnVtYmVyIHVzZWQgb25jZSkgdG8gd2hpdGVsaXN0IGlubGluZSBzY3JpcHRzIGluIGEgW3NjcmlwdC1zcmMgQ29udGVudC1TZWN1cml0eS1Qb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9Db250ZW50LVNlY3VyaXR5LVBvbGljeS9zY3JpcHQtc3JjKS4gVGhlIHNlcnZlciBtdXN0IGdlbmVyYXRlIGEgdW5pcXVlIG5vbmNlIHZhbHVlIGVhY2ggdGltZSBpdCB0cmFuc21pdHMgYSBwb2xpY3kuIEl0IGlzIGNyaXRpY2FsIHRvIHByb3ZpZGUgYSBub25jZSB0aGF0IGNhbm5vdCBiZSBndWVzc2VkIGFzIGJ5cGFzc2luZyBhIHJlc291cmNlJ3MgcG9saWN5IGlzIG90aGVyd2lzZSB0cml2aWFsLiJ9fSx7bmFtZToiaW50ZWdyaXR5IixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgaW5saW5lIG1ldGFkYXRhIHRoYXQgYSB1c2VyIGFnZW50IGNhbiB1c2UgdG8gdmVyaWZ5IHRoYXQgYSBmZXRjaGVkIHJlc291cmNlIGhhcyBiZWVuIGRlbGl2ZXJlZCBmcmVlIG9mIHVuZXhwZWN0ZWQgbWFuaXB1bGF0aW9uLiBTZWUgW1N1YnJlc291cmNlIEludGVncml0eV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvU3VicmVzb3VyY2VfSW50ZWdyaXR5KS4ifSx7bmFtZToibm9tb2R1bGUiLGRlc2NyaXB0aW9uOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGlzIHNldCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBzY3JpcHQgc2hvdWxkIG5vdCBiZSBleGVjdXRlZCBpbiBicm93c2VycyB0aGF0IHN1cHBvcnQgW0VTMjAxNSBtb2R1bGVzXShodHRwczovL2hhY2tzLm1vemlsbGEub3JnLzIwMTUvMDgvZXM2LWluLWRlcHRoLW1vZHVsZXMvKSDigJQgaW4gZWZmZWN0LCB0aGlzIGNhbiBiZSB1c2VkIHRvIHNlcnZlIGZhbGxiYWNrIHNjcmlwdHMgdG8gb2xkZXIgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBtb2R1bGFyIEphdmFTY3JpcHQgY29kZS4ifSx7bmFtZToicmVmZXJyZXJwb2xpY3kiLGRlc2NyaXB0aW9uOidJbmRpY2F0ZXMgd2hpY2ggW3JlZmVycmVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnQvcmVmZXJyZXIpIHRvIHNlbmQgd2hlbiBmZXRjaGluZyB0aGUgc2NyaXB0LCBvciByZXNvdXJjZXMgZmV0Y2hlZCBieSB0aGUgc2NyaXB0OlxuXG4qICAgYG5vLXJlZmVycmVyYDogVGhlIFtgUmVmZXJlcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyICJUaGUgUmVmZXJlciByZXF1ZXN0IGhlYWRlciBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgcHJldmlvdXMgd2ViIHBhZ2UgZnJvbSB3aGljaCBhIGxpbmsgdG8gdGhlIGN1cnJlbnRseSByZXF1ZXN0ZWQgcGFnZSB3YXMgZm9sbG93ZWQuIFRoZSBSZWZlcmVyIGhlYWRlciBhbGxvd3Mgc2VydmVycyB0byBpZGVudGlmeSB3aGVyZSBwZW9wbGUgYXJlIHZpc2l0aW5nIHRoZW0gZnJvbSBhbmQgbWF5IHVzZSB0aGF0IGRhdGEgZm9yIGFuYWx5dGljcywgbG9nZ2luZywgb3Igb3B0aW1pemVkIGNhY2hpbmcsIGZvciBleGFtcGxlLiIpIGhlYWRlciB3aWxsIG5vdCBiZSBzZW50LlxuKiAgIGBuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZWAgKGRlZmF1bHQpOiBUaGUgW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQgdG8gW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9vcmlnaW4gIm9yaWdpbjogV2ViIGNvbnRlbnRcJ3Mgb3JpZ2luIGlzIGRlZmluZWQgYnkgdGhlIHNjaGVtZSAocHJvdG9jb2wpLCBob3N0IChkb21haW4pLCBhbmQgcG9ydCBvZiB0aGUgVVJMIHVzZWQgdG8gYWNjZXNzIGl0LiBUd28gb2JqZWN0cyBoYXZlIHRoZSBzYW1lIG9yaWdpbiBvbmx5IHdoZW4gdGhlIHNjaGVtZSwgaG9zdCwgYW5kIHBvcnQgYWxsIG1hdGNoLiIpcyB3aXRob3V0IFtUTFNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvVExTICJUTFM6IFRyYW5zcG9ydCBMYXllciBTZWN1cml0eSAoVExTKSwgcHJldmlvdXNseSBrbm93biBhcyBTZWN1cmUgU29ja2V0cyBMYXllciAoU1NMKSwgaXMgYSBwcm90b2NvbCB1c2VkIGJ5IGFwcGxpY2F0aW9ucyB0byBjb21tdW5pY2F0ZSBzZWN1cmVseSBhY3Jvc3MgYSBuZXR3b3JrLCBwcmV2ZW50aW5nIHRhbXBlcmluZyB3aXRoIGFuZCBlYXZlc2Ryb3BwaW5nIG9uIGVtYWlsLCB3ZWIgYnJvd3NpbmcsIG1lc3NhZ2luZywgYW5kIG90aGVyIHByb3RvY29scy4iKSAoW0hUVFBTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0hUVFBTICJIVFRQUzogSFRUUFMgKEhUVFAgU2VjdXJlKSBpcyBhbiBlbmNyeXB0ZWQgdmVyc2lvbiBvZiB0aGUgSFRUUCBwcm90b2NvbC4gSXQgdXN1YWxseSB1c2VzIFNTTCBvciBUTFMgdG8gZW5jcnlwdCBhbGwgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGEgY2xpZW50IGFuZCBhIHNlcnZlci4gVGhpcyBzZWN1cmUgY29ubmVjdGlvbiBhbGxvd3MgY2xpZW50cyB0byBzYWZlbHkgZXhjaGFuZ2Ugc2Vuc2l0aXZlIGRhdGEgd2l0aCBhIHNlcnZlciwgZm9yIGV4YW1wbGUgZm9yIGJhbmtpbmcgYWN0aXZpdGllcyBvciBvbmxpbmUgc2hvcHBpbmcuIikpLlxuKiAgIGBvcmlnaW5gOiBUaGUgc2VudCByZWZlcnJlciB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIG9yaWdpbiBvZiB0aGUgcmVmZXJyaW5nIHBhZ2U6IGl0cyBbc2NoZW1lXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0FyY2hpdmUvTW96aWxsYS9VUklTY2hlbWUpLCBbaG9zdF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9ob3N0ICJob3N0OiBBIGhvc3QgaXMgYSBkZXZpY2UgY29ubmVjdGVkIHRvIHRoZSBJbnRlcm5ldCAob3IgYSBsb2NhbCBuZXR3b3JrKS4gU29tZSBob3N0cyBjYWxsZWQgc2VydmVycyBvZmZlciBhZGRpdGlvbmFsIHNlcnZpY2VzIGxpa2Ugc2VydmluZyB3ZWJwYWdlcyBvciBzdG9yaW5nIGZpbGVzIGFuZCBlbWFpbHMuIiksIGFuZCBbcG9ydF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9wb3J0ICJwb3J0OiBGb3IgYSBjb21wdXRlciBjb25uZWN0ZWQgdG8gYSBuZXR3b3JrIHdpdGggYW4gSVAgYWRkcmVzcywgYSBwb3J0IGlzIGEgY29tbXVuaWNhdGlvbiBlbmRwb2ludC4gUG9ydHMgYXJlIGRlc2lnbmF0ZWQgYnkgbnVtYmVycywgYW5kIGJlbG93IDEwMjQgZWFjaCBwb3J0IGlzIGFzc29jaWF0ZWQgYnkgZGVmYXVsdCB3aXRoIGEgc3BlY2lmaWMgcHJvdG9jb2wuIikuXG4qICAgYG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmA6IFRoZSByZWZlcnJlciBzZW50IHRvIG90aGVyIG9yaWdpbnMgd2lsbCBiZSBsaW1pdGVkIHRvIHRoZSBzY2hlbWUsIHRoZSBob3N0LCBhbmQgdGhlIHBvcnQuIE5hdmlnYXRpb25zIG9uIHRoZSBzYW1lIG9yaWdpbiB3aWxsIHN0aWxsIGluY2x1ZGUgdGhlIHBhdGguXG4qICAgYHNhbWUtb3JpZ2luYDogQSByZWZlcnJlciB3aWxsIGJlIHNlbnQgZm9yIFtzYW1lIG9yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9TYW1lLW9yaWdpbl9wb2xpY3kgInNhbWUgb3JpZ2luOiBUaGUgc2FtZS1vcmlnaW4gcG9saWN5IGlzIGEgY3JpdGljYWwgc2VjdXJpdHkgbWVjaGFuaXNtIHRoYXQgcmVzdHJpY3RzIGhvdyBhIGRvY3VtZW50IG9yIHNjcmlwdCBsb2FkZWQgZnJvbSBvbmUgb3JpZ2luIGNhbiBpbnRlcmFjdCB3aXRoIGEgcmVzb3VyY2UgZnJvbSBhbm90aGVyIG9yaWdpbi4iKSwgYnV0IGNyb3NzLW9yaWdpbiByZXF1ZXN0cyB3aWxsIGNvbnRhaW4gbm8gcmVmZXJyZXIgaW5mb3JtYXRpb24uXG4qICAgYHN0cmljdC1vcmlnaW5gOiBPbmx5IHNlbmQgdGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1lbnQgYXMgdGhlIHJlZmVycmVyIHdoZW4gdGhlIHByb3RvY29sIHNlY3VyaXR5IGxldmVsIHN0YXlzIHRoZSBzYW1lIChlLmcuIEhUVFBT4oaSSFRUUFMpLCBidXQgZG9uXCd0IHNlbmQgaXQgdG8gYSBsZXNzIHNlY3VyZSBkZXN0aW5hdGlvbiAoZS5nLiBIVFRQU+KGkkhUVFApLlxuKiAgIGBzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYDogU2VuZCBhIGZ1bGwgVVJMIHdoZW4gcGVyZm9ybWluZyBhIHNhbWUtb3JpZ2luIHJlcXVlc3QsIGJ1dCBvbmx5IHNlbmQgdGhlIG9yaWdpbiB3aGVuIHRoZSBwcm90b2NvbCBzZWN1cml0eSBsZXZlbCBzdGF5cyB0aGUgc2FtZSAoZS5nLkhUVFBT4oaSSFRUUFMpLCBhbmQgc2VuZCBubyBoZWFkZXIgdG8gYSBsZXNzIHNlY3VyZSBkZXN0aW5hdGlvbiAoZS5nLiBIVFRQU+KGkkhUVFApLlxuKiAgIGB1bnNhZmUtdXJsYDogVGhlIHJlZmVycmVyIHdpbGwgaW5jbHVkZSB0aGUgb3JpZ2luIF9hbmRfIHRoZSBwYXRoIChidXQgbm90IHRoZSBbZnJhZ21lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL2hhc2gpLCBbcGFzc3dvcmRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL3Bhc3N3b3JkKSwgb3IgW3VzZXJuYW1lXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy91c2VybmFtZSkpLiAqKlRoaXMgdmFsdWUgaXMgdW5zYWZlKiosIGJlY2F1c2UgaXQgbGVha3Mgb3JpZ2lucyBhbmQgcGF0aHMgZnJvbSBUTFMtcHJvdGVjdGVkIHJlc291cmNlcyB0byBpbnNlY3VyZSBvcmlnaW5zLlxuXG4qKk5vdGUqKjogQW4gZW1wdHkgc3RyaW5nIHZhbHVlIChgIiJgKSBpcyBib3RoIHRoZSBkZWZhdWx0IHZhbHVlLCBhbmQgYSBmYWxsYmFjayB2YWx1ZSBpZiBgcmVmZXJyZXJwb2xpY3lgIGlzIG5vdCBzdXBwb3J0ZWQuIElmIGByZWZlcnJlcnBvbGljeWAgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIG9uIHRoZSBgPHNjcmlwdD5gIGVsZW1lbnQsIGl0IHdpbGwgYWRvcHQgYSBoaWdoZXItbGV2ZWwgcmVmZXJyZXIgcG9saWN5LCBpLmUuIG9uZSBzZXQgb24gdGhlIHdob2xlIGRvY3VtZW50IG9yIGRvbWFpbi4gSWYgYSBoaWdoZXItbGV2ZWwgcG9saWN5IGlzIG5vdCBhdmFpbGFibGUswqB0aGUgZW1wdHkgc3RyaW5nIGlzIHRyZWF0ZWQgYXMgYmVpbmcgZXF1aXZhbGVudCB0byBgbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVgLid9LHtuYW1lOiJ0ZXh0IixkZXNjcmlwdGlvbjoiTGlrZSB0aGUgYHRleHRDb250ZW50YCBhdHRyaWJ1dGUsIHRoaXMgYXR0cmlidXRlIHNldHMgdGhlIHRleHQgY29udGVudCBvZiB0aGUgZWxlbWVudC4gVW5saWtlIHRoZSBgdGV4dENvbnRlbnRgIGF0dHJpYnV0ZSwgaG93ZXZlciwgdGhpcyBhdHRyaWJ1dGUgaXMgZXZhbHVhdGVkIGFzIGV4ZWN1dGFibGUgY29kZSBhZnRlciB0aGUgbm9kZSBpcyBpbnNlcnRlZCBpbnRvIHRoZSBET00uIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zY3JpcHQifV19LHtuYW1lOiJub3NjcmlwdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5vc2NyaXB0IGVsZW1lbnQgcmVwcmVzZW50cyBub3RoaW5nIGlmIHNjcmlwdGluZyBpcyBlbmFibGVkLCBhbmQgcmVwcmVzZW50cyBpdHMgY2hpbGRyZW4gaWYgc2NyaXB0aW5nIGlzIGRpc2FibGVkLiBJdCBpcyB1c2VkIHRvIHByZXNlbnQgZGlmZmVyZW50IG1hcmt1cCB0byB1c2VyIGFnZW50cyB0aGF0IHN1cHBvcnQgc2NyaXB0aW5nIGFuZCB0aG9zZSB0aGF0IGRvbid0IHN1cHBvcnQgc2NyaXB0aW5nLCBieSBhZmZlY3RpbmcgaG93IHRoZSBkb2N1bWVudCBpcyBwYXJzZWQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbm9zY3JpcHQifV19LHtuYW1lOiJ0ZW1wbGF0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRlbXBsYXRlIGVsZW1lbnQgaXMgdXNlZCB0byBkZWNsYXJlIGZyYWdtZW50cyBvZiBIVE1MIHRoYXQgY2FuIGJlIGNsb25lZCBhbmQgaW5zZXJ0ZWQgaW4gdGhlIGRvY3VtZW50IGJ5IHNjcmlwdC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZW1wbGF0ZSJ9XX0se25hbWU6ImNhbnZhcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGNhbnZhcyBlbGVtZW50IHByb3ZpZGVzIHNjcmlwdHMgd2l0aCBhIHJlc29sdXRpb24tZGVwZW5kZW50IGJpdG1hcCBjYW52YXMsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciByZW5kZXJpbmcgZ3JhcGhzLCBnYW1lIGdyYXBoaWNzLCBhcnQsIG9yIG90aGVyIHZpc3VhbCBpbWFnZXMgb24gdGhlIGZseS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB3aWR0aCBvZiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBpbiBDU1MgcGl4ZWxzLiBEZWZhdWx0cyB0byAzMDAuIn19LHtuYW1lOiJoZWlnaHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoZWlnaHQgb2YgdGhlIGNvb3JkaW5hdGUgc3BhY2UgaW4gQ1NTIHBpeGVscy4gRGVmYXVsdHMgdG8gMTUwLiJ9fSx7bmFtZToibW96LW9wYXF1ZSIsZGVzY3JpcHRpb246IkxldHMgdGhlIGNhbnZhcyBrbm93IHdoZXRoZXIgb3Igbm90IHRyYW5zbHVjZW5jeSB3aWxsIGJlIGEgZmFjdG9yLiBJZiB0aGUgY2FudmFzIGtub3dzIHRoZXJlJ3Mgbm8gdHJhbnNsdWNlbmN5LCBwYWludGluZyBwZXJmb3JtYW5jZSBjYW4gYmUgb3B0aW1pemVkLiBUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGJ5IE1vemlsbGEtYmFzZWQgYnJvd3NlcnM7IHVzZSB0aGUgc3RhbmRhcmRpemVkIFtgY2FudmFzLmdldENvbnRleHQoJzJkJywgeyBhbHBoYTogZmFsc2UgfSlgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTENhbnZhc0VsZW1lbnQvZ2V0Q29udGV4dCBcIlRoZSBIVE1MQ2FudmFzRWxlbWVudC5nZXRDb250ZXh0KCkgbWV0aG9kIHJldHVybnMgYSBkcmF3aW5nIGNvbnRleHQgb24gdGhlIGNhbnZhcywgb3IgbnVsbCBpZiB0aGUgY29udGV4dCBpZGVudGlmaWVyIGlzIG5vdCBzdXBwb3J0ZWQuXCIpIGluc3RlYWQuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYW52YXMifV19XSxnbG9iYWxBdHRyaWJ1dGVzOlt7bmFtZToiYWNjZXNza2V5IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQcm92aWRlcyBhIGhpbnQgZm9yIGdlbmVyYXRpbmcgYSBrZXlib2FyZCBzaG9ydGN1dCBmb3IgdGhlIGN1cnJlbnQgZWxlbWVudC4gVGhpcyBhdHRyaWJ1dGUgY29uc2lzdHMgb2YgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBjaGFyYWN0ZXJzLiBUaGUgYnJvd3NlciBzaG91bGQgdXNlIHRoZSBmaXJzdCBvbmUgdGhhdCBleGlzdHMgb24gdGhlIGNvbXB1dGVyIGtleWJvYXJkIGxheW91dC4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2FjY2Vzc2tleSJ9XX0se25hbWU6ImF1dG9jYXBpdGFsaXplIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJDb250cm9scyB3aGV0aGVyIGFuZCBob3cgdGV4dCBpbnB1dCBpcyBhdXRvbWF0aWNhbGx5IGNhcGl0YWxpemVkIGFzIGl0IGlzIGVudGVyZWQvZWRpdGVkIGJ5IHRoZSB1c2VyLiBJdCBjYW4gaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGBvZmZgIG9yIGBub25lYCwgbm8gYXV0b2NhcGl0YWxpemF0aW9uIGlzIGFwcGxpZWQgKGFsbCBsZXR0ZXJzIGRlZmF1bHQgdG8gbG93ZXJjYXNlKVxuKiAgIGBvbmAgb3IgYHNlbnRlbmNlc2AsIHRoZSBmaXJzdCBsZXR0ZXIgb2YgZWFjaCBzZW50ZW5jZSBkZWZhdWx0cyB0byBhIGNhcGl0YWwgbGV0dGVyOyBhbGwgb3RoZXIgbGV0dGVycyBkZWZhdWx0IHRvIGxvd2VyY2FzZVxuKiAgIGB3b3Jkc2AsIHRoZSBmaXJzdCBsZXR0ZXIgb2YgZWFjaCB3b3JkIGRlZmF1bHRzIHRvIGEgY2FwaXRhbCBsZXR0ZXI7IGFsbCBvdGhlciBsZXR0ZXJzIGRlZmF1bHQgdG8gbG93ZXJjYXNlXG4qICAgYGNoYXJhY3RlcnNgLCBhbGwgbGV0dGVycyBzaG91bGQgZGVmYXVsdCB0byB1cHBlcmNhc2UifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2F1dG9jYXBpdGFsaXplIn1dfSx7bmFtZToiY2xhc3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0Egc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIGNsYXNzZXMgb2YgdGhlIGVsZW1lbnQuIENsYXNzZXMgYWxsb3dzIENTUyBhbmQgSmF2YVNjcmlwdCB0byBzZWxlY3QgYW5kIGFjY2VzcyBzcGVjaWZpYyBlbGVtZW50cyB2aWEgdGhlIFtjbGFzcyBzZWxlY3RvcnNdKC9lbi1VUy9kb2NzL1dlYi9DU1MvQ2xhc3Nfc2VsZWN0b3JzKSBvciBmdW5jdGlvbnMgbGlrZSB0aGUgbWV0aG9kIFtgRG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgpYF0oL2VuLVVTL2RvY3MvV2ViL0FQSS9Eb2N1bWVudC9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICJyZXR1cm5zIGFuIGFycmF5LWxpa2Ugb2JqZWN0IG9mIGFsbCBjaGlsZCBlbGVtZW50cyB3aGljaCBoYXZlIGFsbCBvZiB0aGUgZ2l2ZW4gY2xhc3MgbmFtZXMuIikuJ30scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9jbGFzcyJ9XX0se25hbWU6ImNvbnRlbnRlZGl0YWJsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGluZyBpZiB0aGUgZWxlbWVudCBzaG91bGQgYmUgZWRpdGFibGUgYnkgdGhlIHVzZXIuIElmIHNvLCB0aGUgYnJvd3NlciBtb2RpZmllcyBpdHMgd2lkZ2V0IHRvIGFsbG93IGVkaXRpbmcuIFRoZSBhdHRyaWJ1dGUgbXVzdCB0YWtlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGB0cnVlYCBvciB0aGUgX2VtcHR5IHN0cmluZ18sIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IG11c3QgYmUgZWRpdGFibGU7XG4qICAgYGZhbHNlYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgbXVzdCBub3QgYmUgZWRpdGFibGUuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9jb250ZW50ZWRpdGFibGUifV19LHtuYW1lOiJjb250ZXh0bWVudSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIGBbKippZCoqXSgjYXR0ci1pZClgIG9mIGEgW2A8bWVudT5gXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21lbnUgIlRoZSBIVE1MIDxtZW51PiBlbGVtZW50IHJlcHJlc2VudHMgYSBncm91cCBvZiBjb21tYW5kcyB0aGF0IGEgdXNlciBjYW4gcGVyZm9ybSBvciBhY3RpdmF0ZS4gVGhpcyBpbmNsdWRlcyBib3RoIGxpc3QgbWVudXMsIHdoaWNoIG1pZ2h0IGFwcGVhciBhY3Jvc3MgdGhlIHRvcCBvZiBhIHNjcmVlbiwgYXMgd2VsbCBhcyBjb250ZXh0IG1lbnVzLCBzdWNoIGFzIHRob3NlIHRoYXQgbWlnaHQgYXBwZWFyIHVuZGVybmVhdGggYSBidXR0b24gYWZ0ZXIgaXQgaGFzIGJlZW4gY2xpY2tlZC4iKSB0byB1c2UgYXMgdGhlIGNvbnRleHR1YWwgbWVudSBmb3IgdGhpcyBlbGVtZW50Lid9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvY29udGV4dG1lbnUifV19LHtuYW1lOiJkaXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRpbmcgdGhlIGRpcmVjdGlvbmFsaXR5IG9mIHRoZSBlbGVtZW50J3MgdGV4dC4gSXQgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgbHRyYCwgd2hpY2ggbWVhbnMgX2xlZnQgdG8gcmlnaHRfIGFuZCBpcyB0byBiZSB1c2VkIGZvciBsYW5ndWFnZXMgdGhhdCBhcmUgd3JpdHRlbiBmcm9tIHRoZSBsZWZ0IHRvIHRoZSByaWdodCAobGlrZSBFbmdsaXNoKTtcbiogICBgcnRsYCwgd2hpY2ggbWVhbnMgX3JpZ2h0IHRvIGxlZnRfIGFuZCBpcyB0byBiZSB1c2VkIGZvciBsYW5ndWFnZXMgdGhhdCBhcmUgd3JpdHRlbiBmcm9tIHRoZSByaWdodCB0byB0aGUgbGVmdCAobGlrZSBBcmFiaWMpO1xuKiAgIGBhdXRvYCwgd2hpY2ggbGV0cyB0aGUgdXNlciBhZ2VudCBkZWNpZGUuIEl0IHVzZXMgYSBiYXNpYyBhbGdvcml0aG0gYXMgaXQgcGFyc2VzIHRoZSBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgZWxlbWVudCB1bnRpbCBpdCBmaW5kcyBhIGNoYXJhY3RlciB3aXRoIGEgc3Ryb25nIGRpcmVjdGlvbmFsaXR5LCB0aGVuIGl0IGFwcGxpZXMgdGhhdCBkaXJlY3Rpb25hbGl0eSB0byB0aGUgd2hvbGUgZWxlbWVudC4ifSx2YWx1ZVNldDoiZCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9kaXIifV19LHtuYW1lOiJkcmFnZ2FibGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRpbmcgd2hldGhlciB0aGUgZWxlbWVudCBjYW4gYmUgZHJhZ2dlZCwgdXNpbmcgdGhlIFtEcmFnIGFuZCBEcm9wIEFQSV0oL2VuLXVzL2RvY3MvRHJhZ0Ryb3AvRHJhZ19hbmRfRHJvcCkuIEl0IGNhbiBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYHRydWVgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBtYXkgYmUgZHJhZ2dlZFxuKiAgIGBmYWxzZWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IG1heSBub3QgYmUgZHJhZ2dlZC4ifSx2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9kcmFnZ2FibGUifV19LHtuYW1lOiJkcm9wem9uZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGluZyB3aGF0IHR5cGVzIG9mIGNvbnRlbnQgY2FuIGJlIGRyb3BwZWQgb24gYW4gZWxlbWVudCwgdXNpbmcgdGhlIFtEcmFnIGFuZCBEcm9wIEFQSV0oL2VuLVVTL2RvY3MvRHJhZ0Ryb3AvRHJhZ19hbmRfRHJvcCkuIEl0IGNhbiBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYGNvcHlgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCBkcm9wcGluZyB3aWxsIGNyZWF0ZSBhIGNvcHkgb2YgdGhlIGVsZW1lbnQgdGhhdCB3YXMgZHJhZ2dlZFxuKiAgIGBtb3ZlYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgdGhhdCB3YXMgZHJhZ2dlZCB3aWxsIGJlIG1vdmVkIHRvIHRoaXMgbmV3IGxvY2F0aW9uLlxuKiAgIGBsaW5rYCwgd2lsbCBjcmVhdGUgYSBsaW5rIHRvIHRoZSBkcmFnZ2VkIGRhdGEuIn19LHtuYW1lOiJleHBvcnRwYXJ0cyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVXNlZCB0byB0cmFuc2l0aXZlbHkgZXhwb3J0IHNoYWRvdyBwYXJ0cyBmcm9tIGEgbmVzdGVkIHNoYWRvdyB0cmVlIGludG8gYSBjb250YWluaW5nIGxpZ2h0IHRyZWUuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9leHBvcnRwYXJ0cyJ9XX0se25hbWU6ImhpZGRlbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBpcyBub3QgeWV0LCBvciBpcyBubyBsb25nZXIsIF9yZWxldmFudF8uIEZvciBleGFtcGxlLCBpdCBjYW4gYmUgdXNlZCB0byBoaWRlIGVsZW1lbnRzIG9mIHRoZSBwYWdlIHRoYXQgY2FuJ3QgYmUgdXNlZCB1bnRpbCB0aGUgbG9naW4gcHJvY2VzcyBoYXMgYmVlbiBjb21wbGV0ZWQuIFRoZSBicm93c2VyIHdvbid0IHJlbmRlciBzdWNoIGVsZW1lbnRzLiBUaGlzIGF0dHJpYnV0ZSBtdXN0IG5vdCBiZSB1c2VkIHRvIGhpZGUgY29udGVudCB0aGF0IGNvdWxkIGxlZ2l0aW1hdGVseSBiZSBzaG93bi4ifSx2YWx1ZVNldDoidiIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9oaWRkZW4ifV19LHtuYW1lOiJpZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhIHVuaXF1ZSBpZGVudGlmaWVyIChJRCkgd2hpY2ggbXVzdCBiZSB1bmlxdWUgaW4gdGhlIHdob2xlIGRvY3VtZW50LiBJdHMgcHVycG9zZSBpcyB0byBpZGVudGlmeSB0aGUgZWxlbWVudCB3aGVuIGxpbmtpbmcgKHVzaW5nIGEgZnJhZ21lbnQgaWRlbnRpZmllciksIHNjcmlwdGluZywgb3Igc3R5bGluZyAod2l0aCBDU1MpLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaWQifV19LHtuYW1lOiJpbnB1dG1vZGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1Byb3ZpZGVzIGEgaGludCB0byBicm93c2VycyBhcyB0byB0aGUgdHlwZSBvZiB2aXJ0dWFsIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gdG8gdXNlIHdoZW4gZWRpdGluZyB0aGlzIGVsZW1lbnQgb3IgaXRzIGNvbnRlbnRzLiBVc2VkIHByaW1hcmlseSBvbiBbYDxpbnB1dD5gXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudHMsIGJ1dCBpcyB1c2FibGUgb24gYW55IGVsZW1lbnQgd2hpbGUgaW4gYFtjb250ZW50ZWRpdGFibGVdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzI2F0dHItY29udGVudGVkaXRhYmxlKWAgbW9kZS4nfSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2lucHV0bW9kZSJ9XX0se25hbWU6ImlzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhhdCBhIHN0YW5kYXJkIEhUTUwgZWxlbWVudCBzaG91bGQgYmVoYXZlIGxpa2UgYSByZWdpc3RlcmVkIGN1c3RvbSBidWlsdC1pbiBlbGVtZW50IChzZWUgW1VzaW5nIGN1c3RvbSBlbGVtZW50c10oL2VuLVVTL2RvY3MvV2ViL1dlYl9Db21wb25lbnRzL1VzaW5nX2N1c3RvbV9lbGVtZW50cykgZm9yIG1vcmUgZGV0YWlscykuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pcyJ9XX0se25hbWU6Iml0ZW1pZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVuaXF1ZSwgZ2xvYmFsIGlkZW50aWZpZXIgb2YgYW4gaXRlbS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2l0ZW1pZCJ9XX0se25hbWU6Iml0ZW1wcm9wIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJVc2VkIHRvIGFkZCBwcm9wZXJ0aWVzIHRvIGFuIGl0ZW0uIEV2ZXJ5IEhUTUwgZWxlbWVudCBtYXkgaGF2ZSBhbiBgaXRlbXByb3BgIGF0dHJpYnV0ZSBzcGVjaWZpZWQsIHdoZXJlIGFuIGBpdGVtcHJvcGAgY29uc2lzdHMgb2YgYSBuYW1lIGFuZCB2YWx1ZSBwYWlyLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaXRlbXByb3AifV19LHtuYW1lOiJpdGVtcmVmIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCBkZXNjZW5kYW50cyBvZiBhbiBlbGVtZW50IHdpdGggdGhlIGBpdGVtc2NvcGVgIGF0dHJpYnV0ZSBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBpdGVtIHVzaW5nIGFuIGBpdGVtcmVmYC4gSXQgcHJvdmlkZXMgYSBsaXN0IG9mIGVsZW1lbnQgaWRzIChub3QgYGl0ZW1pZGBzKSB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcyBlbHNld2hlcmUgaW4gdGhlIGRvY3VtZW50LiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaXRlbXJlZiJ9XX0se25hbWU6Iml0ZW1zY29wZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiYGl0ZW1zY29wZWAgKHVzdWFsbHkpIHdvcmtzIGFsb25nIHdpdGggYFtpdGVtdHlwZV0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMjYXR0ci1pdGVtdHlwZSlgIHRvIHNwZWNpZnkgdGhhdCB0aGUgSFRNTCBjb250YWluZWQgaW4gYSBibG9jayBpcyBhYm91dCBhIHBhcnRpY3VsYXIgaXRlbS4gYGl0ZW1zY29wZWAgY3JlYXRlcyB0aGUgSXRlbSBhbmQgZGVmaW5lcyB0aGUgc2NvcGUgb2YgdGhlIGBpdGVtdHlwZWAgYXNzb2NpYXRlZCB3aXRoIGl0LiBgaXRlbXR5cGVgIGlzIGEgdmFsaWQgVVJMIG9mIGEgdm9jYWJ1bGFyeSAoc3VjaCBhcyBbc2NoZW1hLm9yZ10oaHR0cHM6Ly9zY2hlbWEub3JnLykpIHRoYXQgZGVzY3JpYmVzIHRoZSBpdGVtIGFuZCBpdHMgcHJvcGVydGllcyBjb250ZXh0LiJ9LHZhbHVlU2V0OiJ2IixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2l0ZW1zY29wZSJ9XX0se25hbWU6Iml0ZW10eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJTcGVjaWZpZXMgdGhlIFVSTCBvZiB0aGUgdm9jYWJ1bGFyeSB0aGF0IHdpbGwgYmUgdXNlZCB0byBkZWZpbmUgYGl0ZW1wcm9wYHMgKGl0ZW0gcHJvcGVydGllcykgaW4gdGhlIGRhdGEgc3RydWN0dXJlLiBgW2l0ZW1zY29wZV0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMjYXR0ci1pdGVtc2NvcGUpYCBpcyB1c2VkIHRvIHNldCB0aGUgc2NvcGUgb2Ygd2hlcmUgaW4gdGhlIGRhdGEgc3RydWN0dXJlIHRoZSB2b2NhYnVsYXJ5IHNldCBieSBgaXRlbXR5cGVgIHdpbGwgYmUgYWN0aXZlLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaXRlbXR5cGUifV19LHtuYW1lOiJsYW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJIZWxwcyBkZWZpbmUgdGhlIGxhbmd1YWdlIG9mIGFuIGVsZW1lbnQ6IHRoZSBsYW5ndWFnZSB0aGF0IG5vbi1lZGl0YWJsZSBlbGVtZW50cyBhcmUgaW4sIG9yIHRoZSBsYW5ndWFnZSB0aGF0IGVkaXRhYmxlIGVsZW1lbnRzIHNob3VsZCBiZSB3cml0dGVuIGluIGJ5IHRoZSB1c2VyLiBUaGUgYXR0cmlidXRlIGNvbnRhaW5zIG9uZSDigJxsYW5ndWFnZSB0YWfigJ0gKG1hZGUgb2YgaHlwaGVuLXNlcGFyYXRlZCDigJxsYW5ndWFnZSBzdWJ0YWdz4oCdKSBpbiB0aGUgZm9ybWF0IGRlZmluZWQgaW4gW19UYWdzIGZvciBJZGVudGlmeWluZyBMYW5ndWFnZXMgKEJDUDQ3KV9dKGh0dHBzOi8vd3d3LmlldGYub3JnL3JmYy9iY3AvYmNwNDcudHh0KS4gWyoqeG1sOmxhbmcqKl0oI2F0dHIteG1sOmxhbmcpIGhhcyBwcmlvcml0eSBvdmVyIGl0LiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvbGFuZyJ9XX0se25hbWU6InBhcnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0Egc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIHBhcnQgbmFtZXMgb2YgdGhlIGVsZW1lbnQuIFBhcnQgbmFtZXMgYWxsb3dzIENTUyB0byBzZWxlY3QgYW5kIHN0eWxlIHNwZWNpZmljIGVsZW1lbnRzIGluIGEgc2hhZG93IHRyZWUgdmlhIHRoZSBbYDo6cGFydGBdKC9lbi1VUy9kb2NzL1dlYi9DU1MvOjpwYXJ0ICJUaGUgOjpwYXJ0IENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIGFueSBlbGVtZW50IHdpdGhpbiBhIHNoYWRvdyB0cmVlIHRoYXQgaGFzIGEgbWF0Y2hpbmcgcGFydCBhdHRyaWJ1dGUuIikgcHNldWRvLWVsZW1lbnQuJ30scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9wYXJ0In1dfSx7bmFtZToicm9sZSIsdmFsdWVTZXQ6InJvbGVzIn0se25hbWU6InNsb3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFzc2lnbnMgYSBzbG90IGluIGEgW3NoYWRvdyBET01dKC9lbi1VUy9kb2NzL1dlYi9XZWJfQ29tcG9uZW50cy9TaGFkb3dfRE9NKSBzaGFkb3cgdHJlZSB0byBhbiBlbGVtZW50OiBBbiBlbGVtZW50IHdpdGggYSBgc2xvdGAgYXR0cmlidXRlIGlzIGFzc2lnbmVkIHRvIHRoZSBzbG90IGNyZWF0ZWQgYnkgdGhlIFtgPHNsb3Q+YF0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zbG90IFwiVGhlIEhUTUwgPHNsb3Q+IGVsZW1lbnTigJRwYXJ0IG9mIHRoZSBXZWIgQ29tcG9uZW50cyB0ZWNobm9sb2d5IHN1aXRl4oCUaXMgYSBwbGFjZWhvbGRlciBpbnNpZGUgYSB3ZWIgY29tcG9uZW50IHRoYXQgeW91IGNhbiBmaWxsIHdpdGggeW91ciBvd24gbWFya3VwLCB3aGljaCBsZXRzIHlvdSBjcmVhdGUgc2VwYXJhdGUgRE9NIHRyZWVzIGFuZCBwcmVzZW50IHRoZW0gdG9nZXRoZXIuXCIpIGVsZW1lbnQgd2hvc2UgYFtuYW1lXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Nsb3QjYXR0ci1uYW1lKWAgYXR0cmlidXRlJ3MgdmFsdWUgbWF0Y2hlcyB0aGF0IGBzbG90YCBhdHRyaWJ1dGUncyB2YWx1ZS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3Nsb3QifV19LHtuYW1lOiJzcGVsbGNoZWNrIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBkZWZpbmVzIHdoZXRoZXIgdGhlIGVsZW1lbnQgbWF5IGJlIGNoZWNrZWQgZm9yIHNwZWxsaW5nIGVycm9ycy4gSXQgbWF5IGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgdHJ1ZWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBiZSwgaWYgcG9zc2libGUsIGNoZWNrZWQgZm9yIHNwZWxsaW5nIGVycm9ycztcbiogICBgZmFsc2VgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgbm90IGJlIGNoZWNrZWQgZm9yIHNwZWxsaW5nIGVycm9ycy4ifSx2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9zcGVsbGNoZWNrIn1dfSx7bmFtZToic3R5bGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0NvbnRhaW5zIFtDU1NdKC9lbi1VUy9kb2NzL1dlYi9DU1MpIHN0eWxpbmcgZGVjbGFyYXRpb25zIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGVsZW1lbnQuIE5vdGUgdGhhdCBpdCBpcyByZWNvbW1lbmRlZCBmb3Igc3R5bGVzIHRvIGJlIGRlZmluZWQgaW4gYSBzZXBhcmF0ZSBmaWxlIG9yIGZpbGVzLiBUaGlzIGF0dHJpYnV0ZSBhbmQgdGhlIFtgPHN0eWxlPmBdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3R5bGUgIlRoZSBIVE1MIDxzdHlsZT4gZWxlbWVudCBjb250YWlucyBzdHlsZSBpbmZvcm1hdGlvbiBmb3IgYSBkb2N1bWVudCwgb3IgcGFydCBvZiBhIGRvY3VtZW50LiIpIGVsZW1lbnQgaGF2ZSBtYWlubHkgdGhlIHB1cnBvc2Ugb2YgYWxsb3dpbmcgZm9yIHF1aWNrIHN0eWxpbmcsIGZvciBleGFtcGxlIGZvciB0ZXN0aW5nIHB1cnBvc2VzLid9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvc3R5bGUifV19LHtuYW1lOiJ0YWJpbmRleCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gaW50ZWdlciBhdHRyaWJ1dGUgaW5kaWNhdGluZyBpZiB0aGUgZWxlbWVudCBjYW4gdGFrZSBpbnB1dCBmb2N1cyAoaXMgX2ZvY3VzYWJsZV8pLCBpZiBpdCBzaG91bGQgcGFydGljaXBhdGUgdG8gc2VxdWVudGlhbCBrZXlib2FyZCBuYXZpZ2F0aW9uLCBhbmQgaWYgc28sIGF0IHdoYXQgcG9zaXRpb24uIEl0IGNhbiB0YWtlIHNldmVyYWwgdmFsdWVzOlxuXG4qICAgYSBfbmVnYXRpdmUgdmFsdWVfIG1lYW5zIHRoYXQgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIGZvY3VzYWJsZSwgYnV0IHNob3VsZCBub3QgYmUgcmVhY2hhYmxlIHZpYSBzZXF1ZW50aWFsIGtleWJvYXJkIG5hdmlnYXRpb247XG4qICAgYDBgIG1lYW5zIHRoYXQgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIGZvY3VzYWJsZSBhbmQgcmVhY2hhYmxlIHZpYSBzZXF1ZW50aWFsIGtleWJvYXJkIG5hdmlnYXRpb24sIGJ1dCBpdHMgcmVsYXRpdmUgb3JkZXIgaXMgZGVmaW5lZCBieSB0aGUgcGxhdGZvcm0gY29udmVudGlvbjtcbiogICBhIF9wb3NpdGl2ZSB2YWx1ZV8gbWVhbnMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZm9jdXNhYmxlIGFuZCByZWFjaGFibGUgdmlhIHNlcXVlbnRpYWwga2V5Ym9hcmQgbmF2aWdhdGlvbjsgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBlbGVtZW50cyBhcmUgZm9jdXNlZCBpcyB0aGUgaW5jcmVhc2luZyB2YWx1ZSBvZiB0aGUgWyoqdGFiaW5kZXgqKl0oI2F0dHItdGFiaW5kZXgpLiBJZiBzZXZlcmFsIGVsZW1lbnRzIHNoYXJlIHRoZSBzYW1lIHRhYmluZGV4LCB0aGVpciByZWxhdGl2ZSBvcmRlciBmb2xsb3dzIHRoZWlyIHJlbGF0aXZlIHBvc2l0aW9ucyBpbiB0aGUgZG9jdW1lbnQuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy90YWJpbmRleCJ9XX0se25hbWU6InRpdGxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJDb250YWlucyBhIHRleHQgcmVwcmVzZW50aW5nIGFkdmlzb3J5IGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlIGVsZW1lbnQgaXQgYmVsb25ncyB0by4gU3VjaCBpbmZvcm1hdGlvbiBjYW4gdHlwaWNhbGx5LCBidXQgbm90IG5lY2Vzc2FyaWx5LCBiZSBwcmVzZW50ZWQgdG8gdGhlIHVzZXIgYXMgYSB0b29sdGlwLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvdGl0bGUifV19LHtuYW1lOiJ0cmFuc2xhdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVudW1lcmF0ZWQgYXR0cmlidXRlIHRoYXQgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXRoZXIgYW4gZWxlbWVudCdzIGF0dHJpYnV0ZSB2YWx1ZXMgYW5kIHRoZSB2YWx1ZXMgb2YgaXRzIFtgVGV4dGBdKC9lbi1VUy9kb2NzL1dlYi9BUEkvVGV4dCBcIlRoZSBUZXh0IGludGVyZmFjZSByZXByZXNlbnRzIHRoZSB0ZXh0dWFsIGNvbnRlbnQgb2YgRWxlbWVudCBvciBBdHRyLiBJZiBhbiBlbGVtZW50IGhhcyBubyBtYXJrdXAgd2l0aGluIGl0cyBjb250ZW50LCBpdCBoYXMgYSBzaW5nbGUgY2hpbGQgaW1wbGVtZW50aW5nIFRleHQgdGhhdCBjb250YWlucyB0aGUgZWxlbWVudCdzIHRleHQuIEhvd2V2ZXIsIGlmIHRoZSBlbGVtZW50IGNvbnRhaW5zIG1hcmt1cCwgaXQgaXMgcGFyc2VkIGludG8gaW5mb3JtYXRpb24gaXRlbXMgYW5kIFRleHQgbm9kZXMgdGhhdCBmb3JtIGl0cyBjaGlsZHJlbi5cIikgbm9kZSBjaGlsZHJlbiBhcmUgdG8gYmUgdHJhbnNsYXRlZCB3aGVuIHRoZSBwYWdlIGlzIGxvY2FsaXplZCwgb3Igd2hldGhlciB0byBsZWF2ZSB0aGVtIHVuY2hhbmdlZC4gSXQgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBlbXB0eSBzdHJpbmcgYW5kIGB5ZXNgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCB3aWxsIGJlIHRyYW5zbGF0ZWQuXG4qICAgYG5vYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgd2lsbCBub3QgYmUgdHJhbnNsYXRlZC4ifSx2YWx1ZVNldDoieSIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy90cmFuc2xhdGUifV19LHtuYW1lOiJvbmFib3J0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbG9hZGluZyBvZiBhIHJlc291cmNlIGhhcyBiZWVuIGFib3J0ZWQuIn19LHtuYW1lOiJvbmJsdXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVsZW1lbnQgaGFzIGxvc3QgZm9jdXMgKGRvZXMgbm90IGJ1YmJsZSkuIn19LHtuYW1lOiJvbmNhbnBsYXkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1c2VyIGFnZW50IGNhbiBwbGF5IHRoZSBtZWRpYSwgYnV0IGVzdGltYXRlcyB0aGF0IG5vdCBlbm91Z2ggZGF0YSBoYXMgYmVlbiBsb2FkZWQgdG8gcGxheSB0aGUgbWVkaWEgdXAgdG8gaXRzIGVuZCB3aXRob3V0IGhhdmluZyB0byBzdG9wIGZvciBmdXJ0aGVyIGJ1ZmZlcmluZyBvZiBjb250ZW50LiJ9fSx7bmFtZToib25jYW5wbGF5dGhyb3VnaCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVzZXIgYWdlbnQgY2FuIHBsYXkgdGhlIG1lZGlhIHVwIHRvIGl0cyBlbmQgd2l0aG91dCBoYXZpbmcgdG8gc3RvcCBmb3IgZnVydGhlciBidWZmZXJpbmcgb2YgY29udGVudC4ifX0se25hbWU6Im9uY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY2hhbmdlIGV2ZW50IGlzIGZpcmVkIGZvciA8aW5wdXQ+LCA8c2VsZWN0PiwgYW5kIDx0ZXh0YXJlYT4gZWxlbWVudHMgd2hlbiBhIGNoYW5nZSB0byB0aGUgZWxlbWVudCdzIHZhbHVlIGlzIGNvbW1pdHRlZCBieSB0aGUgdXNlci4ifX0se25hbWU6Im9uY2xpY2siLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGJ1dHRvbiBoYXMgYmVlbiBwcmVzc2VkIGFuZCByZWxlYXNlZCBvbiBhbiBlbGVtZW50LiJ9fSx7bmFtZToib25jb250ZXh0bWVudSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHJpZ2h0IGJ1dHRvbiBvZiB0aGUgbW91c2UgaXMgY2xpY2tlZCAoYmVmb3JlIHRoZSBjb250ZXh0IG1lbnUgaXMgZGlzcGxheWVkKS4ifX0se25hbWU6Im9uZGJsY2xpY2siLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGJ1dHRvbiBpcyBjbGlja2VkIHR3aWNlIG9uIGFuIGVsZW1lbnQuIn19LHtuYW1lOiJvbmRyYWciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVsZW1lbnQgb3IgdGV4dCBzZWxlY3Rpb24gaXMgYmVpbmcgZHJhZ2dlZCAoZXZlcnkgMzUwbXMpLiJ9fSx7bmFtZToib25kcmFnZW5kIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGRyYWcgb3BlcmF0aW9uIGlzIGJlaW5nIGVuZGVkIChieSByZWxlYXNpbmcgYSBtb3VzZSBidXR0b24gb3IgaGl0dGluZyB0aGUgZXNjYXBlIGtleSkuIn19LHtuYW1lOiJvbmRyYWdlbnRlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBkcmFnZ2VkIGVsZW1lbnQgb3IgdGV4dCBzZWxlY3Rpb24gZW50ZXJzIGEgdmFsaWQgZHJvcCB0YXJnZXQuIn19LHtuYW1lOiJvbmRyYWdsZWF2ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBkcmFnZ2VkIGVsZW1lbnQgb3IgdGV4dCBzZWxlY3Rpb24gbGVhdmVzIGEgdmFsaWQgZHJvcCB0YXJnZXQuIn19LHtuYW1lOiJvbmRyYWdvdmVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbGVtZW50IG9yIHRleHQgc2VsZWN0aW9uIGlzIGJlaW5nIGRyYWdnZWQgb3ZlciBhIHZhbGlkIGRyb3AgdGFyZ2V0IChldmVyeSAzNTBtcykuIn19LHtuYW1lOiJvbmRyYWdzdGFydCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVzZXIgc3RhcnRzIGRyYWdnaW5nIGFuIGVsZW1lbnQgb3IgdGV4dCBzZWxlY3Rpb24uIn19LHtuYW1lOiJvbmRyb3AiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVsZW1lbnQgaXMgZHJvcHBlZCBvbiBhIHZhbGlkIGRyb3AgdGFyZ2V0LiJ9fSx7bmFtZToib25kdXJhdGlvbmNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGR1cmF0aW9uIGF0dHJpYnV0ZSBoYXMgYmVlbiB1cGRhdGVkLiJ9fSx7bmFtZToib25lbXB0aWVkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWVkaWEgaGFzIGJlY29tZSBlbXB0eTsgZm9yIGV4YW1wbGUsIHRoaXMgZXZlbnQgaXMgc2VudCBpZiB0aGUgbWVkaWEgaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQgKG9yIHBhcnRpYWxseSBsb2FkZWQpLCBhbmQgdGhlIGxvYWQoKSBtZXRob2QgaXMgY2FsbGVkIHRvIHJlbG9hZCBpdC4ifX0se25hbWU6Im9uZW5kZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlBsYXliYWNrIGhhcyBzdG9wcGVkIGJlY2F1c2UgdGhlIGVuZCBvZiB0aGUgbWVkaWEgd2FzIHJlYWNoZWQuIn19LHtuYW1lOiJvbmVycm9yIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHJlc291cmNlIGZhaWxlZCB0byBsb2FkLiJ9fSx7bmFtZToib25mb2N1cyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZWxlbWVudCBoYXMgcmVjZWl2ZWQgZm9jdXMgKGRvZXMgbm90IGJ1YmJsZSkuIn19LHtuYW1lOiJvbmZvcm1jaGFuZ2UifSx7bmFtZToib25mb3JtaW5wdXQifSx7bmFtZToib25pbnB1dCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHZhbHVlIG9mIGFuIGVsZW1lbnQgY2hhbmdlcyBvciB0aGUgY29udGVudCBvZiBhbiBlbGVtZW50IHdpdGggdGhlIGF0dHJpYnV0ZSBjb250ZW50ZWRpdGFibGUgaXMgbW9kaWZpZWQuIn19LHtuYW1lOiJvbmludmFsaWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgc3VibWl0dGFibGUgZWxlbWVudCBoYXMgYmVlbiBjaGVja2VkIGFuZCBkb2Vzbid0IHNhdGlzZnkgaXRzIGNvbnN0cmFpbnRzLiJ9fSx7bmFtZToib25rZXlkb3duIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGtleSBpcyBwcmVzc2VkIGRvd24uIn19LHtuYW1lOiJvbmtleXByZXNzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGtleSBpcyBwcmVzc2VkIGRvd24gYW5kIHRoYXQga2V5IG5vcm1hbGx5IHByb2R1Y2VzIGEgY2hhcmFjdGVyIHZhbHVlICh1c2UgaW5wdXQgaW5zdGVhZCkuIn19LHtuYW1lOiJvbmtleXVwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGtleSBpcyByZWxlYXNlZC4ifX0se25hbWU6Im9ubG9hZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSByZXNvdXJjZSBhbmQgaXRzIGRlcGVuZGVudCByZXNvdXJjZXMgaGF2ZSBmaW5pc2hlZCBsb2FkaW5nLiJ9fSx7bmFtZToib25sb2FkZWRkYXRhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZmlyc3QgZnJhbWUgb2YgdGhlIG1lZGlhIGhhcyBmaW5pc2hlZCBsb2FkaW5nLiJ9fSx7bmFtZToib25sb2FkZWRtZXRhZGF0YSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1ldGFkYXRhIGhhcyBiZWVuIGxvYWRlZC4ifX0se25hbWU6Im9ubG9hZHN0YXJ0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQcm9ncmVzcyBoYXMgYmVndW4uIn19LHtuYW1lOiJvbm1vdXNlZG93biIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgYnV0dG9uICh1c3VhbGx5IGEgbW91c2UpIGlzIHByZXNzZWQgb24gYW4gZWxlbWVudC4ifX0se25hbWU6Im9ubW91c2Vtb3ZlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBvdmVyIGFuIGVsZW1lbnQuIn19LHtuYW1lOiJvbm1vdXNlb3V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBvZmYgdGhlIGVsZW1lbnQgdGhhdCBoYXMgdGhlIGxpc3RlbmVyIGF0dGFjaGVkIG9yIG9mZiBvbmUgb2YgaXRzIGNoaWxkcmVuLiJ9fSx7bmFtZToib25tb3VzZW92ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG9udG8gdGhlIGVsZW1lbnQgdGhhdCBoYXMgdGhlIGxpc3RlbmVyIGF0dGFjaGVkIG9yIG9udG8gb25lIG9mIGl0cyBjaGlsZHJlbi4ifX0se25hbWU6Im9ubW91c2V1cCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgYnV0dG9uIGlzIHJlbGVhc2VkIG92ZXIgYW4gZWxlbWVudC4ifX0se25hbWU6Im9ubW91c2V3aGVlbCJ9LHtuYW1lOiJvbm1vdXNlZW50ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG9udG8gdGhlIGVsZW1lbnQgdGhhdCBoYXMgdGhlIGxpc3RlbmVyIGF0dGFjaGVkLiJ9fSx7bmFtZToib25tb3VzZWxlYXZlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBvZmYgdGhlIGVsZW1lbnQgdGhhdCBoYXMgdGhlIGxpc3RlbmVyIGF0dGFjaGVkLiJ9fSx7bmFtZToib25wYXVzZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUGxheWJhY2sgaGFzIGJlZW4gcGF1c2VkLiJ9fSx7bmFtZToib25wbGF5IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQbGF5YmFjayBoYXMgYmVndW4uIn19LHtuYW1lOiJvbnBsYXlpbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlBsYXliYWNrIGlzIHJlYWR5IHRvIHN0YXJ0IGFmdGVyIGhhdmluZyBiZWVuIHBhdXNlZCBvciBkZWxheWVkIGR1ZSB0byBsYWNrIG9mIGRhdGEuIn19LHtuYW1lOiJvbnByb2dyZXNzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbiBwcm9ncmVzcy4ifX0se25hbWU6Im9ucmF0ZWNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBsYXliYWNrIHJhdGUgaGFzIGNoYW5nZWQuIn19LHtuYW1lOiJvbnJlc2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGZvcm0gaXMgcmVzZXQuIn19LHtuYW1lOiJvbnJlc2l6ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRvY3VtZW50IHZpZXcgaGFzIGJlZW4gcmVzaXplZC4ifX0se25hbWU6Im9ucmVhZHlzdGF0ZWNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHJlYWR5U3RhdGUgYXR0cmlidXRlIG9mIGEgZG9jdW1lbnQgaGFzIGNoYW5nZWQuIn19LHtuYW1lOiJvbnNjcm9sbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRvY3VtZW50IHZpZXcgb3IgYW4gZWxlbWVudCBoYXMgYmVlbiBzY3JvbGxlZC4ifX0se25hbWU6Im9uc2Vla2VkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHNlZWsgb3BlcmF0aW9uIGNvbXBsZXRlZC4ifX0se25hbWU6Im9uc2Vla2luZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBzZWVrIG9wZXJhdGlvbiBiZWdhbi4ifX0se25hbWU6Im9uc2VsZWN0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJTb21lIHRleHQgaXMgYmVpbmcgc2VsZWN0ZWQuIn19LHtuYW1lOiJvbnNob3ciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgY29udGV4dG1lbnUgZXZlbnQgd2FzIGZpcmVkIG9uL2J1YmJsZWQgdG8gYW4gZWxlbWVudCB0aGF0IGhhcyBhIGNvbnRleHRtZW51IGF0dHJpYnV0ZSJ9fSx7bmFtZToib25zdGFsbGVkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdXNlciBhZ2VudCBpcyB0cnlpbmcgdG8gZmV0Y2ggbWVkaWEgZGF0YSwgYnV0IGRhdGEgaXMgdW5leHBlY3RlZGx5IG5vdCBmb3J0aGNvbWluZy4ifX0se25hbWU6Im9uc3VibWl0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGZvcm0gaXMgc3VibWl0dGVkLiJ9fSx7bmFtZToib25zdXNwZW5kIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJNZWRpYSBkYXRhIGxvYWRpbmcgaGFzIGJlZW4gc3VzcGVuZGVkLiJ9fSx7bmFtZToib250aW1ldXBkYXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGltZSBpbmRpY2F0ZWQgYnkgdGhlIGN1cnJlbnRUaW1lIGF0dHJpYnV0ZSBoYXMgYmVlbiB1cGRhdGVkLiJ9fSx7bmFtZToib252b2x1bWVjaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB2b2x1bWUgaGFzIGNoYW5nZWQuIn19LHtuYW1lOiJvbndhaXRpbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlBsYXliYWNrIGhhcyBzdG9wcGVkIGJlY2F1c2Ugb2YgYSB0ZW1wb3JhcnkgbGFjayBvZiBkYXRhLiJ9fSx7bmFtZToib25wb2ludGVyY2FuY2VsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcG9pbnRlciBpcyB1bmxpa2VseSB0byBwcm9kdWNlIGFueSBtb3JlIGV2ZW50cy4ifX0se25hbWU6Im9ucG9pbnRlcmRvd24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGVyIGVudGVycyB0aGUgYWN0aXZlIGJ1dHRvbnMgc3RhdGUuIn19LHtuYW1lOiJvbnBvaW50ZXJlbnRlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIGluc2lkZSB0aGUgaGl0LXRlc3RpbmcgYm91bmRhcnkuIn19LHtuYW1lOiJvbnBvaW50ZXJsZWF2ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG91dCBvZiB0aGUgaGl0LXRlc3RpbmcgYm91bmRhcnkuIn19LHtuYW1lOiJvbnBvaW50ZXJsb2NrY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcG9pbnRlciB3YXMgbG9ja2VkIG9yIHJlbGVhc2VkLiJ9fSx7bmFtZToib25wb2ludGVybG9ja2Vycm9yIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJdCB3YXMgaW1wb3NzaWJsZSB0byBsb2NrIHRoZSBwb2ludGVyIGZvciB0ZWNobmljYWwgcmVhc29ucyBvciBiZWNhdXNlIHRoZSBwZXJtaXNzaW9uIHdhcyBkZW5pZWQuIn19LHtuYW1lOiJvbnBvaW50ZXJtb3ZlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcG9pbnRlciBjaGFuZ2VkIGNvb3JkaW5hdGVzLiJ9fSx7bmFtZToib25wb2ludGVyb3V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcG9pbnRpbmcgZGV2aWNlIG1vdmVkIG91dCBvZiBoaXQtdGVzdGluZyBib3VuZGFyeSBvciBsZWF2ZXMgZGV0ZWN0YWJsZSBob3ZlciByYW5nZS4ifX0se25hbWU6Im9ucG9pbnRlcm92ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgaW50byB0aGUgaGl0LXRlc3RpbmcgYm91bmRhcnkuIn19LHtuYW1lOiJvbnBvaW50ZXJ1cCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50ZXIgbGVhdmVzIHRoZSBhY3RpdmUgYnV0dG9ucyBzdGF0ZS4ifX0se25hbWU6ImFyaWEtYWN0aXZlZGVzY2VuZGFudCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWFjdGl2ZWRlc2NlbmRhbnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWRlbnRpZmllcyB0aGUgY3VycmVudGx5IGFjdGl2ZSBlbGVtZW50IHdoZW4gRE9NIGZvY3VzIGlzIG9uIGEgW2Bjb21wb3NpdGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNjb21wb3NpdGUpIHdpZGdldCwgW2B0ZXh0Ym94YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGV4dGJveCksIFtgZ3JvdXBgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncm91cCksIG9yIFtgYXBwbGljYXRpb25gXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcHBsaWNhdGlvbikuIn19LHtuYW1lOiJhcmlhLWF0b21pYyIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1hdG9taWMifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoZXRoZXIgW2Fzc2lzdGl2ZSB0ZWNobm9sb2dpZXNdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1hc3Npc3RpdmUtdGVjaG5vbG9neSkgd2lsbCBwcmVzZW50IGFsbCwgb3Igb25seSBwYXJ0cyBvZiwgdGhlIGNoYW5nZWQgcmVnaW9uIGJhc2VkIG9uIHRoZSBjaGFuZ2Ugbm90aWZpY2F0aW9ucyBkZWZpbmVkIGJ5IHRoZSBbYGFyaWEtcmVsZXZhbnRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJlbGV2YW50KSBhdHRyaWJ1dGUuIn19LHtuYW1lOiJhcmlhLWF1dG9jb21wbGV0ZSIsdmFsdWVTZXQ6ImF1dG9jb21wbGV0ZSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWF1dG9jb21wbGV0ZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciBpbnB1dHRpbmcgdGV4dCBjb3VsZCB0cmlnZ2VyIGRpc3BsYXkgb2Ygb25lIG9yIG1vcmUgcHJlZGljdGlvbnMgb2YgdGhlIHVzZXIncyBpbnRlbmRlZCB2YWx1ZSBmb3IgYW4gaW5wdXQgYW5kIHNwZWNpZmllcyBob3cgcHJlZGljdGlvbnMgd291bGQgYmUgcHJlc2VudGVkIGlmIHRoZXkgYXJlIG1hZGUuIn19LHtuYW1lOiJhcmlhLWJ1c3kiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtYnVzeSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgYW4gZWxlbWVudCBpcyBiZWluZyBtb2RpZmllZCBhbmQgdGhhdCBhc3Npc3RpdmUgdGVjaG5vbG9naWVzIF9NQVlfIHdhbnQgdG8gd2FpdCB1bnRpbCB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgY29tcGxldGUgYmVmb3JlIGV4cG9zaW5nIHRoZW0gdG8gdGhlIHVzZXIuIn19LHtuYW1lOiJhcmlhLWNoZWNrZWQiLHZhbHVlU2V0OiJ0cmlzdGF0ZSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNoZWNrZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonSW5kaWNhdGVzIHRoZSBjdXJyZW50ICJjaGVja2VkIiBbc3RhdGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1zdGF0ZSkgb2YgY2hlY2tib3hlcywgcmFkaW8gYnV0dG9ucywgYW5kIG90aGVyIFt3aWRnZXRzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4td2lkZ2V0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXByZXNzZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXByZXNzZWQpIGFuZCBbYGFyaWEtc2VsZWN0ZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNlbGVjdGVkKS4nfX0se25hbWU6ImFyaWEtY29sY291bnQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb2xjb3VudCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSB0b3RhbCBudW1iZXIgb2YgY29sdW1ucyBpbiBhIFtgdGFibGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0YWJsZSksIFtgZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyaWQpLCBvciBbYHRyZWVncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdHJlZWdyaWQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtY29saW5kZXhgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbGluZGV4KS4ifX0se25hbWU6ImFyaWEtY29saW5kZXgiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb2xpbmRleCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGFuIFtlbGVtZW50J3NdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBjb2x1bW4gaW5kZXggb3IgcG9zaXRpb24gd2l0aCByZXNwZWN0IHRvIHRoZSB0b3RhbCBudW1iZXIgb2YgY29sdW1ucyB3aXRoaW4gYSBbYHRhYmxlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGFibGUpLCBbYGdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncmlkKSwgb3IgW2B0cmVlZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RyZWVncmlkKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWNvbGNvdW50YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb2xjb3VudCkgYW5kIFtgYXJpYS1jb2xzcGFuYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb2xzcGFuKS4ifX0se25hbWU6ImFyaWEtY29sc3BhbiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbHNwYW4ifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgc3Bhbm5lZCBieSBhIGNlbGwgb3IgZ3JpZGNlbGwgd2l0aGluIGEgW2B0YWJsZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RhYmxlKSwgW2BncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JpZCksIG9yIFtgdHJlZWdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0cmVlZ3JpZCkuIFNlZSByZWxhdGVkIFtgYXJpYS1jb2xpbmRleGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29saW5kZXgpIGFuZCBbYGFyaWEtcm93c3BhbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93c3BhbikuIn19LHtuYW1lOiJhcmlhLWNvbnRyb2xzIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29udHJvbHMifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWRlbnRpZmllcyB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSAob3IgZWxlbWVudHMpIHdob3NlIGNvbnRlbnRzIG9yIHByZXNlbmNlIGFyZSBjb250cm9sbGVkIGJ5IHRoZSBjdXJyZW50IGVsZW1lbnQuIFNlZSByZWxhdGVkIFtgYXJpYS1vd25zYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1vd25zKS4ifX0se25hbWU6ImFyaWEtY3VycmVudCIsdmFsdWVTZXQ6ImN1cnJlbnQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jdXJyZW50In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSB0aGF0IHJlcHJlc2VudHMgdGhlIGN1cnJlbnQgaXRlbSB3aXRoaW4gYSBjb250YWluZXIgb3Igc2V0IG9mIHJlbGF0ZWQgZWxlbWVudHMuIn19LHtuYW1lOiJhcmlhLWRlc2NyaWJlZGF0IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZGVzY3JpYmVkYXQifV19LHtuYW1lOiJhcmlhLWRlc2NyaWJlZGJ5IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZGVzY3JpYmVkYnkifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWRlbnRpZmllcyB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSAob3IgZWxlbWVudHMpIHRoYXQgZGVzY3JpYmVzIHRoZSBbb2JqZWN0XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tb2JqZWN0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWxhYmVsbGVkYnlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWxhYmVsbGVkYnkpLiJ9fSx7bmFtZToiYXJpYS1kaXNhYmxlZCIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kaXNhYmxlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBpcyBbcGVyY2VpdmFibGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1wZXJjZWl2YWJsZSkgYnV0IGRpc2FibGVkLCBzbyBpdCBpcyBub3QgZWRpdGFibGUgb3Igb3RoZXJ3aXNlIFtvcGVyYWJsZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLW9wZXJhYmxlKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWhpZGRlbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtaGlkZGVuKSBhbmQgW2BhcmlhLXJlYWRvbmx5YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yZWFkb25seSkuIn19LHtuYW1lOiJhcmlhLWRyb3BlZmZlY3QiLHZhbHVlU2V0OiJkcm9wZWZmZWN0IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZHJvcGVmZmVjdCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJcXFtEZXByZWNhdGVkIGluIEFSSUEgMS4xXFxdIEluZGljYXRlcyB3aGF0IGZ1bmN0aW9ucyBjYW4gYmUgcGVyZm9ybWVkIHdoZW4gYSBkcmFnZ2VkIG9iamVjdCBpcyByZWxlYXNlZCBvbiB0aGUgZHJvcCB0YXJnZXQuIn19LHtuYW1lOiJhcmlhLWVycm9ybWVzc2FnZSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWVycm9ybWVzc2FnZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIHRoYXQgcHJvdmlkZXMgYW4gZXJyb3IgbWVzc2FnZSBmb3IgdGhlIFtvYmplY3RdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vYmplY3QpLiBTZWUgcmVsYXRlZCBbYGFyaWEtaW52YWxpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtaW52YWxpZCkgYW5kIFtgYXJpYS1kZXNjcmliZWRieWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZGVzY3JpYmVkYnkpLiJ9fSx7bmFtZToiYXJpYS1leHBhbmRlZCIsdmFsdWVTZXQ6InUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1leHBhbmRlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciB0aGUgZWxlbWVudCwgb3IgYW5vdGhlciBncm91cGluZyBlbGVtZW50IGl0IGNvbnRyb2xzLCBpcyBjdXJyZW50bHkgZXhwYW5kZWQgb3IgY29sbGFwc2VkLiJ9fSx7bmFtZToiYXJpYS1mbG93dG8iLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1mbG93dG8ifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWRlbnRpZmllcyB0aGUgbmV4dCBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIChvciBlbGVtZW50cykgaW4gYW4gYWx0ZXJuYXRlIHJlYWRpbmcgb3JkZXIgb2YgY29udGVudCB3aGljaCwgYXQgdGhlIHVzZXIncyBkaXNjcmV0aW9uLCBhbGxvd3MgYXNzaXN0aXZlIHRlY2hub2xvZ3kgdG8gb3ZlcnJpZGUgdGhlIGdlbmVyYWwgZGVmYXVsdCBvZiByZWFkaW5nIGluIGRvY3VtZW50IHNvdXJjZSBvcmRlci4ifX0se25hbWU6ImFyaWEtZ3JhYmJlZCIsdmFsdWVTZXQ6InUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1ncmFiYmVkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6YFxcW0RlcHJlY2F0ZWQgaW4gQVJJQSAxLjFcXF0gSW5kaWNhdGVzIGFuIGVsZW1lbnQncyAiZ3JhYmJlZCIgW3N0YXRlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tc3RhdGUpIGluIGEgZHJhZy1hbmQtZHJvcCBvcGVyYXRpb24uYH19LHtuYW1lOiJhcmlhLWhhc3BvcHVwIix2YWx1ZVNldDoiaGFzcG9wdXAiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1oYXNwb3B1cCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIGF2YWlsYWJpbGl0eSBhbmQgdHlwZSBvZiBpbnRlcmFjdGl2ZSBwb3B1cCBlbGVtZW50LCBzdWNoIGFzIG1lbnUgb3IgZGlhbG9nLCB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KS4ifX0se25hbWU6ImFyaWEtaGlkZGVuIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWhpZGRlbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBpcyBleHBvc2VkIHRvIGFuIGFjY2Vzc2liaWxpdHkgQVBJLiBTZWUgcmVsYXRlZCBbYGFyaWEtZGlzYWJsZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRpc2FibGVkKS4ifX0se25hbWU6ImFyaWEtaW52YWxpZCIsdmFsdWVTZXQ6ImludmFsaWQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1pbnZhbGlkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgZW50ZXJlZCB2YWx1ZSBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBTZWUgcmVsYXRlZCBbYGFyaWEtZXJyb3JtZXNzYWdlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1lcnJvcm1lc3NhZ2UpLiJ9fSx7bmFtZToiYXJpYS1rYmRzaG9ydGN1dHMiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1rYmRzaG9ydGN1dHMifV19LHtuYW1lOiJhcmlhLWxhYmVsIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGFiZWwifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhIHN0cmluZyB2YWx1ZSB0aGF0IGxhYmVscyB0aGUgY3VycmVudCBlbGVtZW50LiBTZWUgcmVsYXRlZCBbYGFyaWEtbGFiZWxsZWRieWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGFiZWxsZWRieSkuIn19LHtuYW1lOiJhcmlhLWxhYmVsbGVkYnkiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1sYWJlbGxlZGJ5In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSB0aGF0IGxhYmVscyB0aGUgY3VycmVudCBlbGVtZW50LiBTZWUgcmVsYXRlZCBbYGFyaWEtZGVzY3JpYmVkYnlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRlc2NyaWJlZGJ5KS4ifX0se25hbWU6ImFyaWEtbGV2ZWwiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1sZXZlbCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBoaWVyYXJjaGljYWwgbGV2ZWwgb2YgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSB3aXRoaW4gYSBzdHJ1Y3R1cmUuIn19LHtuYW1lOiJhcmlhLWxpdmUiLHZhbHVlU2V0OiJsaXZlIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGl2ZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCBhbiBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIHdpbGwgYmUgdXBkYXRlZCwgYW5kIGRlc2NyaWJlcyB0aGUgdHlwZXMgb2YgdXBkYXRlcyB0aGUgW3VzZXIgYWdlbnRzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tdXNlci1hZ2VudCksIFthc3Npc3RpdmUgdGVjaG5vbG9naWVzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tYXNzaXN0aXZlLXRlY2hub2xvZ3kpLCBhbmQgdXNlciBjYW4gZXhwZWN0IGZyb20gdGhlIFtsaXZlIHJlZ2lvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWxpdmUtcmVnaW9uKS4ifX0se25hbWU6ImFyaWEtbW9kYWwiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbW9kYWwifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoZXRoZXIgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBpcyBtb2RhbCB3aGVuIGRpc3BsYXllZC4ifX0se25hbWU6ImFyaWEtbXVsdGlsaW5lIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW11bHRpbGluZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciBhIHRleHQgYm94IGFjY2VwdHMgbXVsdGlwbGUgbGluZXMgb2YgaW5wdXQgb3Igb25seSBhIHNpbmdsZSBsaW5lLiJ9fSx7bmFtZToiYXJpYS1tdWx0aXNlbGVjdGFibGUiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbXVsdGlzZWxlY3RhYmxlIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIG1heSBzZWxlY3QgbW9yZSB0aGFuIG9uZSBpdGVtIGZyb20gdGhlIGN1cnJlbnQgc2VsZWN0YWJsZSBkZXNjZW5kYW50cy4ifX0se25hbWU6ImFyaWEtb3JpZW50YXRpb24iLHZhbHVlU2V0OiJvcmllbnRhdGlvbiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW9yaWVudGF0aW9uIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIHRoZSBlbGVtZW50J3Mgb3JpZW50YXRpb24gaXMgaG9yaXpvbnRhbCwgdmVydGljYWwsIG9yIHVua25vd24vYW1iaWd1b3VzLiJ9fSx7bmFtZToiYXJpYS1vd25zIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtb3ducyJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSBpbiBvcmRlciB0byBkZWZpbmUgYSB2aXN1YWwsIGZ1bmN0aW9uYWwsIG9yIGNvbnRleHR1YWwgcGFyZW50L2NoaWxkIFtyZWxhdGlvbnNoaXBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1yZWxhdGlvbnNoaXApIGJldHdlZW4gRE9NIGVsZW1lbnRzIHdoZXJlIHRoZSBET00gaGllcmFyY2h5IGNhbm5vdCBiZSB1c2VkIHRvIHJlcHJlc2VudCB0aGUgcmVsYXRpb25zaGlwLiBTZWUgcmVsYXRlZCBbYGFyaWEtY29udHJvbHNgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbnRyb2xzKS4ifX0se25hbWU6ImFyaWEtcGxhY2Vob2xkZXIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1wbGFjZWhvbGRlciJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGEgc2hvcnQgaGludCAoYSB3b3JkIG9yIHNob3J0IHBocmFzZSkgaW50ZW5kZWQgdG8gYWlkIHRoZSB1c2VyIHdpdGggZGF0YSBlbnRyeSB3aGVuIHRoZSBjb250cm9sIGhhcyBubyB2YWx1ZS4gQSBoaW50IGNvdWxkIGJlIGEgc2FtcGxlIHZhbHVlIG9yIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGV4cGVjdGVkIGZvcm1hdC4ifX0se25hbWU6ImFyaWEtcG9zaW5zZXQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1wb3NpbnNldCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkncyBudW1iZXIgb3IgcG9zaXRpb24gaW4gdGhlIGN1cnJlbnQgc2V0IG9mIGxpc3RpdGVtcyBvciB0cmVlaXRlbXMuIE5vdCByZXF1aXJlZCBpZiBhbGwgZWxlbWVudHMgaW4gdGhlIHNldCBhcmUgcHJlc2VudCBpbiB0aGUgRE9NLiBTZWUgcmVsYXRlZCBbYGFyaWEtc2V0c2l6ZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtc2V0c2l6ZSkuIn19LHtuYW1lOiJhcmlhLXByZXNzZWQiLHZhbHVlU2V0OiJ0cmlzdGF0ZSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXByZXNzZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonSW5kaWNhdGVzIHRoZSBjdXJyZW50ICJwcmVzc2VkIiBbc3RhdGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1zdGF0ZSkgb2YgdG9nZ2xlIGJ1dHRvbnMuIFNlZSByZWxhdGVkIFtgYXJpYS1jaGVja2VkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jaGVja2VkKSBhbmQgW2BhcmlhLXNlbGVjdGVkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zZWxlY3RlZCkuJ319LHtuYW1lOiJhcmlhLXJlYWRvbmx5Iix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJlYWRvbmx5In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGF0IHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGlzIG5vdCBlZGl0YWJsZSwgYnV0IGlzIG90aGVyd2lzZSBbb3BlcmFibGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vcGVyYWJsZSkuIFNlZSByZWxhdGVkIFtgYXJpYS1kaXNhYmxlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZGlzYWJsZWQpLiJ9fSx7bmFtZToiYXJpYS1yZWxldmFudCIsdmFsdWVTZXQ6InJlbGV2YW50IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcmVsZXZhbnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoYXQgbm90aWZpY2F0aW9ucyB0aGUgdXNlciBhZ2VudCB3aWxsIHRyaWdnZXIgd2hlbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlIHdpdGhpbiBhIGxpdmUgcmVnaW9uIGlzIG1vZGlmaWVkLiBTZWUgcmVsYXRlZCBbYGFyaWEtYXRvbWljYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1hdG9taWMpLiJ9fSx7bmFtZToiYXJpYS1yZXF1aXJlZCIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yZXF1aXJlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCB1c2VyIGlucHV0IGlzIHJlcXVpcmVkIG9uIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGJlZm9yZSBhIGZvcm0gbWF5IGJlIHN1Ym1pdHRlZC4ifX0se25hbWU6ImFyaWEtcm9sZWRlc2NyaXB0aW9uIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm9sZWRlc2NyaXB0aW9uIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgYSBodW1hbi1yZWFkYWJsZSwgYXV0aG9yLWxvY2FsaXplZCBkZXNjcmlwdGlvbiBmb3IgdGhlIFtyb2xlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tcm9sZSkgb2YgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KS4ifX0se25hbWU6ImFyaWEtcm93Y291bnQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3djb3VudCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyBpbiBhIFtgdGFibGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0YWJsZSksIFtgZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyaWQpLCBvciBbYHRyZWVncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdHJlZWdyaWQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtcm93aW5kZXhgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvd2luZGV4KS4ifX0se25hbWU6ImFyaWEtcm93aW5kZXgiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dpbmRleCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGFuIFtlbGVtZW50J3NdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSByb3cgaW5kZXggb3IgcG9zaXRpb24gd2l0aCByZXNwZWN0IHRvIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyB3aXRoaW4gYSBbYHRhYmxlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGFibGUpLCBbYGdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncmlkKSwgb3IgW2B0cmVlZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RyZWVncmlkKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXJvd2NvdW50YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3djb3VudCkgYW5kIFtgYXJpYS1yb3dzcGFuYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dzcGFuKS4ifX0se25hbWU6ImFyaWEtcm93c3BhbiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvd3NwYW4ifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3Mgc3Bhbm5lZCBieSBhIGNlbGwgb3IgZ3JpZGNlbGwgd2l0aGluIGEgW2B0YWJsZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RhYmxlKSwgW2BncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JpZCksIG9yIFtgdHJlZWdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0cmVlZ3JpZCkuIFNlZSByZWxhdGVkIFtgYXJpYS1yb3dpbmRleGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93aW5kZXgpIGFuZCBbYGFyaWEtY29sc3BhbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29sc3BhbikuIn19LHtuYW1lOiJhcmlhLXNlbGVjdGVkIix2YWx1ZVNldDoidSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNlbGVjdGVkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0luZGljYXRlcyB0aGUgY3VycmVudCAic2VsZWN0ZWQiIFtzdGF0ZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXN0YXRlKSBvZiB2YXJpb3VzIFt3aWRnZXRzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4td2lkZ2V0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWNoZWNrZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNoZWNrZWQpIGFuZCBbYGFyaWEtcHJlc3NlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcHJlc3NlZCkuJ319LHtuYW1lOiJhcmlhLXNldHNpemUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zZXRzaXplIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgY3VycmVudCBzZXQgb2YgbGlzdGl0ZW1zIG9yIHRyZWVpdGVtcy4gTm90IHJlcXVpcmVkIGlmIGFsbCBlbGVtZW50cyBpbiB0aGUgc2V0IGFyZSBwcmVzZW50IGluIHRoZSBET00uIFNlZSByZWxhdGVkIFtgYXJpYS1wb3NpbnNldGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcG9zaW5zZXQpLiJ9fSx7bmFtZToiYXJpYS1zb3J0Iix2YWx1ZVNldDoic29ydCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNvcnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIGlmIGl0ZW1zIGluIGEgdGFibGUgb3IgZ3JpZCBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvciBkZXNjZW5kaW5nIG9yZGVyLiJ9fSx7bmFtZToiYXJpYS12YWx1ZW1heCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXZhbHVlbWF4In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIG1heGltdW0gYWxsb3dlZCB2YWx1ZSBmb3IgYSByYW5nZSBbd2lkZ2V0XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4td2lkZ2V0KS4ifX0se25hbWU6ImFyaWEtdmFsdWVtaW4iLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS12YWx1ZW1pbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBtaW5pbXVtIGFsbG93ZWQgdmFsdWUgZm9yIGEgcmFuZ2UgW3dpZGdldF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIn19LHtuYW1lOiJhcmlhLXZhbHVlbm93IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWVub3cifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgY3VycmVudCB2YWx1ZSBmb3IgYSByYW5nZSBbd2lkZ2V0XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4td2lkZ2V0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXZhbHVldGV4dGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWV0ZXh0KS4ifX0se25hbWU6ImFyaWEtdmFsdWV0ZXh0IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWV0ZXh0In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIGh1bWFuIHJlYWRhYmxlIHRleHQgYWx0ZXJuYXRpdmUgb2YgW2BhcmlhLXZhbHVlbm93YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS12YWx1ZW5vdykgZm9yIGEgcmFuZ2UgW3dpZGdldF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIn19LHtuYW1lOiJhcmlhLWRldGFpbHMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgdGhhdCBwcm92aWRlcyBhIGRldGFpbGVkLCBleHRlbmRlZCBkZXNjcmlwdGlvbiBmb3IgdGhlIFtvYmplY3RdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vYmplY3QpLiBTZWUgcmVsYXRlZCBbYGFyaWEtZGVzY3JpYmVkYnlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRlc2NyaWJlZGJ5KS4ifX0se25hbWU6ImFyaWEta2V5c2hvcnRjdXRzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMga2V5Ym9hcmQgc2hvcnRjdXRzIHRoYXQgYW4gYXV0aG9yIGhhcyBpbXBsZW1lbnRlZCB0byBhY3RpdmF0ZSBvciBnaXZlIGZvY3VzIHRvIGFuIGVsZW1lbnQuIn19XSx2YWx1ZVNldHM6W3tuYW1lOiJiIix2YWx1ZXM6W3tuYW1lOiJ0cnVlIn0se25hbWU6ImZhbHNlIn1dfSx7bmFtZToidSIsdmFsdWVzOlt7bmFtZToidHJ1ZSJ9LHtuYW1lOiJmYWxzZSJ9LHtuYW1lOiJ1bmRlZmluZWQifV19LHtuYW1lOiJvIix2YWx1ZXM6W3tuYW1lOiJvbiJ9LHtuYW1lOiJvZmYifV19LHtuYW1lOiJ5Iix2YWx1ZXM6W3tuYW1lOiJ5ZXMifSx7bmFtZToibm8ifV19LHtuYW1lOiJ3Iix2YWx1ZXM6W3tuYW1lOiJzb2Z0In0se25hbWU6ImhhcmQifV19LHtuYW1lOiJkIix2YWx1ZXM6W3tuYW1lOiJsdHIifSx7bmFtZToicnRsIn0se25hbWU6ImF1dG8ifV19LHtuYW1lOiJtIix2YWx1ZXM6W3tuYW1lOiJnZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvcnJlc3BvbmRzIHRvIHRoZSBIVFRQIFtHRVQgbWV0aG9kXShodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM5Lmh0bWwjc2VjOS4zKTsgZm9ybSBkYXRhIGFyZSBhcHBlbmRlZCB0byB0aGUgYGFjdGlvbmAgYXR0cmlidXRlIFVSSSB3aXRoIGEgJz8nIGFzIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHRpbmcgVVJJIGlzIHNlbnQgdG8gdGhlIHNlcnZlci4gVXNlIHRoaXMgbWV0aG9kIHdoZW4gdGhlIGZvcm0gaGFzIG5vIHNpZGUtZWZmZWN0cyBhbmQgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLiJ9fSx7bmFtZToicG9zdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQ29ycmVzcG9uZHMgdG8gdGhlIEhUVFAgW1BPU1QgbWV0aG9kXShodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM5Lmh0bWwjc2VjOS41KTsgZm9ybSBkYXRhIGFyZSBpbmNsdWRlZCBpbiB0aGUgYm9keSBvZiB0aGUgZm9ybSBhbmQgc2VudCB0byB0aGUgc2VydmVyLiJ9fSx7bmFtZToiZGlhbG9nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJVc2Ugd2hlbiB0aGUgZm9ybSBpcyBpbnNpZGUgYSBbYDxkaWFsb2c+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RpYWxvZykgZWxlbWVudCB0byBjbG9zZSB0aGUgZGlhbG9nIHdoZW4gc3VibWl0dGVkLiJ9fV19LHtuYW1lOiJmbSIsdmFsdWVzOlt7bmFtZToiZ2V0In0se25hbWU6InBvc3QifV19LHtuYW1lOiJzIix2YWx1ZXM6W3tuYW1lOiJyb3cifSx7bmFtZToiY29sIn0se25hbWU6InJvd2dyb3VwIn0se25hbWU6ImNvbGdyb3VwIn1dfSx7bmFtZToidCIsdmFsdWVzOlt7bmFtZToiaGlkZGVuIn0se25hbWU6InRleHQifSx7bmFtZToic2VhcmNoIn0se25hbWU6InRlbCJ9LHtuYW1lOiJ1cmwifSx7bmFtZToiZW1haWwifSx7bmFtZToicGFzc3dvcmQifSx7bmFtZToiZGF0ZXRpbWUifSx7bmFtZToiZGF0ZSJ9LHtuYW1lOiJtb250aCJ9LHtuYW1lOiJ3ZWVrIn0se25hbWU6InRpbWUifSx7bmFtZToiZGF0ZXRpbWUtbG9jYWwifSx7bmFtZToibnVtYmVyIn0se25hbWU6InJhbmdlIn0se25hbWU6ImNvbG9yIn0se25hbWU6ImNoZWNrYm94In0se25hbWU6InJhZGlvIn0se25hbWU6ImZpbGUifSx7bmFtZToic3VibWl0In0se25hbWU6ImltYWdlIn0se25hbWU6InJlc2V0In0se25hbWU6ImJ1dHRvbiJ9XX0se25hbWU6ImltIix2YWx1ZXM6W3tuYW1lOiJ2ZXJiYXRpbSJ9LHtuYW1lOiJsYXRpbiJ9LHtuYW1lOiJsYXRpbi1uYW1lIn0se25hbWU6ImxhdGluLXByb3NlIn0se25hbWU6ImZ1bGwtd2lkdGgtbGF0aW4ifSx7bmFtZToia2FuYSJ9LHtuYW1lOiJrYW5hLW5hbWUifSx7bmFtZToia2F0YWthbmEifSx7bmFtZToibnVtZXJpYyJ9LHtuYW1lOiJ0ZWwifSx7bmFtZToiZW1haWwifSx7bmFtZToidXJsIn1dfSx7bmFtZToiYnQiLHZhbHVlczpbe25hbWU6ImJ1dHRvbiJ9LHtuYW1lOiJzdWJtaXQifSx7bmFtZToicmVzZXQifSx7bmFtZToibWVudSJ9XX0se25hbWU6Imx0Iix2YWx1ZXM6W3tuYW1lOiIxIn0se25hbWU6ImEifSx7bmFtZToiQSJ9LHtuYW1lOiJpIn0se25hbWU6IkkifV19LHtuYW1lOiJtdCIsdmFsdWVzOlt7bmFtZToiY29udGV4dCJ9LHtuYW1lOiJ0b29sYmFyIn1dfSx7bmFtZToibWl0Iix2YWx1ZXM6W3tuYW1lOiJjb21tYW5kIn0se25hbWU6ImNoZWNrYm94In0se25hbWU6InJhZGlvIn1dfSx7bmFtZToiZXQiLHZhbHVlczpbe25hbWU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9LHtuYW1lOiJtdWx0aXBhcnQvZm9ybS1kYXRhIn0se25hbWU6InRleHQvcGxhaW4ifV19LHtuYW1lOiJ0ayIsdmFsdWVzOlt7bmFtZToic3VidGl0bGVzIn0se25hbWU6ImNhcHRpb25zIn0se25hbWU6ImRlc2NyaXB0aW9ucyJ9LHtuYW1lOiJjaGFwdGVycyJ9LHtuYW1lOiJtZXRhZGF0YSJ9XX0se25hbWU6InBsIix2YWx1ZXM6W3tuYW1lOiJub25lIn0se25hbWU6Im1ldGFkYXRhIn0se25hbWU6ImF1dG8ifV19LHtuYW1lOiJzaCIsdmFsdWVzOlt7bmFtZToiY2lyY2xlIn0se25hbWU6ImRlZmF1bHQifSx7bmFtZToicG9seSJ9LHtuYW1lOiJyZWN0In1dfSx7bmFtZToieG8iLHZhbHVlczpbe25hbWU6ImFub255bW91cyJ9LHtuYW1lOiJ1c2UtY3JlZGVudGlhbHMifV19LHtuYW1lOiJzYiIsdmFsdWVzOlt7bmFtZToiYWxsb3ctZm9ybXMifSx7bmFtZToiYWxsb3ctbW9kYWxzIn0se25hbWU6ImFsbG93LXBvaW50ZXItbG9jayJ9LHtuYW1lOiJhbGxvdy1wb3B1cHMifSx7bmFtZToiYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94In0se25hbWU6ImFsbG93LXNhbWUtb3JpZ2luIn0se25hbWU6ImFsbG93LXNjcmlwdHMifSx7bmFtZToiYWxsb3ctdG9wLW5hdmlnYXRpb24ifV19LHtuYW1lOiJ0cmlzdGF0ZSIsdmFsdWVzOlt7bmFtZToidHJ1ZSJ9LHtuYW1lOiJmYWxzZSJ9LHtuYW1lOiJtaXhlZCJ9LHtuYW1lOiJ1bmRlZmluZWQifV19LHtuYW1lOiJpbnB1dGF1dG9jb21wbGV0ZSIsdmFsdWVzOlt7bmFtZToiYWRkaXRpb25hbC1uYW1lIn0se25hbWU6ImFkZHJlc3MtbGV2ZWwxIn0se25hbWU6ImFkZHJlc3MtbGV2ZWwyIn0se25hbWU6ImFkZHJlc3MtbGV2ZWwzIn0se25hbWU6ImFkZHJlc3MtbGV2ZWw0In0se25hbWU6ImFkZHJlc3MtbGluZTEifSx7bmFtZToiYWRkcmVzcy1saW5lMiJ9LHtuYW1lOiJhZGRyZXNzLWxpbmUzIn0se25hbWU6ImJkYXkifSx7bmFtZToiYmRheS15ZWFyIn0se25hbWU6ImJkYXktZGF5In0se25hbWU6ImJkYXktbW9udGgifSx7bmFtZToiYmlsbGluZyJ9LHtuYW1lOiJjYy1hZGRpdGlvbmFsLW5hbWUifSx7bmFtZToiY2MtY3NjIn0se25hbWU6ImNjLWV4cCJ9LHtuYW1lOiJjYy1leHAtbW9udGgifSx7bmFtZToiY2MtZXhwLXllYXIifSx7bmFtZToiY2MtZmFtaWx5LW5hbWUifSx7bmFtZToiY2MtZ2l2ZW4tbmFtZSJ9LHtuYW1lOiJjYy1uYW1lIn0se25hbWU6ImNjLW51bWJlciJ9LHtuYW1lOiJjYy10eXBlIn0se25hbWU6ImNvdW50cnkifSx7bmFtZToiY291bnRyeS1uYW1lIn0se25hbWU6ImN1cnJlbnQtcGFzc3dvcmQifSx7bmFtZToiZW1haWwifSx7bmFtZToiZmFtaWx5LW5hbWUifSx7bmFtZToiZmF4In0se25hbWU6ImdpdmVuLW5hbWUifSx7bmFtZToiaG9tZSJ9LHtuYW1lOiJob25vcmlmaWMtcHJlZml4In0se25hbWU6Imhvbm9yaWZpYy1zdWZmaXgifSx7bmFtZToiaW1wcCJ9LHtuYW1lOiJsYW5ndWFnZSJ9LHtuYW1lOiJtb2JpbGUifSx7bmFtZToibmFtZSJ9LHtuYW1lOiJuZXctcGFzc3dvcmQifSx7bmFtZToibmlja25hbWUifSx7bmFtZToib3JnYW5pemF0aW9uIn0se25hbWU6Im9yZ2FuaXphdGlvbi10aXRsZSJ9LHtuYW1lOiJwYWdlciJ9LHtuYW1lOiJwaG90byJ9LHtuYW1lOiJwb3N0YWwtY29kZSJ9LHtuYW1lOiJzZXgifSx7bmFtZToic2hpcHBpbmcifSx7bmFtZToic3RyZWV0LWFkZHJlc3MifSx7bmFtZToidGVsLWFyZWEtY29kZSJ9LHtuYW1lOiJ0ZWwifSx7bmFtZToidGVsLWNvdW50cnktY29kZSJ9LHtuYW1lOiJ0ZWwtZXh0ZW5zaW9uIn0se25hbWU6InRlbC1sb2NhbCJ9LHtuYW1lOiJ0ZWwtbG9jYWwtcHJlZml4In0se25hbWU6InRlbC1sb2NhbC1zdWZmaXgifSx7bmFtZToidGVsLW5hdGlvbmFsIn0se25hbWU6InRyYW5zYWN0aW9uLWFtb3VudCJ9LHtuYW1lOiJ0cmFuc2FjdGlvbi1jdXJyZW5jeSJ9LHtuYW1lOiJ1cmwifSx7bmFtZToidXNlcm5hbWUifSx7bmFtZToid29yayJ9XX0se25hbWU6ImF1dG9jb21wbGV0ZSIsdmFsdWVzOlt7bmFtZToiaW5saW5lIn0se25hbWU6Imxpc3QifSx7bmFtZToiYm90aCJ9LHtuYW1lOiJub25lIn1dfSx7bmFtZToiY3VycmVudCIsdmFsdWVzOlt7bmFtZToicGFnZSJ9LHtuYW1lOiJzdGVwIn0se25hbWU6ImxvY2F0aW9uIn0se25hbWU6ImRhdGUifSx7bmFtZToidGltZSJ9LHtuYW1lOiJ0cnVlIn0se25hbWU6ImZhbHNlIn1dfSx7bmFtZToiZHJvcGVmZmVjdCIsdmFsdWVzOlt7bmFtZToiY29weSJ9LHtuYW1lOiJtb3ZlIn0se25hbWU6ImxpbmsifSx7bmFtZToiZXhlY3V0ZSJ9LHtuYW1lOiJwb3B1cCJ9LHtuYW1lOiJub25lIn1dfSx7bmFtZToiaW52YWxpZCIsdmFsdWVzOlt7bmFtZToiZ3JhbW1hciJ9LHtuYW1lOiJmYWxzZSJ9LHtuYW1lOiJzcGVsbGluZyJ9LHtuYW1lOiJ0cnVlIn1dfSx7bmFtZToibGl2ZSIsdmFsdWVzOlt7bmFtZToib2ZmIn0se25hbWU6InBvbGl0ZSJ9LHtuYW1lOiJhc3NlcnRpdmUifV19LHtuYW1lOiJvcmllbnRhdGlvbiIsdmFsdWVzOlt7bmFtZToidmVydGljYWwifSx7bmFtZToiaG9yaXpvbnRhbCJ9LHtuYW1lOiJ1bmRlZmluZWQifV19LHtuYW1lOiJyZWxldmFudCIsdmFsdWVzOlt7bmFtZToiYWRkaXRpb25zIn0se25hbWU6InJlbW92YWxzIn0se25hbWU6InRleHQifSx7bmFtZToiYWxsIn0se25hbWU6ImFkZGl0aW9ucyB0ZXh0In1dfSx7bmFtZToic29ydCIsdmFsdWVzOlt7bmFtZToiYXNjZW5kaW5nIn0se25hbWU6ImRlc2NlbmRpbmcifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJvdGhlciJ9XX0se25hbWU6InJvbGVzIix2YWx1ZXM6W3tuYW1lOiJhbGVydCJ9LHtuYW1lOiJhbGVydGRpYWxvZyJ9LHtuYW1lOiJidXR0b24ifSx7bmFtZToiY2hlY2tib3gifSx7bmFtZToiZGlhbG9nIn0se25hbWU6ImdyaWRjZWxsIn0se25hbWU6ImxpbmsifSx7bmFtZToibG9nIn0se25hbWU6Im1hcnF1ZWUifSx7bmFtZToibWVudWl0ZW0ifSx7bmFtZToibWVudWl0ZW1jaGVja2JveCJ9LHtuYW1lOiJtZW51aXRlbXJhZGlvIn0se25hbWU6Im9wdGlvbiJ9LHtuYW1lOiJwcm9ncmVzc2JhciJ9LHtuYW1lOiJyYWRpbyJ9LHtuYW1lOiJzY3JvbGxiYXIifSx7bmFtZToic2VhcmNoYm94In0se25hbWU6InNsaWRlciJ9LHtuYW1lOiJzcGluYnV0dG9uIn0se25hbWU6InN0YXR1cyJ9LHtuYW1lOiJzd2l0Y2gifSx7bmFtZToidGFiIn0se25hbWU6InRhYnBhbmVsIn0se25hbWU6InRleHRib3gifSx7bmFtZToidGltZXIifSx7bmFtZToidG9vbHRpcCJ9LHtuYW1lOiJ0cmVlaXRlbSJ9LHtuYW1lOiJjb21ib2JveCJ9LHtuYW1lOiJncmlkIn0se25hbWU6Imxpc3Rib3gifSx7bmFtZToibWVudSJ9LHtuYW1lOiJtZW51YmFyIn0se25hbWU6InJhZGlvZ3JvdXAifSx7bmFtZToidGFibGlzdCJ9LHtuYW1lOiJ0cmVlIn0se25hbWU6InRyZWVncmlkIn0se25hbWU6ImFwcGxpY2F0aW9uIn0se25hbWU6ImFydGljbGUifSx7bmFtZToiY2VsbCJ9LHtuYW1lOiJjb2x1bW5oZWFkZXIifSx7bmFtZToiZGVmaW5pdGlvbiJ9LHtuYW1lOiJkaXJlY3RvcnkifSx7bmFtZToiZG9jdW1lbnQifSx7bmFtZToiZmVlZCJ9LHtuYW1lOiJmaWd1cmUifSx7bmFtZToiZ3JvdXAifSx7bmFtZToiaGVhZGluZyJ9LHtuYW1lOiJpbWcifSx7bmFtZToibGlzdCJ9LHtuYW1lOiJsaXN0aXRlbSJ9LHtuYW1lOiJtYXRoIn0se25hbWU6Im5vbmUifSx7bmFtZToibm90ZSJ9LHtuYW1lOiJwcmVzZW50YXRpb24ifSx7bmFtZToicmVnaW9uIn0se25hbWU6InJvdyJ9LHtuYW1lOiJyb3dncm91cCJ9LHtuYW1lOiJyb3doZWFkZXIifSx7bmFtZToic2VwYXJhdG9yIn0se25hbWU6InRhYmxlIn0se25hbWU6InRlcm0ifSx7bmFtZToidGV4dCJ9LHtuYW1lOiJ0b29sYmFyIn0se25hbWU6ImJhbm5lciJ9LHtuYW1lOiJjb21wbGVtZW50YXJ5In0se25hbWU6ImNvbnRlbnRpbmZvIn0se25hbWU6ImZvcm0ifSx7bmFtZToibWFpbiJ9LHtuYW1lOiJuYXZpZ2F0aW9uIn0se25hbWU6InJlZ2lvbiJ9LHtuYW1lOiJzZWFyY2gifSx7bmFtZToiZG9jLWFic3RyYWN0In0se25hbWU6ImRvYy1hY2tub3dsZWRnbWVudHMifSx7bmFtZToiZG9jLWFmdGVyd29yZCJ9LHtuYW1lOiJkb2MtYXBwZW5kaXgifSx7bmFtZToiZG9jLWJhY2tsaW5rIn0se25hbWU6ImRvYy1iaWJsaW9lbnRyeSJ9LHtuYW1lOiJkb2MtYmlibGlvZ3JhcGh5In0se25hbWU6ImRvYy1iaWJsaW9yZWYifSx7bmFtZToiZG9jLWNoYXB0ZXIifSx7bmFtZToiZG9jLWNvbG9waG9uIn0se25hbWU6ImRvYy1jb25jbHVzaW9uIn0se25hbWU6ImRvYy1jb3ZlciJ9LHtuYW1lOiJkb2MtY3JlZGl0In0se25hbWU6ImRvYy1jcmVkaXRzIn0se25hbWU6ImRvYy1kZWRpY2F0aW9uIn0se25hbWU6ImRvYy1lbmRub3RlIn0se25hbWU6ImRvYy1lbmRub3RlcyJ9LHtuYW1lOiJkb2MtZXBpZ3JhcGgifSx7bmFtZToiZG9jLWVwaWxvZ3VlIn0se25hbWU6ImRvYy1lcnJhdGEifSx7bmFtZToiZG9jLWV4YW1wbGUifSx7bmFtZToiZG9jLWZvb3Rub3RlIn0se25hbWU6ImRvYy1mb3Jld29yZCJ9LHtuYW1lOiJkb2MtZ2xvc3NhcnkifSx7bmFtZToiZG9jLWdsb3NzcmVmIn0se25hbWU6ImRvYy1pbmRleCJ9LHtuYW1lOiJkb2MtaW50cm9kdWN0aW9uIn0se25hbWU6ImRvYy1ub3RlcmVmIn0se25hbWU6ImRvYy1ub3RpY2UifSx7bmFtZToiZG9jLXBhZ2VicmVhayJ9LHtuYW1lOiJkb2MtcGFnZWxpc3QifSx7bmFtZToiZG9jLXBhcnQifSx7bmFtZToiZG9jLXByZWZhY2UifSx7bmFtZToiZG9jLXByb2xvZ3VlIn0se25hbWU6ImRvYy1wdWxscXVvdGUifSx7bmFtZToiZG9jLXFuYSJ9LHtuYW1lOiJkb2Mtc3VidGl0bGUifSx7bmFtZToiZG9jLXRpcCJ9LHtuYW1lOiJkb2MtdG9jIn1dfSx7bmFtZToibWV0YW5hbWVzIix2YWx1ZXM6W3tuYW1lOiJhcHBsaWNhdGlvbi1uYW1lIn0se25hbWU6ImF1dGhvciJ9LHtuYW1lOiJkZXNjcmlwdGlvbiJ9LHtuYW1lOiJmb3JtYXQtZGV0ZWN0aW9uIn0se25hbWU6ImdlbmVyYXRvciJ9LHtuYW1lOiJrZXl3b3JkcyJ9LHtuYW1lOiJwdWJsaXNoZXIifSx7bmFtZToicmVmZXJyZXIifSx7bmFtZToicm9ib3RzIn0se25hbWU6InRoZW1lLWNvbG9yIn0se25hbWU6InZpZXdwb3J0In1dfSx7bmFtZToiaGFzcG9wdXAiLHZhbHVlczpbe25hbWU6ImZhbHNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiIoZGVmYXVsdCkgSW5kaWNhdGVzIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBwb3B1cC4ifX0se25hbWU6InRydWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSBtZW51LiJ9fSx7bmFtZToibWVudSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBwb3B1cCBpcyBhIG1lbnUuIn19LHtuYW1lOiJsaXN0Ym94IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIHBvcHVwIGlzIGEgbGlzdGJveC4ifX0se25hbWU6InRyZWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSB0cmVlLiJ9fSx7bmFtZToiZ3JpZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBwb3B1cCBpcyBhIGdyaWQuIn19LHtuYW1lOiJkaWFsb2ciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSBkaWFsb2cuIn19XX1dfSxhYT0ob2EucHJvdG90eXBlLnNldERhdGFQcm92aWRlcnM9ZnVuY3Rpb24oZSx0KXt0aGlzLmRhdGFQcm92aWRlcnM9W10sZSYmdGhpcy5kYXRhUHJvdmlkZXJzLnB1c2gobmV3IG9pKCJodG1sNSIsaWEpKSwoZT10aGlzLmRhdGFQcm92aWRlcnMpLnB1c2guYXBwbHkoZSx0KX0sb2EucHJvdG90eXBlLmdldERhdGFQcm92aWRlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhUHJvdmlkZXJzfSxvYSk7ZnVuY3Rpb24gb2EoZSl7dGhpcy5kYXRhUHJvdmlkZXJzPVtdLHRoaXMuc2V0RGF0YVByb3ZpZGVycyghMSE9PWUudXNlRGVmYXVsdERhdGFQcm92aWRlcixlLmN1c3RvbURhdGFQcm92aWRlcnN8fFtdKX12YXIgc2E9e307dmFyIGxhPWNsYXNze19jdHg7X2xhbmd1YWdlU2VydmljZTtfbGFuZ3VhZ2VTZXR0aW5ncztfbGFuZ3VhZ2VJZDtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2N0eD1lLHRoaXMuX2xhbmd1YWdlU2V0dGluZ3M9dC5sYW5ndWFnZVNldHRpbmdzLHRoaXMuX2xhbmd1YWdlSWQ9dC5sYW5ndWFnZUlkO3ZhciBuLHIsaSxhPXRoaXMuX2xhbmd1YWdlU2V0dGluZ3MuZGF0YSxlPWE/LnVzZURlZmF1bHREYXRhUHJvdmlkZXI7Y29uc3Qgbz1bXTtpZihhPy5kYXRhUHJvdmlkZXJzKWZvcihjb25zdCBzIGluIGEuZGF0YVByb3ZpZGVycylvLnB1c2goKG49cyxyPWEuZGF0YVByb3ZpZGVyc1tzXSxuZXcgb2kobixyKSkpO3RoaXMuX2xhbmd1YWdlU2VydmljZT0odD17dXNlRGVmYXVsdERhdGFQcm92aWRlcjplLGN1c3RvbURhdGFQcm92aWRlcnM6b30sZT1uZXcgYWEodD12b2lkIDA9PT10P3NhOnQpLGk9bmV3IHhpKHQsZSksdD1uZXcgd2kodCxlKSx7c2V0RGF0YVByb3ZpZGVyczplLnNldERhdGFQcm92aWRlcnMuYmluZChlKSxjcmVhdGVTY2FubmVyOkZyLHBhcnNlSFRNTERvY3VtZW50OmZ1bmN0aW9uKGUpe3JldHVybiAkcihlLmdldFRleHQoKSl9LGRvQ29tcGxldGU6dC5kb0NvbXBsZXRlLmJpbmQodCksZG9Db21wbGV0ZTI6dC5kb0NvbXBsZXRlMi5iaW5kKHQpLHNldENvbXBsZXRpb25QYXJ0aWNpcGFudHM6dC5zZXRDb21wbGV0aW9uUGFydGljaXBhbnRzLmJpbmQodCksZG9Ib3ZlcjppLmRvSG92ZXIuYmluZChpKSxmb3JtYXQ6SGksZmluZERvY3VtZW50SGlnaGxpZ2h0czpqaSxmaW5kRG9jdW1lbnRMaW5rczpLaSxmaW5kRG9jdW1lbnRTeW1ib2xzOlhpLGdldEZvbGRpbmdSYW5nZXM6dGEsZ2V0U2VsZWN0aW9uUmFuZ2VzOm5hLGRvUXVvdGVDb21wbGV0ZTp0LmRvUXVvdGVDb21wbGV0ZS5iaW5kKHQpLGRvVGFnQ29tcGxldGU6dC5kb1RhZ0NvbXBsZXRlLmJpbmQodCksZG9SZW5hbWU6UWksZmluZE1hdGNoaW5nVGFnUG9zaXRpb246WmksZmluZE9uVHlwZVJlbmFtZVJhbmdlczplYSxmaW5kTGlua2VkRWRpdGluZ1JhbmdlczplYX0pfWFzeW5jIGRvQ29tcGxldGUoZSx0KXtlPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighZSlyZXR1cm4gbnVsbDt2YXIgbj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VIVE1MRG9jdW1lbnQoZSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9sYW5ndWFnZVNlcnZpY2UuZG9Db21wbGV0ZShlLHQsbix0aGlzLl9sYW5ndWFnZVNldHRpbmdzJiZ0aGlzLl9sYW5ndWFnZVNldHRpbmdzLnN1Z2dlc3QpKX1hc3luYyBmb3JtYXQoZSx0LG4pe2U9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFlKXJldHVybltdO249ey4uLnRoaXMuX2xhbmd1YWdlU2V0dGluZ3MuZm9ybWF0LC4uLm59LGU9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZvcm1hdChlLHQsbik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX1hc3luYyBkb0hvdmVyKGUsdCl7ZT10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIWUpcmV0dXJuIG51bGw7dmFyIG49dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlSFRNTERvY3VtZW50KGUpLGU9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvSG92ZXIoZSx0LG4pO3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9YXN5bmMgZmluZERvY3VtZW50SGlnaGxpZ2h0cyhlLHQpe2U9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFlKXJldHVybltdO3ZhciBuPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZUhUTUxEb2N1bWVudChlKSxlPXRoaXMuX2xhbmd1YWdlU2VydmljZS5maW5kRG9jdW1lbnRIaWdobGlnaHRzKGUsdCxuKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfWFzeW5jIGZpbmREb2N1bWVudExpbmtzKGUpe2U9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFlKXJldHVybltdO2U9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmREb2N1bWVudExpbmtzKGUsbnVsbCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX1hc3luYyBmaW5kRG9jdW1lbnRTeW1ib2xzKGUpe2U9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFlKXJldHVybltdO3ZhciB0PXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZUhUTUxEb2N1bWVudChlKSxlPXRoaXMuX2xhbmd1YWdlU2VydmljZS5maW5kRG9jdW1lbnRTeW1ib2xzKGUsdCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX1hc3luYyBnZXRGb2xkaW5nUmFuZ2VzKGUsdCl7ZT10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIWUpcmV0dXJuW107ZT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZ2V0Rm9sZGluZ1JhbmdlcyhlLHQpO3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9YXN5bmMgZ2V0U2VsZWN0aW9uUmFuZ2VzKGUsdCl7ZT10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIWUpcmV0dXJuW107ZT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZ2V0U2VsZWN0aW9uUmFuZ2VzKGUsdCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX1hc3luYyBkb1JlbmFtZShlLHQsbil7ZT10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIWUpcmV0dXJuIG51bGw7dmFyIHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlSFRNTERvY3VtZW50KGUpLGU9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvUmVuYW1lKGUsdCxuLHIpO3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9X2dldFRleHREb2N1bWVudChlKXt2YXIgdDtmb3IodCBvZiB0aGlzLl9jdHguZ2V0TWlycm9yTW9kZWxzKCkpaWYodC51cmkudG9TdHJpbmcoKT09PWUpcmV0dXJuIF9yLmNyZWF0ZShlLHRoaXMuX2xhbmd1YWdlSWQsdC52ZXJzaW9uLHQuZ2V0VmFsdWUoKSk7cmV0dXJuIG51bGx9fTtzZWxmLm9ubWVzc2FnZT0oKT0+e1duKChlLHQpPT5uZXcgbGEoZSx0KSl9fSgpOwoK', null, false);
|
|
3
|
+
var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y2xhc3MgZXtjb25zdHJ1Y3Rvcigpe3RoaXMubGlzdGVuZXJzPVtdLHRoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcj1mdW5jdGlvbihlKXtzZXRUaW1lb3V0KCgoKT0+e2lmKGUuc3RhY2spdGhyb3cgbmV3IEVycm9yKGUubWVzc2FnZSsiXG5cbiIrZS5zdGFjayk7dGhyb3cgZX0pLDApfX1hZGRMaXN0ZW5lcihlKXtyZXR1cm4gdGhpcy5saXN0ZW5lcnMucHVzaChlKSwoKT0+e3RoaXMuX3JlbW92ZUxpc3RlbmVyKGUpfX1lbWl0KGUpe3RoaXMubGlzdGVuZXJzLmZvckVhY2goKHQ9Pnt0KGUpfSkpfV9yZW1vdmVMaXN0ZW5lcihlKXt0aGlzLmxpc3RlbmVycy5zcGxpY2UodGhpcy5saXN0ZW5lcnMuaW5kZXhPZihlKSwxKX1zZXRVbmV4cGVjdGVkRXJyb3JIYW5kbGVyKGUpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcj1lfWdldFVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoKXtyZXR1cm4gdGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyfW9uVW5leHBlY3RlZEVycm9yKGUpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcihlKSx0aGlzLmVtaXQoZSl9b25VbmV4cGVjdGVkRXh0ZXJuYWxFcnJvcihlKXt0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoZSl9fWNvbnN0IHQ9bmV3IGU7ZnVuY3Rpb24gbihlKXsoZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGEpcmV0dXJuITA7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvciYmZS5uYW1lPT09aSYmZS5tZXNzYWdlPT09aX0pKGUpfHx0Lm9uVW5leHBlY3RlZEVycm9yKGUpfWZ1bmN0aW9uIHIoZSl7aWYoZSBpbnN0YW5jZW9mIEVycm9yKXtsZXR7bmFtZTp0LG1lc3NhZ2U6bn09ZTtyZXR1cm57JGlzRXJyb3I6ITAsbmFtZTp0LG1lc3NhZ2U6bixzdGFjazplLnN0YWNrdHJhY2V8fGUuc3RhY2t9fXJldHVybiBlfWNvbnN0IGk9IkNhbmNlbGVkIjtjbGFzcyBhIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcihpKSx0aGlzLm5hbWU9dGhpcy5tZXNzYWdlfX1mdW5jdGlvbiBvKGUpe2NvbnN0IHQ9dGhpcztsZXQgbixyPSExO3JldHVybiBmdW5jdGlvbigpe3JldHVybiByfHwocj0hMCxuPWUuYXBwbHkodCxhcmd1bWVudHMpKSxufX12YXIgcyxsOyFmdW5jdGlvbihlKXtlLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlW1N5bWJvbC5pdGVyYXRvcl19O2NvbnN0IHQ9T2JqZWN0LmZyZWV6ZShbXSk7ZS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiB0fSxlLnNpbmdsZT1mdW5jdGlvbiooZSl7eWllbGQgZX0sZS5mcm9tPWZ1bmN0aW9uKGUpe3JldHVybiBlfHx0fSxlLmlzRW1wdHk9ZnVuY3Rpb24oZSl7cmV0dXJuIWV8fCEwPT09ZVtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLmRvbmV9LGUuZmlyc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGVbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQoKS52YWx1ZX0sZS5zb21lPWZ1bmN0aW9uKGUsdCl7Zm9yKGNvbnN0IG4gb2YgZSlpZih0KG4pKXJldHVybiEwO3JldHVybiExfSxlLmZpbmQ9ZnVuY3Rpb24oZSx0KXtmb3IoY29uc3QgbiBvZiBlKWlmKHQobikpcmV0dXJuIG59LGUuZmlsdGVyPWZ1bmN0aW9uKihlLHQpe2Zvcihjb25zdCBuIG9mIGUpdChuKSYmKHlpZWxkIG4pfSxlLm1hcD1mdW5jdGlvbiooZSx0KXtsZXQgbj0wO2Zvcihjb25zdCByIG9mIGUpeWllbGQgdChyLG4rKyl9LGUuY29uY2F0PWZ1bmN0aW9uKiguLi5lKXtmb3IoY29uc3QgdCBvZiBlKWZvcihjb25zdCBlIG9mIHQpeWllbGQgZX0sZS5jb25jYXROZXN0ZWQ9ZnVuY3Rpb24qKGUpe2Zvcihjb25zdCB0IG9mIGUpZm9yKGNvbnN0IGUgb2YgdCl5aWVsZCBlfSxlLnJlZHVjZT1mdW5jdGlvbihlLHQsbil7bGV0IHI9bjtmb3IoY29uc3QgbiBvZiBlKXI9dChyLG4pO3JldHVybiByfSxlLnNsaWNlPWZ1bmN0aW9uKihlLHQsbj1lLmxlbmd0aCl7Zm9yKHQ8MCYmKHQrPWUubGVuZ3RoKSxuPDA/bis9ZS5sZW5ndGg6bj5lLmxlbmd0aCYmKG49ZS5sZW5ndGgpO3Q8bjt0KyspeWllbGQgZVt0XX0sZS5jb25zdW1lPWZ1bmN0aW9uKHQsbj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpe2NvbnN0IHI9W107aWYoMD09PW4pcmV0dXJuW3IsdF07Y29uc3QgaT10W1N5bWJvbC5pdGVyYXRvcl0oKTtmb3IobGV0IHQ9MDt0PG47dCsrKXtjb25zdCB0PWkubmV4dCgpO2lmKHQuZG9uZSlyZXR1cm5bcixlLmVtcHR5KCldO3IucHVzaCh0LnZhbHVlKX1yZXR1cm5bcix7W1N5bWJvbC5pdGVyYXRvcl06KCk9Pml9XX0sZS5lcXVhbHM9ZnVuY3Rpb24oZSx0LG49KChlLHQpPT5lPT09dCkpe2NvbnN0IHI9ZVtTeW1ib2wuaXRlcmF0b3JdKCksaT10W1N5bWJvbC5pdGVyYXRvcl0oKTtmb3IoOzspe2NvbnN0IGU9ci5uZXh0KCksdD1pLm5leHQoKTtpZihlLmRvbmUhPT10LmRvbmUpcmV0dXJuITE7aWYoZS5kb25lKXJldHVybiEwO2lmKCFuKGUudmFsdWUsdC52YWx1ZSkpcmV0dXJuITF9fX0oc3x8KHM9e30pKTtjbGFzcyBjIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIoYEVuY291bnRlcmVkIGVycm9ycyB3aGlsZSBkaXNwb3Npbmcgb2Ygc3RvcmUuIEVycm9yczogWyR7ZS5qb2luKCIsICIpfV1gKSx0aGlzLmVycm9ycz1lfX1mdW5jdGlvbiBoKGUpe2lmKHMuaXMoZSkpe2xldCB0PVtdO2Zvcihjb25zdCBuIG9mIGUpaWYobil0cnl7bi5kaXNwb3NlKCl9Y2F0Y2goZSl7dC5wdXNoKGUpfWlmKDE9PT10Lmxlbmd0aCl0aHJvdyB0WzBdO2lmKHQubGVuZ3RoPjEpdGhyb3cgbmV3IGModCk7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/W106ZX1pZihlKXJldHVybiBlLmRpc3Bvc2UoKSxlfWZ1bmN0aW9uIGQoZSl7cmV0dXJue2Rpc3Bvc2U6bygoKCk9PntlKCl9KSl9fWNsYXNzIHV7Y29uc3RydWN0b3IoKXt0aGlzLl90b0Rpc3Bvc2U9bmV3IFNldCx0aGlzLl9pc0Rpc3Bvc2VkPSExfWRpc3Bvc2UoKXt0aGlzLl9pc0Rpc3Bvc2VkfHwodGhpcy5faXNEaXNwb3NlZD0hMCx0aGlzLmNsZWFyKCkpfWdldCBpc0Rpc3Bvc2VkKCl7cmV0dXJuIHRoaXMuX2lzRGlzcG9zZWR9Y2xlYXIoKXt0cnl7aCh0aGlzLl90b0Rpc3Bvc2UudmFsdWVzKCkpfWZpbmFsbHl7dGhpcy5fdG9EaXNwb3NlLmNsZWFyKCl9fWFkZChlKXtpZighZSlyZXR1cm4gZTtpZihlPT09dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBhIGRpc3Bvc2FibGUgb24gaXRzZWxmISIpO3JldHVybiB0aGlzLl9pc0Rpc3Bvc2VkP3UuRElTQUJMRV9ESVNQT1NFRF9XQVJOSU5HfHxjb25zb2xlLndhcm4obmV3IEVycm9yKCJUcnlpbmcgdG8gYWRkIGEgZGlzcG9zYWJsZSB0byBhIERpc3Bvc2FibGVTdG9yZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gZGlzcG9zZWQgb2YuIFRoZSBhZGRlZCBvYmplY3Qgd2lsbCBiZSBsZWFrZWQhIikuc3RhY2spOnRoaXMuX3RvRGlzcG9zZS5hZGQoZSksZX19dS5ESVNBQkxFX0RJU1BPU0VEX1dBUk5JTkc9ITE7Y2xhc3MgcHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3N0b3JlPW5ldyB1LHRoaXMuX3N0b3JlfWRpc3Bvc2UoKXt0aGlzLl9zdG9yZS5kaXNwb3NlKCl9X3JlZ2lzdGVyKGUpe2lmKGU9PT10aGlzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGEgZGlzcG9zYWJsZSBvbiBpdHNlbGYhIik7cmV0dXJuIHRoaXMuX3N0b3JlLmFkZChlKX19cC5Ob25lPU9iamVjdC5mcmVlemUoe2Rpc3Bvc2UoKXt9fSk7Y2xhc3MgbXtjb25zdHJ1Y3Rvcigpe3RoaXMuZGlzcG9zZT0oKT0+e30sdGhpcy51bnNldD0oKT0+e30sdGhpcy5pc3NldD0oKT0+ITF9c2V0KGUpe2xldCB0PWU7cmV0dXJuIHRoaXMudW5zZXQ9KCk9PnQ9dm9pZCAwLHRoaXMuaXNzZXQ9KCk9PnZvaWQgMCE9PXQsdGhpcy5kaXNwb3NlPSgpPT57dCYmKHQoKSx0PXZvaWQgMCl9LHRoaXN9fWNsYXNzIGZ7Y29uc3RydWN0b3IoZSl7dGhpcy5lbGVtZW50PWUsdGhpcy5uZXh0PWYuVW5kZWZpbmVkLHRoaXMucHJldj1mLlVuZGVmaW5lZH19Zi5VbmRlZmluZWQ9bmV3IGYodm9pZCAwKTtjbGFzcyBne2NvbnN0cnVjdG9yKCl7dGhpcy5fZmlyc3Q9Zi5VbmRlZmluZWQsdGhpcy5fbGFzdD1mLlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1pc0VtcHR5KCl7cmV0dXJuIHRoaXMuX2ZpcnN0PT09Zi5VbmRlZmluZWR9Y2xlYXIoKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1mLlVuZGVmaW5lZDspe2NvbnN0IHQ9ZS5uZXh0O2UucHJldj1mLlVuZGVmaW5lZCxlLm5leHQ9Zi5VbmRlZmluZWQsZT10fXRoaXMuX2ZpcnN0PWYuVW5kZWZpbmVkLHRoaXMuX2xhc3Q9Zi5VbmRlZmluZWQsdGhpcy5fc2l6ZT0wfXVuc2hpZnQoZSl7cmV0dXJuIHRoaXMuX2luc2VydChlLCExKX1wdXNoKGUpe3JldHVybiB0aGlzLl9pbnNlcnQoZSwhMCl9X2luc2VydChlLHQpe2NvbnN0IG49bmV3IGYoZSk7aWYodGhpcy5fZmlyc3Q9PT1mLlVuZGVmaW5lZCl0aGlzLl9maXJzdD1uLHRoaXMuX2xhc3Q9bjtlbHNlIGlmKHQpe2NvbnN0IGU9dGhpcy5fbGFzdDt0aGlzLl9sYXN0PW4sbi5wcmV2PWUsZS5uZXh0PW59ZWxzZXtjb25zdCBlPXRoaXMuX2ZpcnN0O3RoaXMuX2ZpcnN0PW4sbi5uZXh0PWUsZS5wcmV2PW59dGhpcy5fc2l6ZSs9MTtsZXQgcj0hMTtyZXR1cm4oKT0+e3J8fChyPSEwLHRoaXMuX3JlbW92ZShuKSl9fXNoaWZ0KCl7aWYodGhpcy5fZmlyc3QhPT1mLlVuZGVmaW5lZCl7Y29uc3QgZT10aGlzLl9maXJzdC5lbGVtZW50O3JldHVybiB0aGlzLl9yZW1vdmUodGhpcy5fZmlyc3QpLGV9fXBvcCgpe2lmKHRoaXMuX2xhc3QhPT1mLlVuZGVmaW5lZCl7Y29uc3QgZT10aGlzLl9sYXN0LmVsZW1lbnQ7cmV0dXJuIHRoaXMuX3JlbW92ZSh0aGlzLl9sYXN0KSxlfX1fcmVtb3ZlKGUpe2lmKGUucHJldiE9PWYuVW5kZWZpbmVkJiZlLm5leHQhPT1mLlVuZGVmaW5lZCl7Y29uc3QgdD1lLnByZXY7dC5uZXh0PWUubmV4dCxlLm5leHQucHJldj10fWVsc2UgZS5wcmV2PT09Zi5VbmRlZmluZWQmJmUubmV4dD09PWYuVW5kZWZpbmVkPyh0aGlzLl9maXJzdD1mLlVuZGVmaW5lZCx0aGlzLl9sYXN0PWYuVW5kZWZpbmVkKTplLm5leHQ9PT1mLlVuZGVmaW5lZD8odGhpcy5fbGFzdD10aGlzLl9sYXN0LnByZXYsdGhpcy5fbGFzdC5uZXh0PWYuVW5kZWZpbmVkKTplLnByZXY9PT1mLlVuZGVmaW5lZCYmKHRoaXMuX2ZpcnN0PXRoaXMuX2ZpcnN0Lm5leHQsdGhpcy5fZmlyc3QucHJldj1mLlVuZGVmaW5lZCk7dGhpcy5fc2l6ZS09MX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1mLlVuZGVmaW5lZDspeWllbGQgZS5lbGVtZW50LGU9ZS5uZXh0fX1jb25zdCBiPSJlbiI7bGV0IHcsXyx2LHk9ITEsVD0hMSxrPSExLFM9ITEsQz1iO2NvbnN0IHg9Im9iamVjdCI9PXR5cGVvZiBzZWxmP3NlbGY6Im9iamVjdCI9PXR5cGVvZiBnbG9iYWw/Z2xvYmFsOnt9O2xldCBMO3ZvaWQgMCE9PXgudnNjb2RlJiZ2b2lkIDAhPT14LnZzY29kZS5wcm9jZXNzP0w9eC52c2NvZGUucHJvY2VzczoidW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJihMPXByb2Nlc3MpO2NvbnN0IEU9InN0cmluZyI9PXR5cGVvZihudWxsPT09KGw9bnVsbD09TD92b2lkIDA6TC52ZXJzaW9ucyl8fHZvaWQgMD09PWw/dm9pZCAwOmwuZWxlY3Ryb24pJiYicmVuZGVyZXIiPT09KG51bGw9PUw/dm9pZCAwOkwudHlwZSk7aWYoIm9iamVjdCIhPXR5cGVvZiBuYXZpZ2F0b3J8fEUpaWYoIm9iamVjdCI9PXR5cGVvZiBMKXt5PSJ3aW4zMiI9PT1MLnBsYXRmb3JtLFQ9ImRhcndpbiI9PT1MLnBsYXRmb3JtLGs9ImxpbnV4Ij09PUwucGxhdGZvcm0sayYmTC5lbnYuU05BUCYmTC5lbnYuU05BUF9SRVZJU0lPTixMLmVudi5DSXx8TC5lbnYuQlVJTERfQVJUSUZBQ1RTVEFHSU5HRElSRUNUT1JZLHc9YixDPWI7Y29uc3QgZT1MLmVudi5WU0NPREVfTkxTX0NPTkZJRztpZihlKXRyeXtjb25zdCB0PUpTT04ucGFyc2UoZSksbj10LmF2YWlsYWJsZUxhbmd1YWdlc1siKiJdO3c9dC5sb2NhbGUsQz1ufHxiLF89dC5fdHJhbnNsYXRpb25zQ29uZmlnRmlsZX1jYXRjaChlKXt9fWVsc2UgY29uc29sZS5lcnJvcigiVW5hYmxlIHRvIHJlc29sdmUgcGxhdGZvcm0uIik7ZWxzZSB2PW5hdmlnYXRvci51c2VyQWdlbnQseT12LmluZGV4T2YoIldpbmRvd3MiKT49MCxUPXYuaW5kZXhPZigiTWFjaW50b3NoIik+PTAsKHYuaW5kZXhPZigiTWFjaW50b3NoIik+PTB8fHYuaW5kZXhPZigiaVBhZCIpPj0wfHx2LmluZGV4T2YoImlQaG9uZSIpPj0wKSYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzJiZuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMsaz12LmluZGV4T2YoIkxpbnV4Iik+PTAsUz0hMCx3PW5hdmlnYXRvci5sYW5ndWFnZSxDPXc7Y29uc3QgQT15LE09VDtTJiZ4LmltcG9ydFNjcmlwdHM7Y29uc3QgUj12OygoKT0+e2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB4LnBvc3RNZXNzYWdlJiYheC5pbXBvcnRTY3JpcHRzKXtsZXQgZT1bXTt4LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCh0PT57aWYodC5kYXRhJiZ0LmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspZm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXtjb25zdCByPWVbbl07aWYoci5pZD09PXQuZGF0YS52c2NvZGVTY2hlZHVsZUFzeW5jV29yaylyZXR1cm4gZS5zcGxpY2UobiwxKSx2b2lkIHIuY2FsbGJhY2soKX19KSk7bGV0IHQ9MDtyZXR1cm4gbj0+e2NvbnN0IHI9Kyt0O2UucHVzaCh7aWQ6cixjYWxsYmFjazpufSkseC5wb3N0TWVzc2FnZSh7dnNjb2RlU2NoZWR1bGVBc3luY1dvcms6cn0sIioiKX19fSkoKTtjb25zdCBOPSEhKFImJlIuaW5kZXhPZigiQ2hyb21lIik+PTApO1ImJlIuaW5kZXhPZigiRmlyZWZveCIpLCFOJiZSJiZSLmluZGV4T2YoIlNhZmFyaSIpLFImJlIuaW5kZXhPZigiRWRnLyIpLFImJlIuaW5kZXhPZigiQW5kcm9pZCIpO2NvbnN0IEk9eC5wZXJmb3JtYW5jZSYmImZ1bmN0aW9uIj09dHlwZW9mIHgucGVyZm9ybWFuY2Uubm93O2NsYXNzIFV7Y29uc3RydWN0b3IoZSl7dGhpcy5faGlnaFJlc29sdXRpb249SSYmZSx0aGlzLl9zdGFydFRpbWU9dGhpcy5fbm93KCksdGhpcy5fc3RvcFRpbWU9LTF9c3RhdGljIGNyZWF0ZShlPSEwKXtyZXR1cm4gbmV3IFUoZSl9c3RvcCgpe3RoaXMuX3N0b3BUaW1lPXRoaXMuX25vdygpfWVsYXBzZWQoKXtyZXR1cm4tMSE9PXRoaXMuX3N0b3BUaW1lP3RoaXMuX3N0b3BUaW1lLXRoaXMuX3N0YXJ0VGltZTp0aGlzLl9ub3coKS10aGlzLl9zdGFydFRpbWV9X25vdygpe3JldHVybiB0aGlzLl9oaWdoUmVzb2x1dGlvbj94LnBlcmZvcm1hbmNlLm5vdygpOkRhdGUubm93KCl9fXZhciBILEQ7IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7cmV0dXJuKHQsbj1udWxsLHIpPT57bGV0IGksYT0hMTtyZXR1cm4gaT1lKChlPT57aWYoIWEpcmV0dXJuIGk/aS5kaXNwb3NlKCk6YT0hMCx0LmNhbGwobixlKX0pLG51bGwsciksYSYmaS5kaXNwb3NlKCksaX19ZnVuY3Rpb24gbihlLHQsbil7cmV0dXJuIG8oKChuLHI9bnVsbCxpKT0+ZSgoZT0+bi5jYWxsKHIsdChlKSkpLG51bGwsaSkpLG4pfWZ1bmN0aW9uIHIoZSx0LG4pe3JldHVybiBvKCgobixyPW51bGwsaSk9PmUoKGU9Pnt0KGUpLG4uY2FsbChyLGUpfSksbnVsbCxpKSksbil9ZnVuY3Rpb24gaShlLHQsbil7cmV0dXJuIG8oKChuLHI9bnVsbCxpKT0+ZSgoZT0+dChlKSYmbi5jYWxsKHIsZSkpLG51bGwsaSkpLG4pfWZ1bmN0aW9uIGEoZSx0LHIsaSl7bGV0IGE9cjtyZXR1cm4gbihlLChlPT4oYT10KGEsZSksYSkpLGkpfWZ1bmN0aW9uIG8oZSx0KXtsZXQgbjtjb25zdCByPW5ldyBQKHtvbkZpcnN0TGlzdGVuZXJBZGQoKXtuPWUoci5maXJlLHIpfSxvbkxhc3RMaXN0ZW5lclJlbW92ZSgpe24uZGlzcG9zZSgpfX0pO3JldHVybiB0JiZ0LmFkZChyKSxyLmV2ZW50fWZ1bmN0aW9uIHMoZSx0LG49MTAwLHI9ITEsaSxhKXtsZXQgbyxzLGwsYz0wO2NvbnN0IGg9bmV3IFAoe2xlYWtXYXJuaW5nVGhyZXNob2xkOmksb25GaXJzdExpc3RlbmVyQWRkKCl7bz1lKChlPT57YysrLHM9dChzLGUpLHImJiFsJiYoaC5maXJlKHMpLHM9dm9pZCAwKSxjbGVhclRpbWVvdXQobCksbD1zZXRUaW1lb3V0KCgoKT0+e2NvbnN0IGU9cztzPXZvaWQgMCxsPXZvaWQgMCwoIXJ8fGM+MSkmJmguZmlyZShlKSxjPTB9KSxuKX0pKX0sb25MYXN0TGlzdGVuZXJSZW1vdmUoKXtvLmRpc3Bvc2UoKX19KTtyZXR1cm4gYSYmYS5hZGQoaCksaC5ldmVudH1mdW5jdGlvbiBsKGUsdD0oKGUsdCk9PmU9PT10KSxuKXtsZXQgcixhPSEwO3JldHVybiBpKGUsKGU9Pntjb25zdCBuPWF8fCF0KGUscik7cmV0dXJuIGE9ITEscj1lLG59KSxuKX1lLk5vbmU9KCk9PnAuTm9uZSxlLm9uY2U9dCxlLm1hcD1uLGUuZm9yRWFjaD1yLGUuZmlsdGVyPWksZS5zaWduYWw9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGUuYW55PWZ1bmN0aW9uKC4uLmUpe3JldHVybih0LG49bnVsbCxyKT0+ZnVuY3Rpb24oLi4uZSl7cmV0dXJuIGQoKCgpPT5oKGUpKSl9KC4uLmUubWFwKChlPT5lKChlPT50LmNhbGwobixlKSksbnVsbCxyKSkpKX0sZS5yZWR1Y2U9YSxlLmRlYm91bmNlPXMsZS5sYXRjaD1sLGUuc3BsaXQ9ZnVuY3Rpb24odCxuLHIpe3JldHVybltlLmZpbHRlcih0LG4sciksZS5maWx0ZXIodCwoZT0+IW4oZSkpLHIpXX0sZS5idWZmZXI9ZnVuY3Rpb24oZSx0PSExLG49W10pe2xldCByPW4uc2xpY2UoKSxpPWUoKGU9PntyP3IucHVzaChlKTpvLmZpcmUoZSl9KSk7Y29uc3QgYT0oKT0+e3ImJnIuZm9yRWFjaCgoZT0+by5maXJlKGUpKSkscj1udWxsfSxvPW5ldyBQKHtvbkZpcnN0TGlzdGVuZXJBZGQoKXtpfHwoaT1lKChlPT5vLmZpcmUoZSkpKSl9LG9uRmlyc3RMaXN0ZW5lckRpZEFkZCgpe3ImJih0P3NldFRpbWVvdXQoYSk6YSgpKX0sb25MYXN0TGlzdGVuZXJSZW1vdmUoKXtpJiZpLmRpc3Bvc2UoKSxpPW51bGx9fSk7cmV0dXJuIG8uZXZlbnR9O2NsYXNzIGN7Y29uc3RydWN0b3IoZSl7dGhpcy5ldmVudD1lfW1hcChlKXtyZXR1cm4gbmV3IGMobih0aGlzLmV2ZW50LGUpKX1mb3JFYWNoKGUpe3JldHVybiBuZXcgYyhyKHRoaXMuZXZlbnQsZSkpfWZpbHRlcihlKXtyZXR1cm4gbmV3IGMoaSh0aGlzLmV2ZW50LGUpKX1yZWR1Y2UoZSx0KXtyZXR1cm4gbmV3IGMoYSh0aGlzLmV2ZW50LGUsdCkpfWxhdGNoKCl7cmV0dXJuIG5ldyBjKGwodGhpcy5ldmVudCkpfWRlYm91bmNlKGUsdD0xMDAsbj0hMSxyKXtyZXR1cm4gbmV3IGMocyh0aGlzLmV2ZW50LGUsdCxuLHIpKX1vbihlLHQsbil7cmV0dXJuIHRoaXMuZXZlbnQoZSx0LG4pfW9uY2UoZSxuLHIpe3JldHVybiB0KHRoaXMuZXZlbnQpKGUsbixyKX19ZS5jaGFpbj1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IGMoZSl9LGUuZnJvbU5vZGVFdmVudEVtaXR0ZXI9ZnVuY3Rpb24oZSx0LG49KGU9PmUpKXtjb25zdCByPSguLi5lKT0+aS5maXJlKG4oLi4uZSkpLGk9bmV3IFAoe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+ZS5vbih0LHIpLG9uTGFzdExpc3RlbmVyUmVtb3ZlOigpPT5lLnJlbW92ZUxpc3RlbmVyKHQscil9KTtyZXR1cm4gaS5ldmVudH0sZS5mcm9tRE9NRXZlbnRFbWl0dGVyPWZ1bmN0aW9uKGUsdCxuPShlPT5lKSl7Y29uc3Qgcj0oLi4uZSk9PmkuZmlyZShuKC4uLmUpKSxpPW5ldyBQKHtvbkZpcnN0TGlzdGVuZXJBZGQ6KCk9PmUuYWRkRXZlbnRMaXN0ZW5lcih0LHIpLG9uTGFzdExpc3RlbmVyUmVtb3ZlOigpPT5lLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxyKX0pO3JldHVybiBpLmV2ZW50fSxlLnRvUHJvbWlzZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKG49PnQoZSkobikpKX0sZS5ydW5BbmRTdWJzY3JpYmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCh2b2lkIDApLGUoKGU9PnQoZSkpKX0sZS5ydW5BbmRTdWJzY3JpYmVXaXRoU3RvcmU9ZnVuY3Rpb24oZSx0KXtsZXQgbj1udWxsO2Z1bmN0aW9uIHIoZSl7bnVsbD09bnx8bi5kaXNwb3NlKCksbj1uZXcgdSx0KGUsbil9cih2b2lkIDApO2NvbnN0IGk9ZSgoZT0+cihlKSkpO3JldHVybiBkKCgoKT0+e2kuZGlzcG9zZSgpLG51bGw9PW58fG4uZGlzcG9zZSgpfSkpfX0oSHx8KEg9e30pKTtjbGFzcyB6e2NvbnN0cnVjdG9yKGUpe3RoaXMuX2xpc3RlbmVyQ291bnQ9MCx0aGlzLl9pbnZvY2F0aW9uQ291bnQ9MCx0aGlzLl9lbGFwc2VkT3ZlcmFsbD0wLHRoaXMuX25hbWU9YCR7ZX1fJHt6Ll9pZFBvb2wrK31gfXN0YXJ0KGUpe3RoaXMuX3N0b3BXYXRjaD1uZXcgVSghMCksdGhpcy5fbGlzdGVuZXJDb3VudD1lfXN0b3AoKXtpZih0aGlzLl9zdG9wV2F0Y2gpe2NvbnN0IGU9dGhpcy5fc3RvcFdhdGNoLmVsYXBzZWQoKTt0aGlzLl9lbGFwc2VkT3ZlcmFsbCs9ZSx0aGlzLl9pbnZvY2F0aW9uQ291bnQrPTEsY29uc29sZS5pbmZvKGBkaWQgRklSRSAke3RoaXMuX25hbWV9OiBlbGFwc2VkX21zOiAke2UudG9GaXhlZCg1KX0sIGxpc3RlbmVyOiAke3RoaXMuX2xpc3RlbmVyQ291bnR9IChlbGFwc2VkX292ZXJhbGw6ICR7dGhpcy5fZWxhcHNlZE92ZXJhbGwudG9GaXhlZCgyKX0sIGludm9jYXRpb25zOiAke3RoaXMuX2ludm9jYXRpb25Db3VudH0pYCksdGhpcy5fc3RvcFdhdGNoPXZvaWQgMH19fXouX2lkUG9vbD0wO2NsYXNzIFd7Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZT1lfXN0YXRpYyBjcmVhdGUoKXt2YXIgZTtyZXR1cm4gbmV3IFcobnVsbCE9PShlPShuZXcgRXJyb3IpLnN0YWNrKSYmdm9pZCAwIT09ZT9lOiIiKX1wcmludCgpe2NvbnNvbGUud2Fybih0aGlzLnZhbHVlLnNwbGl0KCJcbiIpLnNsaWNlKDIpLmpvaW4oIlxuIikpfX1jbGFzcyBPe2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmNhbGxiYWNrPWUsdGhpcy5jYWxsYmFja1RoaXM9dCx0aGlzLnN0YWNrPW4sdGhpcy5zdWJzY3JpcHRpb249bmV3IG19aW52b2tlKGUpe3RoaXMuY2FsbGJhY2suY2FsbCh0aGlzLmNhbGxiYWNrVGhpcyxlKX19Y2xhc3MgUHtjb25zdHJ1Y3RvcihlKXt2YXIgdDt0aGlzLl9kaXNwb3NlZD0hMSx0aGlzLl9vcHRpb25zPWUsdGhpcy5fbGVha2FnZU1vbj12b2lkIDAsdGhpcy5fcGVyZk1vbj0obnVsbD09PSh0PXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Ll9wcm9mTmFtZSk/bmV3IHoodGhpcy5fb3B0aW9ucy5fcHJvZk5hbWUpOnZvaWQgMH1kaXNwb3NlKCl7dmFyIGUsdCxuLHI7dGhpcy5fZGlzcG9zZWR8fCh0aGlzLl9kaXNwb3NlZD0hMCx0aGlzLl9saXN0ZW5lcnMmJnRoaXMuX2xpc3RlbmVycy5jbGVhcigpLG51bGw9PT0oZT10aGlzLl9kZWxpdmVyeVF1ZXVlKXx8dm9pZCAwPT09ZXx8ZS5jbGVhcigpLG51bGw9PT0obj1udWxsPT09KHQ9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQub25MYXN0TGlzdGVuZXJSZW1vdmUpfHx2b2lkIDA9PT1ufHxuLmNhbGwodCksbnVsbD09PShyPXRoaXMuX2xlYWthZ2VNb24pfHx2b2lkIDA9PT1yfHxyLmRpc3Bvc2UoKSl9Z2V0IGV2ZW50KCl7cmV0dXJuIHRoaXMuX2V2ZW50fHwodGhpcy5fZXZlbnQ9KGUsdCxuKT0+e3ZhciByLGksYTt0aGlzLl9saXN0ZW5lcnN8fCh0aGlzLl9saXN0ZW5lcnM9bmV3IGcpO2NvbnN0IG89dGhpcy5fbGlzdGVuZXJzLmlzRW1wdHkoKTtsZXQgcyxsO28mJihudWxsPT09KHI9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PXI/dm9pZCAwOnIub25GaXJzdExpc3RlbmVyQWRkKSYmdGhpcy5fb3B0aW9ucy5vbkZpcnN0TGlzdGVuZXJBZGQodGhpcyksdGhpcy5fbGVha2FnZU1vbiYmdGhpcy5fbGlzdGVuZXJzLnNpemU+PTMwJiYobD1XLmNyZWF0ZSgpLHM9dGhpcy5fbGVha2FnZU1vbi5jaGVjayhsLHRoaXMuX2xpc3RlbmVycy5zaXplKzEpKTtjb25zdCBjPW5ldyBPKGUsdCxsKSxoPXRoaXMuX2xpc3RlbmVycy5wdXNoKGMpO28mJihudWxsPT09KGk9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PWk/dm9pZCAwOmkub25GaXJzdExpc3RlbmVyRGlkQWRkKSYmdGhpcy5fb3B0aW9ucy5vbkZpcnN0TGlzdGVuZXJEaWRBZGQodGhpcyksKG51bGw9PT0oYT10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09YT92b2lkIDA6YS5vbkxpc3RlbmVyRGlkQWRkKSYmdGhpcy5fb3B0aW9ucy5vbkxpc3RlbmVyRGlkQWRkKHRoaXMsZSx0KTtjb25zdCBkPWMuc3Vic2NyaXB0aW9uLnNldCgoKCk9PntpZihzJiZzKCksIXRoaXMuX2Rpc3Bvc2VkJiYoaCgpLHRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMub25MYXN0TGlzdGVuZXJSZW1vdmUpKXt0aGlzLl9saXN0ZW5lcnMmJiF0aGlzLl9saXN0ZW5lcnMuaXNFbXB0eSgpfHx0aGlzLl9vcHRpb25zLm9uTGFzdExpc3RlbmVyUmVtb3ZlKHRoaXMpfX0pKTtyZXR1cm4gbiBpbnN0YW5jZW9mIHU/bi5hZGQoZCk6QXJyYXkuaXNBcnJheShuKSYmbi5wdXNoKGQpLGR9KSx0aGlzLl9ldmVudH1maXJlKGUpe3ZhciB0LHI7aWYodGhpcy5fbGlzdGVuZXJzKXt0aGlzLl9kZWxpdmVyeVF1ZXVlfHwodGhpcy5fZGVsaXZlcnlRdWV1ZT1uZXcgZyk7Zm9yKGxldCB0IG9mIHRoaXMuX2xpc3RlbmVycyl0aGlzLl9kZWxpdmVyeVF1ZXVlLnB1c2goW3QsZV0pO2ZvcihudWxsPT09KHQ9dGhpcy5fcGVyZk1vbil8fHZvaWQgMD09PXR8fHQuc3RhcnQodGhpcy5fZGVsaXZlcnlRdWV1ZS5zaXplKTt0aGlzLl9kZWxpdmVyeVF1ZXVlLnNpemU+MDspe2NvbnN0W2UsdF09dGhpcy5fZGVsaXZlcnlRdWV1ZS5zaGlmdCgpO3RyeXtlLmludm9rZSh0KX1jYXRjaChlKXtuKGUpfX1udWxsPT09KHI9dGhpcy5fcGVyZk1vbil8fHZvaWQgMD09PXJ8fHIuc3RvcCgpfX19ZnVuY3Rpb24gcShlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIGZ1bmN0aW9uKGUpe2xldCB0PVtdLG49T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO2Zvcig7T2JqZWN0LnByb3RvdHlwZSE9PW47KXQ9dC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobikpLG49T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pO3JldHVybiB0fShlKSkiZnVuY3Rpb24iPT10eXBlb2YgZVtuXSYmdC5wdXNoKG4pO3JldHVybiB0fWZ1bmN0aW9uIEYoZSx0PSJVbnJlYWNoYWJsZSIpe3Rocm93IG5ldyBFcnJvcih0KX1jbGFzcyBCe2NvbnN0cnVjdG9yKGUpe3RoaXMuZXhlY3V0b3I9ZSx0aGlzLl9kaWRSdW49ITF9Z2V0VmFsdWUoKXtpZighdGhpcy5fZGlkUnVuKXRyeXt0aGlzLl92YWx1ZT10aGlzLmV4ZWN1dG9yKCl9Y2F0Y2goZSl7dGhpcy5fZXJyb3I9ZX1maW5hbGx5e3RoaXMuX2RpZFJ1bj0hMH1pZih0aGlzLl9lcnJvcil0aHJvdyB0aGlzLl9lcnJvcjtyZXR1cm4gdGhpcy5fdmFsdWV9Z2V0IHJhd1ZhbHVlKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfX1mdW5jdGlvbiBWKGUsdCxuPTAscj1lLmxlbmd0aCxpPTAsYT10Lmxlbmd0aCl7Zm9yKDtuPHImJmk8YTtuKyssaSsrKXtsZXQgcj1lLmNoYXJDb2RlQXQobiksYT10LmNoYXJDb2RlQXQoaSk7aWYocjxhKXJldHVybi0xO2lmKHI+YSlyZXR1cm4gMX1jb25zdCBvPXItbixzPWEtaTtyZXR1cm4gbzxzPy0xOm8+cz8xOjB9ZnVuY3Rpb24gSyhlKXtyZXR1cm4gZT49OTcmJmU8PTEyMn1mdW5jdGlvbiBqKGUpe3JldHVybiBlPj02NSYmZTw9OTB9ZnVuY3Rpb24gRyhlLHQpe2NvbnN0IG49dC5sZW5ndGg7cmV0dXJuISh0Lmxlbmd0aD5lLmxlbmd0aCkmJjA9PT1mdW5jdGlvbihlLHQsbj0wLHI9ZS5sZW5ndGgsaT0wLGE9dC5sZW5ndGgpe2Zvcig7bjxyJiZpPGE7bisrLGkrKyl7bGV0IG89ZS5jaGFyQ29kZUF0KG4pLHM9dC5jaGFyQ29kZUF0KGkpO2lmKG89PT1zKWNvbnRpbnVlO2lmKG8+PTEyOHx8cz49MTI4KXJldHVybiBWKGUudG9Mb3dlckNhc2UoKSx0LnRvTG93ZXJDYXNlKCksbixyLGksYSk7SyhvKSYmKG8tPTMyKSxLKHMpJiYocy09MzIpO2NvbnN0IGw9by1zO2lmKDAhPT1sKXJldHVybiBsfWNvbnN0IG89ci1uLHM9YS1pO3JldHVybiBvPHM/LTE6bz5zPzE6MH0oZSx0LDAsbil9ZnVuY3Rpb24gJChlKXtyZXR1cm4gNTUyOTY8PWUmJmU8PTU2MzE5fWZ1bmN0aW9uIEooZSx0LG4pe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KG4pO2lmKCQocikmJm4rMTx0KXtjb25zdCB0PWUuY2hhckNvZGVBdChuKzEpO2lmKGZ1bmN0aW9uKGUpe3JldHVybiA1NjMyMDw9ZSYmZTw9NTczNDN9KHQpKXJldHVybiB0LTU2MzIwKyhyLTU1Mjk2PDwxMCkrNjU1MzZ9cmV0dXJuIHJ9Y29uc3QgWD0vXltcdFxuXHJceDIwLVx4N0VdKiQvO2NsYXNzIFl7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeT1lfXN0YXRpYyBnZXRJbnN0YW5jZShlKXtyZXR1cm4gWS5jYWNoZS5nZXQoQXJyYXkuZnJvbShlKSl9c3RhdGljIGdldExvY2FsZXMoKXtyZXR1cm4gWS5fbG9jYWxlcy5nZXRWYWx1ZSgpfWlzQW1iaWd1b3VzKGUpe3JldHVybiB0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmhhcyhlKX1nZXRQcmltYXJ5Q29uZnVzYWJsZShlKXtyZXR1cm4gdGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5nZXQoZSl9Z2V0Q29uZnVzYWJsZUNvZGVQb2ludHMoKXtyZXR1cm4gbmV3IFNldCh0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmtleXMoKSl9fUQ9WSxZLmFtYmlndW91c0NoYXJhY3RlckRhdGE9bmV3IEIoKCgpPT5KU09OLnBhcnNlKCd7Il9jb21tb24iOls4MjMyLDMyLDgyMzMsMzIsNTc2MCwzMiw4MTkyLDMyLDgxOTMsMzIsODE5NCwzMiw4MTk1LDMyLDgxOTYsMzIsODE5NywzMiw4MTk4LDMyLDgyMDAsMzIsODIwMSwzMiw4MjAyLDMyLDgyODcsMzIsODE5OSwzMiw4MjM5LDMyLDIwNDIsOTUsNjUxMDEsOTUsNjUxMDIsOTUsNjUxMDMsOTUsODIwOCw0NSw4MjA5LDQ1LDgyMTAsNDUsNjUxMTIsNDUsMTc0OCw0NSw4MjU5LDQ1LDcyNyw0NSw4NzIyLDQ1LDEwMTM0LDQ1LDExNDUwLDQ1LDE1NDksNDQsMTY0Myw0NCw4MjE4LDQ0LDE4NCw0NCw0MjIzMyw0NCw4OTQsNTksMjMwNyw1OCwyNjkxLDU4LDE0MTcsNTgsMTc5NSw1OCwxNzk2LDU4LDU4NjgsNTgsNjUwNzIsNTgsNjE0Nyw1OCw2MTUzLDU4LDgyODIsNTgsMTQ3NSw1OCw3NjAsNTgsNDI4ODksNTgsODc1OCw1OCw3MjAsNTgsNDIyMzcsNTgsNDUxLDMzLDExNjAxLDMzLDY2MCw2Myw1NzcsNjMsMjQyOSw2Myw1MDM4LDYzLDQyNzMxLDYzLDExOTE0OSw0Niw4MjI4LDQ2LDE3OTMsNDYsMTc5NCw0Niw0MjUxMCw0Niw2ODE3Niw0NiwxNjMyLDQ2LDE3NzYsNDYsNDIyMzIsNDYsMTM3Myw5Niw2NTI4Nyw5Niw4MjE5LDk2LDgyNDIsOTYsMTM3MCw5NiwxNTIzLDk2LDgxNzUsOTYsNjUzNDQsOTYsOTAwLDk2LDgxODksOTYsODEyNSw5Niw4MTI3LDk2LDgxOTAsOTYsNjk3LDk2LDg4NCw5Niw3MTIsOTYsNzE0LDk2LDcxNSw5Niw3NTYsOTYsNjk5LDk2LDcwMSw5Niw3MDAsOTYsNzAyLDk2LDQyODkyLDk2LDE0OTcsOTYsMjAzNiw5NiwyMDM3LDk2LDUxOTQsOTYsNTgzNiw5Niw5NDAzMyw5Niw5NDAzNCw5Niw2NTMzOSw5MSwxMDA4OCw0MCwxMDA5OCw0MCwxMjMwOCw0MCw2NDgzMCw0MCw2NTM0MSw5MywxMDA4OSw0MSwxMDA5OSw0MSwxMjMwOSw0MSw2NDgzMSw0MSwxMDEwMCwxMjMsMTE5MDYwLDEyMywxMDEwMSwxMjUsNjUzNDIsOTQsODI3MCw0MiwxNjQ1LDQyLDg3MjcsNDIsNjYzMzUsNDIsNTk0MSw0Nyw4MjU3LDQ3LDg3MjUsNDcsODI2MCw0Nyw5NTg1LDQ3LDEwMTg3LDQ3LDEwNzQ0LDQ3LDExOTM1NCw0NywxMjc1NSw0NywxMjMzOSw0NywxMTQ2Miw0NywyMDAzMSw0NywxMjAzNSw0Nyw2NTM0MCw5Miw2NTEyOCw5Miw4NzI2LDkyLDEwMTg5LDkyLDEwNzQxLDkyLDEwNzQ1LDkyLDExOTMxMSw5MiwxMTkzNTUsOTIsMTI3NTYsOTIsMjAwMjIsOTIsMTIwMzQsOTIsNDI4NzIsMzgsNzA4LDk0LDcxMCw5NCw1ODY5LDQzLDEwMTMzLDQzLDY2MjAzLDQzLDgyNDksNjAsMTAwOTQsNjAsNzA2LDYwLDExOTM1MCw2MCw1MTc2LDYwLDU4MTAsNjAsNTEyMCw2MSwxMTg0MCw2MSwxMjQ0OCw2MSw0MjIzOSw2MSw4MjUwLDYyLDEwMDk1LDYyLDcwNyw2MiwxMTkzNTEsNjIsNTE3MSw2Miw5NDAxNSw2Miw4Mjc1LDEyNiw3MzIsMTI2LDgxMjgsMTI2LDg3NjQsMTI2LDY1MzcyLDEyNCw2NTI5Myw0NSwxMjA3ODQsNTAsMTIwNzk0LDUwLDEyMDgwNCw1MCwxMjA4MTQsNTAsMTIwODI0LDUwLDEzMDAzNCw1MCw0Mjg0Miw1MCw0MjMsNTAsMTAwMCw1MCw0MjU2NCw1MCw1MzExLDUwLDQyNzM1LDUwLDExOTMwMiw1MSwxMjA3ODUsNTEsMTIwNzk1LDUxLDEyMDgwNSw1MSwxMjA4MTUsNTEsMTIwODI1LDUxLDEzMDAzNSw1MSw0MjkyMyw1MSw1NDAsNTEsNDM5LDUxLDQyODU4LDUxLDExNDY4LDUxLDEyNDgsNTEsOTQwMTEsNTEsNzE4ODIsNTEsMTIwNzg2LDUyLDEyMDc5Niw1MiwxMjA4MDYsNTIsMTIwODE2LDUyLDEyMDgyNiw1MiwxMzAwMzYsNTIsNTA3MCw1Miw3MTg1NSw1MiwxMjA3ODcsNTMsMTIwNzk3LDUzLDEyMDgwNyw1MywxMjA4MTcsNTMsMTIwODI3LDUzLDEzMDAzNyw1Myw0NDQsNTMsNzE4NjcsNTMsMTIwNzg4LDU0LDEyMDc5OCw1NCwxMjA4MDgsNTQsMTIwODE4LDU0LDEyMDgyOCw1NCwxMzAwMzgsNTQsMTE0NzQsNTQsNTEwMiw1NCw3MTg5Myw1NCwxMTkzMTQsNTUsMTIwNzg5LDU1LDEyMDc5OSw1NSwxMjA4MDksNTUsMTIwODE5LDU1LDEyMDgyOSw1NSwxMzAwMzksNTUsNjY3NzAsNTUsNzE4NzgsNTUsMjgxOSw1NiwyNTM4LDU2LDI2NjYsNTYsMTI1MTMxLDU2LDEyMDc5MCw1NiwxMjA4MDAsNTYsMTIwODEwLDU2LDEyMDgyMCw1NiwxMjA4MzAsNTYsMTMwMDQwLDU2LDU0Nyw1Niw1NDYsNTYsNjYzMzAsNTYsMjY2Myw1NywyOTIwLDU3LDI1NDEsNTcsMzQzNyw1NywxMjA3OTEsNTcsMTIwODAxLDU3LDEyMDgxMSw1NywxMjA4MjEsNTcsMTIwODMxLDU3LDEzMDA0MSw1Nyw0Mjg2Miw1NywxMTQ2Niw1Nyw3MTg4NCw1Nyw3MTg1Miw1Nyw3MTg5NCw1Nyw5MDgyLDk3LDY1MzQ1LDk3LDExOTgzNCw5NywxMTk4ODYsOTcsMTE5OTM4LDk3LDExOTk5MCw5NywxMjAwNDIsOTcsMTIwMDk0LDk3LDEyMDE0Niw5NywxMjAxOTgsOTcsMTIwMjUwLDk3LDEyMDMwMiw5NywxMjAzNTQsOTcsMTIwNDA2LDk3LDEyMDQ1OCw5Nyw1OTMsOTcsOTQ1LDk3LDEyMDUxNCw5NywxMjA1NzIsOTcsMTIwNjMwLDk3LDEyMDY4OCw5NywxMjA3NDYsOTcsNjUzMTMsNjUsMTE5ODA4LDY1LDExOTg2MCw2NSwxMTk5MTIsNjUsMTE5OTY0LDY1LDEyMDAxNiw2NSwxMjAwNjgsNjUsMTIwMTIwLDY1LDEyMDE3Miw2NSwxMjAyMjQsNjUsMTIwMjc2LDY1LDEyMDMyOCw2NSwxMjAzODAsNjUsMTIwNDMyLDY1LDkxMyw2NSwxMjA0ODgsNjUsMTIwNTQ2LDY1LDEyMDYwNCw2NSwxMjA2NjIsNjUsMTIwNzIwLDY1LDUwMzQsNjUsNTU3Myw2NSw0MjIyMiw2NSw5NDAxNiw2NSw2NjIwOCw2NSwxMTk4MzUsOTgsMTE5ODg3LDk4LDExOTkzOSw5OCwxMTk5OTEsOTgsMTIwMDQzLDk4LDEyMDA5NSw5OCwxMjAxNDcsOTgsMTIwMTk5LDk4LDEyMDI1MSw5OCwxMjAzMDMsOTgsMTIwMzU1LDk4LDEyMDQwNyw5OCwxMjA0NTksOTgsMzg4LDk4LDUwNzEsOTgsNTIzNCw5OCw1NTUxLDk4LDY1MzE0LDY2LDg0OTIsNjYsMTE5ODA5LDY2LDExOTg2MSw2NiwxMTk5MTMsNjYsMTIwMDE3LDY2LDEyMDA2OSw2NiwxMjAxMjEsNjYsMTIwMTczLDY2LDEyMDIyNSw2NiwxMjAyNzcsNjYsMTIwMzI5LDY2LDEyMDM4MSw2NiwxMjA0MzMsNjYsNDI5MzIsNjYsOTE0LDY2LDEyMDQ4OSw2NiwxMjA1NDcsNjYsMTIwNjA1LDY2LDEyMDY2Myw2NiwxMjA3MjEsNjYsNTEwOCw2Niw1NjIzLDY2LDQyMTkyLDY2LDY2MTc4LDY2LDY2MjA5LDY2LDY2MzA1LDY2LDY1MzQ3LDk5LDg1NzMsOTksMTE5ODM2LDk5LDExOTg4OCw5OSwxMTk5NDAsOTksMTE5OTkyLDk5LDEyMDA0NCw5OSwxMjAwOTYsOTksMTIwMTQ4LDk5LDEyMDIwMCw5OSwxMjAyNTIsOTksMTIwMzA0LDk5LDEyMDM1Niw5OSwxMjA0MDgsOTksMTIwNDYwLDk5LDc0MjgsOTksMTAxMCw5OSwxMTQyOSw5OSw0Mzk1MSw5OSw2NjYyMSw5OSwxMjg4NDQsNjcsNzE5MjIsNjcsNzE5MTMsNjcsNjUzMTUsNjcsODU1Nyw2Nyw4NDUwLDY3LDg0OTMsNjcsMTE5ODEwLDY3LDExOTg2Miw2NywxMTk5MTQsNjcsMTE5OTY2LDY3LDEyMDAxOCw2NywxMjAxNzQsNjcsMTIwMjI2LDY3LDEyMDI3OCw2NywxMjAzMzAsNjcsMTIwMzgyLDY3LDEyMDQzNCw2NywxMDE3LDY3LDExNDI4LDY3LDUwODcsNjcsNDIyMDIsNjcsNjYyMTAsNjcsNjYzMDYsNjcsNjY1ODEsNjcsNjY4NDQsNjcsODU3NCwxMDAsODUxOCwxMDAsMTE5ODM3LDEwMCwxMTk4ODksMTAwLDExOTk0MSwxMDAsMTE5OTkzLDEwMCwxMjAwNDUsMTAwLDEyMDA5NywxMDAsMTIwMTQ5LDEwMCwxMjAyMDEsMTAwLDEyMDI1MywxMDAsMTIwMzA1LDEwMCwxMjAzNTcsMTAwLDEyMDQwOSwxMDAsMTIwNDYxLDEwMCwxMjgxLDEwMCw1MDk1LDEwMCw1MjMxLDEwMCw0MjE5NCwxMDAsODU1OCw2OCw4NTE3LDY4LDExOTgxMSw2OCwxMTk4NjMsNjgsMTE5OTE1LDY4LDExOTk2Nyw2OCwxMjAwMTksNjgsMTIwMDcxLDY4LDEyMDEyMyw2OCwxMjAxNzUsNjgsMTIwMjI3LDY4LDEyMDI3OSw2OCwxMjAzMzEsNjgsMTIwMzgzLDY4LDEyMDQzNSw2OCw1MDI0LDY4LDU1OTgsNjgsNTYxMCw2OCw0MjE5NSw2OCw4NDk0LDEwMSw2NTM0OSwxMDEsODQ5NSwxMDEsODUxOSwxMDEsMTE5ODM4LDEwMSwxMTk4OTAsMTAxLDExOTk0MiwxMDEsMTIwMDQ2LDEwMSwxMjAwOTgsMTAxLDEyMDE1MCwxMDEsMTIwMjAyLDEwMSwxMjAyNTQsMTAxLDEyMDMwNiwxMDEsMTIwMzU4LDEwMSwxMjA0MTAsMTAxLDEyMDQ2MiwxMDEsNDM4MjYsMTAxLDEyMTMsMTAxLDg5NTksNjksNjUzMTcsNjksODQ5Niw2OSwxMTk4MTIsNjksMTE5ODY0LDY5LDExOTkxNiw2OSwxMjAwMjAsNjksMTIwMDcyLDY5LDEyMDEyNCw2OSwxMjAxNzYsNjksMTIwMjI4LDY5LDEyMDI4MCw2OSwxMjAzMzIsNjksMTIwMzg0LDY5LDEyMDQzNiw2OSw5MTcsNjksMTIwNDkyLDY5LDEyMDU1MCw2OSwxMjA2MDgsNjksMTIwNjY2LDY5LDEyMDcyNCw2OSwxMTU3Nyw2OSw1MDM2LDY5LDQyMjI0LDY5LDcxODQ2LDY5LDcxODU0LDY5LDY2MTgyLDY5LDExOTgzOSwxMDIsMTE5ODkxLDEwMiwxMTk5NDMsMTAyLDExOTk5NSwxMDIsMTIwMDQ3LDEwMiwxMjAwOTksMTAyLDEyMDE1MSwxMDIsMTIwMjAzLDEwMiwxMjAyNTUsMTAyLDEyMDMwNywxMDIsMTIwMzU5LDEwMiwxMjA0MTEsMTAyLDEyMDQ2MywxMDIsNDM4MjksMTAyLDQyOTA1LDEwMiwzODMsMTAyLDc4MzcsMTAyLDE0MTIsMTAyLDExOTMxNSw3MCw4NDk3LDcwLDExOTgxMyw3MCwxMTk4NjUsNzAsMTE5OTE3LDcwLDEyMDAyMSw3MCwxMjAwNzMsNzAsMTIwMTI1LDcwLDEyMDE3Nyw3MCwxMjAyMjksNzAsMTIwMjgxLDcwLDEyMDMzMyw3MCwxMjAzODUsNzAsMTIwNDM3LDcwLDQyOTA0LDcwLDk4OCw3MCwxMjA3NzgsNzAsNTU1Niw3MCw0MjIwNSw3MCw3MTg3NCw3MCw3MTg0Miw3MCw2NjE4Myw3MCw2NjIxMyw3MCw2Njg1Myw3MCw2NTM1MSwxMDMsODQ1OCwxMDMsMTE5ODQwLDEwMywxMTk4OTIsMTAzLDExOTk0NCwxMDMsMTIwMDQ4LDEwMywxMjAxMDAsMTAzLDEyMDE1MiwxMDMsMTIwMjA0LDEwMywxMjAyNTYsMTAzLDEyMDMwOCwxMDMsMTIwMzYwLDEwMywxMjA0MTIsMTAzLDEyMDQ2NCwxMDMsNjA5LDEwMyw3NTU1LDEwMywzOTcsMTAzLDE0MDksMTAzLDExOTgxNCw3MSwxMTk4NjYsNzEsMTE5OTE4LDcxLDExOTk3MCw3MSwxMjAwMjIsNzEsMTIwMDc0LDcxLDEyMDEyNiw3MSwxMjAxNzgsNzEsMTIwMjMwLDcxLDEyMDI4Miw3MSwxMjAzMzQsNzEsMTIwMzg2LDcxLDEyMDQzOCw3MSwxMjkyLDcxLDUwNTYsNzEsNTEwNyw3MSw0MjE5OCw3MSw2NTM1MiwxMDQsODQ2MiwxMDQsMTE5ODQxLDEwNCwxMTk5NDUsMTA0LDExOTk5NywxMDQsMTIwMDQ5LDEwNCwxMjAxMDEsMTA0LDEyMDE1MywxMDQsMTIwMjA1LDEwNCwxMjAyNTcsMTA0LDEyMDMwOSwxMDQsMTIwMzYxLDEwNCwxMjA0MTMsMTA0LDEyMDQ2NSwxMDQsMTIxMSwxMDQsMTM5MiwxMDQsNTA1OCwxMDQsNjUzMjAsNzIsODQ1OSw3Miw4NDYwLDcyLDg0NjEsNzIsMTE5ODE1LDcyLDExOTg2Nyw3MiwxMTk5MTksNzIsMTIwMDIzLDcyLDEyMDE3OSw3MiwxMjAyMzEsNzIsMTIwMjgzLDcyLDEyMDMzNSw3MiwxMjAzODcsNzIsMTIwNDM5LDcyLDkxOSw3MiwxMjA0OTQsNzIsMTIwNTUyLDcyLDEyMDYxMCw3MiwxMjA2NjgsNzIsMTIwNzI2LDcyLDExNDA2LDcyLDUwNTEsNzIsNTUwMCw3Miw0MjIxNSw3Miw2NjI1NSw3Miw3MzEsMTA1LDkwNzUsMTA1LDY1MzUzLDEwNSw4NTYwLDEwNSw4NTA1LDEwNSw4NTIwLDEwNSwxMTk4NDIsMTA1LDExOTg5NCwxMDUsMTE5OTQ2LDEwNSwxMTk5OTgsMTA1LDEyMDA1MCwxMDUsMTIwMTAyLDEwNSwxMjAxNTQsMTA1LDEyMDIwNiwxMDUsMTIwMjU4LDEwNSwxMjAzMTAsMTA1LDEyMDM2MiwxMDUsMTIwNDE0LDEwNSwxMjA0NjYsMTA1LDEyMDQ4NCwxMDUsNjE4LDEwNSw2MTcsMTA1LDk1MywxMDUsODEyNiwxMDUsODkwLDEwNSwxMjA1MjIsMTA1LDEyMDU4MCwxMDUsMTIwNjM4LDEwNSwxMjA2OTYsMTA1LDEyMDc1NCwxMDUsMTExMCwxMDUsNDI1NjcsMTA1LDEyMzEsMTA1LDQzODkzLDEwNSw1MDI5LDEwNSw3MTg3NSwxMDUsNjUzNTQsMTA2LDg1MjEsMTA2LDExOTg0MywxMDYsMTE5ODk1LDEwNiwxMTk5NDcsMTA2LDExOTk5OSwxMDYsMTIwMDUxLDEwNiwxMjAxMDMsMTA2LDEyMDE1NSwxMDYsMTIwMjA3LDEwNiwxMjAyNTksMTA2LDEyMDMxMSwxMDYsMTIwMzYzLDEwNiwxMjA0MTUsMTA2LDEyMDQ2NywxMDYsMTAxMSwxMDYsMTExMiwxMDYsNjUzMjIsNzQsMTE5ODE3LDc0LDExOTg2OSw3NCwxMTk5MjEsNzQsMTE5OTczLDc0LDEyMDAyNSw3NCwxMjAwNzcsNzQsMTIwMTI5LDc0LDEyMDE4MSw3NCwxMjAyMzMsNzQsMTIwMjg1LDc0LDEyMDMzNyw3NCwxMjAzODksNzQsMTIwNDQxLDc0LDQyOTMwLDc0LDg5NSw3NCwxMDMyLDc0LDUwMzUsNzQsNTI2MSw3NCw0MjIwMSw3NCwxMTk4NDQsMTA3LDExOTg5NiwxMDcsMTE5OTQ4LDEwNywxMjAwMDAsMTA3LDEyMDA1MiwxMDcsMTIwMTA0LDEwNywxMjAxNTYsMTA3LDEyMDIwOCwxMDcsMTIwMjYwLDEwNywxMjAzMTIsMTA3LDEyMDM2NCwxMDcsMTIwNDE2LDEwNywxMjA0NjgsMTA3LDg0OTAsNzUsNjUzMjMsNzUsMTE5ODE4LDc1LDExOTg3MCw3NSwxMTk5MjIsNzUsMTE5OTc0LDc1LDEyMDAyNiw3NSwxMjAwNzgsNzUsMTIwMTMwLDc1LDEyMDE4Miw3NSwxMjAyMzQsNzUsMTIwMjg2LDc1LDEyMDMzOCw3NSwxMjAzOTAsNzUsMTIwNDQyLDc1LDkyMiw3NSwxMjA0OTcsNzUsMTIwNTU1LDc1LDEyMDYxMyw3NSwxMjA2NzEsNzUsMTIwNzI5LDc1LDExNDEyLDc1LDUwOTQsNzUsNTg0NSw3NSw0MjE5OSw3NSw2Njg0MCw3NSwxNDcyLDEwOCw4NzM5LDczLDkyMTMsNzMsNjU1MTIsNzMsMTYzMywxMDgsMTc3Nyw3Myw2NjMzNiwxMDgsMTI1MTI3LDEwOCwxMjA3ODMsNzMsMTIwNzkzLDczLDEyMDgwMyw3MywxMjA4MTMsNzMsMTIwODIzLDczLDEzMDAzMyw3Myw2NTMyMSw3Myw4NTQ0LDczLDg0NjQsNzMsODQ2NSw3MywxMTk4MTYsNzMsMTE5ODY4LDczLDExOTkyMCw3MywxMjAwMjQsNzMsMTIwMTI4LDczLDEyMDE4MCw3MywxMjAyMzIsNzMsMTIwMjg0LDczLDEyMDMzNiw3MywxMjAzODgsNzMsMTIwNDQwLDczLDY1MzU2LDEwOCw4NTcyLDczLDg0NjcsMTA4LDExOTg0NSwxMDgsMTE5ODk3LDEwOCwxMTk5NDksMTA4LDEyMDAwMSwxMDgsMTIwMDUzLDEwOCwxMjAxMDUsNzMsMTIwMTU3LDczLDEyMDIwOSw3MywxMjAyNjEsNzMsMTIwMzEzLDczLDEyMDM2NSw3MywxMjA0MTcsNzMsMTIwNDY5LDczLDQ0OCw3MywxMjA0OTYsNzMsMTIwNTU0LDczLDEyMDYxMiw3MywxMjA2NzAsNzMsMTIwNzI4LDczLDExNDEwLDczLDEwMzAsNzMsMTIxNiw3MywxNDkzLDEwOCwxNTAzLDEwOCwxNTc1LDEwOCwxMjY0NjQsMTA4LDEyNjU5MiwxMDgsNjUxNjYsMTA4LDY1MTY1LDEwOCwxOTk0LDEwOCwxMTU5OSw3Myw1ODI1LDczLDQyMjI2LDczLDkzOTkyLDczLDY2MTg2LDEyNCw2NjMxMywxMjQsMTE5MzM4LDc2LDg1NTYsNzYsODQ2Niw3NiwxMTk4MTksNzYsMTE5ODcxLDc2LDExOTkyMyw3NiwxMjAwMjcsNzYsMTIwMDc5LDc2LDEyMDEzMSw3NiwxMjAxODMsNzYsMTIwMjM1LDc2LDEyMDI4Nyw3NiwxMjAzMzksNzYsMTIwMzkxLDc2LDEyMDQ0Myw3NiwxMTQ3Miw3Niw1MDg2LDc2LDUyOTAsNzYsNDIyMDksNzYsOTM5NzQsNzYsNzE4NDMsNzYsNzE4NTgsNzYsNjY1ODcsNzYsNjY4NTQsNzYsNjUzMjUsNzcsODU1OSw3Nyw4NDk5LDc3LDExOTgyMCw3NywxMTk4NzIsNzcsMTE5OTI0LDc3LDEyMDAyOCw3NywxMjAwODAsNzcsMTIwMTMyLDc3LDEyMDE4NCw3NywxMjAyMzYsNzcsMTIwMjg4LDc3LDEyMDM0MCw3NywxMjAzOTIsNzcsMTIwNDQ0LDc3LDkyNCw3NywxMjA0OTksNzcsMTIwNTU3LDc3LDEyMDYxNSw3NywxMjA2NzMsNzcsMTIwNzMxLDc3LDEwMTgsNzcsMTE0MTYsNzcsNTA0Nyw3Nyw1NjE2LDc3LDU4NDYsNzcsNDIyMDcsNzcsNjYyMjQsNzcsNjYzMjEsNzcsMTE5ODQ3LDExMCwxMTk4OTksMTEwLDExOTk1MSwxMTAsMTIwMDAzLDExMCwxMjAwNTUsMTEwLDEyMDEwNywxMTAsMTIwMTU5LDExMCwxMjAyMTEsMTEwLDEyMDI2MywxMTAsMTIwMzE1LDExMCwxMjAzNjcsMTEwLDEyMDQxOSwxMTAsMTIwNDcxLDExMCwxNDAwLDExMCwxNDA0LDExMCw2NTMyNiw3OCw4NDY5LDc4LDExOTgyMSw3OCwxMTk4NzMsNzgsMTE5OTI1LDc4LDExOTk3Nyw3OCwxMjAwMjksNzgsMTIwMDgxLDc4LDEyMDE4NSw3OCwxMjAyMzcsNzgsMTIwMjg5LDc4LDEyMDM0MSw3OCwxMjAzOTMsNzgsMTIwNDQ1LDc4LDkyNSw3OCwxMjA1MDAsNzgsMTIwNTU4LDc4LDEyMDYxNiw3OCwxMjA2NzQsNzgsMTIwNzMyLDc4LDExNDE4LDc4LDQyMjA4LDc4LDY2ODM1LDc4LDMwNzQsMTExLDMyMDIsMTExLDMzMzAsMTExLDM0NTgsMTExLDI0MDYsMTExLDI2NjIsMTExLDI3OTAsMTExLDMwNDYsMTExLDMxNzQsMTExLDMzMDIsMTExLDM0MzAsMTExLDM2NjQsMTExLDM3OTIsMTExLDQxNjAsMTExLDE2MzcsMTExLDE3ODEsMTExLDY1MzU5LDExMSw4NTAwLDExMSwxMTk4NDgsMTExLDExOTkwMCwxMTEsMTE5OTUyLDExMSwxMjAwNTYsMTExLDEyMDEwOCwxMTEsMTIwMTYwLDExMSwxMjAyMTIsMTExLDEyMDI2NCwxMTEsMTIwMzE2LDExMSwxMjAzNjgsMTExLDEyMDQyMCwxMTEsMTIwNDcyLDExMSw3NDM5LDExMSw3NDQxLDExMSw0MzgzNywxMTEsOTU5LDExMSwxMjA1MjgsMTExLDEyMDU4NiwxMTEsMTIwNjQ0LDExMSwxMjA3MDIsMTExLDEyMDc2MCwxMTEsOTYzLDExMSwxMjA1MzIsMTExLDEyMDU5MCwxMTEsMTIwNjQ4LDExMSwxMjA3MDYsMTExLDEyMDc2NCwxMTEsMTE0MjMsMTExLDQzNTEsMTExLDE0MTMsMTExLDE1MDUsMTExLDE2MDcsMTExLDEyNjUwMCwxMTEsMTI2NTY0LDExMSwxMjY1OTYsMTExLDY1MjU5LDExMSw2NTI2MCwxMTEsNjUyNTgsMTExLDY1MjU3LDExMSwxNzI2LDExMSw2NDQyOCwxMTEsNjQ0MjksMTExLDY0NDI3LDExMSw2NDQyNiwxMTEsMTcyOSwxMTEsNjQ0MjQsMTExLDY0NDI1LDExMSw2NDQyMywxMTEsNjQ0MjIsMTExLDE3NDksMTExLDMzNjAsMTExLDQxMjUsMTExLDY2Nzk0LDExMSw3MTg4MCwxMTEsNzE4OTUsMTExLDY2NjA0LDExMSwxOTg0LDc5LDI1MzQsNzksMjkxOCw3OSwxMjI5NSw3OSw3MDg2NCw3OSw3MTkwNCw3OSwxMjA3ODIsNzksMTIwNzkyLDc5LDEyMDgwMiw3OSwxMjA4MTIsNzksMTIwODIyLDc5LDEzMDAzMiw3OSw2NTMyNyw3OSwxMTk4MjIsNzksMTE5ODc0LDc5LDExOTkyNiw3OSwxMTk5NzgsNzksMTIwMDMwLDc5LDEyMDA4Miw3OSwxMjAxMzQsNzksMTIwMTg2LDc5LDEyMDIzOCw3OSwxMjAyOTAsNzksMTIwMzQyLDc5LDEyMDM5NCw3OSwxMjA0NDYsNzksOTI3LDc5LDEyMDUwMiw3OSwxMjA1NjAsNzksMTIwNjE4LDc5LDEyMDY3Niw3OSwxMjA3MzQsNzksMTE0MjIsNzksMTM2NSw3OSwxMTYwNCw3OSw0ODE2LDc5LDI4NDgsNzksNjY3NTQsNzksNDIyMjcsNzksNzE4NjEsNzksNjYxOTQsNzksNjYyMTksNzksNjY1NjQsNzksNjY4MzgsNzksOTA3NiwxMTIsNjUzNjAsMTEyLDExOTg0OSwxMTIsMTE5OTAxLDExMiwxMTk5NTMsMTEyLDEyMDAwNSwxMTIsMTIwMDU3LDExMiwxMjAxMDksMTEyLDEyMDE2MSwxMTIsMTIwMjEzLDExMiwxMjAyNjUsMTEyLDEyMDMxNywxMTIsMTIwMzY5LDExMiwxMjA0MjEsMTEyLDEyMDQ3MywxMTIsOTYxLDExMiwxMjA1MzAsMTEyLDEyMDU0NCwxMTIsMTIwNTg4LDExMiwxMjA2MDIsMTEyLDEyMDY0NiwxMTIsMTIwNjYwLDExMiwxMjA3MDQsMTEyLDEyMDcxOCwxMTIsMTIwNzYyLDExMiwxMjA3NzYsMTEyLDExNDI3LDExMiw2NTMyOCw4MCw4NDczLDgwLDExOTgyMyw4MCwxMTk4NzUsODAsMTE5OTI3LDgwLDExOTk3OSw4MCwxMjAwMzEsODAsMTIwMDgzLDgwLDEyMDE4Nyw4MCwxMjAyMzksODAsMTIwMjkxLDgwLDEyMDM0Myw4MCwxMjAzOTUsODAsMTIwNDQ3LDgwLDkyOSw4MCwxMjA1MDQsODAsMTIwNTYyLDgwLDEyMDYyMCw4MCwxMjA2NzgsODAsMTIwNzM2LDgwLDExNDI2LDgwLDUwOTAsODAsNTIyOSw4MCw0MjE5Myw4MCw2NjE5Nyw4MCwxMTk4NTAsMTEzLDExOTkwMiwxMTMsMTE5OTU0LDExMywxMjAwMDYsMTEzLDEyMDA1OCwxMTMsMTIwMTEwLDExMywxMjAxNjIsMTEzLDEyMDIxNCwxMTMsMTIwMjY2LDExMywxMjAzMTgsMTEzLDEyMDM3MCwxMTMsMTIwNDIyLDExMywxMjA0NzQsMTEzLDEzMDcsMTEzLDEzNzksMTEzLDEzODIsMTEzLDg0NzQsODEsMTE5ODI0LDgxLDExOTg3Niw4MSwxMTk5MjgsODEsMTE5OTgwLDgxLDEyMDAzMiw4MSwxMjAwODQsODEsMTIwMTg4LDgxLDEyMDI0MCw4MSwxMjAyOTIsODEsMTIwMzQ0LDgxLDEyMDM5Niw4MSwxMjA0NDgsODEsMTE2MDUsODEsMTE5ODUxLDExNCwxMTk5MDMsMTE0LDExOTk1NSwxMTQsMTIwMDA3LDExNCwxMjAwNTksMTE0LDEyMDExMSwxMTQsMTIwMTYzLDExNCwxMjAyMTUsMTE0LDEyMDI2NywxMTQsMTIwMzE5LDExNCwxMjAzNzEsMTE0LDEyMDQyMywxMTQsMTIwNDc1LDExNCw0Mzg0NywxMTQsNDM4NDgsMTE0LDc0NjIsMTE0LDExMzk3LDExNCw0MzkwNSwxMTQsMTE5MzE4LDgyLDg0NzUsODIsODQ3Niw4Miw4NDc3LDgyLDExOTgyNSw4MiwxMTk4NzcsODIsMTE5OTI5LDgyLDEyMDAzMyw4MiwxMjAxODksODIsMTIwMjQxLDgyLDEyMDI5Myw4MiwxMjAzNDUsODIsMTIwMzk3LDgyLDEyMDQ0OSw4Miw0MjIsODIsNTAyNSw4Miw1MDc0LDgyLDY2NzQwLDgyLDU1MTEsODIsNDIyMTEsODIsOTQwMDUsODIsNjUzNjMsMTE1LDExOTg1MiwxMTUsMTE5OTA0LDExNSwxMTk5NTYsMTE1LDEyMDAwOCwxMTUsMTIwMDYwLDExNSwxMjAxMTIsMTE1LDEyMDE2NCwxMTUsMTIwMjE2LDExNSwxMjAyNjgsMTE1LDEyMDMyMCwxMTUsMTIwMzcyLDExNSwxMjA0MjQsMTE1LDEyMDQ3NiwxMTUsNDI4MDEsMTE1LDQ0NSwxMTUsMTEwOSwxMTUsNDM5NDYsMTE1LDcxODczLDExNSw2NjYzMiwxMTUsNjUzMzEsODMsMTE5ODI2LDgzLDExOTg3OCw4MywxMTk5MzAsODMsMTE5OTgyLDgzLDEyMDAzNCw4MywxMjAwODYsODMsMTIwMTM4LDgzLDEyMDE5MCw4MywxMjAyNDIsODMsMTIwMjk0LDgzLDEyMDM0Niw4MywxMjAzOTgsODMsMTIwNDUwLDgzLDEwMjksODMsMTM1OSw4Myw1MDc3LDgzLDUwODIsODMsNDIyMTAsODMsOTQwMTAsODMsNjYxOTgsODMsNjY1OTIsODMsMTE5ODUzLDExNiwxMTk5MDUsMTE2LDExOTk1NywxMTYsMTIwMDA5LDExNiwxMjAwNjEsMTE2LDEyMDExMywxMTYsMTIwMTY1LDExNiwxMjAyMTcsMTE2LDEyMDI2OSwxMTYsMTIwMzIxLDExNiwxMjAzNzMsMTE2LDEyMDQyNSwxMTYsMTIwNDc3LDExNiw4ODY4LDg0LDEwMjAxLDg0LDEyODg3Miw4NCw2NTMzMiw4NCwxMTk4MjcsODQsMTE5ODc5LDg0LDExOTkzMSw4NCwxMTk5ODMsODQsMTIwMDM1LDg0LDEyMDA4Nyw4NCwxMjAxMzksODQsMTIwMTkxLDg0LDEyMDI0Myw4NCwxMjAyOTUsODQsMTIwMzQ3LDg0LDEyMDM5OSw4NCwxMjA0NTEsODQsOTMyLDg0LDEyMDUwNyw4NCwxMjA1NjUsODQsMTIwNjIzLDg0LDEyMDY4MSw4NCwxMjA3MzksODQsMTE0MzAsODQsNTAyNiw4NCw0MjE5Niw4NCw5Mzk2Miw4NCw3MTg2OCw4NCw2NjE5OSw4NCw2NjIyNSw4NCw2NjMyNSw4NCwxMTk4NTQsMTE3LDExOTkwNiwxMTcsMTE5OTU4LDExNywxMjAwMTAsMTE3LDEyMDA2MiwxMTcsMTIwMTE0LDExNywxMjAxNjYsMTE3LDEyMDIxOCwxMTcsMTIwMjcwLDExNywxMjAzMjIsMTE3LDEyMDM3NCwxMTcsMTIwNDI2LDExNywxMjA0NzgsMTE3LDQyOTExLDExNyw3NDUyLDExNyw0Mzg1NCwxMTcsNDM4NTgsMTE3LDY1MSwxMTcsOTY1LDExNywxMjA1MzQsMTE3LDEyMDU5MiwxMTcsMTIwNjUwLDExNywxMjA3MDgsMTE3LDEyMDc2NiwxMTcsMTQwNSwxMTcsNjY4MDYsMTE3LDcxODk2LDExNyw4NzQ2LDg1LDg4OTksODUsMTE5ODI4LDg1LDExOTg4MCw4NSwxMTk5MzIsODUsMTE5OTg0LDg1LDEyMDAzNiw4NSwxMjAwODgsODUsMTIwMTQwLDg1LDEyMDE5Miw4NSwxMjAyNDQsODUsMTIwMjk2LDg1LDEyMDM0OCw4NSwxMjA0MDAsODUsMTIwNDUyLDg1LDEzNTcsODUsNDYwOCw4NSw2Njc2Niw4NSw1MTk2LDg1LDQyMjI4LDg1LDk0MDE4LDg1LDcxODY0LDg1LDg3NDQsMTE4LDg4OTcsMTE4LDY1MzY2LDExOCw4NTY0LDExOCwxMTk4NTUsMTE4LDExOTkwNywxMTgsMTE5OTU5LDExOCwxMjAwMTEsMTE4LDEyMDA2MywxMTgsMTIwMTE1LDExOCwxMjAxNjcsMTE4LDEyMDIxOSwxMTgsMTIwMjcxLDExOCwxMjAzMjMsMTE4LDEyMDM3NSwxMTgsMTIwNDI3LDExOCwxMjA0NzksMTE4LDc0NTYsMTE4LDk1NywxMTgsMTIwNTI2LDExOCwxMjA1ODQsMTE4LDEyMDY0MiwxMTgsMTIwNzAwLDExOCwxMjA3NTgsMTE4LDExNDEsMTE4LDE0OTYsMTE4LDcxNDMwLDExOCw0Mzk0NSwxMTgsNzE4NzIsMTE4LDExOTMwOSw4NiwxNjM5LDg2LDE3ODMsODYsODU0OCw4NiwxMTk4MjksODYsMTE5ODgxLDg2LDExOTkzMyw4NiwxMTk5ODUsODYsMTIwMDM3LDg2LDEyMDA4OSw4NiwxMjAxNDEsODYsMTIwMTkzLDg2LDEyMDI0NSw4NiwxMjAyOTcsODYsMTIwMzQ5LDg2LDEyMDQwMSw4NiwxMjA0NTMsODYsMTE0MCw4NiwxMTU3Niw4Niw1MDgxLDg2LDUxNjcsODYsNDI3MTksODYsNDIyMTQsODYsOTM5NjAsODYsNzE4NDAsODYsNjY4NDUsODYsNjIzLDExOSwxMTk4NTYsMTE5LDExOTkwOCwxMTksMTE5OTYwLDExOSwxMjAwMTIsMTE5LDEyMDA2NCwxMTksMTIwMTE2LDExOSwxMjAxNjgsMTE5LDEyMDIyMCwxMTksMTIwMjcyLDExOSwxMjAzMjQsMTE5LDEyMDM3NiwxMTksMTIwNDI4LDExOSwxMjA0ODAsMTE5LDc0NTcsMTE5LDExMjEsMTE5LDEzMDksMTE5LDEzNzcsMTE5LDcxNDM0LDExOSw3MTQzOCwxMTksNzE0MzksMTE5LDQzOTA3LDExOSw3MTkxOSw4Nyw3MTkxMCw4NywxMTk4MzAsODcsMTE5ODgyLDg3LDExOTkzNCw4NywxMTk5ODYsODcsMTIwMDM4LDg3LDEyMDA5MCw4NywxMjAxNDIsODcsMTIwMTk0LDg3LDEyMDI0Niw4NywxMjAyOTgsODcsMTIwMzUwLDg3LDEyMDQwMiw4NywxMjA0NTQsODcsMTMwOCw4Nyw1MDQzLDg3LDUwNzYsODcsNDIyMTgsODcsNTc0MiwxMjAsMTA1MzksMTIwLDEwNTQwLDEyMCwxMDc5OSwxMjAsNjUzNjgsMTIwLDg1NjksMTIwLDExOTg1NywxMjAsMTE5OTA5LDEyMCwxMTk5NjEsMTIwLDEyMDAxMywxMjAsMTIwMDY1LDEyMCwxMjAxMTcsMTIwLDEyMDE2OSwxMjAsMTIwMjIxLDEyMCwxMjAyNzMsMTIwLDEyMDMyNSwxMjAsMTIwMzc3LDEyMCwxMjA0MjksMTIwLDEyMDQ4MSwxMjAsNTQ0MSwxMjAsNTUwMSwxMjAsNTc0MSw4OCw5NTg3LDg4LDY2MzM4LDg4LDcxOTE2LDg4LDY1MzM2LDg4LDg1NTMsODgsMTE5ODMxLDg4LDExOTg4Myw4OCwxMTk5MzUsODgsMTE5OTg3LDg4LDEyMDAzOSw4OCwxMjAwOTEsODgsMTIwMTQzLDg4LDEyMDE5NSw4OCwxMjAyNDcsODgsMTIwMjk5LDg4LDEyMDM1MSw4OCwxMjA0MDMsODgsMTIwNDU1LDg4LDQyOTMxLDg4LDkzNSw4OCwxMjA1MTAsODgsMTIwNTY4LDg4LDEyMDYyNiw4OCwxMjA2ODQsODgsMTIwNzQyLDg4LDExNDM2LDg4LDExNjEzLDg4LDU4MTUsODgsNDIyMTksODgsNjYxOTIsODgsNjYyMjgsODgsNjYzMjcsODgsNjY4NTUsODgsNjExLDEyMSw3NTY0LDEyMSw2NTM2OSwxMjEsMTE5ODU4LDEyMSwxMTk5MTAsMTIxLDExOTk2MiwxMjEsMTIwMDE0LDEyMSwxMjAwNjYsMTIxLDEyMDExOCwxMjEsMTIwMTcwLDEyMSwxMjAyMjIsMTIxLDEyMDI3NCwxMjEsMTIwMzI2LDEyMSwxMjAzNzgsMTIxLDEyMDQzMCwxMjEsMTIwNDgyLDEyMSw2NTUsMTIxLDc5MzUsMTIxLDQzODY2LDEyMSw5NDcsMTIxLDg1MDksMTIxLDEyMDUxNiwxMjEsMTIwNTc0LDEyMSwxMjA2MzIsMTIxLDEyMDY5MCwxMjEsMTIwNzQ4LDEyMSwxMTk5LDEyMSw0MzI3LDEyMSw3MTkwMCwxMjEsNjUzMzcsODksMTE5ODMyLDg5LDExOTg4NCw4OSwxMTk5MzYsODksMTE5OTg4LDg5LDEyMDA0MCw4OSwxMjAwOTIsODksMTIwMTQ0LDg5LDEyMDE5Niw4OSwxMjAyNDgsODksMTIwMzAwLDg5LDEyMDM1Miw4OSwxMjA0MDQsODksMTIwNDU2LDg5LDkzMyw4OSw5NzgsODksMTIwNTA4LDg5LDEyMDU2Niw4OSwxMjA2MjQsODksMTIwNjgyLDg5LDEyMDc0MCw4OSwxMTQzMiw4OSwxMTk4LDg5LDUwMzMsODksNTA1Myw4OSw0MjIyMCw4OSw5NDAxOSw4OSw3MTg0NCw4OSw2NjIyNiw4OSwxMTk4NTksMTIyLDExOTkxMSwxMjIsMTE5OTYzLDEyMiwxMjAwMTUsMTIyLDEyMDA2NywxMjIsMTIwMTE5LDEyMiwxMjAxNzEsMTIyLDEyMDIyMywxMjIsMTIwMjc1LDEyMiwxMjAzMjcsMTIyLDEyMDM3OSwxMjIsMTIwNDMxLDEyMiwxMjA0ODMsMTIyLDc0NTgsMTIyLDQzOTIzLDEyMiw3MTg3NiwxMjIsNjYyOTMsOTAsNzE5MDksOTAsNjUzMzgsOTAsODQ4NCw5MCw4NDg4LDkwLDExOTgzMyw5MCwxMTk4ODUsOTAsMTE5OTM3LDkwLDExOTk4OSw5MCwxMjAwNDEsOTAsMTIwMTk3LDkwLDEyMDI0OSw5MCwxMjAzMDEsOTAsMTIwMzUzLDkwLDEyMDQwNSw5MCwxMjA0NTcsOTAsOTE4LDkwLDEyMDQ5Myw5MCwxMjA1NTEsOTAsMTIwNjA5LDkwLDEyMDY2Nyw5MCwxMjA3MjUsOTAsNTA1OSw5MCw0MjIwNCw5MCw3MTg0OSw5MCw2NTI4MiwzNCw2NTI4NCwzNiw2NTI4NSwzNyw2NTI4NiwzOCw2NTI5MCw0Miw2NTI5MSw0Myw2NTI5NCw0Niw2NTI5NSw0Nyw2NTI5Niw0OCw2NTI5Nyw0OSw2NTI5OCw1MCw2NTI5OSw1MSw2NTMwMCw1Miw2NTMwMSw1Myw2NTMwMiw1NCw2NTMwMyw1NSw2NTMwNCw1Niw2NTMwNSw1Nyw2NTMwOCw2MCw2NTMwOSw2MSw2NTMxMCw2Miw2NTMxMiw2NCw2NTMxNiw2OCw2NTMxOCw3MCw2NTMxOSw3MSw2NTMyNCw3Niw2NTMyOSw4MSw2NTMzMCw4Miw2NTMzMyw4NSw2NTMzNCw4Niw2NTMzNSw4Nyw2NTM0Myw5NSw2NTM0Niw5OCw2NTM0OCwxMDAsNjUzNTAsMTAyLDY1MzU1LDEwNyw2NTM1NywxMDksNjUzNTgsMTEwLDY1MzYxLDExMyw2NTM2MiwxMTQsNjUzNjQsMTE2LDY1MzY1LDExNyw2NTM2NywxMTksNjUzNzAsMTIyLDY1MzcxLDEyMyw2NTM3MywxMjVdLCJfZGVmYXVsdCI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJjcyI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZGUiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImVzIjpbODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImZyIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODI0NSw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sIml0IjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJqYSI6WzgyMTEsNDUsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1MjkyLDQ0LDY1MzA3LDU5XSwia28iOls4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInBsIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInB0LUJSIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInFwcy1wbG9jIjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInJ1IjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywzMDUsMTA1LDkyMSw3MywxMDA5LDExMiwyMTUsMTIwLDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwidHIiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiemgtaGFucyI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4OCw0MCw2NTI4OSw0MV0sInpoLWhhbnQiOls4MjExLDQ1LDY1Mzc0LDEyNiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUzMDcsNTldfScpKSksWS5jYWNoZT1uZXcgY2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5jb21wdXRlRm49ZSx0aGlzLmxhc3RDYWNoZT12b2lkIDAsdGhpcy5sYXN0QXJnS2V5PXZvaWQgMH1nZXQoZSl7Y29uc3QgdD1KU09OLnN0cmluZ2lmeShlKTtyZXR1cm4gdGhpcy5sYXN0QXJnS2V5IT09dCYmKHRoaXMubGFzdEFyZ0tleT10LHRoaXMubGFzdENhY2hlPXRoaXMuY29tcHV0ZUZuKGUpKSx0aGlzLmxhc3RDYWNoZX19KChlPT57ZnVuY3Rpb24gdChlKXtjb25zdCB0PW5ldyBNYXA7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKz0yKXQuc2V0KGVbbl0sZVtuKzFdKTtyZXR1cm4gdH1mdW5jdGlvbiBuKGUsdCl7aWYoIWUpcmV0dXJuIHQ7Y29uc3Qgbj1uZXcgTWFwO2Zvcihjb25zdFtyLGldb2YgZSl0LmhhcyhyKSYmbi5zZXQocixpKTtyZXR1cm4gbn1jb25zdCByPUQuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YS5nZXRWYWx1ZSgpO2xldCBpLGE9ZS5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSYmZSBpbiByKSk7MD09PWEubGVuZ3RoJiYoYT1bIl9kZWZhdWx0Il0pO2Zvcihjb25zdCBlIG9mIGEpe2k9bihpLHQocltlXSkpfWNvbnN0IG89ZnVuY3Rpb24oZSx0KXtjb25zdCBuPW5ldyBNYXAoZSk7Zm9yKGNvbnN0W2Uscl1vZiB0KW4uc2V0KGUscik7cmV0dXJuIG59KHQoci5fY29tbW9uKSxpKTtyZXR1cm4gbmV3IFkobyl9KSksWS5fbG9jYWxlcz1uZXcgQigoKCk9Pk9iamVjdC5rZXlzKFkuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YS5nZXRWYWx1ZSgpKS5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSkpKSk7Y2xhc3MgUXtzdGF0aWMgZ2V0UmF3RGF0YSgpe3JldHVybiBKU09OLnBhcnNlKCJbOSwxMCwxMSwxMiwxMywzMiwxMjcsMTYwLDE3Myw4NDcsMTU2NCw0NDQ3LDQ0NDgsNjA2OCw2MDY5LDYxNTUsNjE1Niw2MTU3LDYxNTgsNzM1NSw3MzU2LDgxOTIsODE5Myw4MTk0LDgxOTUsODE5Niw4MTk3LDgxOTgsODE5OSw4MjAwLDgyMDEsODIwMiw4MjAzLDgyMDQsODIwNSw4MjA2LDgyMDcsODIzNCw4MjM1LDgyMzYsODIzNyw4MjM4LDgyMzksODI4Nyw4Mjg4LDgyODksODI5MCw4MjkxLDgyOTIsODI5Myw4Mjk0LDgyOTUsODI5Niw4Mjk3LDgyOTgsODI5OSw4MzAwLDgzMDEsODMwMiw4MzAzLDEwMjQwLDEyMjg4LDEyNjQ0LDY1MDI0LDY1MDI1LDY1MDI2LDY1MDI3LDY1MDI4LDY1MDI5LDY1MDMwLDY1MDMxLDY1MDMyLDY1MDMzLDY1MDM0LDY1MDM1LDY1MDM2LDY1MDM3LDY1MDM4LDY1MDM5LDY1Mjc5LDY1NDQwLDY1NTIwLDY1NTIxLDY1NTIyLDY1NTIzLDY1NTI0LDY1NTI1LDY1NTI2LDY1NTI3LDY1NTI4LDY1NTMyLDc4ODQ0LDExOTE1NSwxMTkxNTYsMTE5MTU3LDExOTE1OCwxMTkxNTksMTE5MTYwLDExOTE2MSwxMTkxNjIsOTE3NTA0LDkxNzUwNSw5MTc1MDYsOTE3NTA3LDkxNzUwOCw5MTc1MDksOTE3NTEwLDkxNzUxMSw5MTc1MTIsOTE3NTEzLDkxNzUxNCw5MTc1MTUsOTE3NTE2LDkxNzUxNyw5MTc1MTgsOTE3NTE5LDkxNzUyMCw5MTc1MjEsOTE3NTIyLDkxNzUyMyw5MTc1MjQsOTE3NTI1LDkxNzUyNiw5MTc1MjcsOTE3NTI4LDkxNzUyOSw5MTc1MzAsOTE3NTMxLDkxNzUzMiw5MTc1MzMsOTE3NTM0LDkxNzUzNSw5MTc1MzYsOTE3NTM3LDkxNzUzOCw5MTc1MzksOTE3NTQwLDkxNzU0MSw5MTc1NDIsOTE3NTQzLDkxNzU0NCw5MTc1NDUsOTE3NTQ2LDkxNzU0Nyw5MTc1NDgsOTE3NTQ5LDkxNzU1MCw5MTc1NTEsOTE3NTUyLDkxNzU1Myw5MTc1NTQsOTE3NTU1LDkxNzU1Niw5MTc1NTcsOTE3NTU4LDkxNzU1OSw5MTc1NjAsOTE3NTYxLDkxNzU2Miw5MTc1NjMsOTE3NTY0LDkxNzU2NSw5MTc1NjYsOTE3NTY3LDkxNzU2OCw5MTc1NjksOTE3NTcwLDkxNzU3MSw5MTc1NzIsOTE3NTczLDkxNzU3NCw5MTc1NzUsOTE3NTc2LDkxNzU3Nyw5MTc1NzgsOTE3NTc5LDkxNzU4MCw5MTc1ODEsOTE3NTgyLDkxNzU4Myw5MTc1ODQsOTE3NTg1LDkxNzU4Niw5MTc1ODcsOTE3NTg4LDkxNzU4OSw5MTc1OTAsOTE3NTkxLDkxNzU5Miw5MTc1OTMsOTE3NTk0LDkxNzU5NSw5MTc1OTYsOTE3NTk3LDkxNzU5OCw5MTc1OTksOTE3NjAwLDkxNzYwMSw5MTc2MDIsOTE3NjAzLDkxNzYwNCw5MTc2MDUsOTE3NjA2LDkxNzYwNyw5MTc2MDgsOTE3NjA5LDkxNzYxMCw5MTc2MTEsOTE3NjEyLDkxNzYxMyw5MTc2MTQsOTE3NjE1LDkxNzYxNiw5MTc2MTcsOTE3NjE4LDkxNzYxOSw5MTc2MjAsOTE3NjIxLDkxNzYyMiw5MTc2MjMsOTE3NjI0LDkxNzYyNSw5MTc2MjYsOTE3NjI3LDkxNzYyOCw5MTc2MjksOTE3NjMwLDkxNzYzMSw5MTc3NjAsOTE3NzYxLDkxNzc2Miw5MTc3NjMsOTE3NzY0LDkxNzc2NSw5MTc3NjYsOTE3NzY3LDkxNzc2OCw5MTc3NjksOTE3NzcwLDkxNzc3MSw5MTc3NzIsOTE3NzczLDkxNzc3NCw5MTc3NzUsOTE3Nzc2LDkxNzc3Nyw5MTc3NzgsOTE3Nzc5LDkxNzc4MCw5MTc3ODEsOTE3NzgyLDkxNzc4Myw5MTc3ODQsOTE3Nzg1LDkxNzc4Niw5MTc3ODcsOTE3Nzg4LDkxNzc4OSw5MTc3OTAsOTE3NzkxLDkxNzc5Miw5MTc3OTMsOTE3Nzk0LDkxNzc5NSw5MTc3OTYsOTE3Nzk3LDkxNzc5OCw5MTc3OTksOTE3ODAwLDkxNzgwMSw5MTc4MDIsOTE3ODAzLDkxNzgwNCw5MTc4MDUsOTE3ODA2LDkxNzgwNyw5MTc4MDgsOTE3ODA5LDkxNzgxMCw5MTc4MTEsOTE3ODEyLDkxNzgxMyw5MTc4MTQsOTE3ODE1LDkxNzgxNiw5MTc4MTcsOTE3ODE4LDkxNzgxOSw5MTc4MjAsOTE3ODIxLDkxNzgyMiw5MTc4MjMsOTE3ODI0LDkxNzgyNSw5MTc4MjYsOTE3ODI3LDkxNzgyOCw5MTc4MjksOTE3ODMwLDkxNzgzMSw5MTc4MzIsOTE3ODMzLDkxNzgzNCw5MTc4MzUsOTE3ODM2LDkxNzgzNyw5MTc4MzgsOTE3ODM5LDkxNzg0MCw5MTc4NDEsOTE3ODQyLDkxNzg0Myw5MTc4NDQsOTE3ODQ1LDkxNzg0Niw5MTc4NDcsOTE3ODQ4LDkxNzg0OSw5MTc4NTAsOTE3ODUxLDkxNzg1Miw5MTc4NTMsOTE3ODU0LDkxNzg1NSw5MTc4NTYsOTE3ODU3LDkxNzg1OCw5MTc4NTksOTE3ODYwLDkxNzg2MSw5MTc4NjIsOTE3ODYzLDkxNzg2NCw5MTc4NjUsOTE3ODY2LDkxNzg2Nyw5MTc4NjgsOTE3ODY5LDkxNzg3MCw5MTc4NzEsOTE3ODcyLDkxNzg3Myw5MTc4NzQsOTE3ODc1LDkxNzg3Niw5MTc4NzcsOTE3ODc4LDkxNzg3OSw5MTc4ODAsOTE3ODgxLDkxNzg4Miw5MTc4ODMsOTE3ODg0LDkxNzg4NSw5MTc4ODYsOTE3ODg3LDkxNzg4OCw5MTc4ODksOTE3ODkwLDkxNzg5MSw5MTc4OTIsOTE3ODkzLDkxNzg5NCw5MTc4OTUsOTE3ODk2LDkxNzg5Nyw5MTc4OTgsOTE3ODk5LDkxNzkwMCw5MTc5MDEsOTE3OTAyLDkxNzkwMyw5MTc5MDQsOTE3OTA1LDkxNzkwNiw5MTc5MDcsOTE3OTA4LDkxNzkwOSw5MTc5MTAsOTE3OTExLDkxNzkxMiw5MTc5MTMsOTE3OTE0LDkxNzkxNSw5MTc5MTYsOTE3OTE3LDkxNzkxOCw5MTc5MTksOTE3OTIwLDkxNzkyMSw5MTc5MjIsOTE3OTIzLDkxNzkyNCw5MTc5MjUsOTE3OTI2LDkxNzkyNyw5MTc5MjgsOTE3OTI5LDkxNzkzMCw5MTc5MzEsOTE3OTMyLDkxNzkzMyw5MTc5MzQsOTE3OTM1LDkxNzkzNiw5MTc5MzcsOTE3OTM4LDkxNzkzOSw5MTc5NDAsOTE3OTQxLDkxNzk0Miw5MTc5NDMsOTE3OTQ0LDkxNzk0NSw5MTc5NDYsOTE3OTQ3LDkxNzk0OCw5MTc5NDksOTE3OTUwLDkxNzk1MSw5MTc5NTIsOTE3OTUzLDkxNzk1NCw5MTc5NTUsOTE3OTU2LDkxNzk1Nyw5MTc5NTgsOTE3OTU5LDkxNzk2MCw5MTc5NjEsOTE3OTYyLDkxNzk2Myw5MTc5NjQsOTE3OTY1LDkxNzk2Niw5MTc5NjcsOTE3OTY4LDkxNzk2OSw5MTc5NzAsOTE3OTcxLDkxNzk3Miw5MTc5NzMsOTE3OTc0LDkxNzk3NSw5MTc5NzYsOTE3OTc3LDkxNzk3OCw5MTc5NzksOTE3OTgwLDkxNzk4MSw5MTc5ODIsOTE3OTgzLDkxNzk4NCw5MTc5ODUsOTE3OTg2LDkxNzk4Nyw5MTc5ODgsOTE3OTg5LDkxNzk5MCw5MTc5OTEsOTE3OTkyLDkxNzk5Myw5MTc5OTQsOTE3OTk1LDkxNzk5Niw5MTc5OTcsOTE3OTk4LDkxNzk5OV0iKX1zdGF0aWMgZ2V0RGF0YSgpe3JldHVybiB0aGlzLl9kYXRhfHwodGhpcy5fZGF0YT1uZXcgU2V0KFEuZ2V0UmF3RGF0YSgpKSksdGhpcy5fZGF0YX1zdGF0aWMgaXNJbnZpc2libGVDaGFyYWN0ZXIoZSl7cmV0dXJuIFEuZ2V0RGF0YSgpLmhhcyhlKX1zdGF0aWMgZ2V0IGNvZGVQb2ludHMoKXtyZXR1cm4gUS5nZXREYXRhKCl9fVEuX2RhdGE9dm9pZCAwO2NsYXNzIFp7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy5tZXRob2Q9bix0aGlzLmFyZ3M9cix0aGlzLnR5cGU9MH19Y2xhc3MgZWV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy52c1dvcmtlcj1lLHRoaXMuc2VxPXQsdGhpcy5yZXM9bix0aGlzLmVycj1yLHRoaXMudHlwZT0xfX1jbGFzcyB0ZXtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50TmFtZT1uLHRoaXMuYXJnPXIsdGhpcy50eXBlPTJ9fWNsYXNzIG5le2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50PW4sdGhpcy50eXBlPTN9fWNsYXNzIHJle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy50eXBlPTR9fWNsYXNzIGlle2NvbnN0cnVjdG9yKGUpe3RoaXMuX3dvcmtlcklkPS0xLHRoaXMuX2hhbmRsZXI9ZSx0aGlzLl9sYXN0U2VudFJlcT0wLHRoaXMuX3BlbmRpbmdSZXBsaWVzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fcGVuZGluZ0VtaXR0ZXJzPW5ldyBNYXAsdGhpcy5fcGVuZGluZ0V2ZW50cz1uZXcgTWFwfXNldFdvcmtlcklkKGUpe3RoaXMuX3dvcmtlcklkPWV9c2VuZE1lc3NhZ2UoZSx0KXtjb25zdCBuPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKTtyZXR1cm4gbmV3IFByb21pc2UoKChyLGkpPT57dGhpcy5fcGVuZGluZ1JlcGxpZXNbbl09e3Jlc29sdmU6cixyZWplY3Q6aX0sdGhpcy5fc2VuZChuZXcgWih0aGlzLl93b3JrZXJJZCxuLGUsdCkpfSkpfWxpc3RlbihlLHQpe2xldCBuPW51bGw7Y29uc3Qgcj1uZXcgUCh7b25GaXJzdExpc3RlbmVyQWRkOigpPT57bj1TdHJpbmcoKyt0aGlzLl9sYXN0U2VudFJlcSksdGhpcy5fcGVuZGluZ0VtaXR0ZXJzLnNldChuLHIpLHRoaXMuX3NlbmQobmV3IHRlKHRoaXMuX3dvcmtlcklkLG4sZSx0KSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlOigpPT57dGhpcy5fcGVuZGluZ0VtaXR0ZXJzLmRlbGV0ZShuKSx0aGlzLl9zZW5kKG5ldyByZSh0aGlzLl93b3JrZXJJZCxuKSksbj1udWxsfX0pO3JldHVybiByLmV2ZW50fWhhbmRsZU1lc3NhZ2UoZSl7ZSYmZS52c1dvcmtlciYmKC0xIT09dGhpcy5fd29ya2VySWQmJmUudnNXb3JrZXIhPT10aGlzLl93b3JrZXJJZHx8dGhpcy5faGFuZGxlTWVzc2FnZShlKSl9X2hhbmRsZU1lc3NhZ2UoZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSAxOnJldHVybiB0aGlzLl9oYW5kbGVSZXBseU1lc3NhZ2UoZSk7Y2FzZSAwOnJldHVybiB0aGlzLl9oYW5kbGVSZXF1ZXN0TWVzc2FnZShlKTtjYXNlIDI6cmV0dXJuIHRoaXMuX2hhbmRsZVN1YnNjcmliZUV2ZW50TWVzc2FnZShlKTtjYXNlIDM6cmV0dXJuIHRoaXMuX2hhbmRsZUV2ZW50TWVzc2FnZShlKTtjYXNlIDQ6cmV0dXJuIHRoaXMuX2hhbmRsZVVuc3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpfX1faGFuZGxlUmVwbHlNZXNzYWdlKGUpe2lmKCF0aGlzLl9wZW5kaW5nUmVwbGllc1tlLnNlcV0pcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJHb3QgcmVwbHkgdG8gdW5rbm93biBzZXEiKTtsZXQgdD10aGlzLl9wZW5kaW5nUmVwbGllc1tlLnNlcV07aWYoZGVsZXRlIHRoaXMuX3BlbmRpbmdSZXBsaWVzW2Uuc2VxXSxlLmVycil7bGV0IG49ZS5lcnI7cmV0dXJuIGUuZXJyLiRpc0Vycm9yJiYobj1uZXcgRXJyb3Isbi5uYW1lPWUuZXJyLm5hbWUsbi5tZXNzYWdlPWUuZXJyLm1lc3NhZ2Usbi5zdGFjaz1lLmVyci5zdGFjayksdm9pZCB0LnJlamVjdChuKX10LnJlc29sdmUoZS5yZXMpfV9oYW5kbGVSZXF1ZXN0TWVzc2FnZShlKXtsZXQgdD1lLnJlcTt0aGlzLl9oYW5kbGVyLmhhbmRsZU1lc3NhZ2UoZS5tZXRob2QsZS5hcmdzKS50aGVuKChlPT57dGhpcy5fc2VuZChuZXcgZWUodGhpcy5fd29ya2VySWQsdCxlLHZvaWQgMCkpfSksKGU9PntlLmRldGFpbCBpbnN0YW5jZW9mIEVycm9yJiYoZS5kZXRhaWw9cihlLmRldGFpbCkpLHRoaXMuX3NlbmQobmV3IGVlKHRoaXMuX3dvcmtlcklkLHQsdm9pZCAwLHIoZSkpKX0pKX1faGFuZGxlU3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpe2NvbnN0IHQ9ZS5yZXEsbj10aGlzLl9oYW5kbGVyLmhhbmRsZUV2ZW50KGUuZXZlbnROYW1lLGUuYXJnKSgoZT0+e3RoaXMuX3NlbmQobmV3IG5lKHRoaXMuX3dvcmtlcklkLHQsZSkpfSkpO3RoaXMuX3BlbmRpbmdFdmVudHMuc2V0KHQsbil9X2hhbmRsZUV2ZW50TWVzc2FnZShlKXt0aGlzLl9wZW5kaW5nRW1pdHRlcnMuaGFzKGUucmVxKT90aGlzLl9wZW5kaW5nRW1pdHRlcnMuZ2V0KGUucmVxKS5maXJlKGUuZXZlbnQpOmNvbnNvbGUud2FybigiR290IGV2ZW50IGZvciB1bmtub3duIHJlcSIpfV9oYW5kbGVVbnN1YnNjcmliZUV2ZW50TWVzc2FnZShlKXt0aGlzLl9wZW5kaW5nRXZlbnRzLmhhcyhlLnJlcSk/KHRoaXMuX3BlbmRpbmdFdmVudHMuZ2V0KGUucmVxKS5kaXNwb3NlKCksdGhpcy5fcGVuZGluZ0V2ZW50cy5kZWxldGUoZS5yZXEpKTpjb25zb2xlLndhcm4oIkdvdCB1bnN1YnNjcmliZSBmb3IgdW5rbm93biByZXEiKX1fc2VuZChlKXtsZXQgdD1bXTtpZigwPT09ZS50eXBlKWZvcihsZXQgbj0wO248ZS5hcmdzLmxlbmd0aDtuKyspZS5hcmdzW25daW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmdC5wdXNoKGUuYXJnc1tuXSk7ZWxzZSAxPT09ZS50eXBlJiZlLnJlcyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZ0LnB1c2goZS5yZXMpO3RoaXMuX2hhbmRsZXIuc2VuZE1lc3NhZ2UoZSx0KX19ZnVuY3Rpb24gYWUoZSl7cmV0dXJuIm8iPT09ZVswXSYmIm4iPT09ZVsxXSYmaihlLmNoYXJDb2RlQXQoMikpfWZ1bmN0aW9uIG9lKGUpe3JldHVybi9eb25EeW5hbWljLy50ZXN0KGUpJiZqKGUuY2hhckNvZGVBdCg5KSl9Y2xhc3Mgc2V7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl9yZXF1ZXN0SGFuZGxlckZhY3Rvcnk9dCx0aGlzLl9yZXF1ZXN0SGFuZGxlcj1udWxsLHRoaXMuX3Byb3RvY29sPW5ldyBpZSh7c2VuZE1lc3NhZ2U6KHQsbik9PntlKHQsbil9LGhhbmRsZU1lc3NhZ2U6KGUsdCk9PnRoaXMuX2hhbmRsZU1lc3NhZ2UoZSx0KSxoYW5kbGVFdmVudDooZSx0KT0+dGhpcy5faGFuZGxlRXZlbnQoZSx0KX0pfW9ubWVzc2FnZShlKXt0aGlzLl9wcm90b2NvbC5oYW5kbGVNZXNzYWdlKGUpfV9oYW5kbGVNZXNzYWdlKGUsdCl7aWYoIiRpbml0aWFsaXplIj09PWUpcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZSh0WzBdLHRbMV0sdFsyXSx0WzNdKTtpZighdGhpcy5fcmVxdWVzdEhhbmRsZXJ8fCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9yZXF1ZXN0SGFuZGxlcltlXSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIG9yIG1ldGhvZDogIitlKSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fcmVxdWVzdEhhbmRsZXJbZV0uYXBwbHkodGhpcy5fcmVxdWVzdEhhbmRsZXIsdCkpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19X2hhbmRsZUV2ZW50KGUsdCl7aWYoIXRoaXMuX3JlcXVlc3RIYW5kbGVyKXRocm93IG5ldyBFcnJvcigiTWlzc2luZyByZXF1ZXN0SGFuZGxlciIpO2lmKG9lKGUpKXtjb25zdCBuPXRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdLmNhbGwodGhpcy5fcmVxdWVzdEhhbmRsZXIsdCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGR5bmFtaWMgZXZlbnQgJHtlfSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIG59aWYoYWUoZSkpe2NvbnN0IHQ9dGhpcy5fcmVxdWVzdEhhbmRsZXJbZV07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGV2ZW50ICR7ZX0gb24gcmVxdWVzdCBoYW5kbGVyLmApO3JldHVybiB0fXRocm93IG5ldyBFcnJvcihgTWFsZm9ybWVkIGV2ZW50IG5hbWUgJHtlfWApfWluaXRpYWxpemUoZSx0LG4scil7dGhpcy5fcHJvdG9jb2wuc2V0V29ya2VySWQoZSk7Y29uc3QgaT1mdW5jdGlvbihlLHQsbil7Y29uc3Qgcj1lPT5mdW5jdGlvbigpe2NvbnN0IG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiB0KGUsbil9LGk9ZT0+ZnVuY3Rpb24odCl7cmV0dXJuIG4oZSx0KX07bGV0IGE9e307Zm9yKGNvbnN0IHQgb2YgZSlvZSh0KT9hW3RdPWkodCk6YWUodCk/YVt0XT1uKHQsdm9pZCAwKTphW3RdPXIodCk7cmV0dXJuIGF9KHIsKChlLHQpPT50aGlzLl9wcm90b2NvbC5zZW5kTWVzc2FnZShlLHQpKSwoKGUsdCk9PnRoaXMuX3Byb3RvY29sLmxpc3RlbihlLHQpKSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT8odGhpcy5fcmVxdWVzdEhhbmRsZXI9dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5KGkpLFByb21pc2UucmVzb2x2ZShxKHRoaXMuX3JlcXVlc3RIYW5kbGVyKSkpOih0JiYodm9pZCAwIT09dC5iYXNlVXJsJiZkZWxldGUgdC5iYXNlVXJsLHZvaWQgMCE9PXQucGF0aHMmJnZvaWQgMCE9PXQucGF0aHMudnMmJmRlbGV0ZSB0LnBhdGhzLnZzLHZvaWQgMCE9PXR5cGVvZiB0LnRydXN0ZWRUeXBlc1BvbGljeSYmZGVsZXRlIHQudHJ1c3RlZFR5cGVzUG9saWN5LHQuY2F0Y2hFcnJvcj0hMCx4LnJlcXVpcmUuY29uZmlnKHQpKSxuZXcgUHJvbWlzZSgoKGUsdCk9PnsoMCx4LnJlcXVpcmUpKFtuXSwobj0+e3RoaXMuX3JlcXVlc3RIYW5kbGVyPW4uY3JlYXRlKGkpLHRoaXMuX3JlcXVlc3RIYW5kbGVyP2UocSh0aGlzLl9yZXF1ZXN0SGFuZGxlcikpOnQobmV3IEVycm9yKCJObyBSZXF1ZXN0SGFuZGxlciEiKSl9KSx0KX0pKSl9fWNsYXNzIGxle2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMub3JpZ2luYWxTdGFydD1lLHRoaXMub3JpZ2luYWxMZW5ndGg9dCx0aGlzLm1vZGlmaWVkU3RhcnQ9bix0aGlzLm1vZGlmaWVkTGVuZ3RoPXJ9Z2V0T3JpZ2luYWxFbmQoKXtyZXR1cm4gdGhpcy5vcmlnaW5hbFN0YXJ0K3RoaXMub3JpZ2luYWxMZW5ndGh9Z2V0TW9kaWZpZWRFbmQoKXtyZXR1cm4gdGhpcy5tb2RpZmllZFN0YXJ0K3RoaXMubW9kaWZpZWRMZW5ndGh9fWZ1bmN0aW9uIGNlKGUsdCl7cmV0dXJuKHQ8PDUpLXQrZXwwfWZ1bmN0aW9uIGhlKGUsdCl7dD1jZSgxNDk0MTcsdCk7Zm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXQ9Y2UoZS5jaGFyQ29kZUF0KG4pLHQpO3JldHVybiB0fWNsYXNzIGRle2NvbnN0cnVjdG9yKGUpe3RoaXMuc291cmNlPWV9Z2V0RWxlbWVudHMoKXtjb25zdCBlPXRoaXMuc291cmNlLHQ9bmV3IEludDMyQXJyYXkoZS5sZW5ndGgpO2ZvcihsZXQgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0W25dPWUuY2hhckNvZGVBdChuKTtyZXR1cm4gdH19ZnVuY3Rpb24gdWUoZSx0LG4pe3JldHVybiBuZXcgZ2UobmV3IGRlKGUpLG5ldyBkZSh0KSkuQ29tcHV0ZURpZmYobikuY2hhbmdlc31jbGFzcyBwZXtzdGF0aWMgQXNzZXJ0KGUsdCl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKHQpfX1jbGFzcyBtZXtzdGF0aWMgQ29weShlLHQsbixyLGkpe2ZvcihsZXQgYT0wO2E8aTthKyspbltyK2FdPWVbdCthXX1zdGF0aWMgQ29weTIoZSx0LG4scixpKXtmb3IobGV0IGE9MDthPGk7YSsrKW5bcithXT1lW3QrYV19fWNsYXNzIGZle2NvbnN0cnVjdG9yKCl7dGhpcy5tX2NoYW5nZXM9W10sdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0LHRoaXMubV9vcmlnaW5hbENvdW50PTAsdGhpcy5tX21vZGlmaWVkQ291bnQ9MH1NYXJrTmV4dENoYW5nZSgpeyh0aGlzLm1fb3JpZ2luYWxDb3VudD4wfHx0aGlzLm1fbW9kaWZpZWRDb3VudD4wKSYmdGhpcy5tX2NoYW5nZXMucHVzaChuZXcgbGUodGhpcy5tX29yaWdpbmFsU3RhcnQsdGhpcy5tX29yaWdpbmFsQ291bnQsdGhpcy5tX21vZGlmaWVkU3RhcnQsdGhpcy5tX21vZGlmaWVkQ291bnQpKSx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTAsdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0fUFkZE9yaWdpbmFsRWxlbWVudChlLHQpe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LGUpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LHQpLHRoaXMubV9vcmlnaW5hbENvdW50Kyt9QWRkTW9kaWZpZWRFbGVtZW50KGUsdCl7dGhpcy5tX29yaWdpbmFsU3RhcnQ9TWF0aC5taW4odGhpcy5tX29yaWdpbmFsU3RhcnQsZSksdGhpcy5tX21vZGlmaWVkU3RhcnQ9TWF0aC5taW4odGhpcy5tX21vZGlmaWVkU3RhcnQsdCksdGhpcy5tX21vZGlmaWVkQ291bnQrK31nZXRDaGFuZ2VzKCl7cmV0dXJuKHRoaXMubV9vcmlnaW5hbENvdW50PjB8fHRoaXMubV9tb2RpZmllZENvdW50PjApJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXN9Z2V0UmV2ZXJzZUNoYW5nZXMoKXtyZXR1cm4odGhpcy5tX29yaWdpbmFsQ291bnQ+MHx8dGhpcy5tX21vZGlmaWVkQ291bnQ+MCkmJnRoaXMuTWFya05leHRDaGFuZ2UoKSx0aGlzLm1fY2hhbmdlcy5yZXZlcnNlKCksdGhpcy5tX2NoYW5nZXN9fWNsYXNzIGdle2NvbnN0cnVjdG9yKGUsdCxuPW51bGwpe3RoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlPW4sdGhpcy5fb3JpZ2luYWxTZXF1ZW5jZT1lLHRoaXMuX21vZGlmaWVkU2VxdWVuY2U9dDtjb25zdFtyLGksYV09Z2UuX2dldEVsZW1lbnRzKGUpLFtvLHMsbF09Z2UuX2dldEVsZW1lbnRzKHQpO3RoaXMuX2hhc1N0cmluZ3M9YSYmbCx0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzPXIsdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaD1pLHRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHM9byx0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoPXMsdGhpcy5tX2ZvcndhcmRIaXN0b3J5PVtdLHRoaXMubV9yZXZlcnNlSGlzdG9yeT1bXX1zdGF0aWMgX2lzU3RyaW5nQXJyYXkoZSl7cmV0dXJuIGUubGVuZ3RoPjAmJiJzdHJpbmciPT10eXBlb2YgZVswXX1zdGF0aWMgX2dldEVsZW1lbnRzKGUpe2NvbnN0IHQ9ZS5nZXRFbGVtZW50cygpO2lmKGdlLl9pc1N0cmluZ0FycmF5KHQpKXtjb25zdCBlPW5ldyBJbnQzMkFycmF5KHQubGVuZ3RoKTtmb3IobGV0IG49MCxyPXQubGVuZ3RoO248cjtuKyspZVtuXT1oZSh0W25dLDApO3JldHVyblt0LGUsITBdfXJldHVybiB0IGluc3RhbmNlb2YgSW50MzJBcnJheT9bW10sdCwhMV06W1tdLG5ldyBJbnQzMkFycmF5KHQpLCExXX1FbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1FbGVtZW50c0FyZVN0cmljdEVxdWFsKGUsdCl7aWYoIXRoaXMuRWxlbWVudHNBcmVFcXVhbChlLHQpKXJldHVybiExO3JldHVybiBnZS5fZ2V0U3RyaWN0RWxlbWVudCh0aGlzLl9vcmlnaW5hbFNlcXVlbmNlLGUpPT09Z2UuX2dldFN0cmljdEVsZW1lbnQodGhpcy5fbW9kaWZpZWRTZXF1ZW5jZSx0KX1zdGF0aWMgX2dldFN0cmljdEVsZW1lbnQoZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRTdHJpY3RFbGVtZW50P2UuZ2V0U3RyaWN0RWxlbWVudCh0KTpudWxsfU9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChlLHQpe3JldHVybiB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW2VdPT09dGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaFt0XSYmKCF0aGlzLl9oYXNTdHJpbmdzfHx0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2VdPT09dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1t0XSl9TW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1Db21wdXRlRGlmZihlKXtyZXR1cm4gdGhpcy5fQ29tcHV0ZURpZmYoMCx0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xLDAsdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaC5sZW5ndGgtMSxlKX1fQ29tcHV0ZURpZmYoZSx0LG4scixpKXtjb25zdCBhPVshMV07bGV0IG89dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShlLHQsbixyLGEpO3JldHVybiBpJiYobz10aGlzLlByZXR0aWZ5Q2hhbmdlcyhvKSkse3F1aXRFYXJseTphWzBdLGNoYW5nZXM6b319Q29tcHV0ZURpZmZSZWN1cnNpdmUoZSx0LG4scixpKXtmb3IoaVswXT0hMTtlPD10JiZuPD1yJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwoZSxuKTspZSsrLG4rKztmb3IoO3Q+PWUmJnI+PW4mJnRoaXMuRWxlbWVudHNBcmVFcXVhbCh0LHIpOyl0LS0sci0tO2lmKGU+dHx8bj5yKXtsZXQgaTtyZXR1cm4gbjw9cj8ocGUuQXNzZXJ0KGU9PT10KzEsIm9yaWdpbmFsU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBvcmlnaW5hbEVuZCIpLGk9W25ldyBsZShlLDAsbixyLW4rMSldKTplPD10PyhwZS5Bc3NlcnQobj09PXIrMSwibW9kaWZpZWRTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG1vZGlmaWVkRW5kIiksaT1bbmV3IGxlKGUsdC1lKzEsbiwwKV0pOihwZS5Bc3NlcnQoZT09PXQrMSwib3JpZ2luYWxTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG9yaWdpbmFsRW5kIikscGUuQXNzZXJ0KG49PT1yKzEsIm1vZGlmaWVkU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBtb2RpZmllZEVuZCIpLGk9W10pLGl9Y29uc3QgYT1bMF0sbz1bMF0scz10aGlzLkNvbXB1dGVSZWN1cnNpb25Qb2ludChlLHQsbixyLGEsbyxpKSxsPWFbMF0sYz1vWzBdO2lmKG51bGwhPT1zKXJldHVybiBzO2lmKCFpWzBdKXtjb25zdCBhPXRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUoZSxsLG4sYyxpKTtsZXQgbz1bXTtyZXR1cm4gbz1pWzBdP1tuZXcgbGUobCsxLHQtKGwrMSkrMSxjKzEsci0oYysxKSsxKV06dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShsKzEsdCxjKzEscixpKSx0aGlzLkNvbmNhdGVuYXRlQ2hhbmdlcyhhLG8pfXJldHVybltuZXcgbGUoZSx0LWUrMSxuLHItbisxKV19V0FMS1RSQUNFKGUsdCxuLHIsaSxhLG8scyxsLGMsaCxkLHUscCxtLGYsZyxiKXtsZXQgdz1udWxsLF89bnVsbCx2PW5ldyBmZSx5PXQsVD1uLGs9dVswXS1mWzBdLXIsUz0tMTA3Mzc0MTgyNCxDPXRoaXMubV9mb3J3YXJkSGlzdG9yeS5sZW5ndGgtMTtkb3tjb25zdCB0PWsrZTt0PT09eXx8dDxUJiZsW3QtMV08bFt0KzFdPyhwPShoPWxbdCsxXSktay1yLGg8UyYmdi5NYXJrTmV4dENoYW5nZSgpLFM9aCx2LkFkZE1vZGlmaWVkRWxlbWVudChoKzEscCksaz10KzEtZSk6KHA9KGg9bFt0LTFdKzEpLWstcixoPFMmJnYuTWFya05leHRDaGFuZ2UoKSxTPWgtMSx2LkFkZE9yaWdpbmFsRWxlbWVudChoLHArMSksaz10LTEtZSksQz49MCYmKGU9KGw9dGhpcy5tX2ZvcndhcmRIaXN0b3J5W0NdKVswXSx5PTEsVD1sLmxlbmd0aC0xKX13aGlsZSgtLUM+PS0xKTtpZih3PXYuZ2V0UmV2ZXJzZUNoYW5nZXMoKSxiWzBdKXtsZXQgZT11WzBdKzEsdD1mWzBdKzE7aWYobnVsbCE9PXcmJncubGVuZ3RoPjApe2NvbnN0IG49d1t3Lmxlbmd0aC0xXTtlPU1hdGgubWF4KGUsbi5nZXRPcmlnaW5hbEVuZCgpKSx0PU1hdGgubWF4KHQsbi5nZXRNb2RpZmllZEVuZCgpKX1fPVtuZXcgbGUoZSxkLWUrMSx0LG0tdCsxKV19ZWxzZXt2PW5ldyBmZSx5PWEsVD1vLGs9dVswXS1mWzBdLXMsUz0xMDczNzQxODI0LEM9Zz90aGlzLm1fcmV2ZXJzZUhpc3RvcnkubGVuZ3RoLTE6dGhpcy5tX3JldmVyc2VIaXN0b3J5Lmxlbmd0aC0yO2Rve2NvbnN0IGU9aytpO2U9PT15fHxlPFQmJmNbZS0xXT49Y1tlKzFdPyhwPShoPWNbZSsxXS0xKS1rLXMsaD5TJiZ2Lk1hcmtOZXh0Q2hhbmdlKCksUz1oKzEsdi5BZGRPcmlnaW5hbEVsZW1lbnQoaCsxLHArMSksaz1lKzEtaSk6KHA9KGg9Y1tlLTFdKS1rLXMsaD5TJiZ2Lk1hcmtOZXh0Q2hhbmdlKCksUz1oLHYuQWRkTW9kaWZpZWRFbGVtZW50KGgrMSxwKzEpLGs9ZS0xLWkpLEM+PTAmJihpPShjPXRoaXMubV9yZXZlcnNlSGlzdG9yeVtDXSlbMF0seT0xLFQ9Yy5sZW5ndGgtMSl9d2hpbGUoLS1DPj0tMSk7Xz12LmdldENoYW5nZXMoKX1yZXR1cm4gdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXModyxfKX1Db21wdXRlUmVjdXJzaW9uUG9pbnQoZSx0LG4scixpLGEsbyl7bGV0IHM9MCxsPTAsYz0wLGg9MCxkPTAsdT0wO2UtLSxuLS0saVswXT0wLGFbMF09MCx0aGlzLm1fZm9yd2FyZEhpc3Rvcnk9W10sdGhpcy5tX3JldmVyc2VIaXN0b3J5PVtdO2NvbnN0IHA9dC1lKyhyLW4pLG09cCsxLGY9bmV3IEludDMyQXJyYXkobSksZz1uZXcgSW50MzJBcnJheShtKSxiPXItbix3PXQtZSxfPWUtbix2PXQtcix5PSh3LWIpJTI9PTA7ZltiXT1lLGdbd109dCxvWzBdPSExO2ZvcihsZXQgVD0xO1Q8PXAvMisxO1QrKyl7bGV0IHA9MCxrPTA7Yz10aGlzLkNsaXBEaWFnb25hbEJvdW5kKGItVCxULGIsbSksaD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKGIrVCxULGIsbSk7Zm9yKGxldCBlPWM7ZTw9aDtlKz0yKXtzPWU9PT1jfHxlPGgmJmZbZS0xXTxmW2UrMV0/ZltlKzFdOmZbZS0xXSsxLGw9cy0oZS1iKS1fO2NvbnN0IG49cztmb3IoO3M8dCYmbDxyJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwocysxLGwrMSk7KXMrKyxsKys7aWYoZltlXT1zLHMrbD5wK2smJihwPXMsaz1sKSwheSYmTWF0aC5hYnMoZS13KTw9VC0xJiZzPj1nW2VdKXJldHVybiBpWzBdPXMsYVswXT1sLG48PWdbZV0mJlQ8PTE0NDg/dGhpcy5XQUxLVFJBQ0UoYixjLGgsXyx3LGQsdSx2LGYsZyxzLHQsaSxsLHIsYSx5LG8pOm51bGx9Y29uc3QgUz0ocC1lKyhrLW4pLVQpLzI7aWYobnVsbCE9PXRoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlJiYhdGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUocCxTKSlyZXR1cm4gb1swXT0hMCxpWzBdPXAsYVswXT1rLFM+MCYmVDw9MTQ0OD90aGlzLldBTEtUUkFDRShiLGMsaCxfLHcsZCx1LHYsZixnLHMsdCxpLGwscixhLHksbyk6KGUrKyxuKyssW25ldyBsZShlLHQtZSsxLG4sci1uKzEpXSk7ZD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHctVCxULHcsbSksdT10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHcrVCxULHcsbSk7Zm9yKGxldCBwPWQ7cDw9dTtwKz0yKXtzPXA9PT1kfHxwPHUmJmdbcC0xXT49Z1twKzFdP2dbcCsxXS0xOmdbcC0xXSxsPXMtKHAtdyktdjtjb25zdCBtPXM7Zm9yKDtzPmUmJmw+biYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKHMsbCk7KXMtLSxsLS07aWYoZ1twXT1zLHkmJk1hdGguYWJzKHAtYik8PVQmJnM8PWZbcF0pcmV0dXJuIGlbMF09cyxhWzBdPWwsbT49ZltwXSYmVDw9MTQ0OD90aGlzLldBTEtUUkFDRShiLGMsaCxfLHcsZCx1LHYsZixnLHMsdCxpLGwscixhLHksbyk6bnVsbH1pZihUPD0xNDQ3KXtsZXQgZT1uZXcgSW50MzJBcnJheShoLWMrMik7ZVswXT1iLWMrMSxtZS5Db3B5MihmLGMsZSwxLGgtYysxKSx0aGlzLm1fZm9yd2FyZEhpc3RvcnkucHVzaChlKSxlPW5ldyBJbnQzMkFycmF5KHUtZCsyKSxlWzBdPXctZCsxLG1lLkNvcHkyKGcsZCxlLDEsdS1kKzEpLHRoaXMubV9yZXZlcnNlSGlzdG9yeS5wdXNoKGUpfX1yZXR1cm4gdGhpcy5XQUxLVFJBQ0UoYixjLGgsXyx3LGQsdSx2LGYsZyxzLHQsaSxsLHIsYSx5LG8pfVByZXR0aWZ5Q2hhbmdlcyhlKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdLHI9dDxlLmxlbmd0aC0xP2VbdCsxXS5vcmlnaW5hbFN0YXJ0OnRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLGk9dDxlLmxlbmd0aC0xP2VbdCsxXS5tb2RpZmllZFN0YXJ0OnRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLGE9bi5vcmlnaW5hbExlbmd0aD4wLG89bi5tb2RpZmllZExlbmd0aD4wO2Zvcig7bi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGg8ciYmbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGg8aSYmKCFhfHx0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChuLm9yaWdpbmFsU3RhcnQsbi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgpKSYmKCFvfHx0aGlzLk1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbChuLm1vZGlmaWVkU3RhcnQsbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgpKTspe2NvbnN0IGU9dGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKG4ub3JpZ2luYWxTdGFydCxuLm1vZGlmaWVkU3RhcnQpO2lmKHRoaXMuRWxlbWVudHNBcmVTdHJpY3RFcXVhbChuLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aCxuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aCkmJiFlKWJyZWFrO24ub3JpZ2luYWxTdGFydCsrLG4ubW9kaWZpZWRTdGFydCsrfWxldCBzPVtudWxsXTt0PGUubGVuZ3RoLTEmJnRoaXMuQ2hhbmdlc092ZXJsYXAoZVt0XSxlW3QrMV0scykmJihlW3RdPXNbMF0sZS5zcGxpY2UodCsxLDEpLHQtLSl9Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MDt0LS0pe2NvbnN0IG49ZVt0XTtsZXQgcj0wLGk9MDtpZih0PjApe2NvbnN0IG49ZVt0LTFdO3I9bi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgsaT1uLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aH1jb25zdCBhPW4ub3JpZ2luYWxMZW5ndGg+MCxvPW4ubW9kaWZpZWRMZW5ndGg+MDtsZXQgcz0wLGw9dGhpcy5fYm91bmRhcnlTY29yZShuLm9yaWdpbmFsU3RhcnQsbi5vcmlnaW5hbExlbmd0aCxuLm1vZGlmaWVkU3RhcnQsbi5tb2RpZmllZExlbmd0aCk7Zm9yKGxldCBlPTE7O2UrKyl7Y29uc3QgdD1uLm9yaWdpbmFsU3RhcnQtZSxjPW4ubW9kaWZpZWRTdGFydC1lO2lmKHQ8cnx8YzxpKWJyZWFrO2lmKGEmJiF0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbCh0LHQrbi5vcmlnaW5hbExlbmd0aCkpYnJlYWs7aWYobyYmIXRoaXMuTW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKGMsYytuLm1vZGlmaWVkTGVuZ3RoKSlicmVhaztjb25zdCBoPSh0PT09ciYmYz09PWk/NTowKSt0aGlzLl9ib3VuZGFyeVNjb3JlKHQsbi5vcmlnaW5hbExlbmd0aCxjLG4ubW9kaWZpZWRMZW5ndGgpO2g+bCYmKGw9aCxzPWUpfW4ub3JpZ2luYWxTdGFydC09cyxuLm1vZGlmaWVkU3RhcnQtPXM7Y29uc3QgYz1bbnVsbF07dD4wJiZ0aGlzLkNoYW5nZXNPdmVybGFwKGVbdC0xXSxlW3RdLGMpJiYoZVt0LTFdPWNbMF0sZS5zcGxpY2UodCwxKSx0KyspfWlmKHRoaXMuX2hhc1N0cmluZ3MpZm9yKGxldCB0PTEsbj1lLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWVbdC0xXSxyPWVbdF0saT1yLm9yaWdpbmFsU3RhcnQtbi5vcmlnaW5hbFN0YXJ0LW4ub3JpZ2luYWxMZW5ndGgsYT1uLm9yaWdpbmFsU3RhcnQsbz1yLm9yaWdpbmFsU3RhcnQrci5vcmlnaW5hbExlbmd0aCxzPW8tYSxsPW4ubW9kaWZpZWRTdGFydCxjPXIubW9kaWZpZWRTdGFydCtyLm1vZGlmaWVkTGVuZ3RoLGg9Yy1sO2lmKGk8NSYmczwyMCYmaDwyMCl7Y29uc3QgZT10aGlzLl9maW5kQmV0dGVyQ29udGlndW91c1NlcXVlbmNlKGEscyxsLGgsaSk7aWYoZSl7Y29uc3RbdCxhXT1lO3Q9PT1uLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aCYmYT09PW4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RofHwobi5vcmlnaW5hbExlbmd0aD10LW4ub3JpZ2luYWxTdGFydCxuLm1vZGlmaWVkTGVuZ3RoPWEtbi5tb2RpZmllZFN0YXJ0LHIub3JpZ2luYWxTdGFydD10K2ksci5tb2RpZmllZFN0YXJ0PWEraSxyLm9yaWdpbmFsTGVuZ3RoPW8tci5vcmlnaW5hbFN0YXJ0LHIubW9kaWZpZWRMZW5ndGg9Yy1yLm1vZGlmaWVkU3RhcnQpfX19cmV0dXJuIGV9X2ZpbmRCZXR0ZXJDb250aWd1b3VzU2VxdWVuY2UoZSx0LG4scixpKXtpZih0PGl8fHI8aSlyZXR1cm4gbnVsbDtjb25zdCBhPWUrdC1pKzEsbz1uK3ItaSsxO2xldCBzPTAsbD0wLGM9MDtmb3IobGV0IHQ9ZTt0PGE7dCsrKWZvcihsZXQgZT1uO2U8bztlKyspe2NvbnN0IG49dGhpcy5fY29udGlndW91c1NlcXVlbmNlU2NvcmUodCxlLGkpO24+MCYmbj5zJiYocz1uLGw9dCxjPWUpfXJldHVybiBzPjA/W2wsY106bnVsbH1fY29udGlndW91c1NlcXVlbmNlU2NvcmUoZSx0LG4pe2xldCByPTA7Zm9yKGxldCBpPTA7aTxuO2krKyl7aWYoIXRoaXMuRWxlbWVudHNBcmVFcXVhbChlK2ksdCtpKSlyZXR1cm4gMDtyKz10aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2UraV0ubGVuZ3RofXJldHVybiByfV9PcmlnaW5hbElzQm91bmRhcnkoZSl7cmV0dXJuIGU8PTB8fGU+PXRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLTF8fHRoaXMuX2hhc1N0cmluZ3MmJi9eXHMqJC8udGVzdCh0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2VdKX1fT3JpZ2luYWxSZWdpb25Jc0JvdW5kYXJ5KGUsdCl7aWYodGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KGUpfHx0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkoZS0xKSlyZXR1cm4hMDtpZih0PjApe2NvbnN0IG49ZSt0O2lmKHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShuLTEpfHx0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkobikpcmV0dXJuITB9cmV0dXJuITF9X01vZGlmaWVkSXNCb3VuZGFyeShlKXtyZXR1cm4gZTw9MHx8ZT49dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaC5sZW5ndGgtMXx8dGhpcy5faGFzU3RyaW5ncyYmL15ccyokLy50ZXN0KHRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbZV0pfV9Nb2RpZmllZFJlZ2lvbklzQm91bmRhcnkoZSx0KXtpZih0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoZSl8fHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShlLTEpKXJldHVybiEwO2lmKHQ+MCl7Y29uc3Qgbj1lK3Q7aWYodGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KG4tMSl8fHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShuKSlyZXR1cm4hMH1yZXR1cm4hMX1fYm91bmRhcnlTY29yZShlLHQsbixyKXtyZXR1cm4odGhpcy5fT3JpZ2luYWxSZWdpb25Jc0JvdW5kYXJ5KGUsdCk/MTowKSsodGhpcy5fTW9kaWZpZWRSZWdpb25Jc0JvdW5kYXJ5KG4scik/MTowKX1Db25jYXRlbmF0ZUNoYW5nZXMoZSx0KXtsZXQgbj1bXTtpZigwPT09ZS5sZW5ndGh8fDA9PT10Lmxlbmd0aClyZXR1cm4gdC5sZW5ndGg+MD90OmU7aWYodGhpcy5DaGFuZ2VzT3ZlcmxhcChlW2UubGVuZ3RoLTFdLHRbMF0sbikpe2NvbnN0IHI9bmV3IEFycmF5KGUubGVuZ3RoK3QubGVuZ3RoLTEpO3JldHVybiBtZS5Db3B5KGUsMCxyLDAsZS5sZW5ndGgtMSkscltlLmxlbmd0aC0xXT1uWzBdLG1lLkNvcHkodCwxLHIsZS5sZW5ndGgsdC5sZW5ndGgtMSkscn17Y29uc3Qgbj1uZXcgQXJyYXkoZS5sZW5ndGgrdC5sZW5ndGgpO3JldHVybiBtZS5Db3B5KGUsMCxuLDAsZS5sZW5ndGgpLG1lLkNvcHkodCwwLG4sZS5sZW5ndGgsdC5sZW5ndGgpLG59fUNoYW5nZXNPdmVybGFwKGUsdCxuKXtpZihwZS5Bc3NlcnQoZS5vcmlnaW5hbFN0YXJ0PD10Lm9yaWdpbmFsU3RhcnQsIkxlZnQgY2hhbmdlIGlzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmlnaHQgY2hhbmdlIikscGUuQXNzZXJ0KGUubW9kaWZpZWRTdGFydDw9dC5tb2RpZmllZFN0YXJ0LCJMZWZ0IGNoYW5nZSBpcyBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJpZ2h0IGNoYW5nZSIpLGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoPj10Lm9yaWdpbmFsU3RhcnR8fGUubW9kaWZpZWRTdGFydCtlLm1vZGlmaWVkTGVuZ3RoPj10Lm1vZGlmaWVkU3RhcnQpe2NvbnN0IHI9ZS5vcmlnaW5hbFN0YXJ0O2xldCBpPWUub3JpZ2luYWxMZW5ndGg7Y29uc3QgYT1lLm1vZGlmaWVkU3RhcnQ7bGV0IG89ZS5tb2RpZmllZExlbmd0aDtyZXR1cm4gZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGg+PXQub3JpZ2luYWxTdGFydCYmKGk9dC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtZS5vcmlnaW5hbFN0YXJ0KSxlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aD49dC5tb2RpZmllZFN0YXJ0JiYobz10Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC1lLm1vZGlmaWVkU3RhcnQpLG5bMF09bmV3IGxlKHIsaSxhLG8pLCEwfXJldHVybiBuWzBdPW51bGwsITF9Q2xpcERpYWdvbmFsQm91bmQoZSx0LG4scil7aWYoZT49MCYmZTxyKXJldHVybiBlO2NvbnN0IGk9dCUyPT0wO2lmKGU8MCl7cmV0dXJuIGk9PT0obiUyPT0wKT8wOjF9cmV0dXJuIGk9PT0oKHItbi0xKSUyPT0wKT9yLTE6ci0yfX1sZXQgYmU7aWYodm9pZCAwIT09eC52c2NvZGUmJnZvaWQgMCE9PXgudnNjb2RlLnByb2Nlc3Mpe2NvbnN0IGU9eC52c2NvZGUucHJvY2VzcztiZT17Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIGUucGxhdGZvcm19LGdldCBhcmNoKCl7cmV0dXJuIGUuYXJjaH0sZ2V0IGVudigpe3JldHVybiBlLmVudn0sY3dkOigpPT5lLmN3ZCgpfX1lbHNlIGJlPSJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2Vzcz97Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIHByb2Nlc3MucGxhdGZvcm19LGdldCBhcmNoKCl7cmV0dXJuIHByb2Nlc3MuYXJjaH0sZ2V0IGVudigpe3JldHVybiBwcm9jZXNzLmVudn0sY3dkOigpPT5wcm9jZXNzLmVudi5WU0NPREVfQ1dEfHxwcm9jZXNzLmN3ZCgpfTp7Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIEE/IndpbjMyIjpNPyJkYXJ3aW4iOiJsaW51eCJ9LGdldCBhcmNoKCl7fSxnZXQgZW52KCl7cmV0dXJue319LGN3ZDooKT0+Ii8ifTtjb25zdCB3ZT1iZS5jd2QsX2U9YmUuZW52LHZlPWJlLnBsYXRmb3JtLHllPTQ2LFRlPTQ3LGtlPTkyLFNlPTU4O2NsYXNzIENlIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSx0LG4pe2xldCByOyJzdHJpbmciPT10eXBlb2YgdCYmMD09PXQuaW5kZXhPZigibm90ICIpPyhyPSJtdXN0IG5vdCBiZSIsdD10LnJlcGxhY2UoL15ub3QgLywiIikpOnI9Im11c3QgYmUiO2NvbnN0IGk9LTEhPT1lLmluZGV4T2YoIi4iKT8icHJvcGVydHkiOiJhcmd1bWVudCI7bGV0IGE9YFRoZSAiJHtlfSIgJHtpfSAke3J9IG9mIHR5cGUgJHt0fWA7YSs9Ii4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiBuLHN1cGVyKGEpLHRoaXMuY29kZT0iRVJSX0lOVkFMSURfQVJHX1RZUEUifX1mdW5jdGlvbiB4ZShlLHQpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgQ2UodCwic3RyaW5nIixlKX1mdW5jdGlvbiBMZShlKXtyZXR1cm4gZT09PVRlfHxlPT09a2V9ZnVuY3Rpb24gRWUoZSl7cmV0dXJuIGU9PT1UZX1mdW5jdGlvbiBBZShlKXtyZXR1cm4gZT49NjUmJmU8PTkwfHxlPj05NyYmZTw9MTIyfWZ1bmN0aW9uIE1lKGUsdCxuLHIpe2xldCBpPSIiLGE9MCxvPS0xLHM9MCxsPTA7Zm9yKGxldCBjPTA7Yzw9ZS5sZW5ndGg7KytjKXtpZihjPGUubGVuZ3RoKWw9ZS5jaGFyQ29kZUF0KGMpO2Vsc2V7aWYocihsKSlicmVhaztsPVRlfWlmKHIobCkpe2lmKG89PT1jLTF8fDE9PT1zKTtlbHNlIGlmKDI9PT1zKXtpZihpLmxlbmd0aDwyfHwyIT09YXx8aS5jaGFyQ29kZUF0KGkubGVuZ3RoLTEpIT09eWV8fGkuY2hhckNvZGVBdChpLmxlbmd0aC0yKSE9PXllKXtpZihpLmxlbmd0aD4yKXtjb25zdCBlPWkubGFzdEluZGV4T2Yobik7LTE9PT1lPyhpPSIiLGE9MCk6KGk9aS5zbGljZSgwLGUpLGE9aS5sZW5ndGgtMS1pLmxhc3RJbmRleE9mKG4pKSxvPWMscz0wO2NvbnRpbnVlfWlmKDAhPT1pLmxlbmd0aCl7aT0iIixhPTAsbz1jLHM9MDtjb250aW51ZX19dCYmKGkrPWkubGVuZ3RoPjA/YCR7bn0uLmA6Ii4uIixhPTIpfWVsc2UgaS5sZW5ndGg+MD9pKz1gJHtufSR7ZS5zbGljZShvKzEsYyl9YDppPWUuc2xpY2UobysxLGMpLGE9Yy1vLTE7bz1jLHM9MH1lbHNlIGw9PT15ZSYmLTEhPT1zPysrczpzPS0xfXJldHVybiBpfWZ1bmN0aW9uIFJlKGUsdCl7aWYobnVsbD09PXR8fCJvYmplY3QiIT10eXBlb2YgdCl0aHJvdyBuZXcgQ2UoInBhdGhPYmplY3QiLCJPYmplY3QiLHQpO2NvbnN0IG49dC5kaXJ8fHQucm9vdCxyPXQuYmFzZXx8YCR7dC5uYW1lfHwiIn0ke3QuZXh0fHwiIn1gO3JldHVybiBuP249PT10LnJvb3Q/YCR7bn0ke3J9YDpgJHtufSR7ZX0ke3J9YDpyfWNvbnN0IE5lPXtyZXNvbHZlKC4uLmUpe2xldCB0PSIiLG49IiIscj0hMTtmb3IobGV0IGk9ZS5sZW5ndGgtMTtpPj0tMTtpLS0pe2xldCBhO2lmKGk+PTApe2lmKGE9ZVtpXSx4ZShhLCJwYXRoIiksMD09PWEubGVuZ3RoKWNvbnRpbnVlfWVsc2UgMD09PXQubGVuZ3RoP2E9d2UoKTooYT1fZVtgPSR7dH1gXXx8d2UoKSwodm9pZCAwPT09YXx8YS5zbGljZSgwLDIpLnRvTG93ZXJDYXNlKCkhPT10LnRvTG93ZXJDYXNlKCkmJmEuY2hhckNvZGVBdCgyKT09PWtlKSYmKGE9YCR7dH1cXGApKTtjb25zdCBvPWEubGVuZ3RoO2xldCBzPTAsbD0iIixjPSExO2NvbnN0IGg9YS5jaGFyQ29kZUF0KDApO2lmKDE9PT1vKUxlKGgpJiYocz0xLGM9ITApO2Vsc2UgaWYoTGUoaCkpaWYoYz0hMCxMZShhLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8byYmIUxlKGEuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPG8mJmUhPT10KXtjb25zdCBuPWEuc2xpY2UodCxlKTtmb3IodD1lO2U8byYmTGUoYS5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8byYmZSE9PXQpe2Zvcih0PWU7ZTxvJiYhTGUoYS5jaGFyQ29kZUF0KGUpKTspZSsrO2UhPT1vJiZlPT09dHx8KGw9YFxcXFwke259XFwke2Euc2xpY2UodCxlKX1gLHM9ZSl9fX1lbHNlIHM9MTtlbHNlIEFlKGgpJiZhLmNoYXJDb2RlQXQoMSk9PT1TZSYmKGw9YS5zbGljZSgwLDIpLHM9MixvPjImJkxlKGEuY2hhckNvZGVBdCgyKSkmJihjPSEwLHM9MykpO2lmKGwubGVuZ3RoPjApaWYodC5sZW5ndGg+MCl7aWYobC50b0xvd2VyQ2FzZSgpIT09dC50b0xvd2VyQ2FzZSgpKWNvbnRpbnVlfWVsc2UgdD1sO2lmKHIpe2lmKHQubGVuZ3RoPjApYnJlYWt9ZWxzZSBpZihuPWAke2Euc2xpY2Uocyl9XFwke259YCxyPWMsYyYmdC5sZW5ndGg+MClicmVha31yZXR1cm4gbj1NZShuLCFyLCJcXCIsTGUpLHI/YCR7dH1cXCR7bn1gOmAke3R9JHtufWB8fCIuIn0sbm9ybWFsaXplKGUpe3hlKGUsInBhdGgiKTtjb25zdCB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiIuIjtsZXQgbixyPTAsaT0hMTtjb25zdCBhPWUuY2hhckNvZGVBdCgwKTtpZigxPT09dClyZXR1cm4gRWUoYSk/IlxcIjplO2lmKExlKGEpKWlmKGk9ITAsTGUoZS5jaGFyQ29kZUF0KDEpKSl7bGV0IGk9MixhPWk7Zm9yKDtpPHQmJiFMZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaTx0JiZpIT09YSl7Y29uc3Qgbz1lLnNsaWNlKGEsaSk7Zm9yKGE9aTtpPHQmJkxlKGUuY2hhckNvZGVBdChpKSk7KWkrKztpZihpPHQmJmkhPT1hKXtmb3IoYT1pO2k8dCYmIUxlKGUuY2hhckNvZGVBdChpKSk7KWkrKztpZihpPT09dClyZXR1cm5gXFxcXCR7b31cXCR7ZS5zbGljZShhKX1cXGA7aSE9PWEmJihuPWBcXFxcJHtvfVxcJHtlLnNsaWNlKGEsaSl9YCxyPWkpfX19ZWxzZSByPTE7ZWxzZSBBZShhKSYmZS5jaGFyQ29kZUF0KDEpPT09U2UmJihuPWUuc2xpY2UoMCwyKSxyPTIsdD4yJiZMZShlLmNoYXJDb2RlQXQoMikpJiYoaT0hMCxyPTMpKTtsZXQgbz1yPHQ/TWUoZS5zbGljZShyKSwhaSwiXFwiLExlKToiIjtyZXR1cm4gMCE9PW8ubGVuZ3RofHxpfHwobz0iLiIpLG8ubGVuZ3RoPjAmJkxlKGUuY2hhckNvZGVBdCh0LTEpKSYmKG8rPSJcXCIpLHZvaWQgMD09PW4/aT9gXFwke299YDpvOmk/YCR7bn1cXCR7b31gOmAke259JHtvfWB9LGlzQWJzb2x1dGUoZSl7eGUoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuITE7Y29uc3Qgbj1lLmNoYXJDb2RlQXQoMCk7cmV0dXJuIExlKG4pfHx0PjImJkFlKG4pJiZlLmNoYXJDb2RlQXQoMSk9PT1TZSYmTGUoZS5jaGFyQ29kZUF0KDIpKX0sam9pbiguLi5lKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2xldCB0LG47Zm9yKGxldCByPTA7cjxlLmxlbmd0aDsrK3Ipe2NvbnN0IGk9ZVtyXTt4ZShpLCJwYXRoIiksaS5sZW5ndGg+MCYmKHZvaWQgMD09PXQ/dD1uPWk6dCs9YFxcJHtpfWApfWlmKHZvaWQgMD09PXQpcmV0dXJuIi4iO2xldCByPSEwLGk9MDtpZigic3RyaW5nIj09dHlwZW9mIG4mJkxlKG4uY2hhckNvZGVBdCgwKSkpeysraTtjb25zdCBlPW4ubGVuZ3RoO2U+MSYmTGUobi5jaGFyQ29kZUF0KDEpKSYmKCsraSxlPjImJihMZShuLmNoYXJDb2RlQXQoMikpPysraTpyPSExKSl9aWYocil7Zm9yKDtpPHQubGVuZ3RoJiZMZSh0LmNoYXJDb2RlQXQoaSkpOylpKys7aT49MiYmKHQ9YFxcJHt0LnNsaWNlKGkpfWApfXJldHVybiBOZS5ub3JtYWxpemUodCl9LHJlbGF0aXZlKGUsdCl7aWYoeGUoZSwiZnJvbSIpLHhlKHQsInRvIiksZT09PXQpcmV0dXJuIiI7Y29uc3Qgbj1OZS5yZXNvbHZlKGUpLHI9TmUucmVzb2x2ZSh0KTtpZihuPT09cilyZXR1cm4iIjtpZigoZT1uLnRvTG93ZXJDYXNlKCkpPT09KHQ9ci50b0xvd2VyQ2FzZSgpKSlyZXR1cm4iIjtsZXQgaT0wO2Zvcig7aTxlLmxlbmd0aCYmZS5jaGFyQ29kZUF0KGkpPT09a2U7KWkrKztsZXQgYT1lLmxlbmd0aDtmb3IoO2EtMT5pJiZlLmNoYXJDb2RlQXQoYS0xKT09PWtlOylhLS07Y29uc3Qgbz1hLWk7bGV0IHM9MDtmb3IoO3M8dC5sZW5ndGgmJnQuY2hhckNvZGVBdChzKT09PWtlOylzKys7bGV0IGw9dC5sZW5ndGg7Zm9yKDtsLTE+cyYmdC5jaGFyQ29kZUF0KGwtMSk9PT1rZTspbC0tO2NvbnN0IGM9bC1zLGg9bzxjP286YztsZXQgZD0tMSx1PTA7Zm9yKDt1PGg7dSsrKXtjb25zdCBuPWUuY2hhckNvZGVBdChpK3UpO2lmKG4hPT10LmNoYXJDb2RlQXQocyt1KSlicmVhaztuPT09a2UmJihkPXUpfWlmKHUhPT1oKXtpZigtMT09PWQpcmV0dXJuIHJ9ZWxzZXtpZihjPmgpe2lmKHQuY2hhckNvZGVBdChzK3UpPT09a2UpcmV0dXJuIHIuc2xpY2Uocyt1KzEpO2lmKDI9PT11KXJldHVybiByLnNsaWNlKHMrdSl9bz5oJiYoZS5jaGFyQ29kZUF0KGkrdSk9PT1rZT9kPXU6Mj09PXUmJihkPTMpKSwtMT09PWQmJihkPTApfWxldCBwPSIiO2Zvcih1PWkrZCsxO3U8PWE7Kyt1KXUhPT1hJiZlLmNoYXJDb2RlQXQodSkhPT1rZXx8KHArPTA9PT1wLmxlbmd0aD8iLi4iOiJcXC4uIik7cmV0dXJuIHMrPWQscC5sZW5ndGg+MD9gJHtwfSR7ci5zbGljZShzLGwpfWA6KHIuY2hhckNvZGVBdChzKT09PWtlJiYrK3Msci5zbGljZShzLGwpKX0sdG9OYW1lc3BhY2VkUGF0aChlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIGU7aWYoMD09PWUubGVuZ3RoKXJldHVybiIiO2NvbnN0IHQ9TmUucmVzb2x2ZShlKTtpZih0Lmxlbmd0aDw9MilyZXR1cm4gZTtpZih0LmNoYXJDb2RlQXQoMCk9PT1rZSl7aWYodC5jaGFyQ29kZUF0KDEpPT09a2Upe2NvbnN0IGU9dC5jaGFyQ29kZUF0KDIpO2lmKDYzIT09ZSYmZSE9PXllKXJldHVybmBcXFxcP1xcVU5DXFwke3Quc2xpY2UoMil9YH19ZWxzZSBpZihBZSh0LmNoYXJDb2RlQXQoMCkpJiZ0LmNoYXJDb2RlQXQoMSk9PT1TZSYmdC5jaGFyQ29kZUF0KDIpPT09a2UpcmV0dXJuYFxcXFw/XFwke3R9YDtyZXR1cm4gZX0sZGlybmFtZShlKXt4ZShlLCJwYXRoIik7Y29uc3QgdD1lLmxlbmd0aDtpZigwPT09dClyZXR1cm4iLiI7bGV0IG49LTEscj0wO2NvbnN0IGk9ZS5jaGFyQ29kZUF0KDApO2lmKDE9PT10KXJldHVybiBMZShpKT9lOiIuIjtpZihMZShpKSl7aWYobj1yPTEsTGUoZS5jaGFyQ29kZUF0KDEpKSl7bGV0IGk9MixhPWk7Zm9yKDtpPHQmJiFMZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaTx0JiZpIT09YSl7Zm9yKGE9aTtpPHQmJkxlKGUuY2hhckNvZGVBdChpKSk7KWkrKztpZihpPHQmJmkhPT1hKXtmb3IoYT1pO2k8dCYmIUxlKGUuY2hhckNvZGVBdChpKSk7KWkrKztpZihpPT09dClyZXR1cm4gZTtpIT09YSYmKG49cj1pKzEpfX19fWVsc2UgQWUoaSkmJmUuY2hhckNvZGVBdCgxKT09PVNlJiYobj10PjImJkxlKGUuY2hhckNvZGVBdCgyKSk/MzoyLHI9bik7bGV0IGE9LTEsbz0hMDtmb3IobGV0IG49dC0xO24+PXI7LS1uKWlmKExlKGUuY2hhckNvZGVBdChuKSkpe2lmKCFvKXthPW47YnJlYWt9fWVsc2Ugbz0hMTtpZigtMT09PWEpe2lmKC0xPT09bilyZXR1cm4iLiI7YT1ufXJldHVybiBlLnNsaWNlKDAsYSl9LGJhc2VuYW1lKGUsdCl7dm9pZCAwIT09dCYmeGUodCwiZXh0IikseGUoZSwicGF0aCIpO2xldCBuLHI9MCxpPS0xLGE9ITA7aWYoZS5sZW5ndGg+PTImJkFlKGUuY2hhckNvZGVBdCgwKSkmJmUuY2hhckNvZGVBdCgxKT09PVNlJiYocj0yKSx2b2lkIDAhPT10JiZ0Lmxlbmd0aD4wJiZ0Lmxlbmd0aDw9ZS5sZW5ndGgpe2lmKHQ9PT1lKXJldHVybiIiO2xldCBvPXQubGVuZ3RoLTEscz0tMTtmb3Iobj1lLmxlbmd0aC0xO24+PXI7LS1uKXtjb25zdCBsPWUuY2hhckNvZGVBdChuKTtpZihMZShsKSl7aWYoIWEpe3I9bisxO2JyZWFrfX1lbHNlLTE9PT1zJiYoYT0hMSxzPW4rMSksbz49MCYmKGw9PT10LmNoYXJDb2RlQXQobyk/LTE9PS0tbyYmKGk9bik6KG89LTEsaT1zKSl9cmV0dXJuIHI9PT1pP2k9czotMT09PWkmJihpPWUubGVuZ3RoKSxlLnNsaWNlKHIsaSl9Zm9yKG49ZS5sZW5ndGgtMTtuPj1yOy0tbilpZihMZShlLmNoYXJDb2RlQXQobikpKXtpZighYSl7cj1uKzE7YnJlYWt9fWVsc2UtMT09PWkmJihhPSExLGk9bisxKTtyZXR1cm4tMT09PWk/IiI6ZS5zbGljZShyLGkpfSxleHRuYW1lKGUpe3hlKGUsInBhdGgiKTtsZXQgdD0wLG49LTEscj0wLGk9LTEsYT0hMCxvPTA7ZS5sZW5ndGg+PTImJmUuY2hhckNvZGVBdCgxKT09PVNlJiZBZShlLmNoYXJDb2RlQXQoMCkpJiYodD1yPTIpO2ZvcihsZXQgcz1lLmxlbmd0aC0xO3M+PXQ7LS1zKXtjb25zdCB0PWUuY2hhckNvZGVBdChzKTtpZihMZSh0KSl7aWYoIWEpe3I9cysxO2JyZWFrfX1lbHNlLTE9PT1pJiYoYT0hMSxpPXMrMSksdD09PXllPy0xPT09bj9uPXM6MSE9PW8mJihvPTEpOi0xIT09biYmKG89LTEpfXJldHVybi0xPT09bnx8LTE9PT1pfHwwPT09b3x8MT09PW8mJm49PT1pLTEmJm49PT1yKzE/IiI6ZS5zbGljZShuLGkpfSxmb3JtYXQ6UmUuYmluZChudWxsLCJcXCIpLHBhcnNlKGUpe3hlKGUsInBhdGgiKTtjb25zdCB0PXtyb290OiIiLGRpcjoiIixiYXNlOiIiLGV4dDoiIixuYW1lOiIifTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIHQ7Y29uc3Qgbj1lLmxlbmd0aDtsZXQgcj0wLGk9ZS5jaGFyQ29kZUF0KDApO2lmKDE9PT1uKXJldHVybiBMZShpKT8odC5yb290PXQuZGlyPWUsdCk6KHQuYmFzZT10Lm5hbWU9ZSx0KTtpZihMZShpKSl7aWYocj0xLExlKGUuY2hhckNvZGVBdCgxKSkpe2xldCB0PTIsaT10O2Zvcig7dDxuJiYhTGUoZS5jaGFyQ29kZUF0KHQpKTspdCsrO2lmKHQ8biYmdCE9PWkpe2ZvcihpPXQ7dDxuJiZMZShlLmNoYXJDb2RlQXQodCkpOyl0Kys7aWYodDxuJiZ0IT09aSl7Zm9yKGk9dDt0PG4mJiFMZShlLmNoYXJDb2RlQXQodCkpOyl0Kys7dD09PW4/cj10OnQhPT1pJiYocj10KzEpfX19fWVsc2UgaWYoQWUoaSkmJmUuY2hhckNvZGVBdCgxKT09PVNlKXtpZihuPD0yKXJldHVybiB0LnJvb3Q9dC5kaXI9ZSx0O2lmKHI9MixMZShlLmNoYXJDb2RlQXQoMikpKXtpZigzPT09bilyZXR1cm4gdC5yb290PXQuZGlyPWUsdDtyPTN9fXI+MCYmKHQucm9vdD1lLnNsaWNlKDAscikpO2xldCBhPS0xLG89cixzPS0xLGw9ITAsYz1lLmxlbmd0aC0xLGg9MDtmb3IoO2M+PXI7LS1jKWlmKGk9ZS5jaGFyQ29kZUF0KGMpLExlKGkpKXtpZighbCl7bz1jKzE7YnJlYWt9fWVsc2UtMT09PXMmJihsPSExLHM9YysxKSxpPT09eWU/LTE9PT1hP2E9YzoxIT09aCYmKGg9MSk6LTEhPT1hJiYoaD0tMSk7cmV0dXJuLTEhPT1zJiYoLTE9PT1hfHwwPT09aHx8MT09PWgmJmE9PT1zLTEmJmE9PT1vKzE/dC5iYXNlPXQubmFtZT1lLnNsaWNlKG8scyk6KHQubmFtZT1lLnNsaWNlKG8sYSksdC5iYXNlPWUuc2xpY2UobyxzKSx0LmV4dD1lLnNsaWNlKGEscykpKSx0LmRpcj1vPjAmJm8hPT1yP2Uuc2xpY2UoMCxvLTEpOnQucm9vdCx0fSxzZXA6IlxcIixkZWxpbWl0ZXI6IjsiLHdpbjMyOm51bGwscG9zaXg6bnVsbH0sSWU9e3Jlc29sdmUoLi4uZSl7bGV0IHQ9IiIsbj0hMTtmb3IobGV0IHI9ZS5sZW5ndGgtMTtyPj0tMSYmIW47ci0tKXtjb25zdCBpPXI+PTA/ZVtyXTp3ZSgpO3hlKGksInBhdGgiKSwwIT09aS5sZW5ndGgmJih0PWAke2l9LyR7dH1gLG49aS5jaGFyQ29kZUF0KDApPT09VGUpfXJldHVybiB0PU1lKHQsIW4sIi8iLEVlKSxuP2AvJHt0fWA6dC5sZW5ndGg+MD90OiIuIn0sbm9ybWFsaXplKGUpe2lmKHhlKGUsInBhdGgiKSwwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KDApPT09VGUsbj1lLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSk9PT1UZTtyZXR1cm4gMD09PShlPU1lKGUsIXQsIi8iLEVlKSkubGVuZ3RoP3Q/Ii8iOm4/Ii4vIjoiLiI6KG4mJihlKz0iLyIpLHQ/YC8ke2V9YDplKX0saXNBYnNvbHV0ZTplPT4oeGUoZSwicGF0aCIpLGUubGVuZ3RoPjAmJmUuY2hhckNvZGVBdCgwKT09PVRlKSxqb2luKC4uLmUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4iLiI7bGV0IHQ7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDsrK24pe2NvbnN0IHI9ZVtuXTt4ZShyLCJwYXRoIiksci5sZW5ndGg+MCYmKHZvaWQgMD09PXQ/dD1yOnQrPWAvJHtyfWApfXJldHVybiB2b2lkIDA9PT10PyIuIjpJZS5ub3JtYWxpemUodCl9LHJlbGF0aXZlKGUsdCl7aWYoeGUoZSwiZnJvbSIpLHhlKHQsInRvIiksZT09PXQpcmV0dXJuIiI7aWYoKGU9SWUucmVzb2x2ZShlKSk9PT0odD1JZS5yZXNvbHZlKHQpKSlyZXR1cm4iIjtjb25zdCBuPWUubGVuZ3RoLHI9bi0xLGk9dC5sZW5ndGgtMSxhPXI8aT9yOmk7bGV0IG89LTEscz0wO2Zvcig7czxhO3MrKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQoMStzKTtpZihuIT09dC5jaGFyQ29kZUF0KDErcykpYnJlYWs7bj09PVRlJiYobz1zKX1pZihzPT09YSlpZihpPmEpe2lmKHQuY2hhckNvZGVBdCgxK3MpPT09VGUpcmV0dXJuIHQuc2xpY2UoMStzKzEpO2lmKDA9PT1zKXJldHVybiB0LnNsaWNlKDErcyl9ZWxzZSByPmEmJihlLmNoYXJDb2RlQXQoMStzKT09PVRlP289czowPT09cyYmKG89MCkpO2xldCBsPSIiO2ZvcihzPTErbysxO3M8PW47KytzKXMhPT1uJiZlLmNoYXJDb2RlQXQocykhPT1UZXx8KGwrPTA9PT1sLmxlbmd0aD8iLi4iOiIvLi4iKTtyZXR1cm5gJHtsfSR7dC5zbGljZSgxK28pfWB9LHRvTmFtZXNwYWNlZFBhdGg6ZT0+ZSxkaXJuYW1lKGUpe2lmKHhlKGUsInBhdGgiKSwwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KDApPT09VGU7bGV0IG49LTEscj0hMDtmb3IobGV0IHQ9ZS5sZW5ndGgtMTt0Pj0xOy0tdClpZihlLmNoYXJDb2RlQXQodCk9PT1UZSl7aWYoIXIpe249dDticmVha319ZWxzZSByPSExO3JldHVybi0xPT09bj90PyIvIjoiLiI6dCYmMT09PW4/Ii8vIjplLnNsaWNlKDAsbil9LGJhc2VuYW1lKGUsdCl7dm9pZCAwIT09dCYmeGUodCwiZXh0IikseGUoZSwicGF0aCIpO2xldCBuLHI9MCxpPS0xLGE9ITA7aWYodm9pZCAwIT09dCYmdC5sZW5ndGg+MCYmdC5sZW5ndGg8PWUubGVuZ3RoKXtpZih0PT09ZSlyZXR1cm4iIjtsZXQgbz10Lmxlbmd0aC0xLHM9LTE7Zm9yKG49ZS5sZW5ndGgtMTtuPj0wOy0tbil7Y29uc3QgbD1lLmNoYXJDb2RlQXQobik7aWYobD09PVRlKXtpZighYSl7cj1uKzE7YnJlYWt9fWVsc2UtMT09PXMmJihhPSExLHM9bisxKSxvPj0wJiYobD09PXQuY2hhckNvZGVBdChvKT8tMT09LS1vJiYoaT1uKToobz0tMSxpPXMpKX1yZXR1cm4gcj09PWk/aT1zOi0xPT09aSYmKGk9ZS5sZW5ndGgpLGUuc2xpY2UocixpKX1mb3Iobj1lLmxlbmd0aC0xO24+PTA7LS1uKWlmKGUuY2hhckNvZGVBdChuKT09PVRlKXtpZighYSl7cj1uKzE7YnJlYWt9fWVsc2UtMT09PWkmJihhPSExLGk9bisxKTtyZXR1cm4tMT09PWk/IiI6ZS5zbGljZShyLGkpfSxleHRuYW1lKGUpe3hlKGUsInBhdGgiKTtsZXQgdD0tMSxuPTAscj0tMSxpPSEwLGE9MDtmb3IobGV0IG89ZS5sZW5ndGgtMTtvPj0wOy0tbyl7Y29uc3Qgcz1lLmNoYXJDb2RlQXQobyk7aWYocyE9PVRlKS0xPT09ciYmKGk9ITEscj1vKzEpLHM9PT15ZT8tMT09PXQ/dD1vOjEhPT1hJiYoYT0xKTotMSE9PXQmJihhPS0xKTtlbHNlIGlmKCFpKXtuPW8rMTticmVha319cmV0dXJuLTE9PT10fHwtMT09PXJ8fDA9PT1hfHwxPT09YSYmdD09PXItMSYmdD09PW4rMT8iIjplLnNsaWNlKHQscil9LGZvcm1hdDpSZS5iaW5kKG51bGwsIi8iKSxwYXJzZShlKXt4ZShlLCJwYXRoIik7Y29uc3QgdD17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PWUubGVuZ3RoKXJldHVybiB0O2NvbnN0IG49ZS5jaGFyQ29kZUF0KDApPT09VGU7bGV0IHI7bj8odC5yb290PSIvIixyPTEpOnI9MDtsZXQgaT0tMSxhPTAsbz0tMSxzPSEwLGw9ZS5sZW5ndGgtMSxjPTA7Zm9yKDtsPj1yOy0tbCl7Y29uc3QgdD1lLmNoYXJDb2RlQXQobCk7aWYodCE9PVRlKS0xPT09byYmKHM9ITEsbz1sKzEpLHQ9PT15ZT8tMT09PWk/aT1sOjEhPT1jJiYoYz0xKTotMSE9PWkmJihjPS0xKTtlbHNlIGlmKCFzKXthPWwrMTticmVha319aWYoLTEhPT1vKXtjb25zdCByPTA9PT1hJiZuPzE6YTstMT09PWl8fDA9PT1jfHwxPT09YyYmaT09PW8tMSYmaT09PWErMT90LmJhc2U9dC5uYW1lPWUuc2xpY2UocixvKToodC5uYW1lPWUuc2xpY2UocixpKSx0LmJhc2U9ZS5zbGljZShyLG8pLHQuZXh0PWUuc2xpY2UoaSxvKSl9cmV0dXJuIGE+MD90LmRpcj1lLnNsaWNlKDAsYS0xKTpuJiYodC5kaXI9Ii8iKSx0fSxzZXA6Ii8iLGRlbGltaXRlcjoiOiIsd2luMzI6bnVsbCxwb3NpeDpudWxsfTtJZS53aW4zMj1OZS53aW4zMj1OZSxJZS5wb3NpeD1OZS5wb3NpeD1JZSwid2luMzIiPT09dmU/TmUubm9ybWFsaXplOkllLm5vcm1hbGl6ZSwid2luMzIiPT09dmU/TmUucmVzb2x2ZTpJZS5yZXNvbHZlLCJ3aW4zMiI9PT12ZT9OZS5yZWxhdGl2ZTpJZS5yZWxhdGl2ZSwid2luMzIiPT09dmU/TmUuZGlybmFtZTpJZS5kaXJuYW1lLCJ3aW4zMiI9PT12ZT9OZS5iYXNlbmFtZTpJZS5iYXNlbmFtZSwid2luMzIiPT09dmU/TmUuZXh0bmFtZTpJZS5leHRuYW1lLCJ3aW4zMiI9PT12ZT9OZS5zZXA6SWUuc2VwO2NvbnN0IFVlPS9eXHdbXHdcZCsuLV0qJC8sSGU9L15cLy8sRGU9L15cL1wvLztmdW5jdGlvbiB6ZShlLHQpe2lmKCFlLnNjaGVtZSYmdCl0aHJvdyBuZXcgRXJyb3IoYFtVcmlFcnJvcl06IFNjaGVtZSBpcyBtaXNzaW5nOiB7c2NoZW1lOiAiIiwgYXV0aG9yaXR5OiAiJHtlLmF1dGhvcml0eX0iLCBwYXRoOiAiJHtlLnBhdGh9IiwgcXVlcnk6ICIke2UucXVlcnl9IiwgZnJhZ21lbnQ6ICIke2UuZnJhZ21lbnR9In1gKTtpZihlLnNjaGVtZSYmIVVlLnRlc3QoZS5zY2hlbWUpKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogU2NoZW1lIGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVycy4iKTtpZihlLnBhdGgpaWYoZS5hdXRob3JpdHkpe2lmKCFIZS50ZXN0KGUucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBjb250YWlucyBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNvbXBvbmVudCBtdXN0IGVpdGhlciBiZSBlbXB0eSBvciBiZWdpbiB3aXRoIGEgc2xhc2ggKCIvIikgY2hhcmFjdGVyJyl9ZWxzZSBpZihEZS50ZXN0KGUucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBkb2VzIG5vdCBjb250YWluIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY2Fubm90IGJlZ2luIHdpdGggdHdvIHNsYXNoIGNoYXJhY3RlcnMgKCIvLyIpJyl9Y29uc3QgV2U9IiIsT2U9Ii8iLFBlPS9eKChbXjovPyNdKz8pOik/KFwvXC8oW14vPyNdKikpPyhbXj8jXSopKFw/KFteI10qKSk/KCMoLiopKT8vO2NsYXNzIHFle2NvbnN0cnVjdG9yKGUsdCxuLHIsaSxhPSExKXsib2JqZWN0Ij09dHlwZW9mIGU/KHRoaXMuc2NoZW1lPWUuc2NoZW1lfHxXZSx0aGlzLmF1dGhvcml0eT1lLmF1dGhvcml0eXx8V2UsdGhpcy5wYXRoPWUucGF0aHx8V2UsdGhpcy5xdWVyeT1lLnF1ZXJ5fHxXZSx0aGlzLmZyYWdtZW50PWUuZnJhZ21lbnR8fFdlKToodGhpcy5zY2hlbWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZXx8dD9lOiJmaWxlIn0oZSxhKSx0aGlzLmF1dGhvcml0eT10fHxXZSx0aGlzLnBhdGg9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSJodHRwcyI6Y2FzZSJodHRwIjpjYXNlImZpbGUiOnQ/dFswXSE9PU9lJiYodD1PZSt0KTp0PU9lfXJldHVybiB0fSh0aGlzLnNjaGVtZSxufHxXZSksdGhpcy5xdWVyeT1yfHxXZSx0aGlzLmZyYWdtZW50PWl8fFdlLHplKHRoaXMsYSkpfXN0YXRpYyBpc1VyaShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHFlfHwhIWUmJigic3RyaW5nIj09dHlwZW9mIGUuYXV0aG9yaXR5JiYic3RyaW5nIj09dHlwZW9mIGUuZnJhZ21lbnQmJiJzdHJpbmciPT10eXBlb2YgZS5wYXRoJiYic3RyaW5nIj09dHlwZW9mIGUucXVlcnkmJiJzdHJpbmciPT10eXBlb2YgZS5zY2hlbWUmJiJzdHJpbmciPT10eXBlb2YgZS5mc1BhdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLndpdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnRvU3RyaW5nKX1nZXQgZnNQYXRoKCl7cmV0dXJuIEdlKHRoaXMsITEpfXdpdGgoZSl7aWYoIWUpcmV0dXJuIHRoaXM7bGV0e3NjaGVtZTp0LGF1dGhvcml0eTpuLHBhdGg6cixxdWVyeTppLGZyYWdtZW50OmF9PWU7cmV0dXJuIHZvaWQgMD09PXQ/dD10aGlzLnNjaGVtZTpudWxsPT09dCYmKHQ9V2UpLHZvaWQgMD09PW4/bj10aGlzLmF1dGhvcml0eTpudWxsPT09biYmKG49V2UpLHZvaWQgMD09PXI/cj10aGlzLnBhdGg6bnVsbD09PXImJihyPVdlKSx2b2lkIDA9PT1pP2k9dGhpcy5xdWVyeTpudWxsPT09aSYmKGk9V2UpLHZvaWQgMD09PWE/YT10aGlzLmZyYWdtZW50Om51bGw9PT1hJiYoYT1XZSksdD09PXRoaXMuc2NoZW1lJiZuPT09dGhpcy5hdXRob3JpdHkmJnI9PT10aGlzLnBhdGgmJmk9PT10aGlzLnF1ZXJ5JiZhPT09dGhpcy5mcmFnbWVudD90aGlzOm5ldyBCZSh0LG4scixpLGEpfXN0YXRpYyBwYXJzZShlLHQ9ITEpe2NvbnN0IG49UGUuZXhlYyhlKTtyZXR1cm4gbj9uZXcgQmUoblsyXXx8V2UsWWUobls0XXx8V2UpLFllKG5bNV18fFdlKSxZZShuWzddfHxXZSksWWUobls5XXx8V2UpLHQpOm5ldyBCZShXZSxXZSxXZSxXZSxXZSl9c3RhdGljIGZpbGUoZSl7bGV0IHQ9V2U7aWYoQSYmKGU9ZS5yZXBsYWNlKC9cXC9nLE9lKSksZVswXT09PU9lJiZlWzFdPT09T2Upe2NvbnN0IG49ZS5pbmRleE9mKE9lLDIpOy0xPT09bj8odD1lLnN1YnN0cmluZygyKSxlPU9lKToodD1lLnN1YnN0cmluZygyLG4pLGU9ZS5zdWJzdHJpbmcobil8fE9lKX1yZXR1cm4gbmV3IEJlKCJmaWxlIix0LGUsV2UsV2UpfXN0YXRpYyBmcm9tKGUpe2NvbnN0IHQ9bmV3IEJlKGUuc2NoZW1lLGUuYXV0aG9yaXR5LGUucGF0aCxlLnF1ZXJ5LGUuZnJhZ21lbnQpO3JldHVybiB6ZSh0LCEwKSx0fXN0YXRpYyBqb2luUGF0aChlLC4uLnQpe2lmKCFlLnBhdGgpdGhyb3cgbmV3IEVycm9yKCJbVXJpRXJyb3JdOiBjYW5ub3QgY2FsbCBqb2luUGF0aCBvbiBVUkkgd2l0aG91dCBwYXRoIik7bGV0IG47cmV0dXJuIG49QSYmImZpbGUiPT09ZS5zY2hlbWU/cWUuZmlsZShOZS5qb2luKEdlKGUsITApLC4uLnQpKS5wYXRoOkllLmpvaW4oZS5wYXRoLC4uLnQpLGUud2l0aCh7cGF0aDpufSl9dG9TdHJpbmcoZT0hMSl7cmV0dXJuICRlKHRoaXMsZSl9dG9KU09OKCl7cmV0dXJuIHRoaXN9c3RhdGljIHJldml2ZShlKXtpZihlKXtpZihlIGluc3RhbmNlb2YgcWUpcmV0dXJuIGU7e2NvbnN0IHQ9bmV3IEJlKGUpO3JldHVybiB0Ll9mb3JtYXR0ZWQ9ZS5leHRlcm5hbCx0Ll9mc1BhdGg9ZS5fc2VwPT09RmU/ZS5mc1BhdGg6bnVsbCx0fX1yZXR1cm4gZX19Y29uc3QgRmU9QT8xOnZvaWQgMDtjbGFzcyBCZSBleHRlbmRzIHFle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9mb3JtYXR0ZWQ9bnVsbCx0aGlzLl9mc1BhdGg9bnVsbH1nZXQgZnNQYXRoKCl7cmV0dXJuIHRoaXMuX2ZzUGF0aHx8KHRoaXMuX2ZzUGF0aD1HZSh0aGlzLCExKSksdGhpcy5fZnNQYXRofXRvU3RyaW5nKGU9ITEpe3JldHVybiBlPyRlKHRoaXMsITApOih0aGlzLl9mb3JtYXR0ZWR8fCh0aGlzLl9mb3JtYXR0ZWQ9JGUodGhpcywhMSkpLHRoaXMuX2Zvcm1hdHRlZCl9dG9KU09OKCl7Y29uc3QgZT17JG1pZDoxfTtyZXR1cm4gdGhpcy5fZnNQYXRoJiYoZS5mc1BhdGg9dGhpcy5fZnNQYXRoLGUuX3NlcD1GZSksdGhpcy5fZm9ybWF0dGVkJiYoZS5leHRlcm5hbD10aGlzLl9mb3JtYXR0ZWQpLHRoaXMucGF0aCYmKGUucGF0aD10aGlzLnBhdGgpLHRoaXMuc2NoZW1lJiYoZS5zY2hlbWU9dGhpcy5zY2hlbWUpLHRoaXMuYXV0aG9yaXR5JiYoZS5hdXRob3JpdHk9dGhpcy5hdXRob3JpdHkpLHRoaXMucXVlcnkmJihlLnF1ZXJ5PXRoaXMucXVlcnkpLHRoaXMuZnJhZ21lbnQmJihlLmZyYWdtZW50PXRoaXMuZnJhZ21lbnQpLGV9fWNvbnN0IFZlPXs1ODoiJTNBIiw0NzoiJTJGIiw2MzoiJTNGIiwzNToiJTIzIiw5MToiJTVCIiw5MzoiJTVEIiw2NDoiJTQwIiwzMzoiJTIxIiwzNjoiJTI0IiwzODoiJTI2IiwzOToiJTI3Iiw0MDoiJTI4Iiw0MToiJTI5Iiw0MjoiJTJBIiw0MzoiJTJCIiw0NDoiJTJDIiw1OToiJTNCIiw2MToiJTNEIiwzMjoiJTIwIn07ZnVuY3Rpb24gS2UoZSx0KXtsZXQgbixyPS0xO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKXtjb25zdCBhPWUuY2hhckNvZGVBdChpKTtpZihhPj05NyYmYTw9MTIyfHxhPj02NSYmYTw9OTB8fGE+PTQ4JiZhPD01N3x8NDU9PT1hfHw0Nj09PWF8fDk1PT09YXx8MTI2PT09YXx8dCYmNDc9PT1hKS0xIT09ciYmKG4rPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhyLGkpKSxyPS0xKSx2b2lkIDAhPT1uJiYobis9ZS5jaGFyQXQoaSkpO2Vsc2V7dm9pZCAwPT09biYmKG49ZS5zdWJzdHIoMCxpKSk7Y29uc3QgdD1WZVthXTt2b2lkIDAhPT10PygtMSE9PXImJihuKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocixpKSkscj0tMSksbis9dCk6LTE9PT1yJiYocj1pKX19cmV0dXJuLTEhPT1yJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKHIpKSksdm9pZCAwIT09bj9uOmV9ZnVuY3Rpb24gamUoZSl7bGV0IHQ7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KG4pOzM1PT09cnx8NjM9PT1yPyh2b2lkIDA9PT10JiYodD1lLnN1YnN0cigwLG4pKSx0Kz1WZVtyXSk6dm9pZCAwIT09dCYmKHQrPWVbbl0pfXJldHVybiB2b2lkIDAhPT10P3Q6ZX1mdW5jdGlvbiBHZShlLHQpe2xldCBuO3JldHVybiBuPWUuYXV0aG9yaXR5JiZlLnBhdGgubGVuZ3RoPjEmJiJmaWxlIj09PWUuc2NoZW1lP2AvLyR7ZS5hdXRob3JpdHl9JHtlLnBhdGh9YDo0Nz09PWUucGF0aC5jaGFyQ29kZUF0KDApJiYoZS5wYXRoLmNoYXJDb2RlQXQoMSk+PTY1JiZlLnBhdGguY2hhckNvZGVBdCgxKTw9OTB8fGUucGF0aC5jaGFyQ29kZUF0KDEpPj05NyYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTEyMikmJjU4PT09ZS5wYXRoLmNoYXJDb2RlQXQoMik/dD9lLnBhdGguc3Vic3RyKDEpOmUucGF0aFsxXS50b0xvd2VyQ2FzZSgpK2UucGF0aC5zdWJzdHIoMik6ZS5wYXRoLEEmJihuPW4ucmVwbGFjZSgvXC8vZywiXFwiKSksbn1mdW5jdGlvbiAkZShlLHQpe2NvbnN0IG49dD9qZTpLZTtsZXQgcj0iIix7c2NoZW1lOmksYXV0aG9yaXR5OmEscGF0aDpvLHF1ZXJ5OnMsZnJhZ21lbnQ6bH09ZTtpZihpJiYocis9aSxyKz0iOiIpLChhfHwiZmlsZSI9PT1pKSYmKHIrPU9lLHIrPU9lKSxhKXtsZXQgZT1hLmluZGV4T2YoIkAiKTtpZigtMSE9PWUpe2NvbnN0IHQ9YS5zdWJzdHIoMCxlKTthPWEuc3Vic3RyKGUrMSksZT10LmluZGV4T2YoIjoiKSwtMT09PWU/cis9bih0LCExKToocis9bih0LnN1YnN0cigwLGUpLCExKSxyKz0iOiIscis9bih0LnN1YnN0cihlKzEpLCExKSkscis9IkAifWE9YS50b0xvd2VyQ2FzZSgpLGU9YS5pbmRleE9mKCI6IiksLTE9PT1lP3IrPW4oYSwhMSk6KHIrPW4oYS5zdWJzdHIoMCxlKSwhMSkscis9YS5zdWJzdHIoZSkpfWlmKG8pe2lmKG8ubGVuZ3RoPj0zJiY0Nz09PW8uY2hhckNvZGVBdCgwKSYmNTg9PT1vLmNoYXJDb2RlQXQoMikpe2NvbnN0IGU9by5jaGFyQ29kZUF0KDEpO2U+PTY1JiZlPD05MCYmKG89YC8ke1N0cmluZy5mcm9tQ2hhckNvZGUoZSszMil9OiR7by5zdWJzdHIoMyl9YCl9ZWxzZSBpZihvLmxlbmd0aD49MiYmNTg9PT1vLmNoYXJDb2RlQXQoMSkpe2NvbnN0IGU9by5jaGFyQ29kZUF0KDApO2U+PTY1JiZlPD05MCYmKG89YCR7U3RyaW5nLmZyb21DaGFyQ29kZShlKzMyKX06JHtvLnN1YnN0cigyKX1gKX1yKz1uKG8sITApfXJldHVybiBzJiYocis9Ij8iLHIrPW4ocywhMSkpLGwmJihyKz0iIyIscis9dD9sOktlKGwsITEpKSxyfWZ1bmN0aW9uIEplKGUpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGUpfWNhdGNoKHQpe3JldHVybiBlLmxlbmd0aD4zP2Uuc3Vic3RyKDAsMykrSmUoZS5zdWJzdHIoMykpOmV9fWNvbnN0IFhlPS8oJVswLTlBLVphLXpdWzAtOUEtWmEtel0pKy9nO2Z1bmN0aW9uIFllKGUpe3JldHVybiBlLm1hdGNoKFhlKT9lLnJlcGxhY2UoWGUsKGU9PkplKGUpKSk6ZX1jbGFzcyBRZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubGluZU51bWJlcj1lLHRoaXMuY29sdW1uPXR9d2l0aChlPXRoaXMubGluZU51bWJlcix0PXRoaXMuY29sdW1uKXtyZXR1cm4gZT09PXRoaXMubGluZU51bWJlciYmdD09PXRoaXMuY29sdW1uP3RoaXM6bmV3IFFlKGUsdCl9ZGVsdGEoZT0wLHQ9MCl7cmV0dXJuIHRoaXMud2l0aCh0aGlzLmxpbmVOdW1iZXIrZSx0aGlzLmNvbHVtbit0KX1lcXVhbHMoZSl7cmV0dXJuIFFlLmVxdWFscyh0aGlzLGUpfXN0YXRpYyBlcXVhbHMoZSx0KXtyZXR1cm4hZSYmIXR8fCEhZSYmISF0JiZlLmxpbmVOdW1iZXI9PT10LmxpbmVOdW1iZXImJmUuY29sdW1uPT09dC5jb2x1bW59aXNCZWZvcmUoZSl7cmV0dXJuIFFlLmlzQmVmb3JlKHRoaXMsZSl9c3RhdGljIGlzQmVmb3JlKGUsdCl7cmV0dXJuIGUubGluZU51bWJlcjx0LmxpbmVOdW1iZXJ8fCEodC5saW5lTnVtYmVyPGUubGluZU51bWJlcikmJmUuY29sdW1uPHQuY29sdW1ufWlzQmVmb3JlT3JFcXVhbChlKXtyZXR1cm4gUWUuaXNCZWZvcmVPckVxdWFsKHRoaXMsZSl9c3RhdGljIGlzQmVmb3JlT3JFcXVhbChlLHQpe3JldHVybiBlLmxpbmVOdW1iZXI8dC5saW5lTnVtYmVyfHwhKHQubGluZU51bWJlcjxlLmxpbmVOdW1iZXIpJiZlLmNvbHVtbjw9dC5jb2x1bW59c3RhdGljIGNvbXBhcmUoZSx0KXtjb25zdCBuPTB8ZS5saW5lTnVtYmVyLHI9MHx0LmxpbmVOdW1iZXI7aWYobj09PXIpe3JldHVybigwfGUuY29sdW1uKS0oMHx0LmNvbHVtbil9cmV0dXJuIG4tcn1jbG9uZSgpe3JldHVybiBuZXcgUWUodGhpcy5saW5lTnVtYmVyLHRoaXMuY29sdW1uKX10b1N0cmluZygpe3JldHVybiIoIit0aGlzLmxpbmVOdW1iZXIrIiwiK3RoaXMuY29sdW1uKyIpIn1zdGF0aWMgbGlmdChlKXtyZXR1cm4gbmV3IFFlKGUubGluZU51bWJlcixlLmNvbHVtbil9c3RhdGljIGlzSVBvc2l0aW9uKGUpe3JldHVybiBlJiYibnVtYmVyIj09dHlwZW9mIGUubGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLmNvbHVtbn19Y2xhc3MgWmV7Y29uc3RydWN0b3IoZSx0LG4scil7ZT5ufHxlPT09biYmdD5yPyh0aGlzLnN0YXJ0TGluZU51bWJlcj1uLHRoaXMuc3RhcnRDb2x1bW49cix0aGlzLmVuZExpbmVOdW1iZXI9ZSx0aGlzLmVuZENvbHVtbj10KToodGhpcy5zdGFydExpbmVOdW1iZXI9ZSx0aGlzLnN0YXJ0Q29sdW1uPXQsdGhpcy5lbmRMaW5lTnVtYmVyPW4sdGhpcy5lbmRDb2x1bW49cil9aXNFbXB0eSgpe3JldHVybiBaZS5pc0VtcHR5KHRoaXMpfXN0YXRpYyBpc0VtcHR5KGUpe3JldHVybiBlLnN0YXJ0TGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmZS5zdGFydENvbHVtbj09PWUuZW5kQ29sdW1ufWNvbnRhaW5zUG9zaXRpb24oZSl7cmV0dXJuIFplLmNvbnRhaW5zUG9zaXRpb24odGhpcyxlKX1zdGF0aWMgY29udGFpbnNQb3NpdGlvbihlLHQpe3JldHVybiEodC5saW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmxpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5saW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuY29sdW1uPGUuc3RhcnRDb2x1bW4pJiYhKHQubGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5jb2x1bW4+ZS5lbmRDb2x1bW4pKX1zdGF0aWMgc3RyaWN0Q29udGFpbnNQb3NpdGlvbihlLHQpe3JldHVybiEodC5saW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmxpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5saW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuY29sdW1uPD1lLnN0YXJ0Q29sdW1uKSYmISh0LmxpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuY29sdW1uPj1lLmVuZENvbHVtbikpfWNvbnRhaW5zUmFuZ2UoZSl7cmV0dXJuIFplLmNvbnRhaW5zUmFuZ2UodGhpcyxlKX1zdGF0aWMgY29udGFpbnNSYW5nZShlLHQpe3JldHVybiEodC5zdGFydExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcikmJighKHQuc3RhcnRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQuc3RhcnRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuc3RhcnRDb2x1bW48ZS5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbj5lLmVuZENvbHVtbikpKX1zdHJpY3RDb250YWluc1JhbmdlKGUpe3JldHVybiBaZS5zdHJpY3RDb250YWluc1JhbmdlKHRoaXMsZSl9c3RhdGljIHN0cmljdENvbnRhaW5zUmFuZ2UoZSx0KXtyZXR1cm4hKHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPD1lLnN0YXJ0Q29sdW1uKSYmISh0LmVuZExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPj1lLmVuZENvbHVtbikpKX1wbHVzUmFuZ2UoZSl7cmV0dXJuIFplLnBsdXNSYW5nZSh0aGlzLGUpfXN0YXRpYyBwbHVzUmFuZ2UoZSx0KXtsZXQgbixyLGksYTtyZXR1cm4gdC5zdGFydExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXI/KG49dC5zdGFydExpbmVOdW1iZXIscj10LnN0YXJ0Q29sdW1uKTp0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyPyhuPXQuc3RhcnRMaW5lTnVtYmVyLHI9TWF0aC5taW4odC5zdGFydENvbHVtbixlLnN0YXJ0Q29sdW1uKSk6KG49ZS5zdGFydExpbmVOdW1iZXIscj1lLnN0YXJ0Q29sdW1uKSx0LmVuZExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyPyhpPXQuZW5kTGluZU51bWJlcixhPXQuZW5kQ29sdW1uKTp0LmVuZExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXI/KGk9dC5lbmRMaW5lTnVtYmVyLGE9TWF0aC5tYXgodC5lbmRDb2x1bW4sZS5lbmRDb2x1bW4pKTooaT1lLmVuZExpbmVOdW1iZXIsYT1lLmVuZENvbHVtbiksbmV3IFplKG4scixpLGEpfWludGVyc2VjdFJhbmdlcyhlKXtyZXR1cm4gWmUuaW50ZXJzZWN0UmFuZ2VzKHRoaXMsZSl9c3RhdGljIGludGVyc2VjdFJhbmdlcyhlLHQpe2xldCBuPWUuc3RhcnRMaW5lTnVtYmVyLHI9ZS5zdGFydENvbHVtbixpPWUuZW5kTGluZU51bWJlcixhPWUuZW5kQ29sdW1uLG89dC5zdGFydExpbmVOdW1iZXIscz10LnN0YXJ0Q29sdW1uLGw9dC5lbmRMaW5lTnVtYmVyLGM9dC5lbmRDb2x1bW47cmV0dXJuIG48bz8obj1vLHI9cyk6bj09PW8mJihyPU1hdGgubWF4KHIscykpLGk+bD8oaT1sLGE9Yyk6aT09PWwmJihhPU1hdGgubWluKGEsYykpLG4+aXx8bj09PWkmJnI+YT9udWxsOm5ldyBaZShuLHIsaSxhKX1lcXVhbHNSYW5nZShlKXtyZXR1cm4gWmUuZXF1YWxzUmFuZ2UodGhpcyxlKX1zdGF0aWMgZXF1YWxzUmFuZ2UoZSx0KXtyZXR1cm4hIWUmJiEhdCYmZS5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5zdGFydENvbHVtbj09PXQuc3RhcnRDb2x1bW4mJmUuZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlciYmZS5lbmRDb2x1bW49PT10LmVuZENvbHVtbn1nZXRFbmRQb3NpdGlvbigpe3JldHVybiBaZS5nZXRFbmRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0RW5kUG9zaXRpb24oZSl7cmV0dXJuIG5ldyBRZShlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pfWdldFN0YXJ0UG9zaXRpb24oKXtyZXR1cm4gWmUuZ2V0U3RhcnRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0U3RhcnRQb3NpdGlvbihlKXtyZXR1cm4gbmV3IFFlKGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLmVuZExpbmVOdW1iZXIrIiwiK3RoaXMuZW5kQ29sdW1uKyJdIn1zZXRFbmRQb3NpdGlvbihlLHQpe3JldHVybiBuZXcgWmUodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbixlLHQpfXNldFN0YXJ0UG9zaXRpb24oZSx0KXtyZXR1cm4gbmV3IFplKGUsdCx0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4pfWNvbGxhcHNlVG9TdGFydCgpe3JldHVybiBaZS5jb2xsYXBzZVRvU3RhcnQodGhpcyl9c3RhdGljIGNvbGxhcHNlVG9TdGFydChlKXtyZXR1cm4gbmV3IFplKGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbil9c3RhdGljIGZyb21Qb3NpdGlvbnMoZSx0PWUpe3JldHVybiBuZXcgWmUoZS5saW5lTnVtYmVyLGUuY29sdW1uLHQubGluZU51bWJlcix0LmNvbHVtbil9c3RhdGljIGxpZnQoZSl7cmV0dXJuIGU/bmV3IFplKGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKTpudWxsfXN0YXRpYyBpc0lSYW5nZShlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0TGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0Q29sdW1uJiYibnVtYmVyIj09dHlwZW9mIGUuZW5kTGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLmVuZENvbHVtbn1zdGF0aWMgYXJlSW50ZXJzZWN0aW5nT3JUb3VjaGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48dC5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5lbmRDb2x1bW48ZS5zdGFydENvbHVtbil9c3RhdGljIGFyZUludGVyc2VjdGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48PXQuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPD1lLnN0YXJ0Q29sdW1uKX1zdGF0aWMgY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKGUsdCl7aWYoZSYmdCl7Y29uc3Qgbj0wfGUuc3RhcnRMaW5lTnVtYmVyLHI9MHx0LnN0YXJ0TGluZU51bWJlcjtpZihuPT09cil7Y29uc3Qgbj0wfGUuc3RhcnRDb2x1bW4scj0wfHQuc3RhcnRDb2x1bW47aWYobj09PXIpe2NvbnN0IG49MHxlLmVuZExpbmVOdW1iZXIscj0wfHQuZW5kTGluZU51bWJlcjtpZihuPT09cil7cmV0dXJuKDB8ZS5lbmRDb2x1bW4pLSgwfHQuZW5kQ29sdW1uKX1yZXR1cm4gbi1yfXJldHVybiBuLXJ9cmV0dXJuIG4tcn1yZXR1cm4oZT8xOjApLSh0PzE6MCl9c3RhdGljIGNvbXBhcmVSYW5nZXNVc2luZ0VuZHMoZSx0KXtyZXR1cm4gZS5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyP2UuZW5kQ29sdW1uPT09dC5lbmRDb2x1bW4/ZS5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlcj9lLnN0YXJ0Q29sdW1uLXQuc3RhcnRDb2x1bW46ZS5zdGFydExpbmVOdW1iZXItdC5zdGFydExpbmVOdW1iZXI6ZS5lbmRDb2x1bW4tdC5lbmRDb2x1bW46ZS5lbmRMaW5lTnVtYmVyLXQuZW5kTGluZU51bWJlcn1zdGF0aWMgc3BhbnNNdWx0aXBsZUxpbmVzKGUpe3JldHVybiBlLmVuZExpbmVOdW1iZXI+ZS5zdGFydExpbmVOdW1iZXJ9dG9KU09OKCl7cmV0dXJuIHRoaXN9fWZ1bmN0aW9uIGV0KGUsdCxuLHIpe3JldHVybiBuZXcgZ2UoZSx0LG4pLkNvbXB1dGVEaWZmKHIpfWNsYXNzIHR0e2NvbnN0cnVjdG9yKGUpe2NvbnN0IHQ9W10sbj1bXTtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspdFtyXT1vdChlW3JdLDEpLG5bcl09c3QoZVtyXSwxKTt0aGlzLmxpbmVzPWUsdGhpcy5fc3RhcnRDb2x1bW5zPXQsdGhpcy5fZW5kQ29sdW1ucz1ufWdldEVsZW1lbnRzKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxuPXRoaXMubGluZXMubGVuZ3RoO3Q8bjt0KyspZVt0XT10aGlzLmxpbmVzW3RdLnN1YnN0cmluZyh0aGlzLl9zdGFydENvbHVtbnNbdF0tMSx0aGlzLl9lbmRDb2x1bW5zW3RdLTEpO3JldHVybiBlfWdldFN0cmljdEVsZW1lbnQoZSl7cmV0dXJuIHRoaXMubGluZXNbZV19Z2V0U3RhcnRMaW5lTnVtYmVyKGUpe3JldHVybiBlKzF9Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4gZSsxfWNyZWF0ZUNoYXJTZXF1ZW5jZShlLHQsbil7Y29uc3Qgcj1bXSxpPVtdLGE9W107bGV0IG89MDtmb3IobGV0IHM9dDtzPD1uO3MrKyl7Y29uc3QgdD10aGlzLmxpbmVzW3NdLG49ZT90aGlzLl9zdGFydENvbHVtbnNbc106MSxsPWU/dGhpcy5fZW5kQ29sdW1uc1tzXTp0Lmxlbmd0aCsxO2ZvcihsZXQgZT1uO2U8bDtlKyspcltvXT10LmNoYXJDb2RlQXQoZS0xKSxpW29dPXMrMSxhW29dPWUsbysrfXJldHVybiBuZXcgbnQocixpLGEpfX1jbGFzcyBudHtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5fY2hhckNvZGVzPWUsdGhpcy5fbGluZU51bWJlcnM9dCx0aGlzLl9jb2x1bW5zPW59Z2V0RWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fY2hhckNvZGVzfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gdGhpcy5fbGluZU51bWJlcnNbZV19Z2V0U3RhcnRDb2x1bW4oZSl7cmV0dXJuIHRoaXMuX2NvbHVtbnNbZV19Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4gdGhpcy5fbGluZU51bWJlcnNbZV19Z2V0RW5kQ29sdW1uKGUpe3JldHVybiB0aGlzLl9jb2x1bW5zW2VdKzF9fWNsYXNzIHJ0e2NvbnN0cnVjdG9yKGUsdCxuLHIsaSxhLG8scyl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxTdGFydENvbHVtbj10LHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPW4sdGhpcy5vcmlnaW5hbEVuZENvbHVtbj1yLHRoaXMubW9kaWZpZWRTdGFydExpbmVOdW1iZXI9aSx0aGlzLm1vZGlmaWVkU3RhcnRDb2x1bW49YSx0aGlzLm1vZGlmaWVkRW5kTGluZU51bWJlcj1vLHRoaXMubW9kaWZpZWRFbmRDb2x1bW49c31zdGF0aWMgY3JlYXRlRnJvbURpZmZDaGFuZ2UoZSx0LG4pe2xldCByLGksYSxvLHMsbCxjLGg7cmV0dXJuIDA9PT1lLm9yaWdpbmFsTGVuZ3RoPyhyPTAsaT0wLGE9MCxvPTApOihyPXQuZ2V0U3RhcnRMaW5lTnVtYmVyKGUub3JpZ2luYWxTdGFydCksaT10LmdldFN0YXJ0Q29sdW1uKGUub3JpZ2luYWxTdGFydCksYT10LmdldEVuZExpbmVOdW1iZXIoZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGgtMSksbz10LmdldEVuZENvbHVtbihlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aC0xKSksMD09PWUubW9kaWZpZWRMZW5ndGg/KHM9MCxsPTAsYz0wLGg9MCk6KHM9bi5nZXRTdGFydExpbmVOdW1iZXIoZS5tb2RpZmllZFN0YXJ0KSxsPW4uZ2V0U3RhcnRDb2x1bW4oZS5tb2RpZmllZFN0YXJ0KSxjPW4uZ2V0RW5kTGluZU51bWJlcihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKSxoPW4uZ2V0RW5kQ29sdW1uKGUubW9kaWZpZWRTdGFydCtlLm1vZGlmaWVkTGVuZ3RoLTEpKSxuZXcgcnQocixpLGEsbyxzLGwsYyxoKX19Y2xhc3MgaXR7Y29uc3RydWN0b3IoZSx0LG4scixpKXt0aGlzLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5vcmlnaW5hbEVuZExpbmVOdW1iZXI9dCx0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPW4sdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9cix0aGlzLmNoYXJDaGFuZ2VzPWl9c3RhdGljIGNyZWF0ZUZyb21EaWZmUmVzdWx0KGUsdCxuLHIsaSxhLG8pe2xldCBzLGwsYyxoLGQ7aWYoMD09PXQub3JpZ2luYWxMZW5ndGg/KHM9bi5nZXRTdGFydExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0KS0xLGw9MCk6KHM9bi5nZXRTdGFydExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0KSxsPW4uZ2V0RW5kTGluZU51bWJlcih0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC0xKSksMD09PXQubW9kaWZpZWRMZW5ndGg/KGM9ci5nZXRTdGFydExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0KS0xLGg9MCk6KGM9ci5nZXRTdGFydExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0KSxoPXIuZ2V0RW5kTGluZU51bWJlcih0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC0xKSksYSYmdC5vcmlnaW5hbExlbmd0aD4wJiZ0Lm9yaWdpbmFsTGVuZ3RoPDIwJiZ0Lm1vZGlmaWVkTGVuZ3RoPjAmJnQubW9kaWZpZWRMZW5ndGg8MjAmJmkoKSl7Y29uc3QgYT1uLmNyZWF0ZUNoYXJTZXF1ZW5jZShlLHQub3JpZ2luYWxTdGFydCx0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC0xKSxzPXIuY3JlYXRlQ2hhclNlcXVlbmNlKGUsdC5tb2RpZmllZFN0YXJ0LHQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoLTEpO2xldCBsPWV0KGEscyxpLCEwKS5jaGFuZ2VzO28mJihsPWZ1bmN0aW9uKGUpe2lmKGUubGVuZ3RoPD0xKXJldHVybiBlO2NvbnN0IHQ9W2VbMF1dO2xldCBuPXRbMF07Zm9yKGxldCByPTEsaT1lLmxlbmd0aDtyPGk7cisrKXtjb25zdCBpPWVbcl0sYT1pLm9yaWdpbmFsU3RhcnQtKG4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoKSxvPWkubW9kaWZpZWRTdGFydC0obi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgpO01hdGgubWluKGEsbyk8Mz8obi5vcmlnaW5hbExlbmd0aD1pLm9yaWdpbmFsU3RhcnQraS5vcmlnaW5hbExlbmd0aC1uLm9yaWdpbmFsU3RhcnQsbi5tb2RpZmllZExlbmd0aD1pLm1vZGlmaWVkU3RhcnQraS5tb2RpZmllZExlbmd0aC1uLm1vZGlmaWVkU3RhcnQpOih0LnB1c2goaSksbj1pKX1yZXR1cm4gdH0obCkpLGQ9W107Zm9yKGxldCBlPTAsdD1sLmxlbmd0aDtlPHQ7ZSsrKWQucHVzaChydC5jcmVhdGVGcm9tRGlmZkNoYW5nZShsW2VdLGEscykpfXJldHVybiBuZXcgaXQocyxsLGMsaCxkKX19Y2xhc3MgYXR7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzPW4uc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcz1uLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZT1uLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmY9bi5zaG91bGRNYWtlUHJldHR5RGlmZix0aGlzLm9yaWdpbmFsTGluZXM9ZSx0aGlzLm1vZGlmaWVkTGluZXM9dCx0aGlzLm9yaWdpbmFsPW5ldyB0dChlKSx0aGlzLm1vZGlmaWVkPW5ldyB0dCh0KSx0aGlzLmNvbnRpbnVlTGluZURpZmY9bHQobi5tYXhDb21wdXRhdGlvblRpbWUpLHRoaXMuY29udGludWVDaGFyRGlmZj1sdCgwPT09bi5tYXhDb21wdXRhdGlvblRpbWU/MDpNYXRoLm1pbihuLm1heENvbXB1dGF0aW9uVGltZSw1ZTMpKX1jb21wdXRlRGlmZigpe2lmKDE9PT10aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMub3JpZ2luYWwubGluZXNbMF0ubGVuZ3RoKXJldHVybiAxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aD97cXVpdEVhcmx5OiExLGNoYW5nZXM6W119OntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjEsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgsY2hhckNoYW5nZXM6W3ttb2RpZmllZEVuZENvbHVtbjowLG1vZGlmaWVkRW5kTGluZU51bWJlcjowLG1vZGlmaWVkU3RhcnRDb2x1bW46MCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjowLG9yaWdpbmFsRW5kQ29sdW1uOjAsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjAsb3JpZ2luYWxTdGFydENvbHVtbjowLG9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjB9XX1dfTtpZigxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aClyZXR1cm57cXVpdEVhcmx5OiExLGNoYW5nZXM6W3tvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjoxLG9yaWdpbmFsRW5kTGluZU51bWJlcjp0aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjoxLG1vZGlmaWVkRW5kTGluZU51bWJlcjoxLGNoYXJDaGFuZ2VzOlt7bW9kaWZpZWRFbmRDb2x1bW46MCxtb2RpZmllZEVuZExpbmVOdW1iZXI6MCxtb2RpZmllZFN0YXJ0Q29sdW1uOjAsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MCxvcmlnaW5hbEVuZENvbHVtbjowLG9yaWdpbmFsRW5kTGluZU51bWJlcjowLG9yaWdpbmFsU3RhcnRDb2x1bW46MCxvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjowfV19XX07Y29uc3QgZT1ldCh0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUxpbmVEaWZmLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmYpLHQ9ZS5jaGFuZ2VzLG49ZS5xdWl0RWFybHk7aWYodGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZSl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxyPXQubGVuZ3RoO248cjtuKyspZS5wdXNoKGl0LmNyZWF0ZUZyb21EaWZmUmVzdWx0KHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2UsdFtuXSx0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUNoYXJEaWZmLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcykpO3JldHVybntxdWl0RWFybHk6bixjaGFuZ2VzOmV9fWNvbnN0IHI9W107bGV0IGk9MCxhPTA7Zm9yKGxldCBlPS0xLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbz1lKzE8bj90W2UrMV06bnVsbCxzPW8/by5vcmlnaW5hbFN0YXJ0OnRoaXMub3JpZ2luYWxMaW5lcy5sZW5ndGgsbD1vP28ubW9kaWZpZWRTdGFydDp0aGlzLm1vZGlmaWVkTGluZXMubGVuZ3RoO2Zvcig7aTxzJiZhPGw7KXtjb25zdCBlPXRoaXMub3JpZ2luYWxMaW5lc1tpXSx0PXRoaXMubW9kaWZpZWRMaW5lc1thXTtpZihlIT09dCl7e2xldCBuPW90KGUsMSksbz1vdCh0LDEpO2Zvcig7bj4xJiZvPjE7KXtpZihlLmNoYXJDb2RlQXQobi0yKSE9PXQuY2hhckNvZGVBdChvLTIpKWJyZWFrO24tLSxvLS19KG4+MXx8bz4xKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShyLGkrMSwxLG4sYSsxLDEsbyl9e2xldCBuPXN0KGUsMSksbz1zdCh0LDEpO2NvbnN0IHM9ZS5sZW5ndGgrMSxsPXQubGVuZ3RoKzE7Zm9yKDtuPHMmJm88bDspe2lmKGUuY2hhckNvZGVBdChuLTEpIT09ZS5jaGFyQ29kZUF0KG8tMSkpYnJlYWs7bisrLG8rK30objxzfHxvPGwpJiZ0aGlzLl9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHIsaSsxLG4scyxhKzEsbyxsKX19aSsrLGErK31vJiYoci5wdXNoKGl0LmNyZWF0ZUZyb21EaWZmUmVzdWx0KHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Usbyx0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUNoYXJEaWZmLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcykpLGkrPW8ub3JpZ2luYWxMZW5ndGgsYSs9by5tb2RpZmllZExlbmd0aCl9cmV0dXJue3F1aXRFYXJseTpuLGNoYW5nZXM6cn19X3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4scixpLGEsbyl7aWYodGhpcy5fbWVyZ2VUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4scixpLGEsbykpcmV0dXJuO2xldCBzO3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiYocz1bbmV3IHJ0KHQsbix0LHIsaSxhLGksbyldKSxlLnB1c2gobmV3IGl0KHQsdCxpLGkscykpfV9tZXJnZVRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShlLHQsbixyLGksYSxvKXtjb25zdCBzPWUubGVuZ3RoO2lmKDA9PT1zKXJldHVybiExO2NvbnN0IGw9ZVtzLTFdO3JldHVybiAwIT09bC5vcmlnaW5hbEVuZExpbmVOdW1iZXImJjAhPT1sLm1vZGlmaWVkRW5kTGluZU51bWJlciYmKGwub3JpZ2luYWxFbmRMaW5lTnVtYmVyKzE9PT10JiZsLm1vZGlmaWVkRW5kTGluZU51bWJlcisxPT09aSYmKGwub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsbC5tb2RpZmllZEVuZExpbmVOdW1iZXI9aSx0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcy5wdXNoKG5ldyBydCh0LG4sdCxyLGksYSxpLG8pKSwhMCkpfX1mdW5jdGlvbiBvdChlLHQpe2NvbnN0IG49ZnVuY3Rpb24oZSl7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWUuY2hhckNvZGVBdCh0KTtpZigzMiE9PW4mJjkhPT1uKXJldHVybiB0fXJldHVybi0xfShlKTtyZXR1cm4tMT09PW4/dDpuKzF9ZnVuY3Rpb24gc3QoZSx0KXtjb25zdCBuPWZ1bmN0aW9uKGUsdD1lLmxlbmd0aC0xKXtmb3IobGV0IG49dDtuPj0wO24tLSl7Y29uc3QgdD1lLmNoYXJDb2RlQXQobik7aWYoMzIhPT10JiY5IT09dClyZXR1cm4gbn1yZXR1cm4tMX0oZSk7cmV0dXJuLTE9PT1uP3Q6bisyfWZ1bmN0aW9uIGx0KGUpe2lmKDA9PT1lKXJldHVybigpPT4hMDtjb25zdCB0PURhdGUubm93KCk7cmV0dXJuKCk9PkRhdGUubm93KCktdDxlfWZ1bmN0aW9uIGN0KGUpe3JldHVybiBlPDA/MDplPjI1NT8yNTU6MHxlfWZ1bmN0aW9uIGh0KGUpe3JldHVybiBlPDA/MDplPjQyOTQ5NjcyOTU/NDI5NDk2NzI5NTowfGV9Y2xhc3MgZHR7Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZXM9ZSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkoZS5sZW5ndGgpLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleD1uZXcgSW50MzJBcnJheSgxKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09LTF9aW5zZXJ0VmFsdWVzKGUsdCl7ZT1odChlKTtjb25zdCBuPXRoaXMudmFsdWVzLHI9dGhpcy5wcmVmaXhTdW0saT10Lmxlbmd0aDtyZXR1cm4gMCE9PWkmJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgraSksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheShlKSxlK2kpLHRoaXMudmFsdWVzLnNldCh0LGUpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkodGhpcy52YWx1ZXMubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChyLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9c2V0VmFsdWUoZSx0KXtyZXR1cm4gZT1odChlKSx0PWh0KHQpLHRoaXMudmFsdWVzW2VdIT09dCYmKHRoaXMudmFsdWVzW2VdPXQsZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLCEwKX1yZW1vdmVWYWx1ZXMoZSx0KXtlPWh0KGUpLHQ9aHQodCk7Y29uc3Qgbj10aGlzLnZhbHVlcyxyPXRoaXMucHJlZml4U3VtO2lmKGU+PW4ubGVuZ3RoKXJldHVybiExO2NvbnN0IGk9bi5sZW5ndGgtZTtyZXR1cm4gdD49aSYmKHQ9aSksMCE9PXQmJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgtdCksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheShlK3QpLGUpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChyLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9Z2V0VG90YWxTdW0oKXtyZXR1cm4gMD09PXRoaXMudmFsdWVzLmxlbmd0aD8wOnRoaXMuX2dldFByZWZpeFN1bSh0aGlzLnZhbHVlcy5sZW5ndGgtMSl9Z2V0UHJlZml4U3VtKGUpe3JldHVybiBlPDA/MDooZT1odChlKSx0aGlzLl9nZXRQcmVmaXhTdW0oZSkpfV9nZXRQcmVmaXhTdW0oZSl7aWYoZTw9dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKXJldHVybiB0aGlzLnByZWZpeFN1bVtlXTtsZXQgdD10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMTswPT09dCYmKHRoaXMucHJlZml4U3VtWzBdPXRoaXMudmFsdWVzWzBdLHQrKyksZT49dGhpcy52YWx1ZXMubGVuZ3RoJiYoZT10aGlzLnZhbHVlcy5sZW5ndGgtMSk7Zm9yKGxldCBuPXQ7bjw9ZTtuKyspdGhpcy5wcmVmaXhTdW1bbl09dGhpcy5wcmVmaXhTdW1bbi0xXSt0aGlzLnZhbHVlc1tuXTtyZXR1cm4gdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPU1hdGgubWF4KHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSxlKSx0aGlzLnByZWZpeFN1bVtlXX1nZXRJbmRleE9mKGUpe2U9TWF0aC5mbG9vcihlKSx0aGlzLmdldFRvdGFsU3VtKCk7bGV0IHQ9MCxuPXRoaXMudmFsdWVzLmxlbmd0aC0xLHI9MCxpPTAsYT0wO2Zvcig7dDw9bjspaWYocj10KyhuLXQpLzJ8MCxpPXRoaXMucHJlZml4U3VtW3JdLGE9aS10aGlzLnZhbHVlc1tyXSxlPGEpbj1yLTE7ZWxzZXtpZighKGU+PWkpKWJyZWFrO3Q9cisxfXJldHVybiBuZXcgdXQocixlLWEpfX1jbGFzcyB1dHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaW5kZXg9ZSx0aGlzLnJlbWFpbmRlcj10LHRoaXMuX3ByZWZpeFN1bUluZGV4T2ZSZXN1bHRCcmFuZD12b2lkIDAsdGhpcy5pbmRleD1lLHRoaXMucmVtYWluZGVyPXR9fWNvbnN0IHB0PWZ1bmN0aW9uKGU9IiIpe2xldCB0PSIoLT9cXGQqXFwuXFxkXFx3Kil8KFteIjtmb3IoY29uc3QgbiBvZiJgfiFAIyQlXiYqKCktPStbe119XFx8OzonXCIsLjw+Lz8iKWUuaW5kZXhPZihuKT49MHx8KHQrPSJcXCIrbik7cmV0dXJuIHQrPSJcXHNdKykiLG5ldyBSZWdFeHAodCwiZyIpfSgpO2NvbnN0IG10PXttYXhMZW46MWUzLHdpbmRvd1NpemU6MTUsdGltZUJ1ZGdldDoxNTB9O2Z1bmN0aW9uIGZ0KGUsdCxuLHIsaT1tdCl7aWYobi5sZW5ndGg+aS5tYXhMZW4pe2xldCBhPWUtaS5tYXhMZW4vMjtyZXR1cm4gYTwwP2E9MDpyKz1hLGZ0KGUsdCxuPW4uc3Vic3RyaW5nKGEsZStpLm1heExlbi8yKSxyLGkpfWNvbnN0IGE9RGF0ZS5ub3coKSxvPWUtMS1yO2xldCBzPS0xLGw9bnVsbDtmb3IobGV0IGU9MTshKERhdGUubm93KCktYT49aS50aW1lQnVkZ2V0KTtlKyspe2NvbnN0IHI9by1pLndpbmRvd1NpemUqZTt0Lmxhc3RJbmRleD1NYXRoLm1heCgwLHIpO2NvbnN0IGE9Z3QodCxuLG8scyk7aWYoIWEmJmwpYnJlYWs7aWYobD1hLHI8PTApYnJlYWs7cz1yfWlmKGwpe2NvbnN0IGU9e3dvcmQ6bFswXSxzdGFydENvbHVtbjpyKzErbC5pbmRleCxlbmRDb2x1bW46cisxK2wuaW5kZXgrbFswXS5sZW5ndGh9O3JldHVybiB0Lmxhc3RJbmRleD0wLGV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gZ3QoZSx0LG4scil7bGV0IGk7Zm9yKDtpPWUuZXhlYyh0KTspe2NvbnN0IHQ9aS5pbmRleHx8MDtpZih0PD1uJiZlLmxhc3RJbmRleD49bilyZXR1cm4gaTtpZihyPjAmJnQ+cilyZXR1cm4gbnVsbH1yZXR1cm4gbnVsbH1jbGFzcyBidHtjb25zdHJ1Y3RvcihlKXtjb25zdCB0PWN0KGUpO3RoaXMuX2RlZmF1bHRWYWx1ZT10LHRoaXMuX2FzY2lpTWFwPWJ0Ll9jcmVhdGVBc2NpaU1hcCh0KSx0aGlzLl9tYXA9bmV3IE1hcH1zdGF0aWMgX2NyZWF0ZUFzY2lpTWFwKGUpe2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KTtmb3IobGV0IG49MDtuPDI1NjtuKyspdFtuXT1lO3JldHVybiB0fXNldChlLHQpe2NvbnN0IG49Y3QodCk7ZT49MCYmZTwyNTY/dGhpcy5fYXNjaWlNYXBbZV09bjp0aGlzLl9tYXAuc2V0KGUsbil9Z2V0KGUpe3JldHVybiBlPj0wJiZlPDI1Nj90aGlzLl9hc2NpaU1hcFtlXTp0aGlzLl9tYXAuZ2V0KGUpfHx0aGlzLl9kZWZhdWx0VmFsdWV9fWNsYXNzIHd0e2NvbnN0cnVjdG9yKGUsdCxuKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUqdCk7Zm9yKGxldCBpPTAsYT1lKnQ7aTxhO2krKylyW2ldPW47dGhpcy5fZGF0YT1yLHRoaXMucm93cz1lLHRoaXMuY29scz10fWdldChlLHQpe3JldHVybiB0aGlzLl9kYXRhW2UqdGhpcy5jb2xzK3RdfXNldChlLHQsbil7dGhpcy5fZGF0YVtlKnRoaXMuY29scyt0XT1ufX1jbGFzcyBfdHtjb25zdHJ1Y3RvcihlKXtsZXQgdD0wLG49MDtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0W2ksYSxvXT1lW3JdO2E+dCYmKHQ9YSksaT5uJiYobj1pKSxvPm4mJihuPW8pfXQrKyxuKys7Y29uc3Qgcj1uZXcgd3Qobix0LDApO2ZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl7Y29uc3RbbixpLGFdPWVbdF07ci5zZXQobixpLGEpfXRoaXMuX3N0YXRlcz1yLHRoaXMuX21heENoYXJDb2RlPXR9bmV4dFN0YXRlKGUsdCl7cmV0dXJuIHQ8MHx8dD49dGhpcy5fbWF4Q2hhckNvZGU/MDp0aGlzLl9zdGF0ZXMuZ2V0KGUsdCl9fWxldCB2dD1udWxsO2xldCB5dD1udWxsO2NsYXNzIFR0e3N0YXRpYyBfY3JlYXRlTGluayhlLHQsbixyLGkpe2xldCBhPWktMTtkb3tjb25zdCBuPXQuY2hhckNvZGVBdChhKTtpZigyIT09ZS5nZXQobikpYnJlYWs7YS0tfXdoaWxlKGE+cik7aWYocj4wKXtjb25zdCBlPXQuY2hhckNvZGVBdChyLTEpLG49dC5jaGFyQ29kZUF0KGEpOyg0MD09PWUmJjQxPT09bnx8OTE9PT1lJiY5Mz09PW58fDEyMz09PWUmJjEyNT09PW4pJiZhLS19cmV0dXJue3JhbmdlOntzdGFydExpbmVOdW1iZXI6bixzdGFydENvbHVtbjpyKzEsZW5kTGluZU51bWJlcjpuLGVuZENvbHVtbjphKzJ9LHVybDp0LnN1YnN0cmluZyhyLGErMSl9fXN0YXRpYyBjb21wdXRlTGlua3MoZSx0PWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PT12dCYmKHZ0PW5ldyBfdChbWzEsMTA0LDJdLFsxLDcyLDJdLFsxLDEwMiw2XSxbMSw3MCw2XSxbMiwxMTYsM10sWzIsODQsM10sWzMsMTE2LDRdLFszLDg0LDRdLFs0LDExMiw1XSxbNCw4MCw1XSxbNSwxMTUsOV0sWzUsODMsOV0sWzUsNTgsMTBdLFs2LDEwNSw3XSxbNiw3Myw3XSxbNywxMDgsOF0sWzcsNzYsOF0sWzgsMTAxLDldLFs4LDY5LDldLFs5LDU4LDEwXSxbMTAsNDcsMTFdLFsxMSw0NywxMl1dKSksdnR9KCkpe2NvbnN0IG49ZnVuY3Rpb24oKXtpZihudWxsPT09eXQpe3l0PW5ldyBidCgwKTtjb25zdCBlPSIgXHQ8PidcIuOAgeOAgu+9oe+9pO+8jO+8ju+8mu+8m+KAmOOAiOOAjOOAjuOAlO+8iO+8u++9m++9ou+9o++9ne+8ve+8ieOAleOAj+OAjeOAieKAme+9gO+9nuKApiI7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspeXQuc2V0KGUuY2hhckNvZGVBdCh0KSwxKTtjb25zdCB0PSIuLDsiO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXl0LnNldCh0LmNoYXJDb2RlQXQoZSksMil9cmV0dXJuIHl0fSgpLHI9W107Zm9yKGxldCBpPTEsYT1lLmdldExpbmVDb3VudCgpO2k8PWE7aSsrKXtjb25zdCBhPWUuZ2V0TGluZUNvbnRlbnQoaSksbz1hLmxlbmd0aDtsZXQgcz0wLGw9MCxjPTAsaD0xLGQ9ITEsdT0hMSxwPSExLG09ITE7Zm9yKDtzPG87KXtsZXQgZT0hMTtjb25zdCBvPWEuY2hhckNvZGVBdChzKTtpZigxMz09PWgpe2xldCB0O3N3aXRjaChvKXtjYXNlIDQwOmQ9ITAsdD0wO2JyZWFrO2Nhc2UgNDE6dD1kPzA6MTticmVhaztjYXNlIDkxOnA9ITAsdT0hMCx0PTA7YnJlYWs7Y2FzZSA5MzpwPSExLHQ9dT8wOjE7YnJlYWs7Y2FzZSAxMjM6bT0hMCx0PTA7YnJlYWs7Y2FzZSAxMjU6dD1tPzA6MTticmVhaztjYXNlIDM5OnQ9MzQ9PT1jfHw5Nj09PWM/MDoxO2JyZWFrO2Nhc2UgMzQ6dD0zOT09PWN8fDk2PT09Yz8wOjE7YnJlYWs7Y2FzZSA5Njp0PTM5PT09Y3x8MzQ9PT1jPzA6MTticmVhaztjYXNlIDQyOnQ9NDI9PT1jPzE6MDticmVhaztjYXNlIDEyNDp0PTEyND09PWM/MTowO2JyZWFrO2Nhc2UgMzI6dD1wPzA6MTticmVhaztkZWZhdWx0OnQ9bi5nZXQobyl9MT09PXQmJihyLnB1c2goVHQuX2NyZWF0ZUxpbmsobixhLGksbCxzKSksZT0hMCl9ZWxzZSBpZigxMj09PWgpe2xldCB0OzkxPT09bz8odT0hMCx0PTApOnQ9bi5nZXQobyksMT09PXQ/ZT0hMDpoPTEzfWVsc2UgaD10Lm5leHRTdGF0ZShoLG8pLDA9PT1oJiYoZT0hMCk7ZSYmKGg9MSxkPSExLHU9ITEsbT0hMSxsPXMrMSxjPW8pLHMrK30xMz09PWgmJnIucHVzaChUdC5fY3JlYXRlTGluayhuLGEsaSxsLG8pKX1yZXR1cm4gcn19Y2xhc3Mga3R7Y29uc3RydWN0b3IoKXt0aGlzLl9kZWZhdWx0VmFsdWVTZXQ9W1sidHJ1ZSIsImZhbHNlIl0sWyJUcnVlIiwiRmFsc2UiXSxbIlByaXZhdGUiLCJQdWJsaWMiLCJGcmllbmQiLCJSZWFkT25seSIsIlBhcnRpYWwiLCJQcm90ZWN0ZWQiLCJXcml0ZU9ubHkiXSxbInB1YmxpYyIsInByb3RlY3RlZCIsInByaXZhdGUiXV19bmF2aWdhdGVWYWx1ZVNldChlLHQsbixyLGkpe2lmKGUmJnQpe2NvbnN0IG49dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQodCxpKTtpZihuKXJldHVybntyYW5nZTplLHZhbHVlOm59fWlmKG4mJnIpe2NvbnN0IGU9dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQocixpKTtpZihlKXJldHVybntyYW5nZTpuLHZhbHVlOmV9fXJldHVybiBudWxsfWRvTmF2aWdhdGVWYWx1ZVNldChlLHQpe2NvbnN0IG49dGhpcy5udW1iZXJSZXBsYWNlKGUsdCk7cmV0dXJuIG51bGwhPT1uP246dGhpcy50ZXh0UmVwbGFjZShlLHQpfW51bWJlclJlcGxhY2UoZSx0KXtjb25zdCBuPU1hdGgucG93KDEwLGUubGVuZ3RoLShlLmxhc3RJbmRleE9mKCIuIikrMSkpO2xldCByPU51bWJlcihlKSxpPXBhcnNlRmxvYXQoZSk7cmV0dXJuIGlzTmFOKHIpfHxpc05hTihpKXx8ciE9PWk/bnVsbDowIT09cnx8dD8ocj1NYXRoLmZsb29yKHIqbikscis9dD9uOi1uLFN0cmluZyhyL24pKTpudWxsfXRleHRSZXBsYWNlKGUsdCl7cmV0dXJuIHRoaXMudmFsdWVTZXRzUmVwbGFjZSh0aGlzLl9kZWZhdWx0VmFsdWVTZXQsZSx0KX12YWx1ZVNldHNSZXBsYWNlKGUsdCxuKXtsZXQgcj1udWxsO2ZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7bnVsbD09PXImJmk8YTtpKyspcj10aGlzLnZhbHVlU2V0UmVwbGFjZShlW2ldLHQsbik7cmV0dXJuIHJ9dmFsdWVTZXRSZXBsYWNlKGUsdCxuKXtsZXQgcj1lLmluZGV4T2YodCk7cmV0dXJuIHI+PTA/KHIrPW4/MTotMSxyPDA/cj1lLmxlbmd0aC0xOnIlPWUubGVuZ3RoLGVbcl0pOm51bGx9fWt0LklOU1RBTkNFPW5ldyBrdDtjb25zdCBTdD1PYmplY3QuZnJlZXplKChmdW5jdGlvbihlLHQpe2NvbnN0IG49c2V0VGltZW91dChlLmJpbmQodCksMCk7cmV0dXJue2Rpc3Bvc2UoKXtjbGVhclRpbWVvdXQobil9fX0pKTt2YXIgQ3Q7IWZ1bmN0aW9uKGUpe2UuaXNDYW5jZWxsYXRpb25Ub2tlbj1mdW5jdGlvbih0KXtyZXR1cm4gdD09PWUuTm9uZXx8dD09PWUuQ2FuY2VsbGVkfHwodCBpbnN0YW5jZW9mIHh0fHwhKCF0fHwib2JqZWN0IiE9dHlwZW9mIHQpJiYoImJvb2xlYW4iPT10eXBlb2YgdC5pc0NhbmNlbGxhdGlvblJlcXVlc3RlZCYmImZ1bmN0aW9uIj09dHlwZW9mIHQub25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQpKX0sZS5Ob25lPU9iamVjdC5mcmVlemUoe2lzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOiExLG9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOkguTm9uZX0pLGUuQ2FuY2VsbGVkPU9iamVjdC5mcmVlemUoe2lzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOiEwLG9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOlN0fSl9KEN0fHwoQ3Q9e30pKTtjbGFzcyB4dHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2lzQ2FuY2VsbGVkPSExLHRoaXMuX2VtaXR0ZXI9bnVsbH1jYW5jZWwoKXt0aGlzLl9pc0NhbmNlbGxlZHx8KHRoaXMuX2lzQ2FuY2VsbGVkPSEwLHRoaXMuX2VtaXR0ZXImJih0aGlzLl9lbWl0dGVyLmZpcmUodm9pZCAwKSx0aGlzLmRpc3Bvc2UoKSkpfWdldCBpc0NhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZH1nZXQgb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKXtyZXR1cm4gdGhpcy5faXNDYW5jZWxsZWQ/U3Q6KHRoaXMuX2VtaXR0ZXJ8fCh0aGlzLl9lbWl0dGVyPW5ldyBQKSx0aGlzLl9lbWl0dGVyLmV2ZW50KX1kaXNwb3NlKCl7dGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZGlzcG9zZSgpLHRoaXMuX2VtaXR0ZXI9bnVsbCl9fWNsYXNzIEx0e2NvbnN0cnVjdG9yKGUpe3RoaXMuX3Rva2VuPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj12b2lkIDAsdGhpcy5fcGFyZW50TGlzdGVuZXI9ZSYmZS5vbkNhbmNlbGxhdGlvblJlcXVlc3RlZCh0aGlzLmNhbmNlbCx0aGlzKX1nZXQgdG9rZW4oKXtyZXR1cm4gdGhpcy5fdG9rZW58fCh0aGlzLl90b2tlbj1uZXcgeHQpLHRoaXMuX3Rva2VufWNhbmNlbCgpe3RoaXMuX3Rva2VuP3RoaXMuX3Rva2VuIGluc3RhbmNlb2YgeHQmJnRoaXMuX3Rva2VuLmNhbmNlbCgpOnRoaXMuX3Rva2VuPUN0LkNhbmNlbGxlZH1kaXNwb3NlKGU9ITEpe2UmJnRoaXMuY2FuY2VsKCksdGhpcy5fcGFyZW50TGlzdGVuZXImJnRoaXMuX3BhcmVudExpc3RlbmVyLmRpc3Bvc2UoKSx0aGlzLl90b2tlbj90aGlzLl90b2tlbiBpbnN0YW5jZW9mIHh0JiZ0aGlzLl90b2tlbi5kaXNwb3NlKCk6dGhpcy5fdG9rZW49Q3QuTm9uZX19Y2xhc3MgRXR7Y29uc3RydWN0b3IoKXt0aGlzLl9rZXlDb2RlVG9TdHI9W10sdGhpcy5fc3RyVG9LZXlDb2RlPU9iamVjdC5jcmVhdGUobnVsbCl9ZGVmaW5lKGUsdCl7dGhpcy5fa2V5Q29kZVRvU3RyW2VdPXQsdGhpcy5fc3RyVG9LZXlDb2RlW3QudG9Mb3dlckNhc2UoKV09ZX1rZXlDb2RlVG9TdHIoZSl7cmV0dXJuIHRoaXMuX2tleUNvZGVUb1N0cltlXX1zdHJUb0tleUNvZGUoZSl7cmV0dXJuIHRoaXMuX3N0clRvS2V5Q29kZVtlLnRvTG93ZXJDYXNlKCldfHwwfX1jb25zdCBBdD1uZXcgRXQsTXQ9bmV3IEV0LFJ0PW5ldyBFdCxOdD1uZXcgQXJyYXkoMjMwKSxJdD1PYmplY3QuY3JlYXRlKG51bGwpLFV0PU9iamVjdC5jcmVhdGUobnVsbCk7dmFyIEh0OyFmdW5jdGlvbigpe2NvbnN0IGU9IiIsdD1bWzAsMSwwLCJOb25lIiwwLCJ1bmtub3duIiwwLCJWS19VTktOT1dOIixlLGVdLFswLDEsMSwiSHlwZXIiLDAsZSwwLGUsZSxlXSxbMCwxLDIsIlN1cGVyIiwwLGUsMCxlLGUsZV0sWzAsMSwzLCJGbiIsMCxlLDAsZSxlLGVdLFswLDEsNCwiRm5Mb2NrIiwwLGUsMCxlLGUsZV0sWzAsMSw1LCJTdXNwZW5kIiwwLGUsMCxlLGUsZV0sWzAsMSw2LCJSZXN1bWUiLDAsZSwwLGUsZSxlXSxbMCwxLDcsIlR1cmJvIiwwLGUsMCxlLGUsZV0sWzAsMSw4LCJTbGVlcCIsMCxlLDAsIlZLX1NMRUVQIixlLGVdLFswLDEsOSwiV2FrZVVwIiwwLGUsMCxlLGUsZV0sWzMxLDAsMTAsIktleUEiLDMxLCJBIiw2NSwiVktfQSIsZSxlXSxbMzIsMCwxMSwiS2V5QiIsMzIsIkIiLDY2LCJWS19CIixlLGVdLFszMywwLDEyLCJLZXlDIiwzMywiQyIsNjcsIlZLX0MiLGUsZV0sWzM0LDAsMTMsIktleUQiLDM0LCJEIiw2OCwiVktfRCIsZSxlXSxbMzUsMCwxNCwiS2V5RSIsMzUsIkUiLDY5LCJWS19FIixlLGVdLFszNiwwLDE1LCJLZXlGIiwzNiwiRiIsNzAsIlZLX0YiLGUsZV0sWzM3LDAsMTYsIktleUciLDM3LCJHIiw3MSwiVktfRyIsZSxlXSxbMzgsMCwxNywiS2V5SCIsMzgsIkgiLDcyLCJWS19IIixlLGVdLFszOSwwLDE4LCJLZXlJIiwzOSwiSSIsNzMsIlZLX0kiLGUsZV0sWzQwLDAsMTksIktleUoiLDQwLCJKIiw3NCwiVktfSiIsZSxlXSxbNDEsMCwyMCwiS2V5SyIsNDEsIksiLDc1LCJWS19LIixlLGVdLFs0MiwwLDIxLCJLZXlMIiw0MiwiTCIsNzYsIlZLX0wiLGUsZV0sWzQzLDAsMjIsIktleU0iLDQzLCJNIiw3NywiVktfTSIsZSxlXSxbNDQsMCwyMywiS2V5TiIsNDQsIk4iLDc4LCJWS19OIixlLGVdLFs0NSwwLDI0LCJLZXlPIiw0NSwiTyIsNzksIlZLX08iLGUsZV0sWzQ2LDAsMjUsIktleVAiLDQ2LCJQIiw4MCwiVktfUCIsZSxlXSxbNDcsMCwyNiwiS2V5USIsNDcsIlEiLDgxLCJWS19RIixlLGVdLFs0OCwwLDI3LCJLZXlSIiw0OCwiUiIsODIsIlZLX1IiLGUsZV0sWzQ5LDAsMjgsIktleVMiLDQ5LCJTIiw4MywiVktfUyIsZSxlXSxbNTAsMCwyOSwiS2V5VCIsNTAsIlQiLDg0LCJWS19UIixlLGVdLFs1MSwwLDMwLCJLZXlVIiw1MSwiVSIsODUsIlZLX1UiLGUsZV0sWzUyLDAsMzEsIktleVYiLDUyLCJWIiw4NiwiVktfViIsZSxlXSxbNTMsMCwzMiwiS2V5VyIsNTMsIlciLDg3LCJWS19XIixlLGVdLFs1NCwwLDMzLCJLZXlYIiw1NCwiWCIsODgsIlZLX1giLGUsZV0sWzU1LDAsMzQsIktleVkiLDU1LCJZIiw4OSwiVktfWSIsZSxlXSxbNTYsMCwzNSwiS2V5WiIsNTYsIloiLDkwLCJWS19aIixlLGVdLFsyMiwwLDM2LCJEaWdpdDEiLDIyLCIxIiw0OSwiVktfMSIsZSxlXSxbMjMsMCwzNywiRGlnaXQyIiwyMywiMiIsNTAsIlZLXzIiLGUsZV0sWzI0LDAsMzgsIkRpZ2l0MyIsMjQsIjMiLDUxLCJWS18zIixlLGVdLFsyNSwwLDM5LCJEaWdpdDQiLDI1LCI0Iiw1MiwiVktfNCIsZSxlXSxbMjYsMCw0MCwiRGlnaXQ1IiwyNiwiNSIsNTMsIlZLXzUiLGUsZV0sWzI3LDAsNDEsIkRpZ2l0NiIsMjcsIjYiLDU0LCJWS182IixlLGVdLFsyOCwwLDQyLCJEaWdpdDciLDI4LCI3Iiw1NSwiVktfNyIsZSxlXSxbMjksMCw0MywiRGlnaXQ4IiwyOSwiOCIsNTYsIlZLXzgiLGUsZV0sWzMwLDAsNDQsIkRpZ2l0OSIsMzAsIjkiLDU3LCJWS185IixlLGVdLFsyMSwwLDQ1LCJEaWdpdDAiLDIxLCIwIiw0OCwiVktfMCIsZSxlXSxbMywxLDQ2LCJFbnRlciIsMywiRW50ZXIiLDEzLCJWS19SRVRVUk4iLGUsZV0sWzksMSw0NywiRXNjYXBlIiw5LCJFc2NhcGUiLDI3LCJWS19FU0NBUEUiLGUsZV0sWzEsMSw0OCwiQmFja3NwYWNlIiwxLCJCYWNrc3BhY2UiLDgsIlZLX0JBQ0siLGUsZV0sWzIsMSw0OSwiVGFiIiwyLCJUYWIiLDksIlZLX1RBQiIsZSxlXSxbMTAsMSw1MCwiU3BhY2UiLDEwLCJTcGFjZSIsMzIsIlZLX1NQQUNFIixlLGVdLFs4MywwLDUxLCJNaW51cyIsODMsIi0iLDE4OSwiVktfT0VNX01JTlVTIiwiLSIsIk9FTV9NSU5VUyJdLFs4MSwwLDUyLCJFcXVhbCIsODEsIj0iLDE4NywiVktfT0VNX1BMVVMiLCI9IiwiT0VNX1BMVVMiXSxbODcsMCw1MywiQnJhY2tldExlZnQiLDg3LCJbIiwyMTksIlZLX09FTV80IiwiWyIsIk9FTV80Il0sWzg5LDAsNTQsIkJyYWNrZXRSaWdodCIsODksIl0iLDIyMSwiVktfT0VNXzYiLCJdIiwiT0VNXzYiXSxbODgsMCw1NSwiQmFja3NsYXNoIiw4OCwiXFwiLDIyMCwiVktfT0VNXzUiLCJcXCIsIk9FTV81Il0sWzAsMCw1NiwiSW50bEhhc2giLDAsZSwwLGUsZSxlXSxbODAsMCw1NywiU2VtaWNvbG9uIiw4MCwiOyIsMTg2LCJWS19PRU1fMSIsIjsiLCJPRU1fMSJdLFs5MCwwLDU4LCJRdW90ZSIsOTAsIiciLDIyMiwiVktfT0VNXzciLCInIiwiT0VNXzciXSxbODYsMCw1OSwiQmFja3F1b3RlIiw4NiwiYCIsMTkyLCJWS19PRU1fMyIsImAiLCJPRU1fMyJdLFs4MiwwLDYwLCJDb21tYSIsODIsIiwiLDE4OCwiVktfT0VNX0NPTU1BIiwiLCIsIk9FTV9DT01NQSJdLFs4NCwwLDYxLCJQZXJpb2QiLDg0LCIuIiwxOTAsIlZLX09FTV9QRVJJT0QiLCIuIiwiT0VNX1BFUklPRCJdLFs4NSwwLDYyLCJTbGFzaCIsODUsIi8iLDE5MSwiVktfT0VNXzIiLCIvIiwiT0VNXzIiXSxbOCwxLDYzLCJDYXBzTG9jayIsOCwiQ2Fwc0xvY2siLDIwLCJWS19DQVBJVEFMIixlLGVdLFs1OSwxLDY0LCJGMSIsNTksIkYxIiwxMTIsIlZLX0YxIixlLGVdLFs2MCwxLDY1LCJGMiIsNjAsIkYyIiwxMTMsIlZLX0YyIixlLGVdLFs2MSwxLDY2LCJGMyIsNjEsIkYzIiwxMTQsIlZLX0YzIixlLGVdLFs2MiwxLDY3LCJGNCIsNjIsIkY0IiwxMTUsIlZLX0Y0IixlLGVdLFs2MywxLDY4LCJGNSIsNjMsIkY1IiwxMTYsIlZLX0Y1IixlLGVdLFs2NCwxLDY5LCJGNiIsNjQsIkY2IiwxMTcsIlZLX0Y2IixlLGVdLFs2NSwxLDcwLCJGNyIsNjUsIkY3IiwxMTgsIlZLX0Y3IixlLGVdLFs2NiwxLDcxLCJGOCIsNjYsIkY4IiwxMTksIlZLX0Y4IixlLGVdLFs2NywxLDcyLCJGOSIsNjcsIkY5IiwxMjAsIlZLX0Y5IixlLGVdLFs2OCwxLDczLCJGMTAiLDY4LCJGMTAiLDEyMSwiVktfRjEwIixlLGVdLFs2OSwxLDc0LCJGMTEiLDY5LCJGMTEiLDEyMiwiVktfRjExIixlLGVdLFs3MCwxLDc1LCJGMTIiLDcwLCJGMTIiLDEyMywiVktfRjEyIixlLGVdLFswLDEsNzYsIlByaW50U2NyZWVuIiwwLGUsMCxlLGUsZV0sWzc5LDEsNzcsIlNjcm9sbExvY2siLDc5LCJTY3JvbGxMb2NrIiwxNDUsIlZLX1NDUk9MTCIsZSxlXSxbNywxLDc4LCJQYXVzZSIsNywiUGF1c2VCcmVhayIsMTksIlZLX1BBVVNFIixlLGVdLFsxOSwxLDc5LCJJbnNlcnQiLDE5LCJJbnNlcnQiLDQ1LCJWS19JTlNFUlQiLGUsZV0sWzE0LDEsODAsIkhvbWUiLDE0LCJIb21lIiwzNiwiVktfSE9NRSIsZSxlXSxbMTEsMSw4MSwiUGFnZVVwIiwxMSwiUGFnZVVwIiwzMywiVktfUFJJT1IiLGUsZV0sWzIwLDEsODIsIkRlbGV0ZSIsMjAsIkRlbGV0ZSIsNDYsIlZLX0RFTEVURSIsZSxlXSxbMTMsMSw4MywiRW5kIiwxMywiRW5kIiwzNSwiVktfRU5EIixlLGVdLFsxMiwxLDg0LCJQYWdlRG93biIsMTIsIlBhZ2VEb3duIiwzNCwiVktfTkVYVCIsZSxlXSxbMTcsMSw4NSwiQXJyb3dSaWdodCIsMTcsIlJpZ2h0QXJyb3ciLDM5LCJWS19SSUdIVCIsIlJpZ2h0IixlXSxbMTUsMSw4NiwiQXJyb3dMZWZ0IiwxNSwiTGVmdEFycm93IiwzNywiVktfTEVGVCIsIkxlZnQiLGVdLFsxOCwxLDg3LCJBcnJvd0Rvd24iLDE4LCJEb3duQXJyb3ciLDQwLCJWS19ET1dOIiwiRG93biIsZV0sWzE2LDEsODgsIkFycm93VXAiLDE2LCJVcEFycm93IiwzOCwiVktfVVAiLCJVcCIsZV0sWzc4LDEsODksIk51bUxvY2siLDc4LCJOdW1Mb2NrIiwxNDQsIlZLX05VTUxPQ0siLGUsZV0sWzEwOCwxLDkwLCJOdW1wYWREaXZpZGUiLDEwOCwiTnVtUGFkX0RpdmlkZSIsMTExLCJWS19ESVZJREUiLGUsZV0sWzEwMywxLDkxLCJOdW1wYWRNdWx0aXBseSIsMTAzLCJOdW1QYWRfTXVsdGlwbHkiLDEwNiwiVktfTVVMVElQTFkiLGUsZV0sWzEwNiwxLDkyLCJOdW1wYWRTdWJ0cmFjdCIsMTA2LCJOdW1QYWRfU3VidHJhY3QiLDEwOSwiVktfU1VCVFJBQ1QiLGUsZV0sWzEwNCwxLDkzLCJOdW1wYWRBZGQiLDEwNCwiTnVtUGFkX0FkZCIsMTA3LCJWS19BREQiLGUsZV0sWzMsMSw5NCwiTnVtcGFkRW50ZXIiLDMsZSwwLGUsZSxlXSxbOTQsMSw5NSwiTnVtcGFkMSIsOTQsIk51bVBhZDEiLDk3LCJWS19OVU1QQUQxIixlLGVdLFs5NSwxLDk2LCJOdW1wYWQyIiw5NSwiTnVtUGFkMiIsOTgsIlZLX05VTVBBRDIiLGUsZV0sWzk2LDEsOTcsIk51bXBhZDMiLDk2LCJOdW1QYWQzIiw5OSwiVktfTlVNUEFEMyIsZSxlXSxbOTcsMSw5OCwiTnVtcGFkNCIsOTcsIk51bVBhZDQiLDEwMCwiVktfTlVNUEFENCIsZSxlXSxbOTgsMSw5OSwiTnVtcGFkNSIsOTgsIk51bVBhZDUiLDEwMSwiVktfTlVNUEFENSIsZSxlXSxbOTksMSwxMDAsIk51bXBhZDYiLDk5LCJOdW1QYWQ2IiwxMDIsIlZLX05VTVBBRDYiLGUsZV0sWzEwMCwxLDEwMSwiTnVtcGFkNyIsMTAwLCJOdW1QYWQ3IiwxMDMsIlZLX05VTVBBRDciLGUsZV0sWzEwMSwxLDEwMiwiTnVtcGFkOCIsMTAxLCJOdW1QYWQ4IiwxMDQsIlZLX05VTVBBRDgiLGUsZV0sWzEwMiwxLDEwMywiTnVtcGFkOSIsMTAyLCJOdW1QYWQ5IiwxMDUsIlZLX05VTVBBRDkiLGUsZV0sWzkzLDEsMTA0LCJOdW1wYWQwIiw5MywiTnVtUGFkMCIsOTYsIlZLX05VTVBBRDAiLGUsZV0sWzEwNywxLDEwNSwiTnVtcGFkRGVjaW1hbCIsMTA3LCJOdW1QYWRfRGVjaW1hbCIsMTEwLCJWS19ERUNJTUFMIixlLGVdLFs5MiwwLDEwNiwiSW50bEJhY2tzbGFzaCIsOTIsIk9FTV8xMDIiLDIyNiwiVktfT0VNXzEwMiIsZSxlXSxbNTgsMSwxMDcsIkNvbnRleHRNZW51Iiw1OCwiQ29udGV4dE1lbnUiLDkzLGUsZSxlXSxbMCwxLDEwOCwiUG93ZXIiLDAsZSwwLGUsZSxlXSxbMCwxLDEwOSwiTnVtcGFkRXF1YWwiLDAsZSwwLGUsZSxlXSxbNzEsMSwxMTAsIkYxMyIsNzEsIkYxMyIsMTI0LCJWS19GMTMiLGUsZV0sWzcyLDEsMTExLCJGMTQiLDcyLCJGMTQiLDEyNSwiVktfRjE0IixlLGVdLFs3MywxLDExMiwiRjE1Iiw3MywiRjE1IiwxMjYsIlZLX0YxNSIsZSxlXSxbNzQsMSwxMTMsIkYxNiIsNzQsIkYxNiIsMTI3LCJWS19GMTYiLGUsZV0sWzc1LDEsMTE0LCJGMTciLDc1LCJGMTciLDEyOCwiVktfRjE3IixlLGVdLFs3NiwxLDExNSwiRjE4Iiw3NiwiRjE4IiwxMjksIlZLX0YxOCIsZSxlXSxbNzcsMSwxMTYsIkYxOSIsNzcsIkYxOSIsMTMwLCJWS19GMTkiLGUsZV0sWzAsMSwxMTcsIkYyMCIsMCxlLDAsIlZLX0YyMCIsZSxlXSxbMCwxLDExOCwiRjIxIiwwLGUsMCwiVktfRjIxIixlLGVdLFswLDEsMTE5LCJGMjIiLDAsZSwwLCJWS19GMjIiLGUsZV0sWzAsMSwxMjAsIkYyMyIsMCxlLDAsIlZLX0YyMyIsZSxlXSxbMCwxLDEyMSwiRjI0IiwwLGUsMCwiVktfRjI0IixlLGVdLFswLDEsMTIyLCJPcGVuIiwwLGUsMCxlLGUsZV0sWzAsMSwxMjMsIkhlbHAiLDAsZSwwLGUsZSxlXSxbMCwxLDEyNCwiU2VsZWN0IiwwLGUsMCxlLGUsZV0sWzAsMSwxMjUsIkFnYWluIiwwLGUsMCxlLGUsZV0sWzAsMSwxMjYsIlVuZG8iLDAsZSwwLGUsZSxlXSxbMCwxLDEyNywiQ3V0IiwwLGUsMCxlLGUsZV0sWzAsMSwxMjgsIkNvcHkiLDAsZSwwLGUsZSxlXSxbMCwxLDEyOSwiUGFzdGUiLDAsZSwwLGUsZSxlXSxbMCwxLDEzMCwiRmluZCIsMCxlLDAsZSxlLGVdLFswLDEsMTMxLCJBdWRpb1ZvbHVtZU11dGUiLDExMiwiQXVkaW9Wb2x1bWVNdXRlIiwxNzMsIlZLX1ZPTFVNRV9NVVRFIixlLGVdLFswLDEsMTMyLCJBdWRpb1ZvbHVtZVVwIiwxMTMsIkF1ZGlvVm9sdW1lVXAiLDE3NSwiVktfVk9MVU1FX1VQIixlLGVdLFswLDEsMTMzLCJBdWRpb1ZvbHVtZURvd24iLDExNCwiQXVkaW9Wb2x1bWVEb3duIiwxNzQsIlZLX1ZPTFVNRV9ET1dOIixlLGVdLFsxMDUsMSwxMzQsIk51bXBhZENvbW1hIiwxMDUsIk51bVBhZF9TZXBhcmF0b3IiLDEwOCwiVktfU0VQQVJBVE9SIixlLGVdLFsxMTAsMCwxMzUsIkludGxSbyIsMTEwLCJBQk5UX0MxIiwxOTMsIlZLX0FCTlRfQzEiLGUsZV0sWzAsMSwxMzYsIkthbmFNb2RlIiwwLGUsMCxlLGUsZV0sWzAsMCwxMzcsIkludGxZZW4iLDAsZSwwLGUsZSxlXSxbMCwxLDEzOCwiQ29udmVydCIsMCxlLDAsZSxlLGVdLFswLDEsMTM5LCJOb25Db252ZXJ0IiwwLGUsMCxlLGUsZV0sWzAsMSwxNDAsIkxhbmcxIiwwLGUsMCxlLGUsZV0sWzAsMSwxNDEsIkxhbmcyIiwwLGUsMCxlLGUsZV0sWzAsMSwxNDIsIkxhbmczIiwwLGUsMCxlLGUsZV0sWzAsMSwxNDMsIkxhbmc0IiwwLGUsMCxlLGUsZV0sWzAsMSwxNDQsIkxhbmc1IiwwLGUsMCxlLGUsZV0sWzAsMSwxNDUsIkFib3J0IiwwLGUsMCxlLGUsZV0sWzAsMSwxNDYsIlByb3BzIiwwLGUsMCxlLGUsZV0sWzAsMSwxNDcsIk51bXBhZFBhcmVuTGVmdCIsMCxlLDAsZSxlLGVdLFswLDEsMTQ4LCJOdW1wYWRQYXJlblJpZ2h0IiwwLGUsMCxlLGUsZV0sWzAsMSwxNDksIk51bXBhZEJhY2tzcGFjZSIsMCxlLDAsZSxlLGVdLFswLDEsMTUwLCJOdW1wYWRNZW1vcnlTdG9yZSIsMCxlLDAsZSxlLGVdLFswLDEsMTUxLCJOdW1wYWRNZW1vcnlSZWNhbGwiLDAsZSwwLGUsZSxlXSxbMCwxLDE1MiwiTnVtcGFkTWVtb3J5Q2xlYXIiLDAsZSwwLGUsZSxlXSxbMCwxLDE1MywiTnVtcGFkTWVtb3J5QWRkIiwwLGUsMCxlLGUsZV0sWzAsMSwxNTQsIk51bXBhZE1lbW9yeVN1YnRyYWN0IiwwLGUsMCxlLGUsZV0sWzAsMSwxNTUsIk51bXBhZENsZWFyIiwxMjYsIkNsZWFyIiwxMiwiVktfQ0xFQVIiLGUsZV0sWzAsMSwxNTYsIk51bXBhZENsZWFyRW50cnkiLDAsZSwwLGUsZSxlXSxbNSwxLDAsZSw1LCJDdHJsIiwxNywiVktfQ09OVFJPTCIsZSxlXSxbNCwxLDAsZSw0LCJTaGlmdCIsMTYsIlZLX1NISUZUIixlLGVdLFs2LDEsMCxlLDYsIkFsdCIsMTgsIlZLX01FTlUiLGUsZV0sWzU3LDEsMCxlLDU3LCJNZXRhIiwwLCJWS19DT01NQU5EIixlLGVdLFs1LDEsMTU3LCJDb250cm9sTGVmdCIsNSxlLDAsIlZLX0xDT05UUk9MIixlLGVdLFs0LDEsMTU4LCJTaGlmdExlZnQiLDQsZSwwLCJWS19MU0hJRlQiLGUsZV0sWzYsMSwxNTksIkFsdExlZnQiLDYsZSwwLCJWS19MTUVOVSIsZSxlXSxbNTcsMSwxNjAsIk1ldGFMZWZ0Iiw1NyxlLDAsIlZLX0xXSU4iLGUsZV0sWzUsMSwxNjEsIkNvbnRyb2xSaWdodCIsNSxlLDAsIlZLX1JDT05UUk9MIixlLGVdLFs0LDEsMTYyLCJTaGlmdFJpZ2h0Iiw0LGUsMCwiVktfUlNISUZUIixlLGVdLFs2LDEsMTYzLCJBbHRSaWdodCIsNixlLDAsIlZLX1JNRU5VIixlLGVdLFs1NywxLDE2NCwiTWV0YVJpZ2h0Iiw1NyxlLDAsIlZLX1JXSU4iLGUsZV0sWzAsMSwxNjUsIkJyaWdodG5lc3NVcCIsMCxlLDAsZSxlLGVdLFswLDEsMTY2LCJCcmlnaHRuZXNzRG93biIsMCxlLDAsZSxlLGVdLFswLDEsMTY3LCJNZWRpYVBsYXkiLDAsZSwwLGUsZSxlXSxbMCwxLDE2OCwiTWVkaWFSZWNvcmQiLDAsZSwwLGUsZSxlXSxbMCwxLDE2OSwiTWVkaWFGYXN0Rm9yd2FyZCIsMCxlLDAsZSxlLGVdLFswLDEsMTcwLCJNZWRpYVJld2luZCIsMCxlLDAsZSxlLGVdLFsxMTQsMSwxNzEsIk1lZGlhVHJhY2tOZXh0IiwxMTksIk1lZGlhVHJhY2tOZXh0IiwxNzYsIlZLX01FRElBX05FWFRfVFJBQ0siLGUsZV0sWzExNSwxLDE3MiwiTWVkaWFUcmFja1ByZXZpb3VzIiwxMjAsIk1lZGlhVHJhY2tQcmV2aW91cyIsMTc3LCJWS19NRURJQV9QUkVWX1RSQUNLIixlLGVdLFsxMTYsMSwxNzMsIk1lZGlhU3RvcCIsMTIxLCJNZWRpYVN0b3AiLDE3OCwiVktfTUVESUFfU1RPUCIsZSxlXSxbMCwxLDE3NCwiRWplY3QiLDAsZSwwLGUsZSxlXSxbMTE3LDEsMTc1LCJNZWRpYVBsYXlQYXVzZSIsMTIyLCJNZWRpYVBsYXlQYXVzZSIsMTc5LCJWS19NRURJQV9QTEFZX1BBVVNFIixlLGVdLFswLDEsMTc2LCJNZWRpYVNlbGVjdCIsMTIzLCJMYXVuY2hNZWRpYVBsYXllciIsMTgxLCJWS19NRURJQV9MQVVOQ0hfTUVESUFfU0VMRUNUIixlLGVdLFswLDEsMTc3LCJMYXVuY2hNYWlsIiwxMjQsIkxhdW5jaE1haWwiLDE4MCwiVktfTUVESUFfTEFVTkNIX01BSUwiLGUsZV0sWzAsMSwxNzgsIkxhdW5jaEFwcDIiLDEyNSwiTGF1bmNoQXBwMiIsMTgzLCJWS19NRURJQV9MQVVOQ0hfQVBQMiIsZSxlXSxbMCwxLDE3OSwiTGF1bmNoQXBwMSIsMCxlLDAsIlZLX01FRElBX0xBVU5DSF9BUFAxIixlLGVdLFswLDEsMTgwLCJTZWxlY3RUYXNrIiwwLGUsMCxlLGUsZV0sWzAsMSwxODEsIkxhdW5jaFNjcmVlblNhdmVyIiwwLGUsMCxlLGUsZV0sWzAsMSwxODIsIkJyb3dzZXJTZWFyY2giLDExNSwiQnJvd3NlclNlYXJjaCIsMTcwLCJWS19CUk9XU0VSX1NFQVJDSCIsZSxlXSxbMCwxLDE4MywiQnJvd3NlckhvbWUiLDExNiwiQnJvd3NlckhvbWUiLDE3MiwiVktfQlJPV1NFUl9IT01FIixlLGVdLFsxMTIsMSwxODQsIkJyb3dzZXJCYWNrIiwxMTcsIkJyb3dzZXJCYWNrIiwxNjYsIlZLX0JST1dTRVJfQkFDSyIsZSxlXSxbMTEzLDEsMTg1LCJCcm93c2VyRm9yd2FyZCIsMTE4LCJCcm93c2VyRm9yd2FyZCIsMTY3LCJWS19CUk9XU0VSX0ZPUldBUkQiLGUsZV0sWzAsMSwxODYsIkJyb3dzZXJTdG9wIiwwLGUsMCwiVktfQlJPV1NFUl9TVE9QIixlLGVdLFswLDEsMTg3LCJCcm93c2VyUmVmcmVzaCIsMCxlLDAsIlZLX0JST1dTRVJfUkVGUkVTSCIsZSxlXSxbMCwxLDE4OCwiQnJvd3NlckZhdm9yaXRlcyIsMCxlLDAsIlZLX0JST1dTRVJfRkFWT1JJVEVTIixlLGVdLFswLDEsMTg5LCJab29tVG9nZ2xlIiwwLGUsMCxlLGUsZV0sWzAsMSwxOTAsIk1haWxSZXBseSIsMCxlLDAsZSxlLGVdLFswLDEsMTkxLCJNYWlsRm9yd2FyZCIsMCxlLDAsZSxlLGVdLFswLDEsMTkyLCJNYWlsU2VuZCIsMCxlLDAsZSxlLGVdLFsxMDksMSwwLGUsMTA5LCJLZXlJbkNvbXBvc2l0aW9uIiwyMjksZSxlLGVdLFsxMTEsMSwwLGUsMTExLCJBQk5UX0MyIiwxOTQsIlZLX0FCTlRfQzIiLGUsZV0sWzkxLDEsMCxlLDkxLCJPRU1fOCIsMjIzLCJWS19PRU1fOCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfS0FOQSIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfSEFOR1VMIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19KVU5KQSIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfRklOQUwiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0hBTkpBIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19LQU5KSSIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfQ09OVkVSVCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfTk9OQ09OVkVSVCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfQUNDRVBUIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19NT0RFQ0hBTkdFIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19TRUxFQ1QiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX1BSSU5UIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19FWEVDVVRFIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19TTkFQU0hPVCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfSEVMUCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfQVBQUyIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfUFJPQ0VTU0tFWSIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfUEFDS0VUIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19EQkVfU0JDU0NIQVIiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0RCRV9EQkNTQ0hBUiIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfQVRUTiIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfQ1JTRUwiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0VYU0VMIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19FUkVPRiIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfUExBWSIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfWk9PTSIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfTk9OQU1FIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19QQTEiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX09FTV9DTEVBUiIsZSxlXV07bGV0IG49W10scj1bXTtmb3IoY29uc3QgZSBvZiB0KXtjb25zdFt0LGksYSxvLHMsbCxjLGgsZCx1XT1lO2lmKHJbYV18fChyW2FdPSEwLEl0W29dPWEsVXRbby50b0xvd2VyQ2FzZSgpXT1hKSwhbltzXSl7aWYobltzXT0hMCwhbCl0aHJvdyBuZXcgRXJyb3IoYFN0cmluZyByZXByZXNlbnRhdGlvbiBtaXNzaW5nIGZvciBrZXkgY29kZSAke3N9IGFyb3VuZCBzY2FuIGNvZGUgJHtvfWApO0F0LmRlZmluZShzLGwpLE10LmRlZmluZShzLGR8fGwpLFJ0LmRlZmluZShzLHV8fGR8fGwpfWMmJihOdFtjXT1zKX19KCksZnVuY3Rpb24oZSl7ZS50b1N0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4gQXQua2V5Q29kZVRvU3RyKGUpfSxlLmZyb21TdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIEF0LnN0clRvS2V5Q29kZShlKX0sZS50b1VzZXJTZXR0aW5nc1VTPWZ1bmN0aW9uKGUpe3JldHVybiBNdC5rZXlDb2RlVG9TdHIoZSl9LGUudG9Vc2VyU2V0dGluZ3NHZW5lcmFsPWZ1bmN0aW9uKGUpe3JldHVybiBSdC5rZXlDb2RlVG9TdHIoZSl9LGUuZnJvbVVzZXJTZXR0aW5ncz1mdW5jdGlvbihlKXtyZXR1cm4gTXQuc3RyVG9LZXlDb2RlKGUpfHxSdC5zdHJUb0tleUNvZGUoZSl9LGUudG9FbGVjdHJvbkFjY2VsZXJhdG9yPWZ1bmN0aW9uKGUpe2lmKGU+PTkzJiZlPD0xMDgpcmV0dXJuIG51bGw7c3dpdGNoKGUpe2Nhc2UgMTY6cmV0dXJuIlVwIjtjYXNlIDE4OnJldHVybiJEb3duIjtjYXNlIDE1OnJldHVybiJMZWZ0IjtjYXNlIDE3OnJldHVybiJSaWdodCJ9cmV0dXJuIEF0LmtleUNvZGVUb1N0cihlKX19KEh0fHwoSHQ9e30pKTtjbGFzcyBEdCBleHRlbmRzIFple2NvbnN0cnVjdG9yKGUsdCxuLHIpe3N1cGVyKGUsdCxuLHIpLHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbj10LHRoaXMucG9zaXRpb25MaW5lTnVtYmVyPW4sdGhpcy5wb3NpdGlvbkNvbHVtbj1yfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLnBvc2l0aW9uTGluZU51bWJlcisiLCIrdGhpcy5wb3NpdGlvbkNvbHVtbisiXSJ9ZXF1YWxzU2VsZWN0aW9uKGUpe3JldHVybiBEdC5zZWxlY3Rpb25zRXF1YWwodGhpcyxlKX1zdGF0aWMgc2VsZWN0aW9uc0VxdWFsKGUsdCl7cmV0dXJuIGUuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPT09dC5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXImJmUuc2VsZWN0aW9uU3RhcnRDb2x1bW49PT10LnNlbGVjdGlvblN0YXJ0Q29sdW1uJiZlLnBvc2l0aW9uTGluZU51bWJlcj09PXQucG9zaXRpb25MaW5lTnVtYmVyJiZlLnBvc2l0aW9uQ29sdW1uPT09dC5wb3NpdGlvbkNvbHVtbn1nZXREaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9PT10aGlzLnN0YXJ0TGluZU51bWJlciYmdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbj09PXRoaXMuc3RhcnRDb2x1bW4/MDoxfXNldEVuZFBvc2l0aW9uKGUsdCl7cmV0dXJuIDA9PT10aGlzLmdldERpcmVjdGlvbigpP25ldyBEdCh0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uLGUsdCk6bmV3IER0KGUsdCx0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uKX1nZXRQb3NpdGlvbigpe3JldHVybiBuZXcgUWUodGhpcy5wb3NpdGlvbkxpbmVOdW1iZXIsdGhpcy5wb3NpdGlvbkNvbHVtbil9Z2V0U2VsZWN0aW9uU3RhcnQoKXtyZXR1cm4gbmV3IFFlKHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyLHRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW4pfXNldFN0YXJ0UG9zaXRpb24oZSx0KXtyZXR1cm4gMD09PXRoaXMuZ2V0RGlyZWN0aW9uKCk/bmV3IER0KGUsdCx0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4pOm5ldyBEdCh0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4sZSx0KX1zdGF0aWMgZnJvbVBvc2l0aW9ucyhlLHQ9ZSl7cmV0dXJuIG5ldyBEdChlLmxpbmVOdW1iZXIsZS5jb2x1bW4sdC5saW5lTnVtYmVyLHQuY29sdW1uKX1zdGF0aWMgZnJvbVJhbmdlKGUsdCl7cmV0dXJuIDA9PT10P25ldyBEdChlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uLGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbik6bmV3IER0KGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbixlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKX1zdGF0aWMgbGlmdFNlbGVjdGlvbihlKXtyZXR1cm4gbmV3IER0KGUuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyLGUuc2VsZWN0aW9uU3RhcnRDb2x1bW4sZS5wb3NpdGlvbkxpbmVOdW1iZXIsZS5wb3NpdGlvbkNvbHVtbil9c3RhdGljIHNlbGVjdGlvbnNBcnJFcXVhbChlLHQpe2lmKGUmJiF0fHwhZSYmdClyZXR1cm4hMTtpZighZSYmIXQpcmV0dXJuITA7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IG49MCxyPWUubGVuZ3RoO248cjtuKyspaWYoIXRoaXMuc2VsZWN0aW9uc0VxdWFsKGVbbl0sdFtuXSkpcmV0dXJuITE7cmV0dXJuITB9c3RhdGljIGlzSVNlbGVjdGlvbihlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnNlbGVjdGlvblN0YXJ0Q29sdW1uJiYibnVtYmVyIj09dHlwZW9mIGUucG9zaXRpb25MaW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUucG9zaXRpb25Db2x1bW59c3RhdGljIGNyZWF0ZVdpdGhEaXJlY3Rpb24oZSx0LG4scixpKXtyZXR1cm4gMD09PWk/bmV3IER0KGUsdCxuLHIpOm5ldyBEdChuLHIsZSx0KX19dmFyIHp0LFd0LE90LFB0LHF0LEZ0LEJ0LFZ0LEt0LGp0LEd0LCR0LEp0LFh0LFl0LFF0LFp0LGVuLHRuLG5uLHJuLGFuLG9uLHNuLGxuLGNuLGhuLGRuLHVuLHBuLG1uLGZuLGduLGJuLHduLF9uLHZuLHluLFRuLGtuLFNuLENuLHhuLExuLEVuLEFuLE1uLFJuLE5uLEluLFVuLEhuLERuLHpuLFduLE9uLFBuLHFuLEZuLEJuLFZuLEtuLGpuLEduLCRuLEpuLFhuPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihpLGEpe2Z1bmN0aW9uIG8oZSl7dHJ5e2woci5uZXh0KGUpKX1jYXRjaChlKXthKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXtsKHIudGhyb3coZSkpfWNhdGNoKGUpe2EoZSl9fWZ1bmN0aW9uIGwoZSl7dmFyIHQ7ZS5kb25lP2koZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKG8scyl9bCgocj1yLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfTtjbGFzcyBZbiBleHRlbmRzIHB7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKCksdGhpcy5fcmVnaXN0cnk9ZSx0aGlzLl9sYW5ndWFnZUlkPXQsdGhpcy5fZmFjdG9yeT1uLHRoaXMuX2lzRGlzcG9zZWQ9ITEsdGhpcy5fcmVzb2x2ZVByb21pc2U9bnVsbCx0aGlzLl9pc1Jlc29sdmVkPSExfWdldCBpc1Jlc29sdmVkKCl7cmV0dXJuIHRoaXMuX2lzUmVzb2x2ZWR9ZGlzcG9zZSgpe3RoaXMuX2lzRGlzcG9zZWQ9ITAsc3VwZXIuZGlzcG9zZSgpfXJlc29sdmUoKXtyZXR1cm4gWG4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtyZXR1cm4gdGhpcy5fcmVzb2x2ZVByb21pc2V8fCh0aGlzLl9yZXNvbHZlUHJvbWlzZT10aGlzLl9jcmVhdGUoKSksdGhpcy5fcmVzb2x2ZVByb21pc2V9KSl9X2NyZWF0ZSgpe3JldHVybiBYbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IGU9eWllbGQgUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2ZhY3RvcnkuY3JlYXRlVG9rZW5pemF0aW9uU3VwcG9ydCgpKTt0aGlzLl9pc1Jlc29sdmVkPSEwLGUmJiF0aGlzLl9pc0Rpc3Bvc2VkJiZ0aGlzLl9yZWdpc3Rlcih0aGlzLl9yZWdpc3RyeS5yZWdpc3Rlcih0aGlzLl9sYW5ndWFnZUlkLGUpKX0pKX19Y2xhc3MgUW57Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuaWQ9ZSx0aGlzLmRlZmluaXRpb249dCx0aGlzLmRlc2NyaXB0aW9uPW4sUW4uX2FsbENvZGljb25zLnB1c2godGhpcyl9Z2V0IGNsYXNzTmFtZXMoKXtyZXR1cm4iY29kaWNvbiBjb2RpY29uLSIrdGhpcy5pZH1nZXQgY2xhc3NOYW1lc0FycmF5KCl7cmV0dXJuWyJjb2RpY29uIiwiY29kaWNvbi0iK3RoaXMuaWRdfWdldCBjc3NTZWxlY3Rvcigpe3JldHVybiIuY29kaWNvbi5jb2RpY29uLSIrdGhpcy5pZH1zdGF0aWMgZ2V0QWxsKCl7cmV0dXJuIFFuLl9hbGxDb2RpY29uc319UW4uX2FsbENvZGljb25zPVtdLFFuLmFkZD1uZXcgUW4oImFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MCJ9KSxRbi5wbHVzPW5ldyBRbigicGx1cyIsUW4uYWRkLmRlZmluaXRpb24pLFFuLmdpc3ROZXc9bmV3IFFuKCJnaXN0LW5ldyIsUW4uYWRkLmRlZmluaXRpb24pLFFuLnJlcG9DcmVhdGU9bmV3IFFuKCJyZXBvLWNyZWF0ZSIsUW4uYWRkLmRlZmluaXRpb24pLFFuLmxpZ2h0YnVsYj1uZXcgUW4oImxpZ2h0YnVsYiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MSJ9KSxRbi5saWdodEJ1bGI9bmV3IFFuKCJsaWdodC1idWxiIix7Zm9udENoYXJhY3RlcjoiXFxlYTYxIn0pLFFuLnJlcG89bmV3IFFuKCJyZXBvIix7Zm9udENoYXJhY3RlcjoiXFxlYTYyIn0pLFFuLnJlcG9EZWxldGU9bmV3IFFuKCJyZXBvLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MiJ9KSxRbi5naXN0Rm9yaz1uZXcgUW4oImdpc3QtZm9yayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MyJ9KSxRbi5yZXBvRm9ya2VkPW5ldyBRbigicmVwby1mb3JrZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjMifSksUW4uZ2l0UHVsbFJlcXVlc3Q9bmV3IFFuKCJnaXQtcHVsbC1yZXF1ZXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTY0In0pLFFuLmdpdFB1bGxSZXF1ZXN0QWJhbmRvbmVkPW5ldyBRbigiZ2l0LXB1bGwtcmVxdWVzdC1hYmFuZG9uZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjQifSksUW4ucmVjb3JkS2V5cz1uZXcgUW4oInJlY29yZC1rZXlzIix7Zm9udENoYXJhY3RlcjoiXFxlYTY1In0pLFFuLmtleWJvYXJkPW5ldyBRbigia2V5Ym9hcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjUifSksUW4udGFnPW5ldyBRbigidGFnIix7Zm9udENoYXJhY3RlcjoiXFxlYTY2In0pLFFuLnRhZ0FkZD1uZXcgUW4oInRhZy1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjYifSksUW4udGFnUmVtb3ZlPW5ldyBRbigidGFnLXJlbW92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NiJ9KSxRbi5wZXJzb249bmV3IFFuKCJwZXJzb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksUW4ucGVyc29uRm9sbG93PW5ldyBRbigicGVyc29uLWZvbGxvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NyJ9KSxRbi5wZXJzb25PdXRsaW5lPW5ldyBRbigicGVyc29uLW91dGxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksUW4ucGVyc29uRmlsbGVkPW5ldyBRbigicGVyc29uLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NyJ9KSxRbi5naXRCcmFuY2g9bmV3IFFuKCJnaXQtYnJhbmNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTY4In0pLFFuLmdpdEJyYW5jaENyZWF0ZT1uZXcgUW4oImdpdC1icmFuY2gtY3JlYXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTY4In0pLFFuLmdpdEJyYW5jaERlbGV0ZT1uZXcgUW4oImdpdC1icmFuY2gtZGVsZXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTY4In0pLFFuLnNvdXJjZUNvbnRyb2w9bmV3IFFuKCJzb3VyY2UtY29udHJvbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxRbi5taXJyb3I9bmV3IFFuKCJtaXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjkifSksUW4ubWlycm9yUHVibGljPW5ldyBRbigibWlycm9yLXB1YmxpYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OSJ9KSxRbi5zdGFyPW5ldyBRbigic3RhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YSJ9KSxRbi5zdGFyQWRkPW5ldyBRbigic3Rhci1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmEifSksUW4uc3RhckRlbGV0ZT1uZXcgUW4oInN0YXItZGVsZXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTZhIn0pLFFuLnN0YXJFbXB0eT1uZXcgUW4oInN0YXItZW1wdHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmEifSksUW4uY29tbWVudD1uZXcgUW4oImNvbW1lbnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmIifSksUW4uY29tbWVudEFkZD1uZXcgUW4oImNvbW1lbnQtYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTZiIn0pLFFuLmFsZXJ0PW5ldyBRbigiYWxlcnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmMifSksUW4ud2FybmluZz1uZXcgUW4oIndhcm5pbmciLHtmb250Q2hhcmFjdGVyOiJcXGVhNmMifSksUW4uc2VhcmNoPW5ldyBRbigic2VhcmNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTZkIn0pLFFuLnNlYXJjaFNhdmU9bmV3IFFuKCJzZWFyY2gtc2F2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZCJ9KSxRbi5sb2dPdXQ9bmV3IFFuKCJsb2ctb3V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZlIn0pLFFuLnNpZ25PdXQ9bmV3IFFuKCJzaWduLW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZSJ9KSxRbi5sb2dJbj1uZXcgUW4oImxvZy1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZiJ9KSxRbi5zaWduSW49bmV3IFFuKCJzaWduLWluIix7Zm9udENoYXJhY3RlcjoiXFxlYTZmIn0pLFFuLmV5ZT1uZXcgUW4oImV5ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MCJ9KSxRbi5leWVVbndhdGNoPW5ldyBRbigiZXllLXVud2F0Y2giLHtmb250Q2hhcmFjdGVyOiJcXGVhNzAifSksUW4uZXllV2F0Y2g9bmV3IFFuKCJleWUtd2F0Y2giLHtmb250Q2hhcmFjdGVyOiJcXGVhNzAifSksUW4uY2lyY2xlRmlsbGVkPW5ldyBRbigiY2lyY2xlLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxRbi5wcmltaXRpdmVEb3Q9bmV3IFFuKCJwcmltaXRpdmUtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLFFuLmNsb3NlRGlydHk9bmV3IFFuKCJjbG9zZS1kaXJ0eSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxRbi5kZWJ1Z0JyZWFrcG9pbnQ9bmV3IFFuKCJkZWJ1Zy1icmVha3BvaW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLFFuLmRlYnVnQnJlYWtwb2ludERpc2FibGVkPW5ldyBRbigiZGVidWctYnJlYWtwb2ludC1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxRbi5kZWJ1Z0hpbnQ9bmV3IFFuKCJkZWJ1Zy1oaW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLFFuLnByaW1pdGl2ZVNxdWFyZT1uZXcgUW4oInByaW1pdGl2ZS1zcXVhcmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzIifSksUW4uZWRpdD1uZXcgUW4oImVkaXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzMifSksUW4ucGVuY2lsPW5ldyBRbigicGVuY2lsIix7Zm9udENoYXJhY3RlcjoiXFxlYTczIn0pLFFuLmluZm89bmV3IFFuKCJpbmZvIix7Zm9udENoYXJhY3RlcjoiXFxlYTc0In0pLFFuLmlzc3VlT3BlbmVkPW5ldyBRbigiaXNzdWUtb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTc0In0pLFFuLmdpc3RQcml2YXRlPW5ldyBRbigiZ2lzdC1wcml2YXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLFFuLmdpdEZvcmtQcml2YXRlPW5ldyBRbigiZ2l0LWZvcmstcHJpdmF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NSJ9KSxRbi5sb2NrPW5ldyBRbigibG9jayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NSJ9KSxRbi5taXJyb3JQcml2YXRlPW5ldyBRbigibWlycm9yLXByaXZhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzUifSksUW4uY2xvc2U9bmV3IFFuKCJjbG9zZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NiJ9KSxRbi5yZW1vdmVDbG9zZT1uZXcgUW4oInJlbW92ZS1jbG9zZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NiJ9KSxRbi54PW5ldyBRbigieCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NiJ9KSxRbi5yZXBvU3luYz1uZXcgUW4oInJlcG8tc3luYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NyJ9KSxRbi5zeW5jPW5ldyBRbigic3luYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NyJ9KSxRbi5jbG9uZT1uZXcgUW4oImNsb25lIix7Zm9udENoYXJhY3RlcjoiXFxlYTc4In0pLFFuLmRlc2t0b3BEb3dubG9hZD1uZXcgUW4oImRlc2t0b3AtZG93bmxvYWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzgifSksUW4uYmVha2VyPW5ldyBRbigiYmVha2VyIix7Zm9udENoYXJhY3RlcjoiXFxlYTc5In0pLFFuLm1pY3Jvc2NvcGU9bmV3IFFuKCJtaWNyb3Njb3BlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc5In0pLFFuLnZtPW5ldyBRbigidm0iLHtmb250Q2hhcmFjdGVyOiJcXGVhN2EifSksUW4uZGV2aWNlRGVza3RvcD1uZXcgUW4oImRldmljZS1kZXNrdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYTdhIn0pLFFuLmZpbGU9bmV3IFFuKCJmaWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTdiIn0pLFFuLmZpbGVUZXh0PW5ldyBRbigiZmlsZS10ZXh0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTdiIn0pLFFuLm1vcmU9bmV3IFFuKCJtb3JlIix7Zm9udENoYXJhY3RlcjoiXFxlYTdjIn0pLFFuLmVsbGlwc2lzPW5ldyBRbigiZWxsaXBzaXMiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2MifSksUW4ua2ViYWJIb3Jpem9udGFsPW5ldyBRbigia2ViYWItaG9yaXpvbnRhbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YyJ9KSxRbi5tYWlsUmVwbHk9bmV3IFFuKCJtYWlsLXJlcGx5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTdkIn0pLFFuLnJlcGx5PW5ldyBRbigicmVwbHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2QifSksUW4ub3JnYW5pemF0aW9uPW5ldyBRbigib3JnYW5pemF0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYTdlIn0pLFFuLm9yZ2FuaXphdGlvbkZpbGxlZD1uZXcgUW4oIm9yZ2FuaXphdGlvbi1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2UifSksUW4ub3JnYW5pemF0aW9uT3V0bGluZT1uZXcgUW4oIm9yZ2FuaXphdGlvbi1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYTdlIn0pLFFuLm5ld0ZpbGU9bmV3IFFuKCJuZXctZmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZiJ9KSxRbi5maWxlQWRkPW5ldyBRbigiZmlsZS1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2YifSksUW4ubmV3Rm9sZGVyPW5ldyBRbigibmV3LWZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MCJ9KSxRbi5maWxlRGlyZWN0b3J5Q3JlYXRlPW5ldyBRbigiZmlsZS1kaXJlY3RvcnktY3JlYXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTgwIn0pLFFuLnRyYXNoPW5ldyBRbigidHJhc2giLHtmb250Q2hhcmFjdGVyOiJcXGVhODEifSksUW4udHJhc2hjYW49bmV3IFFuKCJ0cmFzaGNhbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MSJ9KSxRbi5oaXN0b3J5PW5ldyBRbigiaGlzdG9yeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MiJ9KSxRbi5jbG9jaz1uZXcgUW4oImNsb2NrIix7Zm9udENoYXJhY3RlcjoiXFxlYTgyIn0pLFFuLmZvbGRlcj1uZXcgUW4oImZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MyJ9KSxRbi5maWxlRGlyZWN0b3J5PW5ldyBRbigiZmlsZS1kaXJlY3RvcnkiLHtmb250Q2hhcmFjdGVyOiJcXGVhODMifSksUW4uc3ltYm9sRm9sZGVyPW5ldyBRbigic3ltYm9sLWZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MyJ9KSxRbi5sb2dvR2l0aHViPW5ldyBRbigibG9nby1naXRodWIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODQifSksUW4ubWFya0dpdGh1Yj1uZXcgUW4oIm1hcmstZ2l0aHViIix7Zm9udENoYXJhY3RlcjoiXFxlYTg0In0pLFFuLmdpdGh1Yj1uZXcgUW4oImdpdGh1YiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NCJ9KSxRbi50ZXJtaW5hbD1uZXcgUW4oInRlcm1pbmFsIix7Zm9udENoYXJhY3RlcjoiXFxlYTg1In0pLFFuLmNvbnNvbGU9bmV3IFFuKCJjb25zb2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYTg1In0pLFFuLnJlcGw9bmV3IFFuKCJyZXBsIix7Zm9udENoYXJhY3RlcjoiXFxlYTg1In0pLFFuLnphcD1uZXcgUW4oInphcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NiJ9KSxRbi5zeW1ib2xFdmVudD1uZXcgUW4oInN5bWJvbC1ldmVudCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NiJ9KSxRbi5lcnJvcj1uZXcgUW4oImVycm9yIix7Zm9udENoYXJhY3RlcjoiXFxlYTg3In0pLFFuLnN0b3A9bmV3IFFuKCJzdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYTg3In0pLFFuLnZhcmlhYmxlPW5ldyBRbigidmFyaWFibGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhODgifSksUW4uc3ltYm9sVmFyaWFibGU9bmV3IFFuKCJzeW1ib2wtdmFyaWFibGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhODgifSksUW4uYXJyYXk9bmV3IFFuKCJhcnJheSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YSJ9KSxRbi5zeW1ib2xBcnJheT1uZXcgUW4oInN5bWJvbC1hcnJheSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YSJ9KSxRbi5zeW1ib2xNb2R1bGU9bmV3IFFuKCJzeW1ib2wtbW9kdWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYThiIn0pLFFuLnN5bWJvbFBhY2thZ2U9bmV3IFFuKCJzeW1ib2wtcGFja2FnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxRbi5zeW1ib2xOYW1lc3BhY2U9bmV3IFFuKCJzeW1ib2wtbmFtZXNwYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYThiIn0pLFFuLnN5bWJvbE9iamVjdD1uZXcgUW4oInN5bWJvbC1vYmplY3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksUW4uc3ltYm9sTWV0aG9kPW5ldyBRbigic3ltYm9sLW1ldGhvZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YyJ9KSxRbi5zeW1ib2xGdW5jdGlvbj1uZXcgUW4oInN5bWJvbC1mdW5jdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YyJ9KSxRbi5zeW1ib2xDb25zdHJ1Y3Rvcj1uZXcgUW4oInN5bWJvbC1jb25zdHJ1Y3RvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YyJ9KSxRbi5zeW1ib2xCb29sZWFuPW5ldyBRbigic3ltYm9sLWJvb2xlYW4iLHtmb250Q2hhcmFjdGVyOiJcXGVhOGYifSksUW4uc3ltYm9sTnVsbD1uZXcgUW4oInN5bWJvbC1udWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYThmIn0pLFFuLnN5bWJvbE51bWVyaWM9bmV3IFFuKCJzeW1ib2wtbnVtZXJpYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MCJ9KSxRbi5zeW1ib2xOdW1iZXI9bmV3IFFuKCJzeW1ib2wtbnVtYmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkwIn0pLFFuLnN5bWJvbFN0cnVjdHVyZT1uZXcgUW4oInN5bWJvbC1zdHJ1Y3R1cmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTEifSksUW4uc3ltYm9sU3RydWN0PW5ldyBRbigic3ltYm9sLXN0cnVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MSJ9KSxRbi5zeW1ib2xQYXJhbWV0ZXI9bmV3IFFuKCJzeW1ib2wtcGFyYW1ldGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkyIn0pLFFuLnN5bWJvbFR5cGVQYXJhbWV0ZXI9bmV3IFFuKCJzeW1ib2wtdHlwZS1wYXJhbWV0ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTIifSksUW4uc3ltYm9sS2V5PW5ldyBRbigic3ltYm9sLWtleSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MyJ9KSxRbi5zeW1ib2xUZXh0PW5ldyBRbigic3ltYm9sLXRleHQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTMifSksUW4uc3ltYm9sUmVmZXJlbmNlPW5ldyBRbigic3ltYm9sLXJlZmVyZW5jZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NCJ9KSxRbi5nb1RvRmlsZT1uZXcgUW4oImdvLXRvLWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTQifSksUW4uc3ltYm9sRW51bT1uZXcgUW4oInN5bWJvbC1lbnVtIix7Zm9udENoYXJhY3RlcjoiXFxlYTk1In0pLFFuLnN5bWJvbFZhbHVlPW5ldyBRbigic3ltYm9sLXZhbHVlIix7Zm9udENoYXJhY3RlcjoiXFxlYTk1In0pLFFuLnN5bWJvbFJ1bGVyPW5ldyBRbigic3ltYm9sLXJ1bGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTk2In0pLFFuLnN5bWJvbFVuaXQ9bmV3IFFuKCJzeW1ib2wtdW5pdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NiJ9KSxRbi5hY3RpdmF0ZUJyZWFrcG9pbnRzPW5ldyBRbigiYWN0aXZhdGUtYnJlYWtwb2ludHMiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTcifSksUW4uYXJjaGl2ZT1uZXcgUW4oImFyY2hpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTgifSksUW4uYXJyb3dCb3RoPW5ldyBRbigiYXJyb3ctYm90aCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5OSJ9KSxRbi5hcnJvd0Rvd249bmV3IFFuKCJhcnJvdy1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYTlhIn0pLFFuLmFycm93TGVmdD1uZXcgUW4oImFycm93LWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOWIifSksUW4uYXJyb3dSaWdodD1uZXcgUW4oImFycm93LXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTljIn0pLFFuLmFycm93U21hbGxEb3duPW5ldyBRbigiYXJyb3ctc21hbGwtZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5ZCJ9KSxRbi5hcnJvd1NtYWxsTGVmdD1uZXcgUW4oImFycm93LXNtYWxsLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOWUifSksUW4uYXJyb3dTbWFsbFJpZ2h0PW5ldyBRbigiYXJyb3ctc21hbGwtcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOWYifSksUW4uYXJyb3dTbWFsbFVwPW5ldyBRbigiYXJyb3ctc21hbGwtdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTAifSksUW4uYXJyb3dVcD1uZXcgUW4oImFycm93LXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWExIn0pLFFuLmJlbGw9bmV3IFFuKCJiZWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYWEyIn0pLFFuLmJvbGQ9bmV3IFFuKCJib2xkIix7Zm9udENoYXJhY3RlcjoiXFxlYWEzIn0pLFFuLmJvb2s9bmV3IFFuKCJib29rIix7Zm9udENoYXJhY3RlcjoiXFxlYWE0In0pLFFuLmJvb2ttYXJrPW5ldyBRbigiYm9va21hcmsiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTUifSksUW4uZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWxVbnZlcmlmaWVkPW5ldyBRbigiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWE2In0pLFFuLmRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsPW5ldyBRbigiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNyJ9KSxRbi5kZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbERpc2FibGVkPW5ldyBRbigiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNyJ9KSxRbi5kZWJ1Z0JyZWFrcG9pbnREYXRhVW52ZXJpZmllZD1uZXcgUW4oImRlYnVnLWJyZWFrcG9pbnQtZGF0YS11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWE4In0pLFFuLmRlYnVnQnJlYWtwb2ludERhdGE9bmV3IFFuKCJkZWJ1Zy1icmVha3BvaW50LWRhdGEiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTkifSksUW4uZGVidWdCcmVha3BvaW50RGF0YURpc2FibGVkPW5ldyBRbigiZGVidWctYnJlYWtwb2ludC1kYXRhLWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWE5In0pLFFuLmRlYnVnQnJlYWtwb2ludExvZ1VudmVyaWZpZWQ9bmV3IFFuKCJkZWJ1Zy1icmVha3BvaW50LWxvZy11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWFhIn0pLFFuLmRlYnVnQnJlYWtwb2ludExvZz1uZXcgUW4oImRlYnVnLWJyZWFrcG9pbnQtbG9nIix7Zm9udENoYXJhY3RlcjoiXFxlYWFiIn0pLFFuLmRlYnVnQnJlYWtwb2ludExvZ0Rpc2FibGVkPW5ldyBRbigiZGVidWctYnJlYWtwb2ludC1sb2ctZGlzYWJsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWIifSksUW4uYnJpZWZjYXNlPW5ldyBRbigiYnJpZWZjYXNlIix7Zm9udENoYXJhY3RlcjoiXFxlYWFjIn0pLFFuLmJyb2FkY2FzdD1uZXcgUW4oImJyb2FkY2FzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhZCJ9KSxRbi5icm93c2VyPW5ldyBRbigiYnJvd3NlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhZSJ9KSxRbi5idWc9bmV3IFFuKCJidWciLHtmb250Q2hhcmFjdGVyOiJcXGVhYWYifSksUW4uY2FsZW5kYXI9bmV3IFFuKCJjYWxlbmRhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiMCJ9KSxRbi5jYXNlU2Vuc2l0aXZlPW5ldyBRbigiY2FzZS1zZW5zaXRpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjEifSksUW4uY2hlY2s9bmV3IFFuKCJjaGVjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiMiJ9KSxRbi5jaGVja2xpc3Q9bmV3IFFuKCJjaGVja2xpc3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjMifSksUW4uY2hldnJvbkRvd249bmV3IFFuKCJjaGV2cm9uLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhYjQifSksUW4uZHJvcERvd25CdXR0b249bmV3IFFuKCJkcm9wLWRvd24tYnV0dG9uIixRbi5jaGV2cm9uRG93bi5kZWZpbml0aW9uKSxRbi5jaGV2cm9uTGVmdD1uZXcgUW4oImNoZXZyb24tbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiNSJ9KSxRbi5jaGV2cm9uUmlnaHQ9bmV3IFFuKCJjaGV2cm9uLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWI2In0pLFFuLmNoZXZyb25VcD1uZXcgUW4oImNoZXZyb24tdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjcifSksUW4uY2hyb21lQ2xvc2U9bmV3IFFuKCJjaHJvbWUtY2xvc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjgifSksUW4uY2hyb21lTWF4aW1pemU9bmV3IFFuKCJjaHJvbWUtbWF4aW1pemUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjkifSksUW4uY2hyb21lTWluaW1pemU9bmV3IFFuKCJjaHJvbWUtbWluaW1pemUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmEifSksUW4uY2hyb21lUmVzdG9yZT1uZXcgUW4oImNocm9tZS1yZXN0b3JlIix7Zm9udENoYXJhY3RlcjoiXFxlYWJiIn0pLFFuLmNpcmNsZU91dGxpbmU9bmV3IFFuKCJjaXJjbGUtb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYyJ9KSxRbi5kZWJ1Z0JyZWFrcG9pbnRVbnZlcmlmaWVkPW5ldyBRbigiZGVidWctYnJlYWtwb2ludC11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWJjIn0pLFFuLmNpcmNsZVNsYXNoPW5ldyBRbigiY2lyY2xlLXNsYXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYWJkIn0pLFFuLmNpcmN1aXRCb2FyZD1uZXcgUW4oImNpcmN1aXQtYm9hcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmUifSksUW4uY2xlYXJBbGw9bmV3IFFuKCJjbGVhci1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmYifSksUW4uY2xpcHB5PW5ldyBRbigiY2xpcHB5Iix7Zm9udENoYXJhY3RlcjoiXFxlYWMwIn0pLFFuLmNsb3NlQWxsPW5ldyBRbigiY2xvc2UtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYWMxIn0pLFFuLmNsb3VkRG93bmxvYWQ9bmV3IFFuKCJjbG91ZC1kb3dubG9hZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMiJ9KSxRbi5jbG91ZFVwbG9hZD1uZXcgUW4oImNsb3VkLXVwbG9hZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMyJ9KSxRbi5jb2RlPW5ldyBRbigiY29kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNCJ9KSxRbi5jb2xsYXBzZUFsbD1uZXcgUW4oImNvbGxhcHNlLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNSJ9KSxRbi5jb2xvck1vZGU9bmV3IFFuKCJjb2xvci1tb2RlIix7Zm9udENoYXJhY3RlcjoiXFxlYWM2In0pLFFuLmNvbW1lbnREaXNjdXNzaW9uPW5ldyBRbigiY29tbWVudC1kaXNjdXNzaW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYWM3In0pLFFuLmNvbXBhcmVDaGFuZ2VzPW5ldyBRbigiY29tcGFyZS1jaGFuZ2VzIix7Zm9udENoYXJhY3RlcjoiXFxlYWZkIn0pLFFuLmNyZWRpdENhcmQ9bmV3IFFuKCJjcmVkaXQtY2FyZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjOSJ9KSxRbi5kYXNoPW5ldyBRbigiZGFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjYyJ9KSxRbi5kYXNoYm9hcmQ9bmV3IFFuKCJkYXNoYm9hcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhY2QifSksUW4uZGF0YWJhc2U9bmV3IFFuKCJkYXRhYmFzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjZSJ9KSxRbi5kZWJ1Z0NvbnRpbnVlPW5ldyBRbigiZGVidWctY29udGludWUiLHtmb250Q2hhcmFjdGVyOiJcXGVhY2YifSksUW4uZGVidWdEaXNjb25uZWN0PW5ldyBRbigiZGVidWctZGlzY29ubmVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkMCJ9KSxRbi5kZWJ1Z1BhdXNlPW5ldyBRbigiZGVidWctcGF1c2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDEifSksUW4uZGVidWdSZXN0YXJ0PW5ldyBRbigiZGVidWctcmVzdGFydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkMiJ9KSxRbi5kZWJ1Z1N0YXJ0PW5ldyBRbigiZGVidWctc3RhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDMifSksUW4uZGVidWdTdGVwSW50bz1uZXcgUW4oImRlYnVnLXN0ZXAtaW50byIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkNCJ9KSxRbi5kZWJ1Z1N0ZXBPdXQ9bmV3IFFuKCJkZWJ1Zy1zdGVwLW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkNSJ9KSxRbi5kZWJ1Z1N0ZXBPdmVyPW5ldyBRbigiZGVidWctc3RlcC1vdmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ2In0pLFFuLmRlYnVnU3RvcD1uZXcgUW4oImRlYnVnLXN0b3AiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDcifSksUW4uZGVidWc9bmV3IFFuKCJkZWJ1ZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkOCJ9KSxRbi5kZXZpY2VDYW1lcmFWaWRlbz1uZXcgUW4oImRldmljZS1jYW1lcmEtdmlkZW8iLHtmb250Q2hhcmFjdGVyOiJcXGVhZDkifSksUW4uZGV2aWNlQ2FtZXJhPW5ldyBRbigiZGV2aWNlLWNhbWVyYSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkYSJ9KSxRbi5kZXZpY2VNb2JpbGU9bmV3IFFuKCJkZXZpY2UtbW9iaWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYWRiIn0pLFFuLmRpZmZBZGRlZD1uZXcgUW4oImRpZmYtYWRkZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGMifSksUW4uZGlmZklnbm9yZWQ9bmV3IFFuKCJkaWZmLWlnbm9yZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGQifSksUW4uZGlmZk1vZGlmaWVkPW5ldyBRbigiZGlmZi1tb2RpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkZSJ9KSxRbi5kaWZmUmVtb3ZlZD1uZXcgUW4oImRpZmYtcmVtb3ZlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkZiJ9KSxRbi5kaWZmUmVuYW1lZD1uZXcgUW4oImRpZmYtcmVuYW1lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMCJ9KSxRbi5kaWZmPW5ldyBRbigiZGlmZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMSJ9KSxRbi5kaXNjYXJkPW5ldyBRbigiZGlzY2FyZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMiJ9KSxRbi5lZGl0b3JMYXlvdXQ9bmV3IFFuKCJlZGl0b3ItbGF5b3V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWUzIn0pLFFuLmVtcHR5V2luZG93PW5ldyBRbigiZW1wdHktd2luZG93Iix7Zm9udENoYXJhY3RlcjoiXFxlYWU0In0pLFFuLmV4Y2x1ZGU9bmV3IFFuKCJleGNsdWRlIix7Zm9udENoYXJhY3RlcjoiXFxlYWU1In0pLFFuLmV4dGVuc2lvbnM9bmV3IFFuKCJleHRlbnNpb25zIix7Zm9udENoYXJhY3RlcjoiXFxlYWU2In0pLFFuLmV5ZUNsb3NlZD1uZXcgUW4oImV5ZS1jbG9zZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTcifSksUW4uZmlsZUJpbmFyeT1uZXcgUW4oImZpbGUtYmluYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYWU4In0pLFFuLmZpbGVDb2RlPW5ldyBRbigiZmlsZS1jb2RlIix7Zm9udENoYXJhY3RlcjoiXFxlYWU5In0pLFFuLmZpbGVNZWRpYT1uZXcgUW4oImZpbGUtbWVkaWEiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWEifSksUW4uZmlsZVBkZj1uZXcgUW4oImZpbGUtcGRmIix7Zm9udENoYXJhY3RlcjoiXFxlYWViIn0pLFFuLmZpbGVTdWJtb2R1bGU9bmV3IFFuKCJmaWxlLXN1Ym1vZHVsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlYyJ9KSxRbi5maWxlU3ltbGlua0RpcmVjdG9yeT1uZXcgUW4oImZpbGUtc3ltbGluay1kaXJlY3RvcnkiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWQifSksUW4uZmlsZVN5bWxpbmtGaWxlPW5ldyBRbigiZmlsZS1zeW1saW5rLWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWUifSksUW4uZmlsZVppcD1uZXcgUW4oImZpbGUtemlwIix7Zm9udENoYXJhY3RlcjoiXFxlYWVmIn0pLFFuLmZpbGVzPW5ldyBRbigiZmlsZXMiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjAifSksUW4uZmlsdGVyPW5ldyBRbigiZmlsdGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYWYxIn0pLFFuLmZsYW1lPW5ldyBRbigiZmxhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjIifSksUW4uZm9sZERvd249bmV3IFFuKCJmb2xkLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhZjMifSksUW4uZm9sZFVwPW5ldyBRbigiZm9sZC11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmNCJ9KSxRbi5mb2xkPW5ldyBRbigiZm9sZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmNSJ9KSxRbi5mb2xkZXJBY3RpdmU9bmV3IFFuKCJmb2xkZXItYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYWY2In0pLFFuLmZvbGRlck9wZW5lZD1uZXcgUW4oImZvbGRlci1vcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjcifSksUW4uZ2Vhcj1uZXcgUW4oImdlYXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjgifSksUW4uZ2lmdD1uZXcgUW4oImdpZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjkifSksUW4uZ2lzdFNlY3JldD1uZXcgUW4oImdpc3Qtc2VjcmV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWZhIn0pLFFuLmdpc3Q9bmV3IFFuKCJnaXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWZiIn0pLFFuLmdpdENvbW1pdD1uZXcgUW4oImdpdC1jb21taXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZmMifSksUW4uZ2l0Q29tcGFyZT1uZXcgUW4oImdpdC1jb21wYXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYWZkIn0pLFFuLmdpdE1lcmdlPW5ldyBRbigiZ2l0LW1lcmdlIix7Zm9udENoYXJhY3RlcjoiXFxlYWZlIn0pLFFuLmdpdGh1YkFjdGlvbj1uZXcgUW4oImdpdGh1Yi1hY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhZmYifSksUW4uZ2l0aHViQWx0PW5ldyBRbigiZ2l0aHViLWFsdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwMCJ9KSxRbi5nbG9iZT1uZXcgUW4oImdsb2JlIix7Zm9udENoYXJhY3RlcjoiXFxlYjAxIn0pLFFuLmdyYWJiZXI9bmV3IFFuKCJncmFiYmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjAyIn0pLFFuLmdyYXBoPW5ldyBRbigiZ3JhcGgiLHtmb250Q2hhcmFjdGVyOiJcXGViMDMifSksUW4uZ3JpcHBlcj1uZXcgUW4oImdyaXBwZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViMDQifSksUW4uaGVhcnQ9bmV3IFFuKCJoZWFydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwNSJ9KSxRbi5ob21lPW5ldyBRbigiaG9tZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwNiJ9KSxRbi5ob3Jpem9udGFsUnVsZT1uZXcgUW4oImhvcml6b250YWwtcnVsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwNyJ9KSxRbi5odWJvdD1uZXcgUW4oImh1Ym90Iix7Zm9udENoYXJhY3RlcjoiXFxlYjA4In0pLFFuLmluYm94PW5ldyBRbigiaW5ib3giLHtmb250Q2hhcmFjdGVyOiJcXGViMDkifSksUW4uaXNzdWVDbG9zZWQ9bmV3IFFuKCJpc3N1ZS1jbG9zZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTQifSksUW4uaXNzdWVSZW9wZW5lZD1uZXcgUW4oImlzc3VlLXJlb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjBiIn0pLFFuLmlzc3Vlcz1uZXcgUW4oImlzc3VlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwYyJ9KSxRbi5pdGFsaWM9bmV3IFFuKCJpdGFsaWMiLHtmb250Q2hhcmFjdGVyOiJcXGViMGQifSksUW4uamVyc2V5PW5ldyBRbigiamVyc2V5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjBlIn0pLFFuLmpzb249bmV3IFFuKCJqc29uIix7Zm9udENoYXJhY3RlcjoiXFxlYjBmIn0pLFFuLmtlYmFiVmVydGljYWw9bmV3IFFuKCJrZWJhYi12ZXJ0aWNhbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxMCJ9KSxRbi5rZXk9bmV3IFFuKCJrZXkiLHtmb250Q2hhcmFjdGVyOiJcXGViMTEifSksUW4ubGF3PW5ldyBRbigibGF3Iix7Zm9udENoYXJhY3RlcjoiXFxlYjEyIn0pLFFuLmxpZ2h0YnVsYkF1dG9maXg9bmV3IFFuKCJsaWdodGJ1bGItYXV0b2ZpeCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxMyJ9KSxRbi5saW5rRXh0ZXJuYWw9bmV3IFFuKCJsaW5rLWV4dGVybmFsIix7Zm9udENoYXJhY3RlcjoiXFxlYjE0In0pLFFuLmxpbms9bmV3IFFuKCJsaW5rIix7Zm9udENoYXJhY3RlcjoiXFxlYjE1In0pLFFuLmxpc3RPcmRlcmVkPW5ldyBRbigibGlzdC1vcmRlcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjE2In0pLFFuLmxpc3RVbm9yZGVyZWQ9bmV3IFFuKCJsaXN0LXVub3JkZXJlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNyJ9KSxRbi5saXZlU2hhcmU9bmV3IFFuKCJsaXZlLXNoYXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYjE4In0pLFFuLmxvYWRpbmc9bmV3IFFuKCJsb2FkaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjE5In0pLFFuLmxvY2F0aW9uPW5ldyBRbigibG9jYXRpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViMWEifSksUW4ubWFpbFJlYWQ9bmV3IFFuKCJtYWlsLXJlYWQiLHtmb250Q2hhcmFjdGVyOiJcXGViMWIifSksUW4ubWFpbD1uZXcgUW4oIm1haWwiLHtmb250Q2hhcmFjdGVyOiJcXGViMWMifSksUW4ubWFya2Rvd249bmV3IFFuKCJtYXJrZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxZCJ9KSxRbi5tZWdhcGhvbmU9bmV3IFFuKCJtZWdhcGhvbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMWUifSksUW4ubWVudGlvbj1uZXcgUW4oIm1lbnRpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViMWYifSksUW4ubWlsZXN0b25lPW5ldyBRbigibWlsZXN0b25lIix7Zm9udENoYXJhY3RlcjoiXFxlYjIwIn0pLFFuLm1vcnRhckJvYXJkPW5ldyBRbigibW9ydGFyLWJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYjIxIn0pLFFuLm1vdmU9bmV3IFFuKCJtb3ZlIix7Zm9udENoYXJhY3RlcjoiXFxlYjIyIn0pLFFuLm11bHRpcGxlV2luZG93cz1uZXcgUW4oIm11bHRpcGxlLXdpbmRvd3MiLHtmb250Q2hhcmFjdGVyOiJcXGViMjMifSksUW4ubXV0ZT1uZXcgUW4oIm11dGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjQifSksUW4ubm9OZXdsaW5lPW5ldyBRbigibm8tbmV3bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyNSJ9KSxRbi5ub3RlPW5ldyBRbigibm90ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyNiJ9KSxRbi5vY3RvZmFjZT1uZXcgUW4oIm9jdG9mYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI3In0pLFFuLm9wZW5QcmV2aWV3PW5ldyBRbigib3Blbi1wcmV2aWV3Iix7Zm9udENoYXJhY3RlcjoiXFxlYjI4In0pLFFuLnBhY2thZ2VfPW5ldyBRbigicGFja2FnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyOSJ9KSxRbi5wYWludGNhbj1uZXcgUW4oInBhaW50Y2FuIix7Zm9udENoYXJhY3RlcjoiXFxlYjJhIn0pLFFuLnBpbj1uZXcgUW4oInBpbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyYiJ9KSxRbi5wbGF5PW5ldyBRbigicGxheSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyYyJ9KSxRbi5ydW49bmV3IFFuKCJydW4iLHtmb250Q2hhcmFjdGVyOiJcXGViMmMifSksUW4ucGx1Zz1uZXcgUW4oInBsdWciLHtmb250Q2hhcmFjdGVyOiJcXGViMmQifSksUW4ucHJlc2VydmVDYXNlPW5ldyBRbigicHJlc2VydmUtY2FzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyZSJ9KSxRbi5wcmV2aWV3PW5ldyBRbigicHJldmlldyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyZiJ9KSxRbi5wcm9qZWN0PW5ldyBRbigicHJvamVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzMCJ9KSxRbi5wdWxzZT1uZXcgUW4oInB1bHNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjMxIn0pLFFuLnF1ZXN0aW9uPW5ldyBRbigicXVlc3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViMzIifSksUW4ucXVvdGU9bmV3IFFuKCJxdW90ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzMyJ9KSxRbi5yYWRpb1Rvd2VyPW5ldyBRbigicmFkaW8tdG93ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViMzQifSksUW4ucmVhY3Rpb25zPW5ldyBRbigicmVhY3Rpb25zIix7Zm9udENoYXJhY3RlcjoiXFxlYjM1In0pLFFuLnJlZmVyZW5jZXM9bmV3IFFuKCJyZWZlcmVuY2VzIix7Zm9udENoYXJhY3RlcjoiXFxlYjM2In0pLFFuLnJlZnJlc2g9bmV3IFFuKCJyZWZyZXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYjM3In0pLFFuLnJlZ2V4PW5ldyBRbigicmVnZXgiLHtmb250Q2hhcmFjdGVyOiJcXGViMzgifSksUW4ucmVtb3RlRXhwbG9yZXI9bmV3IFFuKCJyZW1vdGUtZXhwbG9yZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViMzkifSksUW4ucmVtb3RlPW5ldyBRbigicmVtb3RlIix7Zm9udENoYXJhY3RlcjoiXFxlYjNhIn0pLFFuLnJlbW92ZT1uZXcgUW4oInJlbW92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzYiJ9KSxRbi5yZXBsYWNlQWxsPW5ldyBRbigicmVwbGFjZS1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViM2MifSksUW4ucmVwbGFjZT1uZXcgUW4oInJlcGxhY2UiLHtmb250Q2hhcmFjdGVyOiJcXGViM2QifSksUW4ucmVwb0Nsb25lPW5ldyBRbigicmVwby1jbG9uZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzZSJ9KSxRbi5yZXBvRm9yY2VQdXNoPW5ldyBRbigicmVwby1mb3JjZS1wdXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYjNmIn0pLFFuLnJlcG9QdWxsPW5ldyBRbigicmVwby1wdWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjQwIn0pLFFuLnJlcG9QdXNoPW5ldyBRbigicmVwby1wdXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYjQxIn0pLFFuLnJlcG9ydD1uZXcgUW4oInJlcG9ydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MiJ9KSxRbi5yZXF1ZXN0Q2hhbmdlcz1uZXcgUW4oInJlcXVlc3QtY2hhbmdlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MyJ9KSxRbi5yb2NrZXQ9bmV3IFFuKCJyb2NrZXQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDQifSksUW4ucm9vdEZvbGRlck9wZW5lZD1uZXcgUW4oInJvb3QtZm9sZGVyLW9wZW5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0NSJ9KSxRbi5yb290Rm9sZGVyPW5ldyBRbigicm9vdC1mb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNDYifSksUW4ucnNzPW5ldyBRbigicnNzIix7Zm9udENoYXJhY3RlcjoiXFxlYjQ3In0pLFFuLnJ1Ynk9bmV3IFFuKCJydWJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjQ4In0pLFFuLnNhdmVBbGw9bmV3IFFuKCJzYXZlLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0OSJ9KSxRbi5zYXZlQXM9bmV3IFFuKCJzYXZlLWFzIix7Zm9udENoYXJhY3RlcjoiXFxlYjRhIn0pLFFuLnNhdmU9bmV3IFFuKCJzYXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYjRiIn0pLFFuLnNjcmVlbkZ1bGw9bmV3IFFuKCJzY3JlZW4tZnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YyJ9KSxRbi5zY3JlZW5Ob3JtYWw9bmV3IFFuKCJzY3JlZW4tbm9ybWFsIix7Zm9udENoYXJhY3RlcjoiXFxlYjRkIn0pLFFuLnNlYXJjaFN0b3A9bmV3IFFuKCJzZWFyY2gtc3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0ZSJ9KSxRbi5zZXJ2ZXI9bmV3IFFuKCJzZXJ2ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNTAifSksUW4uc2V0dGluZ3NHZWFyPW5ldyBRbigic2V0dGluZ3MtZ2VhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MSJ9KSxRbi5zZXR0aW5ncz1uZXcgUW4oInNldHRpbmdzIix7Zm9udENoYXJhY3RlcjoiXFxlYjUyIn0pLFFuLnNoaWVsZD1uZXcgUW4oInNoaWVsZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MyJ9KSxRbi5zbWlsZXk9bmV3IFFuKCJzbWlsZXkiLHtmb250Q2hhcmFjdGVyOiJcXGViNTQifSksUW4uc29ydFByZWNlZGVuY2U9bmV3IFFuKCJzb3J0LXByZWNlZGVuY2UiLHtmb250Q2hhcmFjdGVyOiJcXGViNTUifSksUW4uc3BsaXRIb3Jpem9udGFsPW5ldyBRbigic3BsaXQtaG9yaXpvbnRhbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1NiJ9KSxRbi5zcGxpdFZlcnRpY2FsPW5ldyBRbigic3BsaXQtdmVydGljYWwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTcifSksUW4uc3F1aXJyZWw9bmV3IFFuKCJzcXVpcnJlbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1OCJ9KSxRbi5zdGFyRnVsbD1uZXcgUW4oInN0YXItZnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1OSJ9KSxRbi5zdGFySGFsZj1uZXcgUW4oInN0YXItaGFsZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1YSJ9KSxRbi5zeW1ib2xDbGFzcz1uZXcgUW4oInN5bWJvbC1jbGFzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1YiJ9KSxRbi5zeW1ib2xDb2xvcj1uZXcgUW4oInN5bWJvbC1jb2xvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1YyJ9KSxRbi5zeW1ib2xDdXN0b21Db2xvcj1uZXcgUW4oInN5bWJvbC1jdXN0b21jb2xvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1YyJ9KSxRbi5zeW1ib2xDb25zdGFudD1uZXcgUW4oInN5bWJvbC1jb25zdGFudCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1ZCJ9KSxRbi5zeW1ib2xFbnVtTWVtYmVyPW5ldyBRbigic3ltYm9sLWVudW0tbWVtYmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjVlIn0pLFFuLnN5bWJvbEZpZWxkPW5ldyBRbigic3ltYm9sLWZpZWxkIix7Zm9udENoYXJhY3RlcjoiXFxlYjVmIn0pLFFuLnN5bWJvbEZpbGU9bmV3IFFuKCJzeW1ib2wtZmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2MCJ9KSxRbi5zeW1ib2xJbnRlcmZhY2U9bmV3IFFuKCJzeW1ib2wtaW50ZXJmYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjYxIn0pLFFuLnN5bWJvbEtleXdvcmQ9bmV3IFFuKCJzeW1ib2wta2V5d29yZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2MiJ9KSxRbi5zeW1ib2xNaXNjPW5ldyBRbigic3ltYm9sLW1pc2MiLHtmb250Q2hhcmFjdGVyOiJcXGViNjMifSksUW4uc3ltYm9sT3BlcmF0b3I9bmV3IFFuKCJzeW1ib2wtb3BlcmF0b3IiLHtmb250Q2hhcmFjdGVyOiJcXGViNjQifSksUW4uc3ltYm9sUHJvcGVydHk9bmV3IFFuKCJzeW1ib2wtcHJvcGVydHkiLHtmb250Q2hhcmFjdGVyOiJcXGViNjUifSksUW4ud3JlbmNoPW5ldyBRbigid3JlbmNoIix7Zm9udENoYXJhY3RlcjoiXFxlYjY1In0pLFFuLndyZW5jaFN1YmFjdGlvbj1uZXcgUW4oIndyZW5jaC1zdWJhY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViNjUifSksUW4uc3ltYm9sU25pcHBldD1uZXcgUW4oInN5bWJvbC1zbmlwcGV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY2In0pLFFuLnRhc2tsaXN0PW5ldyBRbigidGFza2xpc3QiLHtmb250Q2hhcmFjdGVyOiJcXGViNjcifSksUW4udGVsZXNjb3BlPW5ldyBRbigidGVsZXNjb3BlIix7Zm9udENoYXJhY3RlcjoiXFxlYjY4In0pLFFuLnRleHRTaXplPW5ldyBRbigidGV4dC1zaXplIix7Zm9udENoYXJhY3RlcjoiXFxlYjY5In0pLFFuLnRocmVlQmFycz1uZXcgUW4oInRocmVlLWJhcnMiLHtmb250Q2hhcmFjdGVyOiJcXGViNmEifSksUW4udGh1bWJzZG93bj1uZXcgUW4oInRodW1ic2Rvd24iLHtmb250Q2hhcmFjdGVyOiJcXGViNmIifSksUW4udGh1bWJzdXA9bmV3IFFuKCJ0aHVtYnN1cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2YyJ9KSxRbi50b29scz1uZXcgUW4oInRvb2xzIix7Zm9udENoYXJhY3RlcjoiXFxlYjZkIn0pLFFuLnRyaWFuZ2xlRG93bj1uZXcgUW4oInRyaWFuZ2xlLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGViNmUifSksUW4udHJpYW5nbGVMZWZ0PW5ldyBRbigidHJpYW5nbGUtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2ZiJ9KSxRbi50cmlhbmdsZVJpZ2h0PW5ldyBRbigidHJpYW5nbGUtcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViNzAifSksUW4udHJpYW5nbGVVcD1uZXcgUW4oInRyaWFuZ2xlLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYjcxIn0pLFFuLnR3aXR0ZXI9bmV3IFFuKCJ0d2l0dGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjcyIn0pLFFuLnVuZm9sZD1uZXcgUW4oInVuZm9sZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3MyJ9KSxRbi51bmxvY2s9bmV3IFFuKCJ1bmxvY2siLHtmb250Q2hhcmFjdGVyOiJcXGViNzQifSksUW4udW5tdXRlPW5ldyBRbigidW5tdXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYjc1In0pLFFuLnVudmVyaWZpZWQ9bmV3IFFuKCJ1bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjc2In0pLFFuLnZlcmlmaWVkPW5ldyBRbigidmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViNzcifSksUW4udmVyc2lvbnM9bmV3IFFuKCJ2ZXJzaW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3OCJ9KSxRbi52bUFjdGl2ZT1uZXcgUW4oInZtLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3OSJ9KSxRbi52bU91dGxpbmU9bmV3IFFuKCJ2bS1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYjdhIn0pLFFuLnZtUnVubmluZz1uZXcgUW4oInZtLXJ1bm5pbmciLHtmb250Q2hhcmFjdGVyOiJcXGViN2IifSksUW4ud2F0Y2g9bmV3IFFuKCJ3YXRjaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3YyJ9KSxRbi53aGl0ZXNwYWNlPW5ldyBRbigid2hpdGVzcGFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3ZCJ9KSxRbi53aG9sZVdvcmQ9bmV3IFFuKCJ3aG9sZS13b3JkIix7Zm9udENoYXJhY3RlcjoiXFxlYjdlIn0pLFFuLndpbmRvdz1uZXcgUW4oIndpbmRvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3ZiJ9KSxRbi53b3JkV3JhcD1uZXcgUW4oIndvcmQtd3JhcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MCJ9KSxRbi56b29tSW49bmV3IFFuKCJ6b29tLWluIix7Zm9udENoYXJhY3RlcjoiXFxlYjgxIn0pLFFuLnpvb21PdXQ9bmV3IFFuKCJ6b29tLW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MiJ9KSxRbi5saXN0RmlsdGVyPW5ldyBRbigibGlzdC1maWx0ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViODMifSksUW4ubGlzdEZsYXQ9bmV3IFFuKCJsaXN0LWZsYXQiLHtmb250Q2hhcmFjdGVyOiJcXGViODQifSksUW4ubGlzdFNlbGVjdGlvbj1uZXcgUW4oImxpc3Qtc2VsZWN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjg1In0pLFFuLnNlbGVjdGlvbj1uZXcgUW4oInNlbGVjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NSJ9KSxRbi5saXN0VHJlZT1uZXcgUW4oImxpc3QtdHJlZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NiJ9KSxRbi5kZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvblVudmVyaWZpZWQ9bmV3IFFuKCJkZWJ1Zy1icmVha3BvaW50LWZ1bmN0aW9uLXVudmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViODcifSksUW4uZGVidWdCcmVha3BvaW50RnVuY3Rpb249bmV3IFFuKCJkZWJ1Zy1icmVha3BvaW50LWZ1bmN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjg4In0pLFFuLmRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uRGlzYWJsZWQ9bmV3IFFuKCJkZWJ1Zy1icmVha3BvaW50LWZ1bmN0aW9uLWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjg4In0pLFFuLmRlYnVnU3RhY2tmcmFtZUFjdGl2ZT1uZXcgUW4oImRlYnVnLXN0YWNrZnJhbWUtYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYjg5In0pLFFuLmRlYnVnU3RhY2tmcmFtZURvdD1uZXcgUW4oImRlYnVnLXN0YWNrZnJhbWUtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYjhhIn0pLFFuLmRlYnVnU3RhY2tmcmFtZT1uZXcgUW4oImRlYnVnLXN0YWNrZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOGIifSksUW4uZGVidWdTdGFja2ZyYW1lRm9jdXNlZD1uZXcgUW4oImRlYnVnLXN0YWNrZnJhbWUtZm9jdXNlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4YiJ9KSxRbi5kZWJ1Z0JyZWFrcG9pbnRVbnN1cHBvcnRlZD1uZXcgUW4oImRlYnVnLWJyZWFrcG9pbnQtdW5zdXBwb3J0ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOGMifSksUW4uc3ltYm9sU3RyaW5nPW5ldyBRbigic3ltYm9sLXN0cmluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZCJ9KSxRbi5kZWJ1Z1JldmVyc2VDb250aW51ZT1uZXcgUW4oImRlYnVnLXJldmVyc2UtY29udGludWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOGUifSksUW4uZGVidWdTdGVwQmFjaz1uZXcgUW4oImRlYnVnLXN0ZXAtYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZiJ9KSxRbi5kZWJ1Z1Jlc3RhcnRGcmFtZT1uZXcgUW4oImRlYnVnLXJlc3RhcnQtZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOTAifSksUW4uY2FsbEluY29taW5nPW5ldyBRbigiY2FsbC1pbmNvbWluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5MiJ9KSxRbi5jYWxsT3V0Z29pbmc9bmV3IFFuKCJjYWxsLW91dGdvaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjkzIn0pLFFuLm1lbnU9bmV3IFFuKCJtZW51Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk0In0pLFFuLmV4cGFuZEFsbD1uZXcgUW4oImV4cGFuZC1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViOTUifSksUW4uZmVlZGJhY2s9bmV3IFFuKCJmZWVkYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NiJ9KSxRbi5ncm91cEJ5UmVmVHlwZT1uZXcgUW4oImdyb3VwLWJ5LXJlZi10eXBlIix7Zm9udENoYXJhY3RlcjoiXFxlYjk3In0pLFFuLnVuZ3JvdXBCeVJlZlR5cGU9bmV3IFFuKCJ1bmdyb3VwLWJ5LXJlZi10eXBlIix7Zm9udENoYXJhY3RlcjoiXFxlYjk4In0pLFFuLmFjY291bnQ9bmV3IFFuKCJhY2NvdW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk5In0pLFFuLmJlbGxEb3Q9bmV3IFFuKCJiZWxsLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5YSJ9KSxRbi5kZWJ1Z0NvbnNvbGU9bmV3IFFuKCJkZWJ1Zy1jb25zb2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYjliIn0pLFFuLmxpYnJhcnk9bmV3IFFuKCJsaWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjljIn0pLFFuLm91dHB1dD1uZXcgUW4oIm91dHB1dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5ZCJ9KSxRbi5ydW5BbGw9bmV3IFFuKCJydW4tYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjllIn0pLFFuLnN5bmNJZ25vcmVkPW5ldyBRbigic3luYy1pZ25vcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjlmIn0pLFFuLnBpbm5lZD1uZXcgUW4oInBpbm5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMCJ9KSxRbi5naXRodWJJbnZlcnRlZD1uZXcgUW4oImdpdGh1Yi1pbnZlcnRlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMSJ9KSxRbi5kZWJ1Z0FsdD1uZXcgUW4oImRlYnVnLWFsdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5MSJ9KSxRbi5zZXJ2ZXJQcm9jZXNzPW5ldyBRbigic2VydmVyLXByb2Nlc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTIifSksUW4uc2VydmVyRW52aXJvbm1lbnQ9bmV3IFFuKCJzZXJ2ZXItZW52aXJvbm1lbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTMifSksUW4ucGFzcz1uZXcgUW4oInBhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTQifSksUW4uc3RvcENpcmNsZT1uZXcgUW4oInN0b3AtY2lyY2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYmE1In0pLFFuLnBsYXlDaXJjbGU9bmV3IFFuKCJwbGF5LWNpcmNsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNiJ9KSxRbi5yZWNvcmQ9bmV3IFFuKCJyZWNvcmQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTcifSksUW4uZGVidWdBbHRTbWFsbD1uZXcgUW4oImRlYnVnLWFsdC1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhOCJ9KSxRbi52bUNvbm5lY3Q9bmV3IFFuKCJ2bS1jb25uZWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmE5In0pLFFuLmNsb3VkPW5ldyBRbigiY2xvdWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWEifSksUW4ubWVyZ2U9bmV3IFFuKCJtZXJnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhYiJ9KSxRbi5leHBvcnRJY29uPW5ldyBRbigiZXhwb3J0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmFjIn0pLFFuLmdyYXBoTGVmdD1uZXcgUW4oImdyYXBoLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWQifSksUW4ubWFnbmV0PW5ldyBRbigibWFnbmV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmFlIn0pLFFuLm5vdGVib29rPW5ldyBRbigibm90ZWJvb2siLHtmb250Q2hhcmFjdGVyOiJcXGViYWYifSksUW4ucmVkbz1uZXcgUW4oInJlZG8iLHtmb250Q2hhcmFjdGVyOiJcXGViYjAifSksUW4uY2hlY2tBbGw9bmV3IFFuKCJjaGVjay1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViYjEifSksUW4ucGlubmVkRGlydHk9bmV3IFFuKCJwaW5uZWQtZGlydHkiLHtmb250Q2hhcmFjdGVyOiJcXGViYjIifSksUW4ucGFzc0ZpbGxlZD1uZXcgUW4oInBhc3MtZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmIzIn0pLFFuLmNpcmNsZUxhcmdlRmlsbGVkPW5ldyBRbigiY2lyY2xlLWxhcmdlLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNCJ9KSxRbi5jaXJjbGVMYXJnZU91dGxpbmU9bmV3IFFuKCJjaXJjbGUtbGFyZ2Utb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNSJ9KSxRbi5jb21iaW5lPW5ldyBRbigiY29tYmluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNiJ9KSxRbi5nYXRoZXI9bmV3IFFuKCJnYXRoZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYjYifSksUW4udGFibGU9bmV3IFFuKCJ0YWJsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNyJ9KSxRbi52YXJpYWJsZUdyb3VwPW5ldyBRbigidmFyaWFibGUtZ3JvdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViYjgifSksUW4udHlwZUhpZXJhcmNoeT1uZXcgUW4oInR5cGUtaGllcmFyY2h5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmI5In0pLFFuLnR5cGVIaWVyYXJjaHlTdWI9bmV3IFFuKCJ0eXBlLWhpZXJhcmNoeS1zdWIiLHtmb250Q2hhcmFjdGVyOiJcXGViYmEifSksUW4udHlwZUhpZXJhcmNoeVN1cGVyPW5ldyBRbigidHlwZS1oaWVyYXJjaHktc3VwZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYmIifSksUW4uZ2l0UHVsbFJlcXVlc3RDcmVhdGU9bmV3IFFuKCJnaXQtcHVsbC1yZXF1ZXN0LWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiYyJ9KSxRbi5ydW5BYm92ZT1uZXcgUW4oInJ1bi1hYm92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiZCJ9KSxRbi5ydW5CZWxvdz1uZXcgUW4oInJ1bi1iZWxvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiZSJ9KSxRbi5ub3RlYm9va1RlbXBsYXRlPW5ldyBRbigibm90ZWJvb2stdGVtcGxhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYmYifSksUW4uZGVidWdSZXJ1bj1uZXcgUW4oImRlYnVnLXJlcnVuIix7Zm9udENoYXJhY3RlcjoiXFxlYmMwIn0pLFFuLndvcmtzcGFjZVRydXN0ZWQ9bmV3IFFuKCJ3b3Jrc3BhY2UtdHJ1c3RlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMSJ9KSxRbi53b3Jrc3BhY2VVbnRydXN0ZWQ9bmV3IFFuKCJ3b3Jrc3BhY2UtdW50cnVzdGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMyIn0pLFFuLndvcmtzcGFjZVVuc3BlY2lmaWVkPW5ldyBRbigid29ya3NwYWNlLXVuc3BlY2lmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMzIn0pLFFuLnRlcm1pbmFsQ21kPW5ldyBRbigidGVybWluYWwtY21kIix7Zm9udENoYXJhY3RlcjoiXFxlYmM0In0pLFFuLnRlcm1pbmFsRGViaWFuPW5ldyBRbigidGVybWluYWwtZGViaWFuIix7Zm9udENoYXJhY3RlcjoiXFxlYmM1In0pLFFuLnRlcm1pbmFsTGludXg9bmV3IFFuKCJ0ZXJtaW5hbC1saW51eCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjNiJ9KSxRbi50ZXJtaW5hbFBvd2Vyc2hlbGw9bmV3IFFuKCJ0ZXJtaW5hbC1wb3dlcnNoZWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmM3In0pLFFuLnRlcm1pbmFsVG11eD1uZXcgUW4oInRlcm1pbmFsLXRtdXgiLHtmb250Q2hhcmFjdGVyOiJcXGViYzgifSksUW4udGVybWluYWxVYnVudHU9bmV3IFFuKCJ0ZXJtaW5hbC11YnVudHUiLHtmb250Q2hhcmFjdGVyOiJcXGViYzkifSksUW4udGVybWluYWxCYXNoPW5ldyBRbigidGVybWluYWwtYmFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjYSJ9KSxRbi5hcnJvd1N3YXA9bmV3IFFuKCJhcnJvdy1zd2FwIix7Zm9udENoYXJhY3RlcjoiXFxlYmNiIn0pLFFuLmNvcHk9bmV3IFFuKCJjb3B5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmNjIn0pLFFuLnBlcnNvbkFkZD1uZXcgUW4oInBlcnNvbi1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGViY2QifSksUW4uZmlsdGVyRmlsbGVkPW5ldyBRbigiZmlsdGVyLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZSJ9KSxRbi53YW5kPW5ldyBRbigid2FuZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZiJ9KSxRbi5kZWJ1Z0xpbmVCeUxpbmU9bmV3IFFuKCJkZWJ1Zy1saW5lLWJ5LWxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDAifSksUW4uaW5zcGVjdD1uZXcgUW4oImluc3BlY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDEifSksUW4ubGF5ZXJzPW5ldyBRbigibGF5ZXJzIix7Zm9udENoYXJhY3RlcjoiXFxlYmQyIn0pLFFuLmxheWVyc0RvdD1uZXcgUW4oImxheWVycy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDMifSksUW4ubGF5ZXJzQWN0aXZlPW5ldyBRbigibGF5ZXJzLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNCJ9KSxRbi5jb21wYXNzPW5ldyBRbigiY29tcGFzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNSJ9KSxRbi5jb21wYXNzRG90PW5ldyBRbigiY29tcGFzcy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDYifSksUW4uY29tcGFzc0FjdGl2ZT1uZXcgUW4oImNvbXBhc3MtYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYmQ3In0pLFFuLmF6dXJlPW5ldyBRbigiYXp1cmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDgifSksUW4uaXNzdWVEcmFmdD1uZXcgUW4oImlzc3VlLWRyYWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmQ5In0pLFFuLmdpdFB1bGxSZXF1ZXN0Q2xvc2VkPW5ldyBRbigiZ2l0LXB1bGwtcmVxdWVzdC1jbG9zZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZGEifSksUW4uZ2l0UHVsbFJlcXVlc3REcmFmdD1uZXcgUW4oImdpdC1wdWxsLXJlcXVlc3QtZHJhZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZGIifSksUW4uZGVidWdBbGw9bmV3IFFuKCJkZWJ1Zy1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZGMifSksUW4uZGVidWdDb3ZlcmFnZT1uZXcgUW4oImRlYnVnLWNvdmVyYWdlIix7Zm9udENoYXJhY3RlcjoiXFxlYmRkIn0pLFFuLnJ1bkVycm9ycz1uZXcgUW4oInJ1bi1lcnJvcnMiLHtmb250Q2hhcmFjdGVyOiJcXGViZGUifSksUW4uZm9sZGVyTGlicmFyeT1uZXcgUW4oImZvbGRlci1saWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmRmIn0pLFFuLmRlYnVnQ29udGludWVTbWFsbD1uZXcgUW4oImRlYnVnLWNvbnRpbnVlLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmUwIn0pLFFuLmJlYWtlclN0b3A9bmV3IFFuKCJiZWFrZXItc3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlMSJ9KSxRbi5ncmFwaExpbmU9bmV3IFFuKCJncmFwaC1saW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmUyIn0pLFFuLmdyYXBoU2NhdHRlcj1uZXcgUW4oImdyYXBoLXNjYXR0ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZTMifSksUW4ucGllQ2hhcnQ9bmV3IFFuKCJwaWUtY2hhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZTQifSksUW4uYnJhY2tldD1uZXcgUW4oImJyYWNrZXQiLFFuLmpzb24uZGVmaW5pdGlvbiksUW4uYnJhY2tldERvdD1uZXcgUW4oImJyYWNrZXQtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYmU1In0pLFFuLmJyYWNrZXRFcnJvcj1uZXcgUW4oImJyYWNrZXQtZXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViZTYifSksUW4ubG9ja1NtYWxsPW5ldyBRbigibG9jay1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlNyJ9KSxRbi5henVyZURldm9wcz1uZXcgUW4oImF6dXJlLWRldm9wcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOCJ9KSxRbi52ZXJpZmllZEZpbGxlZD1uZXcgUW4oInZlcmlmaWVkLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOSJ9KSxRbi5uZXdMaW5lPW5ldyBRbigibmV3bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlYSJ9KSxRbi5sYXlvdXQ9bmV3IFFuKCJsYXlvdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWIifSksUW4ubGF5b3V0QWN0aXZpdHliYXJMZWZ0PW5ldyBRbigibGF5b3V0LWFjdGl2aXR5YmFyLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWMifSksUW4ubGF5b3V0QWN0aXZpdHliYXJSaWdodD1uZXcgUW4oImxheW91dC1hY3Rpdml0eWJhci1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlZCJ9KSxRbi5sYXlvdXRQYW5lbExlZnQ9bmV3IFFuKCJsYXlvdXQtcGFuZWwtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlZSJ9KSxRbi5sYXlvdXRQYW5lbENlbnRlcj1uZXcgUW4oImxheW91dC1wYW5lbC1jZW50ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZWYifSksUW4ubGF5b3V0UGFuZWxKdXN0aWZ5PW5ldyBRbigibGF5b3V0LXBhbmVsLWp1c3RpZnkiLHtmb250Q2hhcmFjdGVyOiJcXGViZjAifSksUW4ubGF5b3V0UGFuZWxSaWdodD1uZXcgUW4oImxheW91dC1wYW5lbC1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMSJ9KSxRbi5sYXlvdXRQYW5lbD1uZXcgUW4oImxheW91dC1wYW5lbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMiJ9KSxRbi5sYXlvdXRTaWRlYmFyTGVmdD1uZXcgUW4oImxheW91dC1zaWRlYmFyLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjMifSksUW4ubGF5b3V0U2lkZWJhclJpZ2h0PW5ldyBRbigibGF5b3V0LXNpZGViYXItcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjQifSksUW4ubGF5b3V0U3RhdHVzYmFyPW5ldyBRbigibGF5b3V0LXN0YXR1c2JhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNSJ9KSxRbi5sYXlvdXRNZW51YmFyPW5ldyBRbigibGF5b3V0LW1lbnViYXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZjYifSksUW4ubGF5b3V0Q2VudGVyZWQ9bmV3IFFuKCJsYXlvdXQtY2VudGVyZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjcifSksUW4udGFyZ2V0PW5ldyBRbigidGFyZ2V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmY4In0pLFFuLmluZGVudD1uZXcgUW4oImluZGVudCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmOSJ9KSxRbi5yZWNvcmRTbWFsbD1uZXcgUW4oInJlY29yZC1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmYSJ9KSxRbi5lcnJvclNtYWxsPW5ldyBRbigiZXJyb3Itc21hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZmIifSksUW4uYXJyb3dDaXJjbGVEb3duPW5ldyBRbigiYXJyb3ctY2lyY2xlLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGViZmMifSksUW4uYXJyb3dDaXJjbGVMZWZ0PW5ldyBRbigiYXJyb3ctY2lyY2xlLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZmQifSksUW4uYXJyb3dDaXJjbGVSaWdodD1uZXcgUW4oImFycm93LWNpcmNsZS1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmZSJ9KSxRbi5hcnJvd0NpcmNsZVVwPW5ldyBRbigiYXJyb3ctY2lyY2xlLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYmZmIn0pLFFuLmRpYWxvZ0Vycm9yPW5ldyBRbigiZGlhbG9nLWVycm9yIixRbi5lcnJvci5kZWZpbml0aW9uKSxRbi5kaWFsb2dXYXJuaW5nPW5ldyBRbigiZGlhbG9nLXdhcm5pbmciLFFuLndhcm5pbmcuZGVmaW5pdGlvbiksUW4uZGlhbG9nSW5mbz1uZXcgUW4oImRpYWxvZy1pbmZvIixRbi5pbmZvLmRlZmluaXRpb24pLFFuLmRpYWxvZ0Nsb3NlPW5ldyBRbigiZGlhbG9nLWNsb3NlIixRbi5jbG9zZS5kZWZpbml0aW9uKSxRbi50cmVlSXRlbUV4cGFuZGVkPW5ldyBRbigidHJlZS1pdGVtLWV4cGFuZGVkIixRbi5jaGV2cm9uRG93bi5kZWZpbml0aW9uKSxRbi50cmVlRmlsdGVyT25UeXBlT249bmV3IFFuKCJ0cmVlLWZpbHRlci1vbi10eXBlLW9uIixRbi5saXN0RmlsdGVyLmRlZmluaXRpb24pLFFuLnRyZWVGaWx0ZXJPblR5cGVPZmY9bmV3IFFuKCJ0cmVlLWZpbHRlci1vbi10eXBlLW9mZiIsUW4ubGlzdFNlbGVjdGlvbi5kZWZpbml0aW9uKSxRbi50cmVlRmlsdGVyQ2xlYXI9bmV3IFFuKCJ0cmVlLWZpbHRlci1jbGVhciIsUW4uY2xvc2UuZGVmaW5pdGlvbiksUW4udHJlZUl0ZW1Mb2FkaW5nPW5ldyBRbigidHJlZS1pdGVtLWxvYWRpbmciLFFuLmxvYWRpbmcuZGVmaW5pdGlvbiksUW4ubWVudVNlbGVjdGlvbj1uZXcgUW4oIm1lbnUtc2VsZWN0aW9uIixRbi5jaGVjay5kZWZpbml0aW9uKSxRbi5tZW51U3VibWVudT1uZXcgUW4oIm1lbnUtc3VibWVudSIsUW4uY2hldnJvblJpZ2h0LmRlZmluaXRpb24pLFFuLm1lbnVCYXJNb3JlPW5ldyBRbigibWVudWJhci1tb3JlIixRbi5tb3JlLmRlZmluaXRpb24pLFFuLnNjcm9sbGJhckJ1dHRvbkxlZnQ9bmV3IFFuKCJzY3JvbGxiYXItYnV0dG9uLWxlZnQiLFFuLnRyaWFuZ2xlTGVmdC5kZWZpbml0aW9uKSxRbi5zY3JvbGxiYXJCdXR0b25SaWdodD1uZXcgUW4oInNjcm9sbGJhci1idXR0b24tcmlnaHQiLFFuLnRyaWFuZ2xlUmlnaHQuZGVmaW5pdGlvbiksUW4uc2Nyb2xsYmFyQnV0dG9uVXA9bmV3IFFuKCJzY3JvbGxiYXItYnV0dG9uLXVwIixRbi50cmlhbmdsZVVwLmRlZmluaXRpb24pLFFuLnNjcm9sbGJhckJ1dHRvbkRvd249bmV3IFFuKCJzY3JvbGxiYXItYnV0dG9uLWRvd24iLFFuLnRyaWFuZ2xlRG93bi5kZWZpbml0aW9uKSxRbi50b29sQmFyTW9yZT1uZXcgUW4oInRvb2xiYXItbW9yZSIsUW4ubW9yZS5kZWZpbml0aW9uKSxRbi5xdWlja0lucHV0QmFjaz1uZXcgUW4oInF1aWNrLWlucHV0LWJhY2siLFFuLmFycm93TGVmdC5kZWZpbml0aW9uKSxmdW5jdGlvbihlKXtlLmljb25OYW1lU2VnbWVudD0iW0EtWmEtejAtOV0rIixlLmljb25OYW1lRXhwcmVzc2lvbj0iW0EtWmEtejAtOS1dKyIsZS5pY29uTW9kaWZpZXJFeHByZXNzaW9uPSJ+W0EtWmEtel0rIixlLmljb25OYW1lQ2hhcmFjdGVyPSJbQS1aYS16MC05fi1dIjtjb25zdCB0PW5ldyBSZWdFeHAoYF4oJHtlLmljb25OYW1lRXhwcmVzc2lvbn0pKCR7ZS5pY29uTW9kaWZpZXJFeHByZXNzaW9ufSk/JGApO2Z1bmN0aW9uIG4oZSl7aWYoZSBpbnN0YW5jZW9mIFFuKXJldHVyblsiY29kaWNvbiIsImNvZGljb24tIitlLmlkXTtjb25zdCByPXQuZXhlYyhlLmlkKTtpZighcilyZXR1cm4gbihRbi5lcnJvcik7bGV0WyxpLGFdPXI7Y29uc3Qgbz1bImNvZGljb24iLCJjb2RpY29uLSIraV07cmV0dXJuIGEmJm8ucHVzaCgiY29kaWNvbi1tb2RpZmllci0iK2Euc3Vic3RyKDEpKSxvfWUuYXNDbGFzc05hbWVBcnJheT1uLGUuYXNDbGFzc05hbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSkuam9pbigiICIpfSxlLmFzQ1NTU2VsZWN0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIi4iK24oZSkuam9pbigiLiIpfX0oenR8fCh6dD17fSkpO2NsYXNzIFpue2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLl90b2tlbkJyYW5kPXZvaWQgMCx0aGlzLm9mZnNldD1lLHRoaXMudHlwZT10LHRoaXMubGFuZ3VhZ2U9bn10b1N0cmluZygpe3JldHVybiIoIit0aGlzLm9mZnNldCsiLCAiK3RoaXMudHlwZSsiKSJ9fWNsYXNzIGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fdG9rZW5pemF0aW9uUmVzdWx0QnJhbmQ9dm9pZCAwLHRoaXMudG9rZW5zPWUsdGhpcy5lbmRTdGF0ZT10fX1jbGFzcyB0cntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2VuY29kZWRUb2tlbml6YXRpb25SZXN1bHRCcmFuZD12b2lkIDAsdGhpcy50b2tlbnM9ZSx0aGlzLmVuZFN0YXRlPXR9fSFmdW5jdGlvbihlKXtjb25zdCB0PW5ldyBNYXA7dC5zZXQoMCxRbi5zeW1ib2xNZXRob2QpLHQuc2V0KDEsUW4uc3ltYm9sRnVuY3Rpb24pLHQuc2V0KDIsUW4uc3ltYm9sQ29uc3RydWN0b3IpLHQuc2V0KDMsUW4uc3ltYm9sRmllbGQpLHQuc2V0KDQsUW4uc3ltYm9sVmFyaWFibGUpLHQuc2V0KDUsUW4uc3ltYm9sQ2xhc3MpLHQuc2V0KDYsUW4uc3ltYm9sU3RydWN0KSx0LnNldCg3LFFuLnN5bWJvbEludGVyZmFjZSksdC5zZXQoOCxRbi5zeW1ib2xNb2R1bGUpLHQuc2V0KDksUW4uc3ltYm9sUHJvcGVydHkpLHQuc2V0KDEwLFFuLnN5bWJvbEV2ZW50KSx0LnNldCgxMSxRbi5zeW1ib2xPcGVyYXRvciksdC5zZXQoMTIsUW4uc3ltYm9sVW5pdCksdC5zZXQoMTMsUW4uc3ltYm9sVmFsdWUpLHQuc2V0KDE1LFFuLnN5bWJvbEVudW0pLHQuc2V0KDE0LFFuLnN5bWJvbENvbnN0YW50KSx0LnNldCgxNSxRbi5zeW1ib2xFbnVtKSx0LnNldCgxNixRbi5zeW1ib2xFbnVtTWVtYmVyKSx0LnNldCgxNyxRbi5zeW1ib2xLZXl3b3JkKSx0LnNldCgyNyxRbi5zeW1ib2xTbmlwcGV0KSx0LnNldCgxOCxRbi5zeW1ib2xUZXh0KSx0LnNldCgxOSxRbi5zeW1ib2xDb2xvciksdC5zZXQoMjAsUW4uc3ltYm9sRmlsZSksdC5zZXQoMjEsUW4uc3ltYm9sUmVmZXJlbmNlKSx0LnNldCgyMixRbi5zeW1ib2xDdXN0b21Db2xvciksdC5zZXQoMjMsUW4uc3ltYm9sRm9sZGVyKSx0LnNldCgyNCxRbi5zeW1ib2xUeXBlUGFyYW1ldGVyKSx0LnNldCgyNSxRbi5hY2NvdW50KSx0LnNldCgyNixRbi5pc3N1ZXMpLGUudG9JY29uPWZ1bmN0aW9uKGUpe2xldCBuPXQuZ2V0KGUpO3JldHVybiBufHwoY29uc29sZS5pbmZvKCJObyBjb2RpY29uIGZvdW5kIGZvciBDb21wbGV0aW9uSXRlbUtpbmQgIitlKSxuPVFuLnN5bWJvbFByb3BlcnR5KSxufTtjb25zdCBuPW5ldyBNYXA7bi5zZXQoIm1ldGhvZCIsMCksbi5zZXQoImZ1bmN0aW9uIiwxKSxuLnNldCgiY29uc3RydWN0b3IiLDIpLG4uc2V0KCJmaWVsZCIsMyksbi5zZXQoInZhcmlhYmxlIiw0KSxuLnNldCgiY2xhc3MiLDUpLG4uc2V0KCJzdHJ1Y3QiLDYpLG4uc2V0KCJpbnRlcmZhY2UiLDcpLG4uc2V0KCJtb2R1bGUiLDgpLG4uc2V0KCJwcm9wZXJ0eSIsOSksbi5zZXQoImV2ZW50IiwxMCksbi5zZXQoIm9wZXJhdG9yIiwxMSksbi5zZXQoInVuaXQiLDEyKSxuLnNldCgidmFsdWUiLDEzKSxuLnNldCgiY29uc3RhbnQiLDE0KSxuLnNldCgiZW51bSIsMTUpLG4uc2V0KCJlbnVtLW1lbWJlciIsMTYpLG4uc2V0KCJlbnVtTWVtYmVyIiwxNiksbi5zZXQoImtleXdvcmQiLDE3KSxuLnNldCgic25pcHBldCIsMjcpLG4uc2V0KCJ0ZXh0IiwxOCksbi5zZXQoImNvbG9yIiwxOSksbi5zZXQoImZpbGUiLDIwKSxuLnNldCgicmVmZXJlbmNlIiwyMSksbi5zZXQoImN1c3RvbWNvbG9yIiwyMiksbi5zZXQoImZvbGRlciIsMjMpLG4uc2V0KCJ0eXBlLXBhcmFtZXRlciIsMjQpLG4uc2V0KCJ0eXBlUGFyYW1ldGVyIiwyNCksbi5zZXQoImFjY291bnQiLDI1KSxuLnNldCgiaXNzdWUiLDI2KSxlLmZyb21TdHJpbmc9ZnVuY3Rpb24oZSx0KXtsZXQgcj1uLmdldChlKTtyZXR1cm4gdm9pZCAwIT09cnx8dHx8KHI9OSkscn19KFd0fHwoV3Q9e30pKSxmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5FeHBsaWNpdD0xXT0iRXhwbGljaXQifShPdHx8KE90PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0yXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLkNvbnRlbnRDaGFuZ2U9M109IkNvbnRlbnRDaGFuZ2UifShQdHx8KFB0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRleHQ9MF09IlRleHQiLGVbZS5SZWFkPTFdPSJSZWFkIixlW2UuV3JpdGU9Ml09IldyaXRlIn0ocXR8fChxdD17fSkpLGZ1bmN0aW9uKGUpe2NvbnN0IHQ9bmV3IE1hcDt0LnNldCgwLFFuLnN5bWJvbEZpbGUpLHQuc2V0KDEsUW4uc3ltYm9sTW9kdWxlKSx0LnNldCgyLFFuLnN5bWJvbE5hbWVzcGFjZSksdC5zZXQoMyxRbi5zeW1ib2xQYWNrYWdlKSx0LnNldCg0LFFuLnN5bWJvbENsYXNzKSx0LnNldCg1LFFuLnN5bWJvbE1ldGhvZCksdC5zZXQoNixRbi5zeW1ib2xQcm9wZXJ0eSksdC5zZXQoNyxRbi5zeW1ib2xGaWVsZCksdC5zZXQoOCxRbi5zeW1ib2xDb25zdHJ1Y3RvciksdC5zZXQoOSxRbi5zeW1ib2xFbnVtKSx0LnNldCgxMCxRbi5zeW1ib2xJbnRlcmZhY2UpLHQuc2V0KDExLFFuLnN5bWJvbEZ1bmN0aW9uKSx0LnNldCgxMixRbi5zeW1ib2xWYXJpYWJsZSksdC5zZXQoMTMsUW4uc3ltYm9sQ29uc3RhbnQpLHQuc2V0KDE0LFFuLnN5bWJvbFN0cmluZyksdC5zZXQoMTUsUW4uc3ltYm9sTnVtYmVyKSx0LnNldCgxNixRbi5zeW1ib2xCb29sZWFuKSx0LnNldCgxNyxRbi5zeW1ib2xBcnJheSksdC5zZXQoMTgsUW4uc3ltYm9sT2JqZWN0KSx0LnNldCgxOSxRbi5zeW1ib2xLZXkpLHQuc2V0KDIwLFFuLnN5bWJvbE51bGwpLHQuc2V0KDIxLFFuLnN5bWJvbEVudW1NZW1iZXIpLHQuc2V0KDIyLFFuLnN5bWJvbFN0cnVjdCksdC5zZXQoMjMsUW4uc3ltYm9sRXZlbnQpLHQuc2V0KDI0LFFuLnN5bWJvbE9wZXJhdG9yKSx0LnNldCgyNSxRbi5zeW1ib2xUeXBlUGFyYW1ldGVyKSxlLnRvSWNvbj1mdW5jdGlvbihlKXtsZXQgbj10LmdldChlKTtyZXR1cm4gbnx8KGNvbnNvbGUuaW5mbygiTm8gY29kaWNvbiBmb3VuZCBmb3IgU3ltYm9sS2luZCAiK2UpLG49UW4uc3ltYm9sUHJvcGVydHkpLG59fShGdHx8KEZ0PXt9KSksZnVuY3Rpb24oZSl7ZS5pcz1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwib2JqZWN0IiE9dHlwZW9mIGUpJiYoInN0cmluZyI9PXR5cGVvZiBlLmlkJiYic3RyaW5nIj09dHlwZW9mIGUudGl0bGUpfX0oQnR8fChCdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UeXBlPTFdPSJUeXBlIixlW2UuUGFyYW1ldGVyPTJdPSJQYXJhbWV0ZXIifShWdHx8KFZ0PXt9KSksbmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXAsdGhpcy5fZmFjdG9yaWVzPW5ldyBNYXAsdGhpcy5fb25EaWRDaGFuZ2U9bmV3IFAsdGhpcy5vbkRpZENoYW5nZT10aGlzLl9vbkRpZENoYW5nZS5ldmVudCx0aGlzLl9jb2xvck1hcD1udWxsfWZpcmUoZSl7dGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh7Y2hhbmdlZExhbmd1YWdlczplLGNoYW5nZWRDb2xvck1hcDohMX0pfXJlZ2lzdGVyKGUsdCl7cmV0dXJuIHRoaXMuX21hcC5zZXQoZSx0KSx0aGlzLmZpcmUoW2VdKSxkKCgoKT0+e3RoaXMuX21hcC5nZXQoZSk9PT10JiYodGhpcy5fbWFwLmRlbGV0ZShlKSx0aGlzLmZpcmUoW2VdKSl9KSl9cmVnaXN0ZXJGYWN0b3J5KGUsdCl7dmFyIG47bnVsbD09PShuPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSkpfHx2b2lkIDA9PT1ufHxuLmRpc3Bvc2UoKTtjb25zdCByPW5ldyBZbih0aGlzLGUsdCk7cmV0dXJuIHRoaXMuX2ZhY3Rvcmllcy5zZXQoZSxyKSxkKCgoKT0+e2NvbnN0IHQ9dGhpcy5fZmFjdG9yaWVzLmdldChlKTt0JiZ0PT09ciYmKHRoaXMuX2ZhY3Rvcmllcy5kZWxldGUoZSksdC5kaXNwb3NlKCkpfSkpfWdldE9yQ3JlYXRlKGUpe3JldHVybiBYbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHQ9dGhpcy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBuPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSk7cmV0dXJuIW58fG4uaXNSZXNvbHZlZD9udWxsOih5aWVsZCBuLnJlc29sdmUoKSx0aGlzLmdldChlKSl9KSl9Z2V0KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUpfHxudWxsfWlzUmVzb2x2ZWQoZSl7aWYodGhpcy5nZXQoZSkpcmV0dXJuITA7Y29uc3QgdD10aGlzLl9mYWN0b3JpZXMuZ2V0KGUpO3JldHVybiEodCYmIXQuaXNSZXNvbHZlZCl9c2V0Q29sb3JNYXAoZSl7dGhpcy5fY29sb3JNYXA9ZSx0aGlzLl9vbkRpZENoYW5nZS5maXJlKHtjaGFuZ2VkTGFuZ3VhZ2VzOkFycmF5LmZyb20odGhpcy5fbWFwLmtleXMoKSksY2hhbmdlZENvbG9yTWFwOiEwfSl9Z2V0Q29sb3JNYXAoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXB9Z2V0RGVmYXVsdEJhY2tncm91bmQoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXAmJnRoaXMuX2NvbG9yTWFwLmxlbmd0aD4yP3RoaXMuX2NvbG9yTWFwWzJdOm51bGx9fSxmdW5jdGlvbihlKXtlW2UuVW5rbm93bj0wXT0iVW5rbm93biIsZVtlLkRpc2FibGVkPTFdPSJEaXNhYmxlZCIsZVtlLkVuYWJsZWQ9Ml09IkVuYWJsZWQifShLdHx8KEt0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5EZWZhdWx0Rm9yZWdyb3VuZD0xXT0iRGVmYXVsdEZvcmVncm91bmQiLGVbZS5EZWZhdWx0QmFja2dyb3VuZD0yXT0iRGVmYXVsdEJhY2tncm91bmQifShqdHx8KGp0PXt9KSksZnVuY3Rpb24oZSl7ZS5EQVJLPSJkYXJrIixlLkxJR0hUPSJsaWdodCIsZS5ISUdIX0NPTlRSQVNUPSJoYyJ9KEd0fHwoR3Q9e30pKSxmdW5jdGlvbihlKXtlW2UuS2VlcFdoaXRlc3BhY2U9MV09IktlZXBXaGl0ZXNwYWNlIixlW2UuSW5zZXJ0QXNTbmlwcGV0PTRdPSJJbnNlcnRBc1NuaXBwZXQifSgkdHx8KCR0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLk1ldGhvZD0wXT0iTWV0aG9kIixlW2UuRnVuY3Rpb249MV09IkZ1bmN0aW9uIixlW2UuQ29uc3RydWN0b3I9Ml09IkNvbnN0cnVjdG9yIixlW2UuRmllbGQ9M109IkZpZWxkIixlW2UuVmFyaWFibGU9NF09IlZhcmlhYmxlIixlW2UuQ2xhc3M9NV09IkNsYXNzIixlW2UuU3RydWN0PTZdPSJTdHJ1Y3QiLGVbZS5JbnRlcmZhY2U9N109IkludGVyZmFjZSIsZVtlLk1vZHVsZT04XT0iTW9kdWxlIixlW2UuUHJvcGVydHk9OV09IlByb3BlcnR5IixlW2UuRXZlbnQ9MTBdPSJFdmVudCIsZVtlLk9wZXJhdG9yPTExXT0iT3BlcmF0b3IiLGVbZS5Vbml0PTEyXT0iVW5pdCIsZVtlLlZhbHVlPTEzXT0iVmFsdWUiLGVbZS5Db25zdGFudD0xNF09IkNvbnN0YW50IixlW2UuRW51bT0xNV09IkVudW0iLGVbZS5FbnVtTWVtYmVyPTE2XT0iRW51bU1lbWJlciIsZVtlLktleXdvcmQ9MTddPSJLZXl3b3JkIixlW2UuVGV4dD0xOF09IlRleHQiLGVbZS5Db2xvcj0xOV09IkNvbG9yIixlW2UuRmlsZT0yMF09IkZpbGUiLGVbZS5SZWZlcmVuY2U9MjFdPSJSZWZlcmVuY2UiLGVbZS5DdXN0b21jb2xvcj0yMl09IkN1c3RvbWNvbG9yIixlW2UuRm9sZGVyPTIzXT0iRm9sZGVyIixlW2UuVHlwZVBhcmFtZXRlcj0yNF09IlR5cGVQYXJhbWV0ZXIiLGVbZS5Vc2VyPTI1XT0iVXNlciIsZVtlLklzc3VlPTI2XT0iSXNzdWUiLGVbZS5TbmlwcGV0PTI3XT0iU25pcHBldCJ9KEp0fHwoSnQ9e30pKSxmdW5jdGlvbihlKXtlW2UuRGVwcmVjYXRlZD0xXT0iRGVwcmVjYXRlZCJ9KFh0fHwoWHQ9e30pKSxmdW5jdGlvbihlKXtlW2UuSW52b2tlPTBdPSJJbnZva2UiLGVbZS5UcmlnZ2VyQ2hhcmFjdGVyPTFdPSJUcmlnZ2VyQ2hhcmFjdGVyIixlW2UuVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucz0yXT0iVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucyJ9KFl0fHwoWXQ9e30pKSxmdW5jdGlvbihlKXtlW2UuQVBQTElDQVRJT049MV09IkFQUExJQ0FUSU9OIixlW2UuTUFDSElORT0yXT0iTUFDSElORSIsZVtlLldJTkRPVz0zXT0iV0lORE9XIixlW2UuUkVTT1VSQ0U9NF09IlJFU09VUkNFIixlW2UuTEFOR1VBR0VfT1ZFUlJJREFCTEU9NV09IkxBTkdVQUdFX09WRVJSSURBQkxFIixlW2UuTUFDSElORV9PVkVSUklEQUJMRT02XT0iTUFDSElORV9PVkVSUklEQUJMRSJ9KFF0fHwoUXQ9e30pKSxmdW5jdGlvbihlKXtlW2UuVVNFUj0xXT0iVVNFUiIsZVtlLlVTRVJfTE9DQUw9Ml09IlVTRVJfTE9DQUwiLGVbZS5VU0VSX1JFTU9URT0zXT0iVVNFUl9SRU1PVEUiLGVbZS5XT1JLU1BBQ0U9NF09IldPUktTUEFDRSIsZVtlLldPUktTUEFDRV9GT0xERVI9NV09IldPUktTUEFDRV9GT0xERVIiLGVbZS5ERUZBVUxUPTZdPSJERUZBVUxUIixlW2UuTUVNT1JZPTddPSJNRU1PUlkifShadHx8KFp0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkVYQUNUPTBdPSJFWEFDVCIsZVtlLkFCT1ZFPTFdPSJBQk9WRSIsZVtlLkJFTE9XPTJdPSJCRUxPVyJ9KGVufHwoZW49e30pKSxmdW5jdGlvbihlKXtlW2UuRmFsc2U9MF09IkZhbHNlIixlW2UuVHJ1ZT0xXT0iVHJ1ZSIsZVtlLkRlZmluZWQ9Ml09IkRlZmluZWQiLGVbZS5Ob3Q9M109Ik5vdCIsZVtlLkVxdWFscz00XT0iRXF1YWxzIixlW2UuTm90RXF1YWxzPTVdPSJOb3RFcXVhbHMiLGVbZS5BbmQ9Nl09IkFuZCIsZVtlLlJlZ2V4PTddPSJSZWdleCIsZVtlLk5vdFJlZ2V4PThdPSJOb3RSZWdleCIsZVtlLk9yPTldPSJPciIsZVtlLkluPTEwXT0iSW4iLGVbZS5Ob3RJbj0xMV09Ik5vdEluIixlW2UuR3JlYXRlcj0xMl09IkdyZWF0ZXIiLGVbZS5HcmVhdGVyRXF1YWxzPTEzXT0iR3JlYXRlckVxdWFscyIsZVtlLlNtYWxsZXI9MTRdPSJTbWFsbGVyIixlW2UuU21hbGxlckVxdWFscz0xNV09IlNtYWxsZXJFcXVhbHMifSh0bnx8KHRuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vdFNldD0wXT0iTm90U2V0IixlW2UuQ29udGVudEZsdXNoPTFdPSJDb250ZW50Rmx1c2giLGVbZS5SZWNvdmVyRnJvbU1hcmtlcnM9Ml09IlJlY292ZXJGcm9tTWFya2VycyIsZVtlLkV4cGxpY2l0PTNdPSJFeHBsaWNpdCIsZVtlLlBhc3RlPTRdPSJQYXN0ZSIsZVtlLlVuZG89NV09IlVuZG8iLGVbZS5SZWRvPTZdPSJSZWRvIn0obm58fChubj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5MRj0xXT0iTEYiLGVbZS5DUkxGPTJdPSJDUkxGIn0ocm58fChybj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UZXh0PTBdPSJUZXh0IixlW2UuUmVhZD0xXT0iUmVhZCIsZVtlLldyaXRlPTJdPSJXcml0ZSJ9KGFufHwoYW49e30pKSxmdW5jdGlvbihlKXtlLk11bHRpbGluZT0ibXVsdGlsaW5lVGV4dCIsZS5TaW5nbGVsaW5lPSJzaW5nbGVsaW5lVGV4dCJ9KG9ufHwob249e30pKSxmdW5jdGlvbihlKXtlW2UuTm9uZT0wXT0iTm9uZSIsZVtlLktlZXA9MV09IktlZXAiLGVbZS5CcmFja2V0cz0yXT0iQnJhY2tldHMiLGVbZS5BZHZhbmNlZD0zXT0iQWR2YW5jZWQiLGVbZS5GdWxsPTRdPSJGdWxsIn0oc258fChzbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5hY2NlcHRTdWdnZXN0aW9uT25Db21taXRDaGFyYWN0ZXI9MF09ImFjY2VwdFN1Z2dlc3Rpb25PbkNvbW1pdENoYXJhY3RlciIsZVtlLmFjY2VwdFN1Z2dlc3Rpb25PbkVudGVyPTFdPSJhY2NlcHRTdWdnZXN0aW9uT25FbnRlciIsZVtlLmFjY2Vzc2liaWxpdHlTdXBwb3J0PTJdPSJhY2Nlc3NpYmlsaXR5U3VwcG9ydCIsZVtlLmFjY2Vzc2liaWxpdHlQYWdlU2l6ZT0zXT0iYWNjZXNzaWJpbGl0eVBhZ2VTaXplIixlW2UuYXJpYUxhYmVsPTRdPSJhcmlhTGFiZWwiLGVbZS5hdXRvQ2xvc2luZ0JyYWNrZXRzPTVdPSJhdXRvQ2xvc2luZ0JyYWNrZXRzIixlW2UuYXV0b0Nsb3NpbmdEZWxldGU9Nl09ImF1dG9DbG9zaW5nRGVsZXRlIixlW2UuYXV0b0Nsb3NpbmdPdmVydHlwZT03XT0iYXV0b0Nsb3NpbmdPdmVydHlwZSIsZVtlLmF1dG9DbG9zaW5nUXVvdGVzPThdPSJhdXRvQ2xvc2luZ1F1b3RlcyIsZVtlLmF1dG9JbmRlbnQ9OV09ImF1dG9JbmRlbnQiLGVbZS5hdXRvbWF0aWNMYXlvdXQ9MTBdPSJhdXRvbWF0aWNMYXlvdXQiLGVbZS5hdXRvU3Vycm91bmQ9MTFdPSJhdXRvU3Vycm91bmQiLGVbZS5icmFja2V0UGFpckNvbG9yaXphdGlvbj0xMl09ImJyYWNrZXRQYWlyQ29sb3JpemF0aW9uIixlW2UuZ3VpZGVzPTEzXT0iZ3VpZGVzIixlW2UuY29kZUxlbnM9MTRdPSJjb2RlTGVucyIsZVtlLmNvZGVMZW5zRm9udEZhbWlseT0xNV09ImNvZGVMZW5zRm9udEZhbWlseSIsZVtlLmNvZGVMZW5zRm9udFNpemU9MTZdPSJjb2RlTGVuc0ZvbnRTaXplIixlW2UuY29sb3JEZWNvcmF0b3JzPTE3XT0iY29sb3JEZWNvcmF0b3JzIixlW2UuY29sdW1uU2VsZWN0aW9uPTE4XT0iY29sdW1uU2VsZWN0aW9uIixlW2UuY29tbWVudHM9MTldPSJjb21tZW50cyIsZVtlLmNvbnRleHRtZW51PTIwXT0iY29udGV4dG1lbnUiLGVbZS5jb3B5V2l0aFN5bnRheEhpZ2hsaWdodGluZz0yMV09ImNvcHlXaXRoU3ludGF4SGlnaGxpZ2h0aW5nIixlW2UuY3Vyc29yQmxpbmtpbmc9MjJdPSJjdXJzb3JCbGlua2luZyIsZVtlLmN1cnNvclNtb290aENhcmV0QW5pbWF0aW9uPTIzXT0iY3Vyc29yU21vb3RoQ2FyZXRBbmltYXRpb24iLGVbZS5jdXJzb3JTdHlsZT0yNF09ImN1cnNvclN0eWxlIixlW2UuY3Vyc29yU3Vycm91bmRpbmdMaW5lcz0yNV09ImN1cnNvclN1cnJvdW5kaW5nTGluZXMiLGVbZS5jdXJzb3JTdXJyb3VuZGluZ0xpbmVzU3R5bGU9MjZdPSJjdXJzb3JTdXJyb3VuZGluZ0xpbmVzU3R5bGUiLGVbZS5jdXJzb3JXaWR0aD0yN109ImN1cnNvcldpZHRoIixlW2UuZGlzYWJsZUxheWVySGludGluZz0yOF09ImRpc2FibGVMYXllckhpbnRpbmciLGVbZS5kaXNhYmxlTW9ub3NwYWNlT3B0aW1pemF0aW9ucz0yOV09ImRpc2FibGVNb25vc3BhY2VPcHRpbWl6YXRpb25zIixlW2UuZG9tUmVhZE9ubHk9MzBdPSJkb21SZWFkT25seSIsZVtlLmRyYWdBbmREcm9wPTMxXT0iZHJhZ0FuZERyb3AiLGVbZS5lbXB0eVNlbGVjdGlvbkNsaXBib2FyZD0zMl09ImVtcHR5U2VsZWN0aW9uQ2xpcGJvYXJkIixlW2UuZXh0cmFFZGl0b3JDbGFzc05hbWU9MzNdPSJleHRyYUVkaXRvckNsYXNzTmFtZSIsZVtlLmZhc3RTY3JvbGxTZW5zaXRpdml0eT0zNF09ImZhc3RTY3JvbGxTZW5zaXRpdml0eSIsZVtlLmZpbmQ9MzVdPSJmaW5kIixlW2UuZml4ZWRPdmVyZmxvd1dpZGdldHM9MzZdPSJmaXhlZE92ZXJmbG93V2lkZ2V0cyIsZVtlLmZvbGRpbmc9MzddPSJmb2xkaW5nIixlW2UuZm9sZGluZ1N0cmF0ZWd5PTM4XT0iZm9sZGluZ1N0cmF0ZWd5IixlW2UuZm9sZGluZ0hpZ2hsaWdodD0zOV09ImZvbGRpbmdIaWdobGlnaHQiLGVbZS5mb2xkaW5nSW1wb3J0c0J5RGVmYXVsdD00MF09ImZvbGRpbmdJbXBvcnRzQnlEZWZhdWx0IixlW2UuZm9sZGluZ01heGltdW1SZWdpb25zPTQxXT0iZm9sZGluZ01heGltdW1SZWdpb25zIixlW2UudW5mb2xkT25DbGlja0FmdGVyRW5kT2ZMaW5lPTQyXT0idW5mb2xkT25DbGlja0FmdGVyRW5kT2ZMaW5lIixlW2UuZm9udEZhbWlseT00M109ImZvbnRGYW1pbHkiLGVbZS5mb250SW5mbz00NF09ImZvbnRJbmZvIixlW2UuZm9udExpZ2F0dXJlcz00NV09ImZvbnRMaWdhdHVyZXMiLGVbZS5mb250U2l6ZT00Nl09ImZvbnRTaXplIixlW2UuZm9udFdlaWdodD00N109ImZvbnRXZWlnaHQiLGVbZS5mb3JtYXRPblBhc3RlPTQ4XT0iZm9ybWF0T25QYXN0ZSIsZVtlLmZvcm1hdE9uVHlwZT00OV09ImZvcm1hdE9uVHlwZSIsZVtlLmdseXBoTWFyZ2luPTUwXT0iZ2x5cGhNYXJnaW4iLGVbZS5nb3RvTG9jYXRpb249NTFdPSJnb3RvTG9jYXRpb24iLGVbZS5oaWRlQ3Vyc29ySW5PdmVydmlld1J1bGVyPTUyXT0iaGlkZUN1cnNvckluT3ZlcnZpZXdSdWxlciIsZVtlLmhvdmVyPTUzXT0iaG92ZXIiLGVbZS5pbkRpZmZFZGl0b3I9NTRdPSJpbkRpZmZFZGl0b3IiLGVbZS5pbmxpbmVTdWdnZXN0PTU1XT0iaW5saW5lU3VnZ2VzdCIsZVtlLmxldHRlclNwYWNpbmc9NTZdPSJsZXR0ZXJTcGFjaW5nIixlW2UubGlnaHRidWxiPTU3XT0ibGlnaHRidWxiIixlW2UubGluZURlY29yYXRpb25zV2lkdGg9NThdPSJsaW5lRGVjb3JhdGlvbnNXaWR0aCIsZVtlLmxpbmVIZWlnaHQ9NTldPSJsaW5lSGVpZ2h0IixlW2UubGluZU51bWJlcnM9NjBdPSJsaW5lTnVtYmVycyIsZVtlLmxpbmVOdW1iZXJzTWluQ2hhcnM9NjFdPSJsaW5lTnVtYmVyc01pbkNoYXJzIixlW2UubGlua2VkRWRpdGluZz02Ml09ImxpbmtlZEVkaXRpbmciLGVbZS5saW5rcz02M109ImxpbmtzIixlW2UubWF0Y2hCcmFja2V0cz02NF09Im1hdGNoQnJhY2tldHMiLGVbZS5taW5pbWFwPTY1XT0ibWluaW1hcCIsZVtlLm1vdXNlU3R5bGU9NjZdPSJtb3VzZVN0eWxlIixlW2UubW91c2VXaGVlbFNjcm9sbFNlbnNpdGl2aXR5PTY3XT0ibW91c2VXaGVlbFNjcm9sbFNlbnNpdGl2aXR5IixlW2UubW91c2VXaGVlbFpvb209NjhdPSJtb3VzZVdoZWVsWm9vbSIsZVtlLm11bHRpQ3Vyc29yTWVyZ2VPdmVybGFwcGluZz02OV09Im11bHRpQ3Vyc29yTWVyZ2VPdmVybGFwcGluZyIsZVtlLm11bHRpQ3Vyc29yTW9kaWZpZXI9NzBdPSJtdWx0aUN1cnNvck1vZGlmaWVyIixlW2UubXVsdGlDdXJzb3JQYXN0ZT03MV09Im11bHRpQ3Vyc29yUGFzdGUiLGVbZS5vY2N1cnJlbmNlc0hpZ2hsaWdodD03Ml09Im9jY3VycmVuY2VzSGlnaGxpZ2h0IixlW2Uub3ZlcnZpZXdSdWxlckJvcmRlcj03M109Im92ZXJ2aWV3UnVsZXJCb3JkZXIiLGVbZS5vdmVydmlld1J1bGVyTGFuZXM9NzRdPSJvdmVydmlld1J1bGVyTGFuZXMiLGVbZS5wYWRkaW5nPTc1XT0icGFkZGluZyIsZVtlLnBhcmFtZXRlckhpbnRzPTc2XT0icGFyYW1ldGVySGludHMiLGVbZS5wZWVrV2lkZ2V0RGVmYXVsdEZvY3VzPTc3XT0icGVla1dpZGdldERlZmF1bHRGb2N1cyIsZVtlLmRlZmluaXRpb25MaW5rT3BlbnNJblBlZWs9NzhdPSJkZWZpbml0aW9uTGlua09wZW5zSW5QZWVrIixlW2UucXVpY2tTdWdnZXN0aW9ucz03OV09InF1aWNrU3VnZ2VzdGlvbnMiLGVbZS5xdWlja1N1Z2dlc3Rpb25zRGVsYXk9ODBdPSJxdWlja1N1Z2dlc3Rpb25zRGVsYXkiLGVbZS5yZWFkT25seT04MV09InJlYWRPbmx5IixlW2UucmVuYW1lT25UeXBlPTgyXT0icmVuYW1lT25UeXBlIixlW2UucmVuZGVyQ29udHJvbENoYXJhY3RlcnM9ODNdPSJyZW5kZXJDb250cm9sQ2hhcmFjdGVycyIsZVtlLnJlbmRlckZpbmFsTmV3bGluZT04NF09InJlbmRlckZpbmFsTmV3bGluZSIsZVtlLnJlbmRlckxpbmVIaWdobGlnaHQ9ODVdPSJyZW5kZXJMaW5lSGlnaGxpZ2h0IixlW2UucmVuZGVyTGluZUhpZ2hsaWdodE9ubHlXaGVuRm9jdXM9ODZdPSJyZW5kZXJMaW5lSGlnaGxpZ2h0T25seVdoZW5Gb2N1cyIsZVtlLnJlbmRlclZhbGlkYXRpb25EZWNvcmF0aW9ucz04N109InJlbmRlclZhbGlkYXRpb25EZWNvcmF0aW9ucyIsZVtlLnJlbmRlcldoaXRlc3BhY2U9ODhdPSJyZW5kZXJXaGl0ZXNwYWNlIixlW2UucmV2ZWFsSG9yaXpvbnRhbFJpZ2h0UGFkZGluZz04OV09InJldmVhbEhvcml6b250YWxSaWdodFBhZGRpbmciLGVbZS5yb3VuZGVkU2VsZWN0aW9uPTkwXT0icm91bmRlZFNlbGVjdGlvbiIsZVtlLnJ1bGVycz05MV09InJ1bGVycyIsZVtlLnNjcm9sbGJhcj05Ml09InNjcm9sbGJhciIsZVtlLnNjcm9sbEJleW9uZExhc3RDb2x1bW49OTNdPSJzY3JvbGxCZXlvbmRMYXN0Q29sdW1uIixlW2Uuc2Nyb2xsQmV5b25kTGFzdExpbmU9OTRdPSJzY3JvbGxCZXlvbmRMYXN0TGluZSIsZVtlLnNjcm9sbFByZWRvbWluYW50QXhpcz05NV09InNjcm9sbFByZWRvbWluYW50QXhpcyIsZVtlLnNlbGVjdGlvbkNsaXBib2FyZD05Nl09InNlbGVjdGlvbkNsaXBib2FyZCIsZVtlLnNlbGVjdGlvbkhpZ2hsaWdodD05N109InNlbGVjdGlvbkhpZ2hsaWdodCIsZVtlLnNlbGVjdE9uTGluZU51bWJlcnM9OThdPSJzZWxlY3RPbkxpbmVOdW1iZXJzIixlW2Uuc2hvd0ZvbGRpbmdDb250cm9scz05OV09InNob3dGb2xkaW5nQ29udHJvbHMiLGVbZS5zaG93VW51c2VkPTEwMF09InNob3dVbnVzZWQiLGVbZS5zbmlwcGV0U3VnZ2VzdGlvbnM9MTAxXT0ic25pcHBldFN1Z2dlc3Rpb25zIixlW2Uuc21hcnRTZWxlY3Q9MTAyXT0ic21hcnRTZWxlY3QiLGVbZS5zbW9vdGhTY3JvbGxpbmc9MTAzXT0ic21vb3RoU2Nyb2xsaW5nIixlW2Uuc3RpY2t5VGFiU3RvcHM9MTA0XT0ic3RpY2t5VGFiU3RvcHMiLGVbZS5zdG9wUmVuZGVyaW5nTGluZUFmdGVyPTEwNV09InN0b3BSZW5kZXJpbmdMaW5lQWZ0ZXIiLGVbZS5zdWdnZXN0PTEwNl09InN1Z2dlc3QiLGVbZS5zdWdnZXN0Rm9udFNpemU9MTA3XT0ic3VnZ2VzdEZvbnRTaXplIixlW2Uuc3VnZ2VzdExpbmVIZWlnaHQ9MTA4XT0ic3VnZ2VzdExpbmVIZWlnaHQiLGVbZS5zdWdnZXN0T25UcmlnZ2VyQ2hhcmFjdGVycz0xMDldPSJzdWdnZXN0T25UcmlnZ2VyQ2hhcmFjdGVycyIsZVtlLnN1Z2dlc3RTZWxlY3Rpb249MTEwXT0ic3VnZ2VzdFNlbGVjdGlvbiIsZVtlLnRhYkNvbXBsZXRpb249MTExXT0idGFiQ29tcGxldGlvbiIsZVtlLnRhYkluZGV4PTExMl09InRhYkluZGV4IixlW2UudW5pY29kZUhpZ2hsaWdodGluZz0xMTNdPSJ1bmljb2RlSGlnaGxpZ2h0aW5nIixlW2UudW51c3VhbExpbmVUZXJtaW5hdG9ycz0xMTRdPSJ1bnVzdWFsTGluZVRlcm1pbmF0b3JzIixlW2UudXNlU2hhZG93RE9NPTExNV09InVzZVNoYWRvd0RPTSIsZVtlLnVzZVRhYlN0b3BzPTExNl09InVzZVRhYlN0b3BzIixlW2Uud29yZFNlcGFyYXRvcnM9MTE3XT0id29yZFNlcGFyYXRvcnMiLGVbZS53b3JkV3JhcD0xMThdPSJ3b3JkV3JhcCIsZVtlLndvcmRXcmFwQnJlYWtBZnRlckNoYXJhY3RlcnM9MTE5XT0id29yZFdyYXBCcmVha0FmdGVyQ2hhcmFjdGVycyIsZVtlLndvcmRXcmFwQnJlYWtCZWZvcmVDaGFyYWN0ZXJzPTEyMF09IndvcmRXcmFwQnJlYWtCZWZvcmVDaGFyYWN0ZXJzIixlW2Uud29yZFdyYXBDb2x1bW49MTIxXT0id29yZFdyYXBDb2x1bW4iLGVbZS53b3JkV3JhcE92ZXJyaWRlMT0xMjJdPSJ3b3JkV3JhcE92ZXJyaWRlMSIsZVtlLndvcmRXcmFwT3ZlcnJpZGUyPTEyM109IndvcmRXcmFwT3ZlcnJpZGUyIixlW2Uud3JhcHBpbmdJbmRlbnQ9MTI0XT0id3JhcHBpbmdJbmRlbnQiLGVbZS53cmFwcGluZ1N0cmF0ZWd5PTEyNV09IndyYXBwaW5nU3RyYXRlZ3kiLGVbZS5zaG93RGVwcmVjYXRlZD0xMjZdPSJzaG93RGVwcmVjYXRlZCIsZVtlLmlubGF5SGludHM9MTI3XT0iaW5sYXlIaW50cyIsZVtlLmVkaXRvckNsYXNzTmFtZT0xMjhdPSJlZGl0b3JDbGFzc05hbWUiLGVbZS5waXhlbFJhdGlvPTEyOV09InBpeGVsUmF0aW8iLGVbZS50YWJGb2N1c01vZGU9MTMwXT0idGFiRm9jdXNNb2RlIixlW2UubGF5b3V0SW5mbz0xMzFdPSJsYXlvdXRJbmZvIixlW2Uud3JhcHBpbmdJbmZvPTEzMl09IndyYXBwaW5nSW5mbyJ9KGxufHwobG49e30pKSxmdW5jdGlvbihlKXtlW2UuVGV4dERlZmluZWQ9MF09IlRleHREZWZpbmVkIixlW2UuTEY9MV09IkxGIixlW2UuQ1JMRj0yXT0iQ1JMRiJ9KGNufHwoY249e30pKSxmdW5jdGlvbihlKXtlW2UuTEY9MF09IkxGIixlW2UuQ1JMRj0xXT0iQ1JMRiJ9KGhufHwoaG49e30pKSxmdW5jdGlvbihlKXtlW2UuU3lzdGVtPTBdPSJTeXN0ZW0iLGVbZS5Vc2VyPTFdPSJVc2VyIn0oZG58fChkbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuSW5kZW50PTFdPSJJbmRlbnQiLGVbZS5JbmRlbnRPdXRkZW50PTJdPSJJbmRlbnRPdXRkZW50IixlW2UuT3V0ZGVudD0zXT0iT3V0ZGVudCJ9KHVufHwodW49e30pKSxmdW5jdGlvbihlKXtlW2UuQm90aD0wXT0iQm90aCIsZVtlLlJpZ2h0PTFdPSJSaWdodCIsZVtlLkxlZnQ9Ml09IkxlZnQiLGVbZS5Ob25lPTNdPSJOb25lIn0ocG58fChwbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UeXBlPTFdPSJUeXBlIixlW2UuUGFyYW1ldGVyPTJdPSJQYXJhbWV0ZXIifShtbnx8KG1uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkF1dG9tYXRpYz0wXT0iQXV0b21hdGljIixlW2UuRXhwbGljaXQ9MV09IkV4cGxpY2l0In0oZm58fChmbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5EZXBlbmRzT25LYkxheW91dD0tMV09IkRlcGVuZHNPbktiTGF5b3V0IixlW2UuVW5rbm93bj0wXT0iVW5rbm93biIsZVtlLkJhY2tzcGFjZT0xXT0iQmFja3NwYWNlIixlW2UuVGFiPTJdPSJUYWIiLGVbZS5FbnRlcj0zXT0iRW50ZXIiLGVbZS5TaGlmdD00XT0iU2hpZnQiLGVbZS5DdHJsPTVdPSJDdHJsIixlW2UuQWx0PTZdPSJBbHQiLGVbZS5QYXVzZUJyZWFrPTddPSJQYXVzZUJyZWFrIixlW2UuQ2Fwc0xvY2s9OF09IkNhcHNMb2NrIixlW2UuRXNjYXBlPTldPSJFc2NhcGUiLGVbZS5TcGFjZT0xMF09IlNwYWNlIixlW2UuUGFnZVVwPTExXT0iUGFnZVVwIixlW2UuUGFnZURvd249MTJdPSJQYWdlRG93biIsZVtlLkVuZD0xM109IkVuZCIsZVtlLkhvbWU9MTRdPSJIb21lIixlW2UuTGVmdEFycm93PTE1XT0iTGVmdEFycm93IixlW2UuVXBBcnJvdz0xNl09IlVwQXJyb3ciLGVbZS5SaWdodEFycm93PTE3XT0iUmlnaHRBcnJvdyIsZVtlLkRvd25BcnJvdz0xOF09IkRvd25BcnJvdyIsZVtlLkluc2VydD0xOV09Ikluc2VydCIsZVtlLkRlbGV0ZT0yMF09IkRlbGV0ZSIsZVtlLkRpZ2l0MD0yMV09IkRpZ2l0MCIsZVtlLkRpZ2l0MT0yMl09IkRpZ2l0MSIsZVtlLkRpZ2l0Mj0yM109IkRpZ2l0MiIsZVtlLkRpZ2l0Mz0yNF09IkRpZ2l0MyIsZVtlLkRpZ2l0ND0yNV09IkRpZ2l0NCIsZVtlLkRpZ2l0NT0yNl09IkRpZ2l0NSIsZVtlLkRpZ2l0Nj0yN109IkRpZ2l0NiIsZVtlLkRpZ2l0Nz0yOF09IkRpZ2l0NyIsZVtlLkRpZ2l0OD0yOV09IkRpZ2l0OCIsZVtlLkRpZ2l0OT0zMF09IkRpZ2l0OSIsZVtlLktleUE9MzFdPSJLZXlBIixlW2UuS2V5Qj0zMl09IktleUIiLGVbZS5LZXlDPTMzXT0iS2V5QyIsZVtlLktleUQ9MzRdPSJLZXlEIixlW2UuS2V5RT0zNV09IktleUUiLGVbZS5LZXlGPTM2XT0iS2V5RiIsZVtlLktleUc9MzddPSJLZXlHIixlW2UuS2V5SD0zOF09IktleUgiLGVbZS5LZXlJPTM5XT0iS2V5SSIsZVtlLktleUo9NDBdPSJLZXlKIixlW2UuS2V5Sz00MV09IktleUsiLGVbZS5LZXlMPTQyXT0iS2V5TCIsZVtlLktleU09NDNdPSJLZXlNIixlW2UuS2V5Tj00NF09IktleU4iLGVbZS5LZXlPPTQ1XT0iS2V5TyIsZVtlLktleVA9NDZdPSJLZXlQIixlW2UuS2V5UT00N109IktleVEiLGVbZS5LZXlSPTQ4XT0iS2V5UiIsZVtlLktleVM9NDldPSJLZXlTIixlW2UuS2V5VD01MF09IktleVQiLGVbZS5LZXlVPTUxXT0iS2V5VSIsZVtlLktleVY9NTJdPSJLZXlWIixlW2UuS2V5Vz01M109IktleVciLGVbZS5LZXlYPTU0XT0iS2V5WCIsZVtlLktleVk9NTVdPSJLZXlZIixlW2UuS2V5Wj01Nl09IktleVoiLGVbZS5NZXRhPTU3XT0iTWV0YSIsZVtlLkNvbnRleHRNZW51PTU4XT0iQ29udGV4dE1lbnUiLGVbZS5GMT01OV09IkYxIixlW2UuRjI9NjBdPSJGMiIsZVtlLkYzPTYxXT0iRjMiLGVbZS5GND02Ml09IkY0IixlW2UuRjU9NjNdPSJGNSIsZVtlLkY2PTY0XT0iRjYiLGVbZS5GNz02NV09IkY3IixlW2UuRjg9NjZdPSJGOCIsZVtlLkY5PTY3XT0iRjkiLGVbZS5GMTA9NjhdPSJGMTAiLGVbZS5GMTE9NjldPSJGMTEiLGVbZS5GMTI9NzBdPSJGMTIiLGVbZS5GMTM9NzFdPSJGMTMiLGVbZS5GMTQ9NzJdPSJGMTQiLGVbZS5GMTU9NzNdPSJGMTUiLGVbZS5GMTY9NzRdPSJGMTYiLGVbZS5GMTc9NzVdPSJGMTciLGVbZS5GMTg9NzZdPSJGMTgiLGVbZS5GMTk9NzddPSJGMTkiLGVbZS5OdW1Mb2NrPTc4XT0iTnVtTG9jayIsZVtlLlNjcm9sbExvY2s9NzldPSJTY3JvbGxMb2NrIixlW2UuU2VtaWNvbG9uPTgwXT0iU2VtaWNvbG9uIixlW2UuRXF1YWw9ODFdPSJFcXVhbCIsZVtlLkNvbW1hPTgyXT0iQ29tbWEiLGVbZS5NaW51cz04M109Ik1pbnVzIixlW2UuUGVyaW9kPTg0XT0iUGVyaW9kIixlW2UuU2xhc2g9ODVdPSJTbGFzaCIsZVtlLkJhY2txdW90ZT04Nl09IkJhY2txdW90ZSIsZVtlLkJyYWNrZXRMZWZ0PTg3XT0iQnJhY2tldExlZnQiLGVbZS5CYWNrc2xhc2g9ODhdPSJCYWNrc2xhc2giLGVbZS5CcmFja2V0UmlnaHQ9ODldPSJCcmFja2V0UmlnaHQiLGVbZS5RdW90ZT05MF09IlF1b3RlIixlW2UuT0VNXzg9OTFdPSJPRU1fOCIsZVtlLkludGxCYWNrc2xhc2g9OTJdPSJJbnRsQmFja3NsYXNoIixlW2UuTnVtcGFkMD05M109Ik51bXBhZDAiLGVbZS5OdW1wYWQxPTk0XT0iTnVtcGFkMSIsZVtlLk51bXBhZDI9OTVdPSJOdW1wYWQyIixlW2UuTnVtcGFkMz05Nl09Ik51bXBhZDMiLGVbZS5OdW1wYWQ0PTk3XT0iTnVtcGFkNCIsZVtlLk51bXBhZDU9OThdPSJOdW1wYWQ1IixlW2UuTnVtcGFkNj05OV09Ik51bXBhZDYiLGVbZS5OdW1wYWQ3PTEwMF09Ik51bXBhZDciLGVbZS5OdW1wYWQ4PTEwMV09Ik51bXBhZDgiLGVbZS5OdW1wYWQ5PTEwMl09Ik51bXBhZDkiLGVbZS5OdW1wYWRNdWx0aXBseT0xMDNdPSJOdW1wYWRNdWx0aXBseSIsZVtlLk51bXBhZEFkZD0xMDRdPSJOdW1wYWRBZGQiLGVbZS5OVU1QQURfU0VQQVJBVE9SPTEwNV09Ik5VTVBBRF9TRVBBUkFUT1IiLGVbZS5OdW1wYWRTdWJ0cmFjdD0xMDZdPSJOdW1wYWRTdWJ0cmFjdCIsZVtlLk51bXBhZERlY2ltYWw9MTA3XT0iTnVtcGFkRGVjaW1hbCIsZVtlLk51bXBhZERpdmlkZT0xMDhdPSJOdW1wYWREaXZpZGUiLGVbZS5LRVlfSU5fQ09NUE9TSVRJT049MTA5XT0iS0VZX0lOX0NPTVBPU0lUSU9OIixlW2UuQUJOVF9DMT0xMTBdPSJBQk5UX0MxIixlW2UuQUJOVF9DMj0xMTFdPSJBQk5UX0MyIixlW2UuQXVkaW9Wb2x1bWVNdXRlPTExMl09IkF1ZGlvVm9sdW1lTXV0ZSIsZVtlLkF1ZGlvVm9sdW1lVXA9MTEzXT0iQXVkaW9Wb2x1bWVVcCIsZVtlLkF1ZGlvVm9sdW1lRG93bj0xMTRdPSJBdWRpb1ZvbHVtZURvd24iLGVbZS5Ccm93c2VyU2VhcmNoPTExNV09IkJyb3dzZXJTZWFyY2giLGVbZS5Ccm93c2VySG9tZT0xMTZdPSJCcm93c2VySG9tZSIsZVtlLkJyb3dzZXJCYWNrPTExN109IkJyb3dzZXJCYWNrIixlW2UuQnJvd3NlckZvcndhcmQ9MTE4XT0iQnJvd3NlckZvcndhcmQiLGVbZS5NZWRpYVRyYWNrTmV4dD0xMTldPSJNZWRpYVRyYWNrTmV4dCIsZVtlLk1lZGlhVHJhY2tQcmV2aW91cz0xMjBdPSJNZWRpYVRyYWNrUHJldmlvdXMiLGVbZS5NZWRpYVN0b3A9MTIxXT0iTWVkaWFTdG9wIixlW2UuTWVkaWFQbGF5UGF1c2U9MTIyXT0iTWVkaWFQbGF5UGF1c2UiLGVbZS5MYXVuY2hNZWRpYVBsYXllcj0xMjNdPSJMYXVuY2hNZWRpYVBsYXllciIsZVtlLkxhdW5jaE1haWw9MTI0XT0iTGF1bmNoTWFpbCIsZVtlLkxhdW5jaEFwcDI9MTI1XT0iTGF1bmNoQXBwMiIsZVtlLkNsZWFyPTEyNl09IkNsZWFyIixlW2UuTUFYX1ZBTFVFPTEyN109Ik1BWF9WQUxVRSJ9KGdufHwoZ249e30pKSxmdW5jdGlvbihlKXtlW2UuRGVmYXVsdD0xXT0iRGVmYXVsdCIsZVtlLlVzZXI9Ml09IlVzZXIifShibnx8KGJuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkVkaXRvckNvcmU9MF09IkVkaXRvckNvcmUiLGVbZS5FZGl0b3JDb250cmliPTEwMF09IkVkaXRvckNvbnRyaWIiLGVbZS5Xb3JrYmVuY2hDb250cmliPTIwMF09IldvcmtiZW5jaENvbnRyaWIiLGVbZS5CdWlsdGluRXh0ZW5zaW9uPTMwMF09IkJ1aWx0aW5FeHRlbnNpb24iLGVbZS5FeHRlcm5hbEV4dGVuc2lvbj00MDBdPSJFeHRlcm5hbEV4dGVuc2lvbiJ9KHdufHwod249e30pKSxmdW5jdGlvbihlKXtlW2UuTnVsbD0wXT0iTnVsbCIsZVtlLlBsYWluVGV4dD0xXT0iUGxhaW5UZXh0In0oX258fChfbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UcmFjZT0wXT0iVHJhY2UiLGVbZS5EZWJ1Zz0xXT0iRGVidWciLGVbZS5JbmZvPTJdPSJJbmZvIixlW2UuV2FybmluZz0zXT0iV2FybmluZyIsZVtlLkVycm9yPTRdPSJFcnJvciIsZVtlLkNyaXRpY2FsPTVdPSJDcml0aWNhbCIsZVtlLk9mZj02XT0iT2ZmIn0odm58fCh2bj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5QYXJhZ3JhcGg9MF09IlBhcmFncmFwaCIsZVtlLkJyZWFrPTFdPSJCcmVhayJ9KHlufHwoeW49e30pKSxmdW5jdGlvbihlKXtlW2UuSGludD0xXT0iSGludCIsZVtlLkluZm89Ml09IkluZm8iLGVbZS5XYXJuaW5nPTRdPSJXYXJuaW5nIixlW2UuRXJyb3I9OF09IkVycm9yIn0oVG58fChUbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Vbm5lY2Vzc2FyeT0xXT0iVW5uZWNlc3NhcnkiLGVbZS5EZXByZWNhdGVkPTJdPSJEZXByZWNhdGVkIn0oa258fChrbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5JbmxpbmU9MV09IklubGluZSIsZVtlLkd1dHRlcj0yXT0iR3V0dGVyIn0oU258fChTbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5VTktOT1dOPTBdPSJVTktOT1dOIixlW2UuVEVYVEFSRUE9MV09IlRFWFRBUkVBIixlW2UuR1VUVEVSX0dMWVBIX01BUkdJTj0yXT0iR1VUVEVSX0dMWVBIX01BUkdJTiIsZVtlLkdVVFRFUl9MSU5FX05VTUJFUlM9M109IkdVVFRFUl9MSU5FX05VTUJFUlMiLGVbZS5HVVRURVJfTElORV9ERUNPUkFUSU9OUz00XT0iR1VUVEVSX0xJTkVfREVDT1JBVElPTlMiLGVbZS5HVVRURVJfVklFV19aT05FPTVdPSJHVVRURVJfVklFV19aT05FIixlW2UuQ09OVEVOVF9URVhUPTZdPSJDT05URU5UX1RFWFQiLGVbZS5DT05URU5UX0VNUFRZPTddPSJDT05URU5UX0VNUFRZIixlW2UuQ09OVEVOVF9WSUVXX1pPTkU9OF09IkNPTlRFTlRfVklFV19aT05FIixlW2UuQ09OVEVOVF9XSURHRVQ9OV09IkNPTlRFTlRfV0lER0VUIixlW2UuT1ZFUlZJRVdfUlVMRVI9MTBdPSJPVkVSVklFV19SVUxFUiIsZVtlLlNDUk9MTEJBUj0xMV09IlNDUk9MTEJBUiIsZVtlLk9WRVJMQVlfV0lER0VUPTEyXT0iT1ZFUkxBWV9XSURHRVQiLGVbZS5PVVRTSURFX0VESVRPUj0xM109Ik9VVFNJREVfRURJVE9SIn0oQ258fChDbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5XaW5kb3dzPTFdPSJXaW5kb3dzIixlW2UuTWFjaW50b3NoPTJdPSJNYWNpbnRvc2giLGVbZS5MaW51eD0zXT0iTGludXgifSh4bnx8KHhuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRPUF9SSUdIVF9DT1JORVI9MF09IlRPUF9SSUdIVF9DT1JORVIiLGVbZS5CT1RUT01fUklHSFRfQ09STkVSPTFdPSJCT1RUT01fUklHSFRfQ09STkVSIixlW2UuVE9QX0NFTlRFUj0yXT0iVE9QX0NFTlRFUiJ9KExufHwoTG49e30pKSxmdW5jdGlvbihlKXtlW2UuTGVmdD0xXT0iTGVmdCIsZVtlLkNlbnRlcj0yXT0iQ2VudGVyIixlW2UuUmlnaHQ9NF09IlJpZ2h0IixlW2UuRnVsbD03XT0iRnVsbCJ9KEVufHwoRW49e30pKSxmdW5jdGlvbihlKXtlW2UuTGVmdD0wXT0iTGVmdCIsZVtlLlJpZ2h0PTFdPSJSaWdodCIsZVtlLk5vbmU9Ml09Ik5vbmUifShBbnx8KEFuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkV4cGxvcmVyPTFdPSJFeHBsb3JlciIsZVtlLlNjbT0zXT0iU2NtIixlW2UuRXh0ZW5zaW9ucz01XT0iRXh0ZW5zaW9ucyIsZVtlLldpbmRvdz0xMF09IldpbmRvdyIsZVtlLk5vdGlmaWNhdGlvbj0xNV09Ik5vdGlmaWNhdGlvbiIsZVtlLkRpYWxvZz0yMF09IkRpYWxvZyJ9KE1ufHwoTW49e30pKSxmdW5jdGlvbihlKXtlW2UuT2ZmPTBdPSJPZmYiLGVbZS5Pbj0xXT0iT24iLGVbZS5SZWxhdGl2ZT0yXT0iUmVsYXRpdmUiLGVbZS5JbnRlcnZhbD0zXT0iSW50ZXJ2YWwiLGVbZS5DdXN0b209NF09IkN1c3RvbSJ9KFJufHwoUm49e30pKSxmdW5jdGlvbihlKXtlW2UuTm9uZT0wXT0iTm9uZSIsZVtlLlRleHQ9MV09IlRleHQiLGVbZS5CbG9ja3M9Ml09IkJsb2NrcyJ9KE5ufHwoTm49e30pKSxmdW5jdGlvbihlKXtlW2UuRGVwZW5kc09uS2JMYXlvdXQ9LTFdPSJEZXBlbmRzT25LYkxheW91dCIsZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5IeXBlcj0xXT0iSHlwZXIiLGVbZS5TdXBlcj0yXT0iU3VwZXIiLGVbZS5Gbj0zXT0iRm4iLGVbZS5GbkxvY2s9NF09IkZuTG9jayIsZVtlLlN1c3BlbmQ9NV09IlN1c3BlbmQiLGVbZS5SZXN1bWU9Nl09IlJlc3VtZSIsZVtlLlR1cmJvPTddPSJUdXJibyIsZVtlLlNsZWVwPThdPSJTbGVlcCIsZVtlLldha2VVcD05XT0iV2FrZVVwIixlW2UuS2V5QT0xMF09IktleUEiLGVbZS5LZXlCPTExXT0iS2V5QiIsZVtlLktleUM9MTJdPSJLZXlDIixlW2UuS2V5RD0xM109IktleUQiLGVbZS5LZXlFPTE0XT0iS2V5RSIsZVtlLktleUY9MTVdPSJLZXlGIixlW2UuS2V5Rz0xNl09IktleUciLGVbZS5LZXlIPTE3XT0iS2V5SCIsZVtlLktleUk9MThdPSJLZXlJIixlW2UuS2V5Sj0xOV09IktleUoiLGVbZS5LZXlLPTIwXT0iS2V5SyIsZVtlLktleUw9MjFdPSJLZXlMIixlW2UuS2V5TT0yMl09IktleU0iLGVbZS5LZXlOPTIzXT0iS2V5TiIsZVtlLktleU89MjRdPSJLZXlPIixlW2UuS2V5UD0yNV09IktleVAiLGVbZS5LZXlRPTI2XT0iS2V5USIsZVtlLktleVI9MjddPSJLZXlSIixlW2UuS2V5Uz0yOF09IktleVMiLGVbZS5LZXlUPTI5XT0iS2V5VCIsZVtlLktleVU9MzBdPSJLZXlVIixlW2UuS2V5Vj0zMV09IktleVYiLGVbZS5LZXlXPTMyXT0iS2V5VyIsZVtlLktleVg9MzNdPSJLZXlYIixlW2UuS2V5WT0zNF09IktleVkiLGVbZS5LZXlaPTM1XT0iS2V5WiIsZVtlLkRpZ2l0MT0zNl09IkRpZ2l0MSIsZVtlLkRpZ2l0Mj0zN109IkRpZ2l0MiIsZVtlLkRpZ2l0Mz0zOF09IkRpZ2l0MyIsZVtlLkRpZ2l0ND0zOV09IkRpZ2l0NCIsZVtlLkRpZ2l0NT00MF09IkRpZ2l0NSIsZVtlLkRpZ2l0Nj00MV09IkRpZ2l0NiIsZVtlLkRpZ2l0Nz00Ml09IkRpZ2l0NyIsZVtlLkRpZ2l0OD00M109IkRpZ2l0OCIsZVtlLkRpZ2l0OT00NF09IkRpZ2l0OSIsZVtlLkRpZ2l0MD00NV09IkRpZ2l0MCIsZVtlLkVudGVyPTQ2XT0iRW50ZXIiLGVbZS5Fc2NhcGU9NDddPSJFc2NhcGUiLGVbZS5CYWNrc3BhY2U9NDhdPSJCYWNrc3BhY2UiLGVbZS5UYWI9NDldPSJUYWIiLGVbZS5TcGFjZT01MF09IlNwYWNlIixlW2UuTWludXM9NTFdPSJNaW51cyIsZVtlLkVxdWFsPTUyXT0iRXF1YWwiLGVbZS5CcmFja2V0TGVmdD01M109IkJyYWNrZXRMZWZ0IixlW2UuQnJhY2tldFJpZ2h0PTU0XT0iQnJhY2tldFJpZ2h0IixlW2UuQmFja3NsYXNoPTU1XT0iQmFja3NsYXNoIixlW2UuSW50bEhhc2g9NTZdPSJJbnRsSGFzaCIsZVtlLlNlbWljb2xvbj01N109IlNlbWljb2xvbiIsZVtlLlF1b3RlPTU4XT0iUXVvdGUiLGVbZS5CYWNrcXVvdGU9NTldPSJCYWNrcXVvdGUiLGVbZS5Db21tYT02MF09IkNvbW1hIixlW2UuUGVyaW9kPTYxXT0iUGVyaW9kIixlW2UuU2xhc2g9NjJdPSJTbGFzaCIsZVtlLkNhcHNMb2NrPTYzXT0iQ2Fwc0xvY2siLGVbZS5GMT02NF09IkYxIixlW2UuRjI9NjVdPSJGMiIsZVtlLkYzPTY2XT0iRjMiLGVbZS5GND02N109IkY0IixlW2UuRjU9NjhdPSJGNSIsZVtlLkY2PTY5XT0iRjYiLGVbZS5GNz03MF09IkY3IixlW2UuRjg9NzFdPSJGOCIsZVtlLkY5PTcyXT0iRjkiLGVbZS5GMTA9NzNdPSJGMTAiLGVbZS5GMTE9NzRdPSJGMTEiLGVbZS5GMTI9NzVdPSJGMTIiLGVbZS5QcmludFNjcmVlbj03Nl09IlByaW50U2NyZWVuIixlW2UuU2Nyb2xsTG9jaz03N109IlNjcm9sbExvY2siLGVbZS5QYXVzZT03OF09IlBhdXNlIixlW2UuSW5zZXJ0PTc5XT0iSW5zZXJ0IixlW2UuSG9tZT04MF09IkhvbWUiLGVbZS5QYWdlVXA9ODFdPSJQYWdlVXAiLGVbZS5EZWxldGU9ODJdPSJEZWxldGUiLGVbZS5FbmQ9ODNdPSJFbmQiLGVbZS5QYWdlRG93bj04NF09IlBhZ2VEb3duIixlW2UuQXJyb3dSaWdodD04NV09IkFycm93UmlnaHQiLGVbZS5BcnJvd0xlZnQ9ODZdPSJBcnJvd0xlZnQiLGVbZS5BcnJvd0Rvd249ODddPSJBcnJvd0Rvd24iLGVbZS5BcnJvd1VwPTg4XT0iQXJyb3dVcCIsZVtlLk51bUxvY2s9ODldPSJOdW1Mb2NrIixlW2UuTnVtcGFkRGl2aWRlPTkwXT0iTnVtcGFkRGl2aWRlIixlW2UuTnVtcGFkTXVsdGlwbHk9OTFdPSJOdW1wYWRNdWx0aXBseSIsZVtlLk51bXBhZFN1YnRyYWN0PTkyXT0iTnVtcGFkU3VidHJhY3QiLGVbZS5OdW1wYWRBZGQ9OTNdPSJOdW1wYWRBZGQiLGVbZS5OdW1wYWRFbnRlcj05NF09Ik51bXBhZEVudGVyIixlW2UuTnVtcGFkMT05NV09Ik51bXBhZDEiLGVbZS5OdW1wYWQyPTk2XT0iTnVtcGFkMiIsZVtlLk51bXBhZDM9OTddPSJOdW1wYWQzIixlW2UuTnVtcGFkND05OF09Ik51bXBhZDQiLGVbZS5OdW1wYWQ1PTk5XT0iTnVtcGFkNSIsZVtlLk51bXBhZDY9MTAwXT0iTnVtcGFkNiIsZVtlLk51bXBhZDc9MTAxXT0iTnVtcGFkNyIsZVtlLk51bXBhZDg9MTAyXT0iTnVtcGFkOCIsZVtlLk51bXBhZDk9MTAzXT0iTnVtcGFkOSIsZVtlLk51bXBhZDA9MTA0XT0iTnVtcGFkMCIsZVtlLk51bXBhZERlY2ltYWw9MTA1XT0iTnVtcGFkRGVjaW1hbCIsZVtlLkludGxCYWNrc2xhc2g9MTA2XT0iSW50bEJhY2tzbGFzaCIsZVtlLkNvbnRleHRNZW51PTEwN109IkNvbnRleHRNZW51IixlW2UuUG93ZXI9MTA4XT0iUG93ZXIiLGVbZS5OdW1wYWRFcXVhbD0xMDldPSJOdW1wYWRFcXVhbCIsZVtlLkYxMz0xMTBdPSJGMTMiLGVbZS5GMTQ9MTExXT0iRjE0IixlW2UuRjE1PTExMl09IkYxNSIsZVtlLkYxNj0xMTNdPSJGMTYiLGVbZS5GMTc9MTE0XT0iRjE3IixlW2UuRjE4PTExNV09IkYxOCIsZVtlLkYxOT0xMTZdPSJGMTkiLGVbZS5GMjA9MTE3XT0iRjIwIixlW2UuRjIxPTExOF09IkYyMSIsZVtlLkYyMj0xMTldPSJGMjIiLGVbZS5GMjM9MTIwXT0iRjIzIixlW2UuRjI0PTEyMV09IkYyNCIsZVtlLk9wZW49MTIyXT0iT3BlbiIsZVtlLkhlbHA9MTIzXT0iSGVscCIsZVtlLlNlbGVjdD0xMjRdPSJTZWxlY3QiLGVbZS5BZ2Fpbj0xMjVdPSJBZ2FpbiIsZVtlLlVuZG89MTI2XT0iVW5kbyIsZVtlLkN1dD0xMjddPSJDdXQiLGVbZS5Db3B5PTEyOF09IkNvcHkiLGVbZS5QYXN0ZT0xMjldPSJQYXN0ZSIsZVtlLkZpbmQ9MTMwXT0iRmluZCIsZVtlLkF1ZGlvVm9sdW1lTXV0ZT0xMzFdPSJBdWRpb1ZvbHVtZU11dGUiLGVbZS5BdWRpb1ZvbHVtZVVwPTEzMl09IkF1ZGlvVm9sdW1lVXAiLGVbZS5BdWRpb1ZvbHVtZURvd249MTMzXT0iQXVkaW9Wb2x1bWVEb3duIixlW2UuTnVtcGFkQ29tbWE9MTM0XT0iTnVtcGFkQ29tbWEiLGVbZS5JbnRsUm89MTM1XT0iSW50bFJvIixlW2UuS2FuYU1vZGU9MTM2XT0iS2FuYU1vZGUiLGVbZS5JbnRsWWVuPTEzN109IkludGxZZW4iLGVbZS5Db252ZXJ0PTEzOF09IkNvbnZlcnQiLGVbZS5Ob25Db252ZXJ0PTEzOV09Ik5vbkNvbnZlcnQiLGVbZS5MYW5nMT0xNDBdPSJMYW5nMSIsZVtlLkxhbmcyPTE0MV09IkxhbmcyIixlW2UuTGFuZzM9MTQyXT0iTGFuZzMiLGVbZS5MYW5nND0xNDNdPSJMYW5nNCIsZVtlLkxhbmc1PTE0NF09Ikxhbmc1IixlW2UuQWJvcnQ9MTQ1XT0iQWJvcnQiLGVbZS5Qcm9wcz0xNDZdPSJQcm9wcyIsZVtlLk51bXBhZFBhcmVuTGVmdD0xNDddPSJOdW1wYWRQYXJlbkxlZnQiLGVbZS5OdW1wYWRQYXJlblJpZ2h0PTE0OF09Ik51bXBhZFBhcmVuUmlnaHQiLGVbZS5OdW1wYWRCYWNrc3BhY2U9MTQ5XT0iTnVtcGFkQmFja3NwYWNlIixlW2UuTnVtcGFkTWVtb3J5U3RvcmU9MTUwXT0iTnVtcGFkTWVtb3J5U3RvcmUiLGVbZS5OdW1wYWRNZW1vcnlSZWNhbGw9MTUxXT0iTnVtcGFkTWVtb3J5UmVjYWxsIixlW2UuTnVtcGFkTWVtb3J5Q2xlYXI9MTUyXT0iTnVtcGFkTWVtb3J5Q2xlYXIiLGVbZS5OdW1wYWRNZW1vcnlBZGQ9MTUzXT0iTnVtcGFkTWVtb3J5QWRkIixlW2UuTnVtcGFkTWVtb3J5U3VidHJhY3Q9MTU0XT0iTnVtcGFkTWVtb3J5U3VidHJhY3QiLGVbZS5OdW1wYWRDbGVhcj0xNTVdPSJOdW1wYWRDbGVhciIsZVtlLk51bXBhZENsZWFyRW50cnk9MTU2XT0iTnVtcGFkQ2xlYXJFbnRyeSIsZVtlLkNvbnRyb2xMZWZ0PTE1N109IkNvbnRyb2xMZWZ0IixlW2UuU2hpZnRMZWZ0PTE1OF09IlNoaWZ0TGVmdCIsZVtlLkFsdExlZnQ9MTU5XT0iQWx0TGVmdCIsZVtlLk1ldGFMZWZ0PTE2MF09Ik1ldGFMZWZ0IixlW2UuQ29udHJvbFJpZ2h0PTE2MV09IkNvbnRyb2xSaWdodCIsZVtlLlNoaWZ0UmlnaHQ9MTYyXT0iU2hpZnRSaWdodCIsZVtlLkFsdFJpZ2h0PTE2M109IkFsdFJpZ2h0IixlW2UuTWV0YVJpZ2h0PTE2NF09Ik1ldGFSaWdodCIsZVtlLkJyaWdodG5lc3NVcD0xNjVdPSJCcmlnaHRuZXNzVXAiLGVbZS5CcmlnaHRuZXNzRG93bj0xNjZdPSJCcmlnaHRuZXNzRG93biIsZVtlLk1lZGlhUGxheT0xNjddPSJNZWRpYVBsYXkiLGVbZS5NZWRpYVJlY29yZD0xNjhdPSJNZWRpYVJlY29yZCIsZVtlLk1lZGlhRmFzdEZvcndhcmQ9MTY5XT0iTWVkaWFGYXN0Rm9yd2FyZCIsZVtlLk1lZGlhUmV3aW5kPTE3MF09Ik1lZGlhUmV3aW5kIixlW2UuTWVkaWFUcmFja05leHQ9MTcxXT0iTWVkaWFUcmFja05leHQiLGVbZS5NZWRpYVRyYWNrUHJldmlvdXM9MTcyXT0iTWVkaWFUcmFja1ByZXZpb3VzIixlW2UuTWVkaWFTdG9wPTE3M109Ik1lZGlhU3RvcCIsZVtlLkVqZWN0PTE3NF09IkVqZWN0IixlW2UuTWVkaWFQbGF5UGF1c2U9MTc1XT0iTWVkaWFQbGF5UGF1c2UiLGVbZS5NZWRpYVNlbGVjdD0xNzZdPSJNZWRpYVNlbGVjdCIsZVtlLkxhdW5jaE1haWw9MTc3XT0iTGF1bmNoTWFpbCIsZVtlLkxhdW5jaEFwcDI9MTc4XT0iTGF1bmNoQXBwMiIsZVtlLkxhdW5jaEFwcDE9MTc5XT0iTGF1bmNoQXBwMSIsZVtlLlNlbGVjdFRhc2s9MTgwXT0iU2VsZWN0VGFzayIsZVtlLkxhdW5jaFNjcmVlblNhdmVyPTE4MV09IkxhdW5jaFNjcmVlblNhdmVyIixlW2UuQnJvd3NlclNlYXJjaD0xODJdPSJCcm93c2VyU2VhcmNoIixlW2UuQnJvd3NlckhvbWU9MTgzXT0iQnJvd3NlckhvbWUiLGVbZS5Ccm93c2VyQmFjaz0xODRdPSJCcm93c2VyQmFjayIsZVtlLkJyb3dzZXJGb3J3YXJkPTE4NV09IkJyb3dzZXJGb3J3YXJkIixlW2UuQnJvd3NlclN0b3A9MTg2XT0iQnJvd3NlclN0b3AiLGVbZS5Ccm93c2VyUmVmcmVzaD0xODddPSJCcm93c2VyUmVmcmVzaCIsZVtlLkJyb3dzZXJGYXZvcml0ZXM9MTg4XT0iQnJvd3NlckZhdm9yaXRlcyIsZVtlLlpvb21Ub2dnbGU9MTg5XT0iWm9vbVRvZ2dsZSIsZVtlLk1haWxSZXBseT0xOTBdPSJNYWlsUmVwbHkiLGVbZS5NYWlsRm9yd2FyZD0xOTFdPSJNYWlsRm9yd2FyZCIsZVtlLk1haWxTZW5kPTE5Ml09Ik1haWxTZW5kIixlW2UuTUFYX1ZBTFVFPTE5M109Ik1BWF9WQUxVRSJ9KElufHwoSW49e30pKSxmdW5jdGlvbihlKXtlW2UuU21vb3RoPTBdPSJTbW9vdGgiLGVbZS5JbW1lZGlhdGU9MV09IkltbWVkaWF0ZSJ9KFVufHwoVW49e30pKSxmdW5jdGlvbihlKXtlW2UuQXV0bz0xXT0iQXV0byIsZVtlLkhpZGRlbj0yXT0iSGlkZGVuIixlW2UuVmlzaWJsZT0zXT0iVmlzaWJsZSJ9KEhufHwoSG49e30pKSxmdW5jdGlvbihlKXtlW2UuTFRSPTBdPSJMVFIiLGVbZS5SVEw9MV09IlJUTCJ9KERufHwoRG49e30pKSxmdW5jdGlvbihlKXtlW2UuSW52b2tlPTFdPSJJbnZva2UiLGVbZS5UcmlnZ2VyQ2hhcmFjdGVyPTJdPSJUcmlnZ2VyQ2hhcmFjdGVyIixlW2UuQ29udGVudENoYW5nZT0zXT0iQ29udGVudENoYW5nZSJ9KHpufHwoem49e30pKSxmdW5jdGlvbihlKXtlW2UuVG9wPTBdPSJUb3AiLGVbZS5JbmxpbmU9MV09IklubGluZSIsZVtlLkJvdHRvbT0yXT0iQm90dG9tIn0oV258fChXbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Vc2VyPTFdPSJVc2VyIixlW2UuV29ya3NwYWNlPTJdPSJXb3Jrc3BhY2UiLGVbZS5FeHRlbnNpb249M109IkV4dGVuc2lvbiJ9KE9ufHwoT249e30pKSxmdW5jdGlvbihlKXtlW2UuT3RoZXI9MF09Ik90aGVyIixlW2UuQ29tbWVudD0xXT0iQ29tbWVudCIsZVtlLlN0cmluZz0yXT0iU3RyaW5nIixlW2UuUmVnRXg9M109IlJlZ0V4In0oUG58fChQbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5GaWxlPTBdPSJGaWxlIixlW2UuTW9kdWxlPTFdPSJNb2R1bGUiLGVbZS5OYW1lc3BhY2U9Ml09Ik5hbWVzcGFjZSIsZVtlLlBhY2thZ2U9M109IlBhY2thZ2UiLGVbZS5DbGFzcz00XT0iQ2xhc3MiLGVbZS5NZXRob2Q9NV09Ik1ldGhvZCIsZVtlLlByb3BlcnR5PTZdPSJQcm9wZXJ0eSIsZVtlLkZpZWxkPTddPSJGaWVsZCIsZVtlLkNvbnN0cnVjdG9yPThdPSJDb25zdHJ1Y3RvciIsZVtlLkVudW09OV09IkVudW0iLGVbZS5JbnRlcmZhY2U9MTBdPSJJbnRlcmZhY2UiLGVbZS5GdW5jdGlvbj0xMV09IkZ1bmN0aW9uIixlW2UuVmFyaWFibGU9MTJdPSJWYXJpYWJsZSIsZVtlLkNvbnN0YW50PTEzXT0iQ29uc3RhbnQiLGVbZS5TdHJpbmc9MTRdPSJTdHJpbmciLGVbZS5OdW1iZXI9MTVdPSJOdW1iZXIiLGVbZS5Cb29sZWFuPTE2XT0iQm9vbGVhbiIsZVtlLkFycmF5PTE3XT0iQXJyYXkiLGVbZS5PYmplY3Q9MThdPSJPYmplY3QiLGVbZS5LZXk9MTldPSJLZXkiLGVbZS5OdWxsPTIwXT0iTnVsbCIsZVtlLkVudW1NZW1iZXI9MjFdPSJFbnVtTWVtYmVyIixlW2UuU3RydWN0PTIyXT0iU3RydWN0IixlW2UuRXZlbnQ9MjNdPSJFdmVudCIsZVtlLk9wZXJhdG9yPTI0XT0iT3BlcmF0b3IiLGVbZS5UeXBlUGFyYW1ldGVyPTI1XT0iVHlwZVBhcmFtZXRlciJ9KHFufHwocW49e30pKSxmdW5jdGlvbihlKXtlW2UuRGVwcmVjYXRlZD0xXT0iRGVwcmVjYXRlZCJ9KEZufHwoRm49e30pKSxmdW5jdGlvbihlKXtlW2UuSGlkZGVuPTBdPSJIaWRkZW4iLGVbZS5CbGluaz0xXT0iQmxpbmsiLGVbZS5TbW9vdGg9Ml09IlNtb290aCIsZVtlLlBoYXNlPTNdPSJQaGFzZSIsZVtlLkV4cGFuZD00XT0iRXhwYW5kIixlW2UuU29saWQ9NV09IlNvbGlkIn0oQm58fChCbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5MaW5lPTFdPSJMaW5lIixlW2UuQmxvY2s9Ml09IkJsb2NrIixlW2UuVW5kZXJsaW5lPTNdPSJVbmRlcmxpbmUiLGVbZS5MaW5lVGhpbj00XT0iTGluZVRoaW4iLGVbZS5CbG9ja091dGxpbmU9NV09IkJsb2NrT3V0bGluZSIsZVtlLlVuZGVybGluZVRoaW49Nl09IlVuZGVybGluZVRoaW4ifShWbnx8KFZuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkNlbnRlcj0wXT0iQ2VudGVyIixlW2UuQ2VudGVySWZPdXRzaWRlVmlld3BvcnQ9MV09IkNlbnRlcklmT3V0c2lkZVZpZXdwb3J0IixlW2UuTmVhclRvcD0yXT0iTmVhclRvcCIsZVtlLk5lYXJUb3BJZk91dHNpZGVWaWV3cG9ydD0zXT0iTmVhclRvcElmT3V0c2lkZVZpZXdwb3J0In0oS258fChLbj17fSkpLGZ1bmN0aW9uKGUpe2UuUFJPR1JBTU1BVElDPSJhcGkiLGUuTkFWSUdBVElPTj0iY29kZS5uYXZpZ2F0aW9uIixlLkpVTVA9ImNvZGUuanVtcCJ9KGpufHwoam49e30pKSxmdW5jdGlvbihlKXtlW2UuQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0wXT0iQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcyIsZVtlLk5ldmVyR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0xXT0iTmV2ZXJHcm93c1doZW5UeXBpbmdBdEVkZ2VzIixlW2UuR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZT0yXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZSIsZVtlLkdyb3dzT25seVdoZW5UeXBpbmdBZnRlcj0zXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0FmdGVyIn0oR258fChHbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuU2FtZT0xXT0iU2FtZSIsZVtlLkluZGVudD0yXT0iSW5kZW50IixlW2UuRGVlcEluZGVudD0zXT0iRGVlcEluZGVudCJ9KCRufHwoJG49e30pKTtjbGFzcyBucntjb25zdHJ1Y3Rvcigpe3RoaXNbSm5dPSJMaW5rZWRNYXAiLHRoaXMuX21hcD1uZXcgTWFwLHRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwLHRoaXMuX3NpemU9MCx0aGlzLl9zdGF0ZT0wfWNsZWFyKCl7dGhpcy5fbWFwLmNsZWFyKCksdGhpcy5faGVhZD12b2lkIDAsdGhpcy5fdGFpbD12b2lkIDAsdGhpcy5fc2l6ZT0wLHRoaXMuX3N0YXRlKyt9aXNFbXB0eSgpe3JldHVybiF0aGlzLl9oZWFkJiYhdGhpcy5fdGFpbH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfWdldCBmaXJzdCgpe3ZhciBlO3JldHVybiBudWxsPT09KGU9dGhpcy5faGVhZCl8fHZvaWQgMD09PWU/dm9pZCAwOmUudmFsdWV9Z2V0IGxhc3QoKXt2YXIgZTtyZXR1cm4gbnVsbD09PShlPXRoaXMuX3RhaWwpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnZhbHVlfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlKX1nZXQoZSx0PTApe2NvbnN0IG49dGhpcy5fbWFwLmdldChlKTtpZihuKXJldHVybiAwIT09dCYmdGhpcy50b3VjaChuLHQpLG4udmFsdWV9c2V0KGUsdCxuPTApe2xldCByPXRoaXMuX21hcC5nZXQoZSk7aWYocilyLnZhbHVlPXQsMCE9PW4mJnRoaXMudG91Y2gocixuKTtlbHNle3N3aXRjaChyPXtrZXk6ZSx2YWx1ZTp0LG5leHQ6dm9pZCAwLHByZXZpb3VzOnZvaWQgMH0sbil7Y2FzZSAwOmNhc2UgMjpkZWZhdWx0OnRoaXMuYWRkSXRlbUxhc3Qocik7YnJlYWs7Y2FzZSAxOnRoaXMuYWRkSXRlbUZpcnN0KHIpfXRoaXMuX21hcC5zZXQoZSxyKSx0aGlzLl9zaXplKyt9cmV0dXJuIHRoaXN9ZGVsZXRlKGUpe3JldHVybiEhdGhpcy5yZW1vdmUoZSl9cmVtb3ZlKGUpe2NvbnN0IHQ9dGhpcy5fbWFwLmdldChlKTtpZih0KXJldHVybiB0aGlzLl9tYXAuZGVsZXRlKGUpLHRoaXMucmVtb3ZlSXRlbSh0KSx0aGlzLl9zaXplLS0sdC52YWx1ZX1zaGlmdCgpe2lmKCF0aGlzLl9oZWFkJiYhdGhpcy5fdGFpbClyZXR1cm47aWYoIXRoaXMuX2hlYWR8fCF0aGlzLl90YWlsKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7Y29uc3QgZT10aGlzLl9oZWFkO3JldHVybiB0aGlzLl9tYXAuZGVsZXRlKGUua2V5KSx0aGlzLnJlbW92ZUl0ZW0oZSksdGhpcy5fc2l6ZS0tLGUudmFsdWV9Zm9yRWFjaChlLHQpe2NvbnN0IG49dGhpcy5fc3RhdGU7bGV0IHI9dGhpcy5faGVhZDtmb3IoO3I7KXtpZih0P2UuYmluZCh0KShyLnZhbHVlLHIua2V5LHRoaXMpOmUoci52YWx1ZSxyLmtleSx0aGlzKSx0aGlzLl9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7cj1yLm5leHR9fWtleXMoKXtjb25zdCBlPXRoaXMsdD10aGlzLl9zdGF0ZTtsZXQgbj10aGlzLl9oZWFkO2NvbnN0IHI9e1tTeW1ib2wuaXRlcmF0b3JdOigpPT5yLG5leHQoKXtpZihlLl9zdGF0ZSE9PXQpdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7aWYobil7Y29uc3QgZT17dmFsdWU6bi5rZXksZG9uZTohMX07cmV0dXJuIG49bi5uZXh0LGV9cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiByfXZhbHVlcygpe2NvbnN0IGU9dGhpcyx0PXRoaXMuX3N0YXRlO2xldCBuPXRoaXMuX2hlYWQ7Y29uc3Qgcj17W1N5bWJvbC5pdGVyYXRvcl06KCk9PnIsbmV4dCgpe2lmKGUuX3N0YXRlIT09dCl0aHJvdyBuZXcgRXJyb3IoIkxpbmtlZE1hcCBnb3QgbW9kaWZpZWQgZHVyaW5nIGl0ZXJhdGlvbi4iKTtpZihuKXtjb25zdCBlPXt2YWx1ZTpuLnZhbHVlLGRvbmU6ITF9O3JldHVybiBuPW4ubmV4dCxlfXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19fTtyZXR1cm4gcn1lbnRyaWVzKCl7Y29uc3QgZT10aGlzLHQ9dGhpcy5fc3RhdGU7bGV0IG49dGhpcy5faGVhZDtjb25zdCByPXtbU3ltYm9sLml0ZXJhdG9yXTooKT0+cixuZXh0KCl7aWYoZS5fc3RhdGUhPT10KXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO2lmKG4pe2NvbnN0IGU9e3ZhbHVlOltuLmtleSxuLnZhbHVlXSxkb25lOiExfTtyZXR1cm4gbj1uLm5leHQsZX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fX07cmV0dXJuIHJ9WyhKbj1TeW1ib2wudG9TdHJpbmdUYWcsU3ltYm9sLml0ZXJhdG9yKV0oKXtyZXR1cm4gdGhpcy5lbnRyaWVzKCl9dHJpbU9sZChlKXtpZihlPj10aGlzLnNpemUpcmV0dXJuO2lmKDA9PT1lKXJldHVybiB2b2lkIHRoaXMuY2xlYXIoKTtsZXQgdD10aGlzLl9oZWFkLG49dGhpcy5zaXplO2Zvcig7dCYmbj5lOyl0aGlzLl9tYXAuZGVsZXRlKHQua2V5KSx0PXQubmV4dCxuLS07dGhpcy5faGVhZD10LHRoaXMuX3NpemU9bix0JiYodC5wcmV2aW91cz12b2lkIDApLHRoaXMuX3N0YXRlKyt9YWRkSXRlbUZpcnN0KGUpe2lmKHRoaXMuX2hlYWR8fHRoaXMuX3RhaWwpe2lmKCF0aGlzLl9oZWFkKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7ZS5uZXh0PXRoaXMuX2hlYWQsdGhpcy5faGVhZC5wcmV2aW91cz1lfWVsc2UgdGhpcy5fdGFpbD1lO3RoaXMuX2hlYWQ9ZSx0aGlzLl9zdGF0ZSsrfWFkZEl0ZW1MYXN0KGUpe2lmKHRoaXMuX2hlYWR8fHRoaXMuX3RhaWwpe2lmKCF0aGlzLl90YWlsKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7ZS5wcmV2aW91cz10aGlzLl90YWlsLHRoaXMuX3RhaWwubmV4dD1lfWVsc2UgdGhpcy5faGVhZD1lO3RoaXMuX3RhaWw9ZSx0aGlzLl9zdGF0ZSsrfXJlbW92ZUl0ZW0oZSl7aWYoZT09PXRoaXMuX2hlYWQmJmU9PT10aGlzLl90YWlsKXRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwO2Vsc2UgaWYoZT09PXRoaXMuX2hlYWQpe2lmKCFlLm5leHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTtlLm5leHQucHJldmlvdXM9dm9pZCAwLHRoaXMuX2hlYWQ9ZS5uZXh0fWVsc2UgaWYoZT09PXRoaXMuX3RhaWwpe2lmKCFlLnByZXZpb3VzKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7ZS5wcmV2aW91cy5uZXh0PXZvaWQgMCx0aGlzLl90YWlsPWUucHJldmlvdXN9ZWxzZXtjb25zdCB0PWUubmV4dCxuPWUucHJldmlvdXM7aWYoIXR8fCFuKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7dC5wcmV2aW91cz1uLG4ubmV4dD10fWUubmV4dD12b2lkIDAsZS5wcmV2aW91cz12b2lkIDAsdGhpcy5fc3RhdGUrK310b3VjaChlLHQpe2lmKCF0aGlzLl9oZWFkfHwhdGhpcy5fdGFpbCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2lmKDE9PT10fHwyPT09dClpZigxPT09dCl7aWYoZT09PXRoaXMuX2hlYWQpcmV0dXJuO2NvbnN0IHQ9ZS5uZXh0LG49ZS5wcmV2aW91cztlPT09dGhpcy5fdGFpbD8obi5uZXh0PXZvaWQgMCx0aGlzLl90YWlsPW4pOih0LnByZXZpb3VzPW4sbi5uZXh0PXQpLGUucHJldmlvdXM9dm9pZCAwLGUubmV4dD10aGlzLl9oZWFkLHRoaXMuX2hlYWQucHJldmlvdXM9ZSx0aGlzLl9oZWFkPWUsdGhpcy5fc3RhdGUrK31lbHNlIGlmKDI9PT10KXtpZihlPT09dGhpcy5fdGFpbClyZXR1cm47Y29uc3QgdD1lLm5leHQsbj1lLnByZXZpb3VzO2U9PT10aGlzLl9oZWFkPyh0LnByZXZpb3VzPXZvaWQgMCx0aGlzLl9oZWFkPXQpOih0LnByZXZpb3VzPW4sbi5uZXh0PXQpLGUubmV4dD12b2lkIDAsZS5wcmV2aW91cz10aGlzLl90YWlsLHRoaXMuX3RhaWwubmV4dD1lLHRoaXMuX3RhaWw9ZSx0aGlzLl9zdGF0ZSsrfX10b0pTT04oKXtjb25zdCBlPVtdO3JldHVybiB0aGlzLmZvckVhY2goKCh0LG4pPT57ZS5wdXNoKFtuLHRdKX0pKSxlfWZyb21KU09OKGUpe3RoaXMuY2xlYXIoKTtmb3IoY29uc3RbdCxuXW9mIGUpdGhpcy5zZXQodCxuKX19ZnVuY3Rpb24gcnIoZSx0LG4pe2lmKCFufHxuLmxlbmd0aDx0Lmxlbmd0aClyZXR1cm4gbnVsbDtsZXQgcjtyZXR1cm4gcj1lP0cobix0KTowPT09bi5pbmRleE9mKHQpLHI/dC5sZW5ndGg+MD9be3N0YXJ0OjAsZW5kOnQubGVuZ3RofV06W106bnVsbH1yci5iaW5kKHZvaWQgMCwhMSkscnIuYmluZCh2b2lkIDAsITApO2NvbnN0IGlyPW5ldyBTZXQ7IigpW117fTw+YCdcIi0vOzosLj8hIi5zcGxpdCgiIikuZm9yRWFjaCgoZT0+aXIuYWRkKGUuY2hhckNvZGVBdCgwKSkpKSxuZXcgY2xhc3MgZXh0ZW5kcyBucntjb25zdHJ1Y3RvcihlLHQ9MSl7c3VwZXIoKSx0aGlzLl9saW1pdD1lLHRoaXMuX3JhdGlvPU1hdGgubWluKE1hdGgubWF4KDAsdCksMSl9Z2V0IGxpbWl0KCl7cmV0dXJuIHRoaXMuX2xpbWl0fXNldCBsaW1pdChlKXt0aGlzLl9saW1pdD1lLHRoaXMuY2hlY2tUcmltKCl9Z2V0KGUsdD0yKXtyZXR1cm4gc3VwZXIuZ2V0KGUsdCl9cGVlayhlKXtyZXR1cm4gc3VwZXIuZ2V0KGUsMCl9c2V0KGUsdCl7cmV0dXJuIHN1cGVyLnNldChlLHQsMiksdGhpcy5jaGVja1RyaW0oKSx0aGlzfWNoZWNrVHJpbSgpe3RoaXMuc2l6ZT50aGlzLl9saW1pdCYmdGhpcy50cmltT2xkKE1hdGgucm91bmQodGhpcy5fbGltaXQqdGhpcy5fcmF0aW8pKX19KDFlNCk7ZnVuY3Rpb24gYXIoKXtjb25zdCBlPVtdLHQ9W107Zm9yKGxldCBlPTA7ZTw9MTI4O2UrKyl0W2VdPTA7Zm9yKGxldCBuPTA7bjw9MTI4O24rKyllLnB1c2godC5zbGljZSgwKSk7cmV0dXJuIGV9dmFyIG9yO2FyKCksYXIoKSxhcigpLGZ1bmN0aW9uKGUpe2UuRGVmYXVsdD1bLTEwMCwwXSxlLmlzRGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4hZXx8Mj09PWUubGVuZ3RoJiYtMTAwPT09ZVswXSYmMD09PWVbMV19fShvcnx8KG9yPXt9KSk7Y29uc3Qgc3I9bmV3IFJlZ0V4cChgXFwkXFwoJHt6dC5pY29uTmFtZUV4cHJlc3Npb259KD86JHt6dC5pY29uTW9kaWZpZXJFeHByZXNzaW9ufSk/XFwpYCwiZyIpO25ldyBSZWdFeHAoenQuaWNvbk5hbWVDaGFyYWN0ZXIpO2NvbnN0IGxyPW5ldyBSZWdFeHAoYChcXFxcKT8ke3NyLnNvdXJjZX1gLCJnIik7bmV3IFJlZ0V4cChgXFxcXCR7c3Iuc291cmNlfWAsImciKSxuZXcgUmVnRXhwKGAoXFxzKT8oXFxcXCk/JHtzci5zb3VyY2V9KFxccyk/YCwiZyIpO2NsYXNzIGNye2NvbnN0cnVjdG9yKGU9IiIsdD0hMSl7dmFyIG4scixpLGE7aWYodGhpcy52YWx1ZT1lLCJzdHJpbmciIT10eXBlb2YgdGhpcy52YWx1ZSl0aHJvdyhhPSJ2YWx1ZSIpP25ldyBFcnJvcihgSWxsZWdhbCBhcmd1bWVudDogJHthfWApOm5ldyBFcnJvcigiSWxsZWdhbCBhcmd1bWVudCIpOyJib29sZWFuIj09dHlwZW9mIHQ/KHRoaXMuaXNUcnVzdGVkPXQsdGhpcy5zdXBwb3J0VGhlbWVJY29ucz0hMSx0aGlzLnN1cHBvcnRIdG1sPSExKToodGhpcy5pc1RydXN0ZWQ9bnVsbCE9PShuPXQuaXNUcnVzdGVkKSYmdm9pZCAwIT09bj9uOnZvaWQgMCx0aGlzLnN1cHBvcnRUaGVtZUljb25zPW51bGwhPT0ocj10LnN1cHBvcnRUaGVtZUljb25zKSYmdm9pZCAwIT09ciYmcix0aGlzLnN1cHBvcnRIdG1sPW51bGwhPT0oaT10LnN1cHBvcnRIdG1sKSYmdm9pZCAwIT09aSYmaSl9YXBwZW5kVGV4dChlLHQ9MCl7dmFyIG47cmV0dXJuIHRoaXMudmFsdWUrPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1tcXGAqX3t9W1xdKCkjK1wtIV0vZywiXFwkJiIpfSh0aGlzLnN1cHBvcnRUaGVtZUljb25zPyhuPWUsbi5yZXBsYWNlKGxyLCgoZSx0KT0+dD9lOmBcXCR7ZX1gKSkpOmUpLnJlcGxhY2UoLyhbIFx0XSspL2csKChlLHQpPT4iJm5ic3A7Ii5yZXBlYXQodC5sZW5ndGgpKSkucmVwbGFjZSgvXD4vZ20sIlxcPiIpLnJlcGxhY2UoL1xuL2csMT09PXQ/IlxcXG4iOiJcblxuIiksdGhpc31hcHBlbmRNYXJrZG93bihlKXtyZXR1cm4gdGhpcy52YWx1ZSs9ZSx0aGlzfWFwcGVuZENvZGVibG9jayhlLHQpe3JldHVybiB0aGlzLnZhbHVlKz0iXG5gYGAiLHRoaXMudmFsdWUrPWUsdGhpcy52YWx1ZSs9IlxuIix0aGlzLnZhbHVlKz10LHRoaXMudmFsdWUrPSJcbmBgYFxuIix0aGlzfX12YXIgaHIsZHI7ZnVuY3Rpb24gdXIoZSx0LG4pe3RbaHIuRElfVEFSR0VUXT09PXQ/dFtoci5ESV9ERVBFTkRFTkNJRVNdLnB1c2goe2lkOmUsaW5kZXg6bn0pOih0W2hyLkRJX0RFUEVOREVOQ0lFU109W3tpZDplLGluZGV4Om59XSx0W2hyLkRJX1RBUkdFVF09dCl9ZnVuY3Rpb24gcHIoZSl7aWYoaHIuc2VydmljZUlkcy5oYXMoZSkpcmV0dXJuIGhyLnNlcnZpY2VJZHMuZ2V0KGUpO2NvbnN0IHQ9ZnVuY3Rpb24oZSxuLHIpe2lmKDMhPT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiQElTZXJ2aWNlTmFtZS1kZWNvcmF0b3IgY2FuIG9ubHkgYmUgdXNlZCB0byBkZWNvcmF0ZSBhIHBhcmFtZXRlciIpO3VyKHQsZSxyKX07cmV0dXJuIHQudG9TdHJpbmc9KCk9PmUsaHIuc2VydmljZUlkcy5zZXQoZSx0KSx0fSFmdW5jdGlvbihlKXtlLnNlcnZpY2VJZHM9bmV3IE1hcCxlLkRJX1RBUkdFVD0iJGRpJHRhcmdldCIsZS5ESV9ERVBFTkRFTkNJRVM9IiRkaSRkZXBlbmRlbmNpZXMiLGUuZ2V0U2VydmljZURlcGVuZGVuY2llcz1mdW5jdGlvbih0KXtyZXR1cm4gdFtlLkRJX0RFUEVOREVOQ0lFU118fFtdfX0oaHJ8fChocj17fSkpLHByKCJpbnN0YW50aWF0aW9uU2VydmljZSIpLHByKCJsb2dTZXJ2aWNlIikscHIoImxvZ2dlclNlcnZpY2UiKSxmdW5jdGlvbihlKXtlW2UuVHJhY2U9MF09IlRyYWNlIixlW2UuRGVidWc9MV09IkRlYnVnIixlW2UuSW5mbz0yXT0iSW5mbyIsZVtlLldhcm5pbmc9M109Ildhcm5pbmciLGVbZS5FcnJvcj00XT0iRXJyb3IiLGVbZS5Dcml0aWNhbD01XT0iQ3JpdGljYWwiLGVbZS5PZmY9Nl09Ik9mZiJ9KGRyfHwoZHI9e30pKTtjb25zdCBtcj1kci5JbmZvO2NsYXNzIGZyIGV4dGVuZHMgcHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5sZXZlbD1tcix0aGlzLl9vbkRpZENoYW5nZUxvZ0xldmVsPXRoaXMuX3JlZ2lzdGVyKG5ldyBQKSx0aGlzLm9uRGlkQ2hhbmdlTG9nTGV2ZWw9dGhpcy5fb25EaWRDaGFuZ2VMb2dMZXZlbC5ldmVudH1zZXRMZXZlbChlKXt0aGlzLmxldmVsIT09ZSYmKHRoaXMubGV2ZWw9ZSx0aGlzLl9vbkRpZENoYW5nZUxvZ0xldmVsLmZpcmUodGhpcy5sZXZlbCkpfWdldExldmVsKCl7cmV0dXJuIHRoaXMubGV2ZWx9fWNsYXNzIGdyIGV4dGVuZHMgZnJ7Y29uc3RydWN0b3IoZT1tcil7c3VwZXIoKSx0aGlzLnNldExldmVsKGUpfXRyYWNlKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD1kci5UcmFjZSYmY29uc29sZS5sb2coIiVjVFJBQ0UiLCJjb2xvcjogIzg4OCIsZSwuLi50KX1kZWJ1ZyhlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9ZHIuRGVidWcmJmNvbnNvbGUubG9nKCIlY0RFQlVHIiwiYmFja2dyb3VuZDogI2VlZTsgY29sb3I6ICM4ODgiLGUsLi4udCl9aW5mbyhlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9ZHIuSW5mbyYmY29uc29sZS5sb2coIiVjIElORk8iLCJjb2xvcjogIzMzZiIsZSwuLi50KX13YXJuKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD1kci5XYXJuaW5nJiZjb25zb2xlLmxvZygiJWMgV0FSTiIsImNvbG9yOiAjOTkzIixlLC4uLnQpfWVycm9yKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD1kci5FcnJvciYmY29uc29sZS5sb2coIiVjICBFUlIiLCJjb2xvcjogI2YzMyIsZSwuLi50KX1jcml0aWNhbChlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9ZHIuQ3JpdGljYWwmJmNvbnNvbGUubG9nKCIlY0NSSVRJIiwiYmFja2dyb3VuZDogI2YzMzsgY29sb3I6IHdoaXRlIixlLC4uLnQpfWRpc3Bvc2UoKXt9Zmx1c2goKXt9fWNsYXNzIGJye3N0YXRpYyBjaG9yZChlLHQpe3JldHVybiBmdW5jdGlvbihlLHQpe3JldHVybihlfCg2NTUzNSZ0KTw8MTY+Pj4wKT4+PjB9KGUsdCl9fXZhciB3cixfcix2cjtmdW5jdGlvbiB5cihlLHQsbixyLGkpe3JldHVybiBmdW5jdGlvbihlLHQsbixyLGkpe2lmKDA9PT1yKXJldHVybiEwO2NvbnN0IGE9dC5jaGFyQ29kZUF0KHItMSk7aWYoMCE9PWUuZ2V0KGEpKXJldHVybiEwO2lmKDEzPT09YXx8MTA9PT1hKXJldHVybiEwO2lmKGk+MCl7Y29uc3Qgbj10LmNoYXJDb2RlQXQocik7aWYoMCE9PWUuZ2V0KG4pKXJldHVybiEwfXJldHVybiExfShlLHQsMCxyLGkpJiZmdW5jdGlvbihlLHQsbixyLGkpe2lmKHIraT09PW4pcmV0dXJuITA7Y29uc3QgYT10LmNoYXJDb2RlQXQocitpKTtpZigwIT09ZS5nZXQoYSkpcmV0dXJuITA7aWYoMTM9PT1hfHwxMD09PWEpcmV0dXJuITA7aWYoaT4wKXtjb25zdCBuPXQuY2hhckNvZGVBdChyK2ktMSk7aWYoMCE9PWUuZ2V0KG4pKXJldHVybiEwfXJldHVybiExfShlLHQsbixyLGkpfWJyLkN0cmxDbWQ9MjA0OCxici5TaGlmdD0xMDI0LGJyLkFsdD01MTIsYnIuV2luQ3RybD0yNTYsZnVuY3Rpb24oZSl7ZVtlLkxlZnQ9MV09IkxlZnQiLGVbZS5DZW50ZXI9Ml09IkNlbnRlciIsZVtlLlJpZ2h0PTRdPSJSaWdodCIsZVtlLkZ1bGw9N109IkZ1bGwifSh3cnx8KHdyPXt9KSksZnVuY3Rpb24oZSl7ZVtlLklubGluZT0xXT0iSW5saW5lIixlW2UuR3V0dGVyPTJdPSJHdXR0ZXIifShfcnx8KF9yPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkJvdGg9MF09IkJvdGgiLGVbZS5SaWdodD0xXT0iUmlnaHQiLGVbZS5MZWZ0PTJdPSJMZWZ0IixlW2UuTm9uZT0zXT0iTm9uZSJ9KHZyfHwodnI9e30pKTtjbGFzcyBUcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3dvcmRTZXBhcmF0b3JzPWUsdGhpcy5fc2VhcmNoUmVnZXg9dCx0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfXJlc2V0KGUpe3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleD1lLHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9LTEsdGhpcy5fcHJldk1hdGNoTGVuZ3RoPTB9bmV4dChlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBuO2Rve2lmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgrdGhpcy5fcHJldk1hdGNoTGVuZ3RoPT09dClyZXR1cm4gbnVsbDtpZihuPXRoaXMuX3NlYXJjaFJlZ2V4LmV4ZWMoZSksIW4pcmV0dXJuIG51bGw7Y29uc3Qgcj1uLmluZGV4LGk9blswXS5sZW5ndGg7aWYocj09PXRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgmJmk9PT10aGlzLl9wcmV2TWF0Y2hMZW5ndGgpe2lmKDA9PT1pKXtKKGUsdCx0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgpPjY1NTM1P3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleCs9Mjp0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTE7Y29udGludWV9cmV0dXJuIG51bGx9aWYodGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleD1yLHRoaXMuX3ByZXZNYXRjaExlbmd0aD1pLCF0aGlzLl93b3JkU2VwYXJhdG9yc3x8eXIodGhpcy5fd29yZFNlcGFyYXRvcnMsZSx0LHIsaSkpcmV0dXJuIG59d2hpbGUobik7cmV0dXJuIG51bGx9fWNsYXNzIGtye2NvbnN0cnVjdG9yKGUpe3RoaXMub3B0aW9ucz1lLHRoaXMuYWxsb3dlZENvZGVQb2ludHM9bmV3IFNldChlLmFsbG93ZWRDb2RlUG9pbnRzKSx0aGlzLmFtYmlndW91c0NoYXJhY3RlcnM9WS5nZXRJbnN0YW5jZShuZXcgU2V0KGUuYWxsb3dlZExvY2FsZXMpKX1nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCl7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuImFsbE5vbkJhc2ljQXNjaWkiO2NvbnN0IGU9bmV3IFNldDtpZih0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycylmb3IoY29uc3QgdCBvZiBRLmNvZGVQb2ludHMpU3IoU3RyaW5nLmZyb21Db2RlUG9pbnQodCkpfHxlLmFkZCh0KTtpZih0aGlzLm9wdGlvbnMuYW1iaWd1b3VzQ2hhcmFjdGVycylmb3IoY29uc3QgdCBvZiB0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuZ2V0Q29uZnVzYWJsZUNvZGVQb2ludHMoKSllLmFkZCh0KTtmb3IoY29uc3QgdCBvZiB0aGlzLmFsbG93ZWRDb2RlUG9pbnRzKWUuZGVsZXRlKHQpO3JldHVybiBlfXNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkoZSx0KXtjb25zdCBuPWUuY29kZVBvaW50QXQoMCk7aWYodGhpcy5hbGxvd2VkQ29kZVBvaW50cy5oYXMobikpcmV0dXJuIDA7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuIDE7bGV0IHI9ITEsaT0hMTtpZih0KWZvcihsZXQgZSBvZiB0KXtjb25zdCB0PWUuY29kZVBvaW50QXQoMCksbj0oYT1lLFgudGVzdChhKSk7cj1yfHxuLG58fHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyh0KXx8US5pc0ludmlzaWJsZUNoYXJhY3Rlcih0KXx8KGk9ITApfXZhciBhO3JldHVybiFyJiZpPzA6dGhpcy5vcHRpb25zLmludmlzaWJsZUNoYXJhY3RlcnMmJiFTcihlKSYmUS5pc0ludmlzaWJsZUNoYXJhY3RlcihuKT8yOnRoaXMub3B0aW9ucy5hbWJpZ3VvdXNDaGFyYWN0ZXJzJiZ0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuaXNBbWJpZ3VvdXMobik/MzowfX1mdW5jdGlvbiBTcihlKXtyZXR1cm4iICI9PT1lfHwiXG4iPT09ZXx8Ilx0Ij09PWV9dmFyIENyPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihpLGEpe2Z1bmN0aW9uIG8oZSl7dHJ5e2woci5uZXh0KGUpKX1jYXRjaChlKXthKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXtsKHIudGhyb3coZSkpfWNhdGNoKGUpe2EoZSl9fWZ1bmN0aW9uIGwoZSl7dmFyIHQ7ZS5kb25lP2koZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKG8scyl9bCgocj1yLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfTtjbGFzcyB4ciBleHRlbmRzIGNsYXNze2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMuX3VyaT1lLHRoaXMuX2xpbmVzPXQsdGhpcy5fZW9sPW4sdGhpcy5fdmVyc2lvbklkPXIsdGhpcy5fbGluZVN0YXJ0cz1udWxsLHRoaXMuX2NhY2hlZFRleHRWYWx1ZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9saW5lcy5sZW5ndGg9MH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLl92ZXJzaW9uSWR9Z2V0VGV4dCgpe3JldHVybiBudWxsPT09dGhpcy5fY2FjaGVkVGV4dFZhbHVlJiYodGhpcy5fY2FjaGVkVGV4dFZhbHVlPXRoaXMuX2xpbmVzLmpvaW4odGhpcy5fZW9sKSksdGhpcy5fY2FjaGVkVGV4dFZhbHVlfW9uRXZlbnRzKGUpe2UuZW9sJiZlLmVvbCE9PXRoaXMuX2VvbCYmKHRoaXMuX2VvbD1lLmVvbCx0aGlzLl9saW5lU3RhcnRzPW51bGwpO2NvbnN0IHQ9ZS5jaGFuZ2VzO2Zvcihjb25zdCBlIG9mIHQpdGhpcy5fYWNjZXB0RGVsZXRlUmFuZ2UoZS5yYW5nZSksdGhpcy5fYWNjZXB0SW5zZXJ0VGV4dChuZXcgUWUoZS5yYW5nZS5zdGFydExpbmVOdW1iZXIsZS5yYW5nZS5zdGFydENvbHVtbiksZS50ZXh0KTt0aGlzLl92ZXJzaW9uSWQ9ZS52ZXJzaW9uSWQsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9X2Vuc3VyZUxpbmVTdGFydHMoKXtpZighdGhpcy5fbGluZVN0YXJ0cyl7Y29uc3QgZT10aGlzLl9lb2wubGVuZ3RoLHQ9dGhpcy5fbGluZXMubGVuZ3RoLG49bmV3IFVpbnQzMkFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDtyKyspbltyXT10aGlzLl9saW5lc1tyXS5sZW5ndGgrZTt0aGlzLl9saW5lU3RhcnRzPW5ldyBkdChuKX19X3NldExpbmVUZXh0KGUsdCl7dGhpcy5fbGluZXNbZV09dCx0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLnNldFZhbHVlKGUsdGhpcy5fbGluZXNbZV0ubGVuZ3RoK3RoaXMuX2VvbC5sZW5ndGgpfV9hY2NlcHREZWxldGVSYW5nZShlKXtpZihlLnN0YXJ0TGluZU51bWJlciE9PWUuZW5kTGluZU51bWJlcil0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5lbmRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSksdGhpcy5fbGluZXMuc3BsaWNlKGUuc3RhcnRMaW5lTnVtYmVyLGUuZW5kTGluZU51bWJlci1lLnN0YXJ0TGluZU51bWJlciksdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5yZW1vdmVWYWx1ZXMoZS5zdGFydExpbmVOdW1iZXIsZS5lbmRMaW5lTnVtYmVyLWUuc3RhcnRMaW5lTnVtYmVyKTtlbHNle2lmKGUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbilyZXR1cm47dGhpcy5fc2V0TGluZVRleHQoZS5zdGFydExpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCxlLnN0YXJ0Q29sdW1uLTEpK3RoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSl9fV9hY2NlcHRJbnNlcnRUZXh0KGUsdCl7aWYoMD09PXQubGVuZ3RoKXJldHVybjtjb25zdCBuPXQuc3BsaXQoL1xyXG58XHJ8XG4vKTtpZigxPT09bi5sZW5ndGgpcmV0dXJuIHZvaWQgdGhpcy5fc2V0TGluZVRleHQoZS5saW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuY29sdW1uLTEpK25bMF0rdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmNvbHVtbi0xKSk7bltuLmxlbmd0aC0xXSs9dGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmNvbHVtbi0xKSx0aGlzLl9zZXRMaW5lVGV4dChlLmxpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsZS5jb2x1bW4tMSkrblswXSk7Y29uc3Qgcj1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgtMSk7Zm9yKGxldCB0PTE7dDxuLmxlbmd0aDt0KyspdGhpcy5fbGluZXMuc3BsaWNlKGUubGluZU51bWJlcit0LTEsMCxuW3RdKSxyW3QtMV09blt0XS5sZW5ndGgrdGhpcy5fZW9sLmxlbmd0aDt0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLmluc2VydFZhbHVlcyhlLmxpbmVOdW1iZXIscil9fXtnZXQgdXJpKCl7cmV0dXJuIHRoaXMuX3VyaX1nZXQgZW9sKCl7cmV0dXJuIHRoaXMuX2VvbH1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLmdldFRleHQoKX1nZXRMaW5lc0NvbnRlbnQoKXtyZXR1cm4gdGhpcy5fbGluZXMuc2xpY2UoMCl9Z2V0TGluZUNvdW50KCl7cmV0dXJuIHRoaXMuX2xpbmVzLmxlbmd0aH1nZXRMaW5lQ29udGVudChlKXtyZXR1cm4gdGhpcy5fbGluZXNbZS0xXX1nZXRXb3JkQXRQb3NpdGlvbihlLHQpe2NvbnN0IG49ZnQoZS5jb2x1bW4sZnVuY3Rpb24oZSl7bGV0IHQ9cHQ7aWYoZSYmZSBpbnN0YW5jZW9mIFJlZ0V4cClpZihlLmdsb2JhbCl0PWU7ZWxzZXtsZXQgbj0iZyI7ZS5pZ25vcmVDYXNlJiYobis9ImkiKSxlLm11bHRpbGluZSYmKG4rPSJtIiksZS51bmljb2RlJiYobis9InUiKSx0PW5ldyBSZWdFeHAoZS5zb3VyY2Usbil9cmV0dXJuIHQubGFzdEluZGV4PTAsdH0odCksdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLDApO3JldHVybiBuP25ldyBaZShlLmxpbmVOdW1iZXIsbi5zdGFydENvbHVtbixlLmxpbmVOdW1iZXIsbi5lbmRDb2x1bW4pOm51bGx9d29yZHMoZSl7Y29uc3QgdD10aGlzLl9saW5lcyxuPXRoaXMuX3dvcmRlbml6ZS5iaW5kKHRoaXMpO2xldCByPTAsaT0iIixhPTAsbz1bXTtyZXR1cm57KltTeW1ib2wuaXRlcmF0b3JdKCl7Zm9yKDs7KWlmKGE8by5sZW5ndGgpe2NvbnN0IGU9aS5zdWJzdHJpbmcob1thXS5zdGFydCxvW2FdLmVuZCk7YSs9MSx5aWVsZCBlfWVsc2V7aWYoIShyPHQubGVuZ3RoKSlicmVhaztpPXRbcl0sbz1uKGksZSksYT0wLHIrPTF9fX19Z2V0TGluZVdvcmRzKGUsdCl7Y29uc3Qgbj10aGlzLl9saW5lc1tlLTFdLHI9dGhpcy5fd29yZGVuaXplKG4sdCksaT1bXTtmb3IoY29uc3QgZSBvZiByKWkucHVzaCh7d29yZDpuLnN1YnN0cmluZyhlLnN0YXJ0LGUuZW5kKSxzdGFydENvbHVtbjplLnN0YXJ0KzEsZW5kQ29sdW1uOmUuZW5kKzF9KTtyZXR1cm4gaX1fd29yZGVuaXplKGUsdCl7Y29uc3Qgbj1bXTtsZXQgcjtmb3IodC5sYXN0SW5kZXg9MDsocj10LmV4ZWMoZSkpJiYwIT09clswXS5sZW5ndGg7KW4ucHVzaCh7c3RhcnQ6ci5pbmRleCxlbmQ6ci5pbmRleCtyWzBdLmxlbmd0aH0pO3JldHVybiBufWdldFZhbHVlSW5SYW5nZShlKXtpZigoZT10aGlzLl92YWxpZGF0ZVJhbmdlKGUpKS5zdGFydExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXIpcmV0dXJuIHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLnN0YXJ0Q29sdW1uLTEsZS5lbmRDb2x1bW4tMSk7Y29uc3QgdD10aGlzLl9lb2wsbj1lLnN0YXJ0TGluZU51bWJlci0xLHI9ZS5lbmRMaW5lTnVtYmVyLTEsaT1bXTtpLnB1c2godGhpcy5fbGluZXNbbl0uc3Vic3RyaW5nKGUuc3RhcnRDb2x1bW4tMSkpO2ZvcihsZXQgZT1uKzE7ZTxyO2UrKylpLnB1c2godGhpcy5fbGluZXNbZV0pO3JldHVybiBpLnB1c2godGhpcy5fbGluZXNbcl0uc3Vic3RyaW5nKDAsZS5lbmRDb2x1bW4tMSkpLGkuam9pbih0KX1vZmZzZXRBdChlKXtyZXR1cm4gZT10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKGUpLHRoaXMuX2Vuc3VyZUxpbmVTdGFydHMoKSx0aGlzLl9saW5lU3RhcnRzLmdldFByZWZpeFN1bShlLmxpbmVOdW1iZXItMikrKGUuY29sdW1uLTEpfXBvc2l0aW9uQXQoZSl7ZT1NYXRoLmZsb29yKGUpLGU9TWF0aC5tYXgoMCxlKSx0aGlzLl9lbnN1cmVMaW5lU3RhcnRzKCk7Y29uc3QgdD10aGlzLl9saW5lU3RhcnRzLmdldEluZGV4T2YoZSksbj10aGlzLl9saW5lc1t0LmluZGV4XS5sZW5ndGg7cmV0dXJue2xpbmVOdW1iZXI6MSt0LmluZGV4LGNvbHVtbjoxK01hdGgubWluKHQucmVtYWluZGVyLG4pfX1fdmFsaWRhdGVSYW5nZShlKXtjb25zdCB0PXRoaXMuX3ZhbGlkYXRlUG9zaXRpb24oe2xpbmVOdW1iZXI6ZS5zdGFydExpbmVOdW1iZXIsY29sdW1uOmUuc3RhcnRDb2x1bW59KSxuPXRoaXMuX3ZhbGlkYXRlUG9zaXRpb24oe2xpbmVOdW1iZXI6ZS5lbmRMaW5lTnVtYmVyLGNvbHVtbjplLmVuZENvbHVtbn0pO3JldHVybiB0LmxpbmVOdW1iZXIhPT1lLnN0YXJ0TGluZU51bWJlcnx8dC5jb2x1bW4hPT1lLnN0YXJ0Q29sdW1ufHxuLmxpbmVOdW1iZXIhPT1lLmVuZExpbmVOdW1iZXJ8fG4uY29sdW1uIT09ZS5lbmRDb2x1bW4/e3N0YXJ0TGluZU51bWJlcjp0LmxpbmVOdW1iZXIsc3RhcnRDb2x1bW46dC5jb2x1bW4sZW5kTGluZU51bWJlcjpuLmxpbmVOdW1iZXIsZW5kQ29sdW1uOm4uY29sdW1ufTplfV92YWxpZGF0ZVBvc2l0aW9uKGUpe2lmKCFRZS5pc0lQb3NpdGlvbihlKSl0aHJvdyBuZXcgRXJyb3IoImJhZCBwb3NpdGlvbiIpO2xldHtsaW5lTnVtYmVyOnQsY29sdW1uOm59PWUscj0hMTtpZih0PDEpdD0xLG49MSxyPSEwO2Vsc2UgaWYodD50aGlzLl9saW5lcy5sZW5ndGgpdD10aGlzLl9saW5lcy5sZW5ndGgsbj10aGlzLl9saW5lc1t0LTFdLmxlbmd0aCsxLHI9ITA7ZWxzZXtjb25zdCBlPXRoaXMuX2xpbmVzW3QtMV0ubGVuZ3RoKzE7bjwxPyhuPTEscj0hMCk6bj5lJiYobj1lLHI9ITApfXJldHVybiByP3tsaW5lTnVtYmVyOnQsY29sdW1uOm59OmV9fWNsYXNzIExye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5faG9zdD1lLHRoaXMuX21vZGVscz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5PXQsdGhpcy5fZm9yZWlnbk1vZHVsZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKX1fZ2V0TW9kZWwoZSl7cmV0dXJuIHRoaXMuX21vZGVsc1tlXX1fZ2V0TW9kZWxzKCl7Y29uc3QgZT1bXTtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbW9kZWxzKS5mb3JFYWNoKCh0PT5lLnB1c2godGhpcy5fbW9kZWxzW3RdKSkpLGV9YWNjZXB0TmV3TW9kZWwoZSl7dGhpcy5fbW9kZWxzW2UudXJsXT1uZXcgeHIocWUucGFyc2UoZS51cmwpLGUubGluZXMsZS5FT0wsZS52ZXJzaW9uSWQpfWFjY2VwdE1vZGVsQ2hhbmdlZChlLHQpe2lmKCF0aGlzLl9tb2RlbHNbZV0pcmV0dXJuO3RoaXMuX21vZGVsc1tlXS5vbkV2ZW50cyh0KX1hY2NlcHRSZW1vdmVkTW9kZWwoZSl7dGhpcy5fbW9kZWxzW2VdJiZkZWxldGUgdGhpcy5fbW9kZWxzW2VdfWNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyhlLHQsbil7cmV0dXJuIENyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3Qgcj10aGlzLl9nZXRNb2RlbChlKTtyZXR1cm4gcj9jbGFzc3tzdGF0aWMgY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKGUsdCxuKXtjb25zdCByPW4/bi5zdGFydExpbmVOdW1iZXI6MSxpPW4/bi5lbmRMaW5lTnVtYmVyOmUuZ2V0TGluZUNvdW50KCksYT1uZXcga3IodCksbz1hLmdldENhbmRpZGF0ZUNvZGVQb2ludHMoKTtsZXQgczt2YXIgbDtzPSJhbGxOb25CYXNpY0FzY2lpIj09PW8/bmV3IFJlZ0V4cCgiW15cXHRcXG5cXHJcXHgyMC1cXHg3RV0iLCJnIik6bmV3IFJlZ0V4cChgWyR7bD1BcnJheS5mcm9tKG8pLm1hcCgoZT0+U3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpKS5qb2luKCIiKSxsLnJlcGxhY2UoL1tcXFx7XH1cKlwrXD9cfFxeXCRcLlxbXF1cKFwpXS9nLCJcXCQmIil9XWAsImciKTtjb25zdCBjPW5ldyBUcihudWxsLHMpLGg9W107bGV0IGQsdT0hMSxwPTAsbT0wLGY9MDtlOmZvcihsZXQgdD1yLG49aTt0PD1uO3QrKyl7Y29uc3Qgbj1lLmdldExpbmVDb250ZW50KHQpLHI9bi5sZW5ndGg7Yy5yZXNldCgwKTtkb3tpZihkPWMubmV4dChuKSxkKXtsZXQgZT1kLmluZGV4LGk9ZC5pbmRleCtkWzBdLmxlbmd0aDtlPjAmJiQobi5jaGFyQ29kZUF0KGUtMSkpJiZlLS0saSsxPHImJiQobi5jaGFyQ29kZUF0KGktMSkpJiZpKys7Y29uc3Qgbz1uLnN1YnN0cmluZyhlLGkpLHM9ZnQoZSsxLHB0LG4sMCksbD1hLnNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkobyxzP3Mud29yZDpudWxsKTtpZigwIT09bCl7Mz09PWw/cCsrOjI9PT1sP20rKzoxPT09bD9mKys6RigpO2NvbnN0IG49MWUzO2lmKGgubGVuZ3RoPj1uKXt1PSEwO2JyZWFrIGV9aC5wdXNoKG5ldyBaZSh0LGUrMSx0LGkrMSkpfX19d2hpbGUoZCl9cmV0dXJue3JhbmdlczpoLGhhc01vcmU6dSxhbWJpZ3VvdXNDaGFyYWN0ZXJDb3VudDpwLGludmlzaWJsZUNoYXJhY3RlckNvdW50Om0sbm9uQmFzaWNBc2NpaUNoYXJhY3RlckNvdW50OmZ9fXN0YXRpYyBjb21wdXRlVW5pY29kZUhpZ2hsaWdodFJlYXNvbihlLHQpe2NvbnN0IG49bmV3IGtyKHQpO3N3aXRjaChuLnNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkoZSxudWxsKSl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMjpyZXR1cm57a2luZDoxfTtjYXNlIDM6e2NvbnN0IHI9ZS5jb2RlUG9pbnRBdCgwKSxpPW4uYW1iaWd1b3VzQ2hhcmFjdGVycy5nZXRQcmltYXJ5Q29uZnVzYWJsZShyKSxhPVkuZ2V0TG9jYWxlcygpLmZpbHRlcigoZT0+IVkuZ2V0SW5zdGFuY2UobmV3IFNldChbLi4udC5hbGxvd2VkTG9jYWxlcyxlXSkpLmlzQW1iaWd1b3VzKHIpKSk7cmV0dXJue2tpbmQ6MCxjb25mdXNhYmxlV2l0aDpTdHJpbmcuZnJvbUNvZGVQb2ludChpKSxub3RBbWJpZ3VvdXNJbkxvY2FsZXM6YX19Y2FzZSAxOnJldHVybntraW5kOjJ9fX19LmNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyhyLHQsbik6e3JhbmdlczpbXSxoYXNNb3JlOiExLGFtYmlndW91c0NoYXJhY3RlckNvdW50OjAsaW52aXNpYmxlQ2hhcmFjdGVyQ291bnQ6MCxub25CYXNpY0FzY2lpQ2hhcmFjdGVyQ291bnQ6MH19KSl9Y29tcHV0ZURpZmYoZSx0LG4scil7cmV0dXJuIENyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgaT10aGlzLl9nZXRNb2RlbChlKSxhPXRoaXMuX2dldE1vZGVsKHQpO2lmKCFpfHwhYSlyZXR1cm4gbnVsbDtjb25zdCBvPWkuZ2V0TGluZXNDb250ZW50KCkscz1hLmdldExpbmVzQ29udGVudCgpLGw9bmV3IGF0KG8scyx7c2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzOiEwLHNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXM6ITAsc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2U6bixzaG91bGRNYWtlUHJldHR5RGlmZjohMCxtYXhDb21wdXRhdGlvblRpbWU6cn0pLmNvbXB1dGVEaWZmKCksYz0hKGwuY2hhbmdlcy5sZW5ndGg+MCkmJnRoaXMuX21vZGVsc0FyZUlkZW50aWNhbChpLGEpO3JldHVybntxdWl0RWFybHk6bC5xdWl0RWFybHksaWRlbnRpY2FsOmMsY2hhbmdlczpsLmNoYW5nZXN9fSkpfV9tb2RlbHNBcmVJZGVudGljYWwoZSx0KXtjb25zdCBuPWUuZ2V0TGluZUNvdW50KCk7aWYobiE9PXQuZ2V0TGluZUNvdW50KCkpcmV0dXJuITE7Zm9yKGxldCByPTE7cjw9bjtyKyspe2lmKGUuZ2V0TGluZUNvbnRlbnQocikhPT10LmdldExpbmVDb250ZW50KHIpKXJldHVybiExfXJldHVybiEwfWNvbXB1dGVNb3JlTWluaW1hbEVkaXRzKGUsdCl7cmV0dXJuIENyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3Qgbj10aGlzLl9nZXRNb2RlbChlKTtpZighbilyZXR1cm4gdDtjb25zdCByPVtdO2xldCBpO3Q9dC5zbGljZSgwKS5zb3J0KCgoZSx0KT0+e2lmKGUucmFuZ2UmJnQucmFuZ2UpcmV0dXJuIFplLmNvbXBhcmVSYW5nZXNVc2luZ1N0YXJ0cyhlLnJhbmdlLHQucmFuZ2UpO3JldHVybihlLnJhbmdlPzA6MSktKHQucmFuZ2U/MDoxKX0pKTtmb3IobGV0e3JhbmdlOmUsdGV4dDphLGVvbDpvfW9mIHQpe2lmKCJudW1iZXIiPT10eXBlb2YgbyYmKGk9byksWmUuaXNFbXB0eShlKSYmIWEpY29udGludWU7Y29uc3QgdD1uLmdldFZhbHVlSW5SYW5nZShlKTtpZihhPWEucmVwbGFjZSgvXHJcbnxcbnxcci9nLG4uZW9sKSx0PT09YSljb250aW51ZTtpZihNYXRoLm1heChhLmxlbmd0aCx0Lmxlbmd0aCk+THIuX2RpZmZMaW1pdCl7ci5wdXNoKHtyYW5nZTplLHRleHQ6YX0pO2NvbnRpbnVlfWNvbnN0IHM9dWUodCxhLCExKSxsPW4ub2Zmc2V0QXQoWmUubGlmdChlKS5nZXRTdGFydFBvc2l0aW9uKCkpO2Zvcihjb25zdCBlIG9mIHMpe2NvbnN0IHQ9bi5wb3NpdGlvbkF0KGwrZS5vcmlnaW5hbFN0YXJ0KSxpPW4ucG9zaXRpb25BdChsK2Uub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoKSxvPXt0ZXh0OmEuc3Vic3RyKGUubW9kaWZpZWRTdGFydCxlLm1vZGlmaWVkTGVuZ3RoKSxyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOnQubGluZU51bWJlcixzdGFydENvbHVtbjp0LmNvbHVtbixlbmRMaW5lTnVtYmVyOmkubGluZU51bWJlcixlbmRDb2x1bW46aS5jb2x1bW59fTtuLmdldFZhbHVlSW5SYW5nZShvLnJhbmdlKSE9PW8udGV4dCYmci5wdXNoKG8pfX1yZXR1cm4ibnVtYmVyIj09dHlwZW9mIGkmJnIucHVzaCh7ZW9sOmksdGV4dDoiIixyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOjAsc3RhcnRDb2x1bW46MCxlbmRMaW5lTnVtYmVyOjAsZW5kQ29sdW1uOjB9fSkscn0pKX1jb21wdXRlTGlua3MoZSl7cmV0dXJuIENyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgdD10aGlzLl9nZXRNb2RlbChlKTtyZXR1cm4gdD9mdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0TGluZUNvdW50JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRMaW5lQ29udGVudD9UdC5jb21wdXRlTGlua3MoZSk6W119KHQpOm51bGx9KSl9dGV4dHVhbFN1Z2dlc3QoZSx0LG4scil7cmV0dXJuIENyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgaT1uZXcgVSghMCksYT1uZXcgUmVnRXhwKG4sciksbz1uZXcgU2V0O2U6Zm9yKGxldCBuIG9mIGUpe2NvbnN0IGU9dGhpcy5fZ2V0TW9kZWwobik7aWYoZSlmb3IobGV0IG4gb2YgZS53b3JkcyhhKSlpZihuIT09dCYmaXNOYU4oTnVtYmVyKG4pKSYmKG8uYWRkKG4pLG8uc2l6ZT5Mci5fc3VnZ2VzdGlvbnNMaW1pdCkpYnJlYWsgZX1yZXR1cm57d29yZHM6QXJyYXkuZnJvbShvKSxkdXJhdGlvbjppLmVsYXBzZWQoKX19KSl9Y29tcHV0ZVdvcmRSYW5nZXMoZSx0LG4scil7cmV0dXJuIENyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgaT10aGlzLl9nZXRNb2RlbChlKTtpZighaSlyZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKTtjb25zdCBhPW5ldyBSZWdFeHAobixyKSxvPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlPXQuc3RhcnRMaW5lTnVtYmVyO2U8dC5lbmRMaW5lTnVtYmVyO2UrKyl7Y29uc3QgdD1pLmdldExpbmVXb3JkcyhlLGEpO2Zvcihjb25zdCBuIG9mIHQpe2lmKCFpc05hTihOdW1iZXIobi53b3JkKSkpY29udGludWU7bGV0IHQ9b1tuLndvcmRdO3R8fCh0PVtdLG9bbi53b3JkXT10KSx0LnB1c2goe3N0YXJ0TGluZU51bWJlcjplLHN0YXJ0Q29sdW1uOm4uc3RhcnRDb2x1bW4sZW5kTGluZU51bWJlcjplLGVuZENvbHVtbjpuLmVuZENvbHVtbn0pfX1yZXR1cm4gb30pKX1uYXZpZ2F0ZVZhbHVlU2V0KGUsdCxuLHIsaSl7cmV0dXJuIENyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgYT10aGlzLl9nZXRNb2RlbChlKTtpZighYSlyZXR1cm4gbnVsbDtjb25zdCBvPW5ldyBSZWdFeHAocixpKTt0LnN0YXJ0Q29sdW1uPT09dC5lbmRDb2x1bW4mJih0PXtzdGFydExpbmVOdW1iZXI6dC5zdGFydExpbmVOdW1iZXIsc3RhcnRDb2x1bW46dC5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOnQuZW5kTGluZU51bWJlcixlbmRDb2x1bW46dC5lbmRDb2x1bW4rMX0pO2NvbnN0IHM9YS5nZXRWYWx1ZUluUmFuZ2UodCksbD1hLmdldFdvcmRBdFBvc2l0aW9uKHtsaW5lTnVtYmVyOnQuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjp0LnN0YXJ0Q29sdW1ufSxvKTtpZighbClyZXR1cm4gbnVsbDtjb25zdCBjPWEuZ2V0VmFsdWVJblJhbmdlKGwpO3JldHVybiBrdC5JTlNUQU5DRS5uYXZpZ2F0ZVZhbHVlU2V0KHQscyxsLGMsbil9KSl9bG9hZEZvcmVpZ25Nb2R1bGUoZSx0LG4pe2NvbnN0IHI9ZnVuY3Rpb24oZSx0KXtjb25zdCBuPWU9PmZ1bmN0aW9uKCl7Y29uc3Qgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIHQoZSxuKX07bGV0IHI9e307Zm9yKGNvbnN0IHQgb2YgZSlyW3RdPW4odCk7cmV0dXJuIHJ9KG4sKChlLHQpPT50aGlzLl9ob3N0LmZocihlLHQpKSksaT17aG9zdDpyLGdldE1pcnJvck1vZGVsczooKT0+dGhpcy5fZ2V0TW9kZWxzKCl9O3JldHVybiB0aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeT8odGhpcy5fZm9yZWlnbk1vZHVsZT10aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeShpLHQpLFByb21pc2UucmVzb2x2ZShxKHRoaXMuX2ZvcmVpZ25Nb2R1bGUpKSk6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJVbmV4cGVjdGVkIHVzYWdlIikpfWZtcihlLHQpe2lmKCF0aGlzLl9mb3JlaWduTW9kdWxlfHwiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5fZm9yZWlnbk1vZHVsZVtlXSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIG9yIG1ldGhvZDogIitlKSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fZm9yZWlnbk1vZHVsZVtlXS5hcHBseSh0aGlzLl9mb3JlaWduTW9kdWxlLHQpKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9fX1Mci5fZGlmZkxpbWl0PTFlNSxMci5fc3VnZ2VzdGlvbnNMaW1pdD0xZTQsImZ1bmN0aW9uIj09dHlwZW9mIGltcG9ydFNjcmlwdHMmJih4Lm1vbmFjbz17ZWRpdG9yOnZvaWQgMCxsYW5ndWFnZXM6dm9pZCAwLGV4dHJhOnZvaWQgMCxDYW5jZWxsYXRpb25Ub2tlblNvdXJjZTpMdCxFbWl0dGVyOlAsS2V5Q29kZTpnbixLZXlNb2Q6YnIsUG9zaXRpb246UWUsUmFuZ2U6WmUsU2VsZWN0aW9uOkR0LFVyaTpxZSxUb2tlbjpabixNYXJrZG93blN0cmluZzpjcixNYXJrZG93blN0cmluZ1RleHROZXdsaW5lU3R5bGU6eW4sRGlzcG9zYWJsZTpwLERpc3Bvc2FibGVTdG9yZTp1LEVycm9ySGFuZGxlcjplLEFic3RyYWN0TG9nZ2VyOmZyLENvbnNvbGVMb2dnZXI6Z3IsVG9rZW5pemF0aW9uUmVzdWx0OmVyLEVuY29kZWRUb2tlbml6YXRpb25SZXN1bHQ6dHIsU2VsZWN0aW9uRGlyZWN0aW9uOkRuLE1hcmtlclNldmVyaXR5OlRuLE1hcmtlclRhZzprbixMb2dMZXZlbDp2bixlcnJvckhhbmRsZXI6dH0pO2xldCBFcj0hMTtmdW5jdGlvbiBBcihlKXtpZihFcilyZXR1cm47RXI9ITA7Y29uc3QgdD1uZXcgc2UoKGU9PntzZWxmLnBvc3RNZXNzYWdlKGUpfSksKHQ9Pm5ldyBMcih0LGUpKSk7c2VsZi5vbm1lc3NhZ2U9ZT0+e3Qub25tZXNzYWdlKGUuZGF0YSl9fWZ1bmN0aW9uIE1yKGUsdCwuLi5uKXsKLyohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVmVyc2lvbjogMC4zMy4wKGFjOWI2MzU5NGZhNDlkYjg0MjVlNDNhZjZmODhiZmQwNDk5ZGUzNTQpCiAgICAgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UKICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvbW9uYWNvLWVkaXRvci9ibG9iL21haW4vTElDRU5TRS50eHQKICAgICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpyZXR1cm4gZnVuY3Rpb24oZSx0KXtsZXQgbjtyZXR1cm4gbj0wPT09dC5sZW5ndGg/ZTplLnJlcGxhY2UoL1x7KFxkKylcfS9nLCgoZSxuKT0+e2xldCByPW5bMF07cmV0dXJuIHZvaWQgMCE9PXRbcl0/dFtyXTplfSkpLG59KHQsbil9ZnVuY3Rpb24gUnIoZSl7cmV0dXJuIE1yfXZhciBOcixJcixVcixIcixEcix6cixXcixPcixQcixxcixGcixCcixWcixLcixqcixHciwkcixKcixYcixZcixRcixacixlaSx0aSxuaSxyaSxpaSxhaSxvaSxzaSxsaSxjaSxoaSxkaSx1aSxwaSxtaSxmaSxnaSxiaSx3aSxfaSx2aSx5aSxUaSxraSxTaSxDaSx4aTtzZWxmLm9ubWVzc2FnZT1lPT57RXJ8fEFyKG51bGwpfSwoSXI9TnJ8fChOcj17fSkpLk1JTl9WQUxVRT0tMjE0NzQ4MzY0OCxJci5NQVhfVkFMVUU9MjE0NzQ4MzY0NywoSHI9VXJ8fChVcj17fSkpLk1JTl9WQUxVRT0wLEhyLk1BWF9WQUxVRT0yMTQ3NDgzNjQ3LCh6cj1Ecnx8KERyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT1OdW1iZXIuTUFYX1ZBTFVFJiYoZT1Vci5NQVhfVkFMVUUpLHQ9PT1OdW1iZXIuTUFYX1ZBTFVFJiYodD1Vci5NQVhfVkFMVUUpLHtsaW5lOmUsY2hhcmFjdGVyOnR9fSx6ci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB4YS5vYmplY3RMaXRlcmFsKHQpJiZ4YS51aW50ZWdlcih0LmxpbmUpJiZ4YS51aW50ZWdlcih0LmNoYXJhY3Rlcil9LChPcj1Xcnx8KFdyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKHhhLnVpbnRlZ2VyKGUpJiZ4YS51aW50ZWdlcih0KSYmeGEudWludGVnZXIobikmJnhhLnVpbnRlZ2VyKHIpKXJldHVybntzdGFydDpEci5jcmVhdGUoZSx0KSxlbmQ6RHIuY3JlYXRlKG4scil9O2lmKERyLmlzKGUpJiZEci5pcyh0KSlyZXR1cm57c3RhcnQ6ZSxlbmQ6dH07dGhyb3cgbmV3IEVycm9yKCJSYW5nZSNjcmVhdGUgY2FsbGVkIHdpdGggaW52YWxpZCBhcmd1bWVudHNbIitlKyIsICIrdCsiLCAiK24rIiwgIityKyJdIil9LE9yLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHhhLm9iamVjdExpdGVyYWwodCkmJkRyLmlzKHQuc3RhcnQpJiZEci5pcyh0LmVuZCl9LChxcj1Qcnx8KFByPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3VyaTplLHJhbmdlOnR9fSxxci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB4YS5kZWZpbmVkKHQpJiZXci5pcyh0LnJhbmdlKSYmKHhhLnN0cmluZyh0LnVyaSl8fHhhLnVuZGVmaW5lZCh0LnVyaSkpfSwoQnI9RnJ8fChGcj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm57dGFyZ2V0VXJpOmUsdGFyZ2V0UmFuZ2U6dCx0YXJnZXRTZWxlY3Rpb25SYW5nZTpuLG9yaWdpblNlbGVjdGlvblJhbmdlOnJ9fSxCci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB4YS5kZWZpbmVkKHQpJiZXci5pcyh0LnRhcmdldFJhbmdlKSYmeGEuc3RyaW5nKHQudGFyZ2V0VXJpKSYmKFdyLmlzKHQudGFyZ2V0U2VsZWN0aW9uUmFuZ2UpfHx4YS51bmRlZmluZWQodC50YXJnZXRTZWxlY3Rpb25SYW5nZSkpJiYoV3IuaXModC5vcmlnaW5TZWxlY3Rpb25SYW5nZSl8fHhhLnVuZGVmaW5lZCh0Lm9yaWdpblNlbGVjdGlvblJhbmdlKSl9LChLcj1Wcnx8KFZyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybntyZWQ6ZSxncmVlbjp0LGJsdWU6bixhbHBoYTpyfX0sS3IuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4geGEubnVtYmVyUmFuZ2UodC5yZWQsMCwxKSYmeGEubnVtYmVyUmFuZ2UodC5ncmVlbiwwLDEpJiZ4YS5udW1iZXJSYW5nZSh0LmJsdWUsMCwxKSYmeGEubnVtYmVyUmFuZ2UodC5hbHBoYSwwLDEpfSwoR3I9anJ8fChqcj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLGNvbG9yOnR9fSxHci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBXci5pcyh0LnJhbmdlKSYmVnIuaXModC5jb2xvcil9LChKcj0kcnx8KCRyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57bGFiZWw6ZSx0ZXh0RWRpdDp0LGFkZGl0aW9uYWxUZXh0RWRpdHM6bn19LEpyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHhhLnN0cmluZyh0LmxhYmVsKSYmKHhhLnVuZGVmaW5lZCh0LnRleHRFZGl0KXx8ZGkuaXModCkpJiYoeGEudW5kZWZpbmVkKHQuYWRkaXRpb25hbFRleHRFZGl0cyl8fHhhLnR5cGVkQXJyYXkodC5hZGRpdGlvbmFsVGV4dEVkaXRzLGRpLmlzKSl9LChZcj1Ycnx8KFhyPXt9KSkuQ29tbWVudD0iY29tbWVudCIsWXIuSW1wb3J0cz0iaW1wb3J0cyIsWXIuUmVnaW9uPSJyZWdpb24iLChacj1Rcnx8KFFyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGE9e3N0YXJ0TGluZTplLGVuZExpbmU6dH07cmV0dXJuIHhhLmRlZmluZWQobikmJihhLnN0YXJ0Q2hhcmFjdGVyPW4pLHhhLmRlZmluZWQocikmJihhLmVuZENoYXJhY3Rlcj1yKSx4YS5kZWZpbmVkKGkpJiYoYS5raW5kPWkpLGF9LFpyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHhhLnVpbnRlZ2VyKHQuc3RhcnRMaW5lKSYmeGEudWludGVnZXIodC5zdGFydExpbmUpJiYoeGEudW5kZWZpbmVkKHQuc3RhcnRDaGFyYWN0ZXIpfHx4YS51aW50ZWdlcih0LnN0YXJ0Q2hhcmFjdGVyKSkmJih4YS51bmRlZmluZWQodC5lbmRDaGFyYWN0ZXIpfHx4YS51aW50ZWdlcih0LmVuZENoYXJhY3RlcikpJiYoeGEudW5kZWZpbmVkKHQua2luZCl8fHhhLnN0cmluZyh0LmtpbmQpKX0sKHRpPWVpfHwoZWk9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57bG9jYXRpb246ZSxtZXNzYWdlOnR9fSx0aS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB4YS5kZWZpbmVkKHQpJiZQci5pcyh0LmxvY2F0aW9uKSYmeGEuc3RyaW5nKHQubWVzc2FnZSl9LChyaT1uaXx8KG5pPXt9KSkuRXJyb3I9MSxyaS5XYXJuaW5nPTIscmkuSW5mb3JtYXRpb249MyxyaS5IaW50PTQsKGFpPWlpfHwoaWk9e30pKS5Vbm5lY2Vzc2FyeT0xLGFpLkRlcHJlY2F0ZWQ9Miwob2l8fChvaT17fSkpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIG51bGwhPXQmJnhhLnN0cmluZyh0LmhyZWYpfSwobGk9c2l8fChzaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyLGksYSl7dmFyIG89e3JhbmdlOmUsbWVzc2FnZTp0fTtyZXR1cm4geGEuZGVmaW5lZChuKSYmKG8uc2V2ZXJpdHk9bikseGEuZGVmaW5lZChyKSYmKG8uY29kZT1yKSx4YS5kZWZpbmVkKGkpJiYoby5zb3VyY2U9aSkseGEuZGVmaW5lZChhKSYmKG8ucmVsYXRlZEluZm9ybWF0aW9uPWEpLG99LGxpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZTtyZXR1cm4geGEuZGVmaW5lZChuKSYmV3IuaXMobi5yYW5nZSkmJnhhLnN0cmluZyhuLm1lc3NhZ2UpJiYoeGEubnVtYmVyKG4uc2V2ZXJpdHkpfHx4YS51bmRlZmluZWQobi5zZXZlcml0eSkpJiYoeGEuaW50ZWdlcihuLmNvZGUpfHx4YS5zdHJpbmcobi5jb2RlKXx8eGEudW5kZWZpbmVkKG4uY29kZSkpJiYoeGEudW5kZWZpbmVkKG4uY29kZURlc2NyaXB0aW9uKXx8eGEuc3RyaW5nKG51bGw9PT0odD1uLmNvZGVEZXNjcmlwdGlvbil8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaHJlZikpJiYoeGEuc3RyaW5nKG4uc291cmNlKXx8eGEudW5kZWZpbmVkKG4uc291cmNlKSkmJih4YS51bmRlZmluZWQobi5yZWxhdGVkSW5mb3JtYXRpb24pfHx4YS50eXBlZEFycmF5KG4ucmVsYXRlZEluZm9ybWF0aW9uLGVpLmlzKSl9LChoaT1jaXx8KGNpPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdLHI9MjtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKW5bci0yXT1hcmd1bWVudHNbcl07dmFyIGk9e3RpdGxlOmUsY29tbWFuZDp0fTtyZXR1cm4geGEuZGVmaW5lZChuKSYmbi5sZW5ndGg+MCYmKGkuYXJndW1lbnRzPW4pLGl9LGhpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHhhLmRlZmluZWQodCkmJnhhLnN0cmluZyh0LnRpdGxlKSYmeGEuc3RyaW5nKHQuY29tbWFuZCl9LCh1aT1kaXx8KGRpPXt9KSkucmVwbGFjZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLG5ld1RleHQ6dH19LHVpLmluc2VydD1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTp7c3RhcnQ6ZSxlbmQ6ZX0sbmV3VGV4dDp0fX0sdWkuZGVsPWZ1bmN0aW9uKGUpe3JldHVybntyYW5nZTplLG5ld1RleHQ6IiJ9fSx1aS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB4YS5vYmplY3RMaXRlcmFsKHQpJiZ4YS5zdHJpbmcodC5uZXdUZXh0KSYmV3IuaXModC5yYW5nZSl9LChtaT1waXx8KHBpPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj17bGFiZWw6ZX07cmV0dXJuIHZvaWQgMCE9PXQmJihyLm5lZWRzQ29uZmlybWF0aW9uPXQpLHZvaWQgMCE9PW4mJihyLmRlc2NyaXB0aW9uPW4pLHJ9LG1pLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHZvaWQgMCE9PXQmJnhhLm9iamVjdExpdGVyYWwodCkmJnhhLnN0cmluZyh0LmxhYmVsKSYmKHhhLmJvb2xlYW4odC5uZWVkc0NvbmZpcm1hdGlvbil8fHZvaWQgMD09PXQubmVlZHNDb25maXJtYXRpb24pJiYoeGEuc3RyaW5nKHQuZGVzY3JpcHRpb24pfHx2b2lkIDA9PT10LmRlc2NyaXB0aW9uKX0sKGZpfHwoZmk9e30pKS5pcz1mdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV9LChiaT1naXx8KGdpPXt9KSkucmVwbGFjZT1mdW5jdGlvbihlLHQsbil7cmV0dXJue3JhbmdlOmUsbmV3VGV4dDp0LGFubm90YXRpb25JZDpufX0sYmkuaW5zZXJ0PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57cmFuZ2U6e3N0YXJ0OmUsZW5kOmV9LG5ld1RleHQ6dCxhbm5vdGF0aW9uSWQ6bn19LGJpLmRlbD1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLG5ld1RleHQ6IiIsYW5ub3RhdGlvbklkOnR9fSxiaS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBkaS5pcyh0KSYmKHBpLmlzKHQuYW5ub3RhdGlvbklkKXx8ZmkuaXModC5hbm5vdGF0aW9uSWQpKX0sKF9pPXdpfHwod2k9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dGV4dERvY3VtZW50OmUsZWRpdHM6dH19LF9pLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHhhLmRlZmluZWQodCkmJlJpLmlzKHQudGV4dERvY3VtZW50KSYmQXJyYXkuaXNBcnJheSh0LmVkaXRzKX0sKHlpPXZpfHwodmk9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXtraW5kOiJjcmVhdGUiLHVyaTplfTtyZXR1cm4gdm9pZCAwPT09dHx8dm9pZCAwPT09dC5vdmVyd3JpdGUmJnZvaWQgMD09PXQuaWdub3JlSWZFeGlzdHN8fChyLm9wdGlvbnM9dCksdm9pZCAwIT09biYmKHIuYW5ub3RhdGlvbklkPW4pLHJ9LHlpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJiJjcmVhdGUiPT09dC5raW5kJiZ4YS5zdHJpbmcodC51cmkpJiYodm9pZCAwPT09dC5vcHRpb25zfHwodm9pZCAwPT09dC5vcHRpb25zLm92ZXJ3cml0ZXx8eGEuYm9vbGVhbih0Lm9wdGlvbnMub3ZlcndyaXRlKSkmJih2b2lkIDA9PT10Lm9wdGlvbnMuaWdub3JlSWZFeGlzdHN8fHhhLmJvb2xlYW4odC5vcHRpb25zLmlnbm9yZUlmRXhpc3RzKSkpJiYodm9pZCAwPT09dC5hbm5vdGF0aW9uSWR8fGZpLmlzKHQuYW5ub3RhdGlvbklkKSl9LChraT1UaXx8KFRpPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXtraW5kOiJyZW5hbWUiLG9sZFVyaTplLG5ld1VyaTp0fTtyZXR1cm4gdm9pZCAwPT09bnx8dm9pZCAwPT09bi5vdmVyd3JpdGUmJnZvaWQgMD09PW4uaWdub3JlSWZFeGlzdHN8fChpLm9wdGlvbnM9biksdm9pZCAwIT09ciYmKGkuYW5ub3RhdGlvbklkPXIpLGl9LGtpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJiJyZW5hbWUiPT09dC5raW5kJiZ4YS5zdHJpbmcodC5vbGRVcmkpJiZ4YS5zdHJpbmcodC5uZXdVcmkpJiYodm9pZCAwPT09dC5vcHRpb25zfHwodm9pZCAwPT09dC5vcHRpb25zLm92ZXJ3cml0ZXx8eGEuYm9vbGVhbih0Lm9wdGlvbnMub3ZlcndyaXRlKSkmJih2b2lkIDA9PT10Lm9wdGlvbnMuaWdub3JlSWZFeGlzdHN8fHhhLmJvb2xlYW4odC5vcHRpb25zLmlnbm9yZUlmRXhpc3RzKSkpJiYodm9pZCAwPT09dC5hbm5vdGF0aW9uSWR8fGZpLmlzKHQuYW5ub3RhdGlvbklkKSl9LChDaT1TaXx8KFNpPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj17a2luZDoiZGVsZXRlIix1cmk6ZX07cmV0dXJuIHZvaWQgMD09PXR8fHZvaWQgMD09PXQucmVjdXJzaXZlJiZ2b2lkIDA9PT10Lmlnbm9yZUlmTm90RXhpc3RzfHwoci5vcHRpb25zPXQpLHZvaWQgMCE9PW4mJihyLmFubm90YXRpb25JZD1uKSxyfSxDaS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB0JiYiZGVsZXRlIj09PXQua2luZCYmeGEuc3RyaW5nKHQudXJpKSYmKHZvaWQgMD09PXQub3B0aW9uc3x8KHZvaWQgMD09PXQub3B0aW9ucy5yZWN1cnNpdmV8fHhhLmJvb2xlYW4odC5vcHRpb25zLnJlY3Vyc2l2ZSkpJiYodm9pZCAwPT09dC5vcHRpb25zLmlnbm9yZUlmTm90RXhpc3RzfHx4YS5ib29sZWFuKHQub3B0aW9ucy5pZ25vcmVJZk5vdEV4aXN0cykpKSYmKHZvaWQgMD09PXQuYW5ub3RhdGlvbklkfHxmaS5pcyh0LmFubm90YXRpb25JZCkpfSwoeGl8fCh4aT17fSkpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJih2b2lkIDAhPT10LmNoYW5nZXN8fHZvaWQgMCE9PXQuZG9jdW1lbnRDaGFuZ2VzKSYmKHZvaWQgMD09PXQuZG9jdW1lbnRDaGFuZ2VzfHx0LmRvY3VtZW50Q2hhbmdlcy5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIHhhLnN0cmluZyhlLmtpbmQpP3ZpLmlzKGUpfHxUaS5pcyhlKXx8U2kuaXMoZSk6d2kuaXMoZSl9KSkpfTt2YXIgTGksRWksQWksTWksUmksTmksSWksVWksSGksRGksemksV2ksT2ksUGkscWksRmksQmksVmksS2ksamksR2ksJGksSmksWGksWWksUWksWmksZWEsdGEsbmEscmEsaWEsYWEsb2Esc2EsbGEsY2EsaGEsZGEsdWEscGEsbWEsZmEsZ2EsYmEsd2EsX2EsdmEseWEsVGEsa2EsU2E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5lZGl0cz1lLHRoaXMuY2hhbmdlQW5ub3RhdGlvbnM9dH1yZXR1cm4gZS5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKHZvaWQgMD09PW4/cj1kaS5pbnNlcnQoZSx0KTpmaS5pcyhuKT8oaT1uLHI9Z2kuaW5zZXJ0KGUsdCxuKSk6KHRoaXMuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnModGhpcy5jaGFuZ2VBbm5vdGF0aW9ucyksaT10aGlzLmNoYW5nZUFubm90YXRpb25zLm1hbmFnZShuKSxyPWdpLmluc2VydChlLHQsaSkpLHRoaXMuZWRpdHMucHVzaChyKSx2b2lkIDAhPT1pKXJldHVybiBpfSxlLnByb3RvdHlwZS5yZXBsYWNlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKHZvaWQgMD09PW4/cj1kaS5yZXBsYWNlKGUsdCk6ZmkuaXMobik/KGk9bixyPWdpLnJlcGxhY2UoZSx0LG4pKToodGhpcy5hc3NlcnRDaGFuZ2VBbm5vdGF0aW9ucyh0aGlzLmNoYW5nZUFubm90YXRpb25zKSxpPXRoaXMuY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKG4pLHI9Z2kucmVwbGFjZShlLHQsaSkpLHRoaXMuZWRpdHMucHVzaChyKSx2b2lkIDAhPT1pKXJldHVybiBpfSxlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSx0KXt2YXIgbixyO2lmKHZvaWQgMD09PXQ/bj1kaS5kZWwoZSk6ZmkuaXModCk/KHI9dCxuPWdpLmRlbChlLHQpKToodGhpcy5hc3NlcnRDaGFuZ2VBbm5vdGF0aW9ucyh0aGlzLmNoYW5nZUFubm90YXRpb25zKSxyPXRoaXMuY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKHQpLG49Z2kuZGVsKGUscikpLHRoaXMuZWRpdHMucHVzaChuKSx2b2lkIDAhPT1yKXJldHVybiByfSxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5lZGl0cy5wdXNoKGUpfSxlLnByb3RvdHlwZS5hbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGl0c30sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmVkaXRzLnNwbGljZSgwLHRoaXMuZWRpdHMubGVuZ3RoKX0sZS5wcm90b3R5cGUuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnM9ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgRXJyb3IoIlRleHQgZWRpdCBjaGFuZ2UgaXMgbm90IGNvbmZpZ3VyZWQgdG8gbWFuYWdlIGNoYW5nZSBhbm5vdGF0aW9ucy4iKX0sZX0oKSxDYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5fYW5ub3RhdGlvbnM9dm9pZCAwPT09ZT9PYmplY3QuY3JlYXRlKG51bGwpOmUsdGhpcy5fY291bnRlcj0wLHRoaXMuX3NpemU9MH1yZXR1cm4gZS5wcm90b3R5cGUuYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25zfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInNpemUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2l6ZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5tYW5hZ2U9ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZihmaS5pcyhlKT9uPWU6KG49dGhpcy5uZXh0SWQoKSx0PWUpLHZvaWQgMCE9PXRoaXMuX2Fubm90YXRpb25zW25dKXRocm93IG5ldyBFcnJvcigiSWQgIituKyIgaXMgYWxyZWFkeSBpbiB1c2UuIik7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoIk5vIGFubm90YXRpb24gcHJvdmlkZWQgZm9yIGlkICIrbik7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25zW25dPXQsdGhpcy5fc2l6ZSsrLG59LGUucHJvdG90eXBlLm5leHRJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb3VudGVyKyssdGhpcy5fY291bnRlci50b1N0cmluZygpfSxlfSgpOyFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQ9dGhpczt0aGlzLl90ZXh0RWRpdENoYW5nZXM9T2JqZWN0LmNyZWF0ZShudWxsKSx2b2lkIDAhPT1lPyh0aGlzLl93b3Jrc3BhY2VFZGl0PWUsZS5kb2N1bWVudENoYW5nZXM/KHRoaXMuX2NoYW5nZUFubm90YXRpb25zPW5ldyBDYShlLmNoYW5nZUFubm90YXRpb25zKSxlLmNoYW5nZUFubm90YXRpb25zPXRoaXMuX2NoYW5nZUFubm90YXRpb25zLmFsbCgpLGUuZG9jdW1lbnRDaGFuZ2VzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKHdpLmlzKGUpKXt2YXIgbj1uZXcgU2EoZS5lZGl0cyx0Ll9jaGFuZ2VBbm5vdGF0aW9ucyk7dC5fdGV4dEVkaXRDaGFuZ2VzW2UudGV4dERvY3VtZW50LnVyaV09bn19KSkpOmUuY2hhbmdlcyYmT2JqZWN0LmtleXMoZS5jaGFuZ2VzKS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcj1uZXcgU2EoZS5jaGFuZ2VzW25dKTt0Ll90ZXh0RWRpdENoYW5nZXNbbl09cn0pKSk6dGhpcy5fd29ya3NwYWNlRWRpdD17fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImVkaXQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwIT09dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMmJigwPT09dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMuc2l6ZT90aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZUFubm90YXRpb25zPXZvaWQgMDp0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZUFubm90YXRpb25zPXRoaXMuX2NoYW5nZUFubm90YXRpb25zLmFsbCgpKSx0aGlzLl93b3Jrc3BhY2VFZGl0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldFRleHRFZGl0Q2hhbmdlPWZ1bmN0aW9uKGUpe2lmKFJpLmlzKGUpKXtpZih0aGlzLmluaXREb2N1bWVudENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcyl0aHJvdyBuZXcgRXJyb3IoIldvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBkb2N1bWVudCBjaGFuZ2VzLiIpO3ZhciB0PXt1cmk6ZS51cmksdmVyc2lvbjplLnZlcnNpb259O2lmKCEocj10aGlzLl90ZXh0RWRpdENoYW5nZXNbdC51cmldKSl7dmFyIG49e3RleHREb2N1bWVudDp0LGVkaXRzOmk9W119O3RoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2gobikscj1uZXcgU2EoaSx0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucyksdGhpcy5fdGV4dEVkaXRDaGFuZ2VzW3QudXJpXT1yfXJldHVybiByfWlmKHRoaXMuaW5pdENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3Igbm9ybWFsIHRleHQgZWRpdCBjaGFuZ2VzLiIpO3ZhciByO2lmKCEocj10aGlzLl90ZXh0RWRpdENoYW5nZXNbZV0pKXt2YXIgaT1bXTt0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXNbZV09aSxyPW5ldyBTYShpKSx0aGlzLl90ZXh0RWRpdENoYW5nZXNbZV09cn1yZXR1cm4gcn0sZS5wcm90b3R5cGUuaW5pdERvY3VtZW50Q2hhbmdlcz1mdW5jdGlvbigpe3ZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzJiZ2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMmJih0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucz1uZXcgQ2EsdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXM9W10sdGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VBbm5vdGF0aW9ucz10aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5hbGwoKSl9LGUucHJvdG90eXBlLmluaXRDaGFuZ2VzPWZ1bmN0aW9uKCl7dm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMmJnZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcyYmKHRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcz1PYmplY3QuY3JlYXRlKG51bGwpKX0sZS5wcm90b3R5cGUuY3JlYXRlRmlsZT1mdW5jdGlvbihlLHQsbil7aWYodGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3IgZG9jdW1lbnQgY2hhbmdlcy4iKTt2YXIgcixpLGE7aWYocGkuaXModCl8fGZpLmlzKHQpP3I9dDpuPXQsdm9pZCAwPT09cj9pPXZpLmNyZWF0ZShlLG4pOihhPWZpLmlzKHIpP3I6dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKHIpLGk9dmkuY3JlYXRlKGUsbixhKSksdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMucHVzaChpKSx2b2lkIDAhPT1hKXJldHVybiBhfSxlLnByb3RvdHlwZS5yZW5hbWVGaWxlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuIik7dmFyIGksYSxvO2lmKHBpLmlzKG4pfHxmaS5pcyhuKT9pPW46cj1uLHZvaWQgMD09PWk/YT1UaS5jcmVhdGUoZSx0LHIpOihvPWZpLmlzKGkpP2k6dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKGkpLGE9VGkuY3JlYXRlKGUsdCxyLG8pKSx0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5wdXNoKGEpLHZvaWQgMCE9PW8pcmV0dXJuIG99LGUucHJvdG90eXBlLmRlbGV0ZUZpbGU9ZnVuY3Rpb24oZSx0LG4pe2lmKHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuIik7dmFyIHIsaSxhO2lmKHBpLmlzKHQpfHxmaS5pcyh0KT9yPXQ6bj10LHZvaWQgMD09PXI/aT1TaS5jcmVhdGUoZSxuKTooYT1maS5pcyhyKT9yOnRoaXMuX2NoYW5nZUFubm90YXRpb25zLm1hbmFnZShyKSxpPVNpLmNyZWF0ZShlLG4sYSkpLHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2goaSksdm9pZCAwIT09YSlyZXR1cm4gYX19KCksKEVpPUxpfHwoTGk9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSl7cmV0dXJue3VyaTplfX0sRWkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4geGEuZGVmaW5lZCh0KSYmeGEuc3RyaW5nKHQudXJpKX0sKE1pPUFpfHwoQWk9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dXJpOmUsdmVyc2lvbjp0fX0sTWkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4geGEuZGVmaW5lZCh0KSYmeGEuc3RyaW5nKHQudXJpKSYmeGEuaW50ZWdlcih0LnZlcnNpb24pfSwoTmk9Uml8fChSaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybnt1cmk6ZSx2ZXJzaW9uOnR9fSxOaS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB4YS5kZWZpbmVkKHQpJiZ4YS5zdHJpbmcodC51cmkpJiYobnVsbD09PXQudmVyc2lvbnx8eGEuaW50ZWdlcih0LnZlcnNpb24pKX0sKFVpPUlpfHwoSWk9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJue3VyaTplLGxhbmd1YWdlSWQ6dCx2ZXJzaW9uOm4sdGV4dDpyfX0sVWkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4geGEuZGVmaW5lZCh0KSYmeGEuc3RyaW5nKHQudXJpKSYmeGEuc3RyaW5nKHQubGFuZ3VhZ2VJZCkmJnhhLmludGVnZXIodC52ZXJzaW9uKSYmeGEuc3RyaW5nKHQudGV4dCl9LChEaT1IaXx8KEhpPXt9KSkuUGxhaW5UZXh0PSJwbGFpbnRleHQiLERpLk1hcmtkb3duPSJtYXJrZG93biIsZnVuY3Rpb24oZSl7ZS5pcz1mdW5jdGlvbih0KXt2YXIgbj10O3JldHVybiBuPT09ZS5QbGFpblRleHR8fG49PT1lLk1hcmtkb3dufX0oSGl8fChIaT17fSkpLCh6aXx8KHppPXt9KSkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4geGEub2JqZWN0TGl0ZXJhbChlKSYmSGkuaXModC5raW5kKSYmeGEuc3RyaW5nKHQudmFsdWUpfSwoT2k9V2l8fChXaT17fSkpLlRleHQ9MSxPaS5NZXRob2Q9MixPaS5GdW5jdGlvbj0zLE9pLkNvbnN0cnVjdG9yPTQsT2kuRmllbGQ9NSxPaS5WYXJpYWJsZT02LE9pLkNsYXNzPTcsT2kuSW50ZXJmYWNlPTgsT2kuTW9kdWxlPTksT2kuUHJvcGVydHk9MTAsT2kuVW5pdD0xMSxPaS5WYWx1ZT0xMixPaS5FbnVtPTEzLE9pLktleXdvcmQ9MTQsT2kuU25pcHBldD0xNSxPaS5Db2xvcj0xNixPaS5GaWxlPTE3LE9pLlJlZmVyZW5jZT0xOCxPaS5Gb2xkZXI9MTksT2kuRW51bU1lbWJlcj0yMCxPaS5Db25zdGFudD0yMSxPaS5TdHJ1Y3Q9MjIsT2kuRXZlbnQ9MjMsT2kuT3BlcmF0b3I9MjQsT2kuVHlwZVBhcmFtZXRlcj0yNSwocWk9UGl8fChQaT17fSkpLlBsYWluVGV4dD0xLHFpLlNuaXBwZXQ9MiwoRml8fChGaT17fSkpLkRlcHJlY2F0ZWQ9MSwoVmk9Qml8fChCaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7cmV0dXJue25ld1RleHQ6ZSxpbnNlcnQ6dCxyZXBsYWNlOm59fSxWaS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB0JiZ4YS5zdHJpbmcodC5uZXdUZXh0KSYmV3IuaXModC5pbnNlcnQpJiZXci5pcyh0LnJlcGxhY2UpfSwoamk9S2l8fChLaT17fSkpLmFzSXM9MSxqaS5hZGp1c3RJbmRlbnRhdGlvbj0yLChHaXx8KEdpPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybntsYWJlbDplfX0sKCRpfHwoJGk9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57aXRlbXM6ZXx8W10saXNJbmNvbXBsZXRlOiEhdH19LChYaT1KaXx8KEppPXt9KSkuZnJvbVBsYWluVGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bXFxgKl97fVtcXSgpIytcLS4hXS9nLCJcXCQmIil9LFhpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHhhLnN0cmluZyh0KXx8eGEub2JqZWN0TGl0ZXJhbCh0KSYmeGEuc3RyaW5nKHQubGFuZ3VhZ2UpJiZ4YS5zdHJpbmcodC52YWx1ZSl9LChZaXx8KFlpPXt9KSkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4hIXQmJnhhLm9iamVjdExpdGVyYWwodCkmJih6aS5pcyh0LmNvbnRlbnRzKXx8SmkuaXModC5jb250ZW50cyl8fHhhLnR5cGVkQXJyYXkodC5jb250ZW50cyxKaS5pcykpJiYodm9pZCAwPT09ZS5yYW5nZXx8V3IuaXMoZS5yYW5nZSkpfSwoUWl8fChRaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybiB0P3tsYWJlbDplLGRvY3VtZW50YXRpb246dH06e2xhYmVsOmV9fSwoWml8fChaaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1bXSxyPTI7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyluW3ItMl09YXJndW1lbnRzW3JdO3ZhciBpPXtsYWJlbDplfTtyZXR1cm4geGEuZGVmaW5lZCh0KSYmKGkuZG9jdW1lbnRhdGlvbj10KSx4YS5kZWZpbmVkKG4pP2kucGFyYW1ldGVycz1uOmkucGFyYW1ldGVycz1bXSxpfSwodGE9ZWF8fChlYT17fSkpLlRleHQ9MSx0YS5SZWFkPTIsdGEuV3JpdGU9MywobmF8fChuYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXtyYW5nZTplfTtyZXR1cm4geGEubnVtYmVyKHQpJiYobi5raW5kPXQpLG59LChpYT1yYXx8KHJhPXt9KSkuRmlsZT0xLGlhLk1vZHVsZT0yLGlhLk5hbWVzcGFjZT0zLGlhLlBhY2thZ2U9NCxpYS5DbGFzcz01LGlhLk1ldGhvZD02LGlhLlByb3BlcnR5PTcsaWEuRmllbGQ9OCxpYS5Db25zdHJ1Y3Rvcj05LGlhLkVudW09MTAsaWEuSW50ZXJmYWNlPTExLGlhLkZ1bmN0aW9uPTEyLGlhLlZhcmlhYmxlPTEzLGlhLkNvbnN0YW50PTE0LGlhLlN0cmluZz0xNSxpYS5OdW1iZXI9MTYsaWEuQm9vbGVhbj0xNyxpYS5BcnJheT0xOCxpYS5PYmplY3Q9MTksaWEuS2V5PTIwLGlhLk51bGw9MjEsaWEuRW51bU1lbWJlcj0yMixpYS5TdHJ1Y3Q9MjMsaWEuRXZlbnQ9MjQsaWEuT3BlcmF0b3I9MjUsaWEuVHlwZVBhcmFtZXRlcj0yNiwoYWF8fChhYT17fSkpLkRlcHJlY2F0ZWQ9MSwob2F8fChvYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhPXtuYW1lOmUsa2luZDp0LGxvY2F0aW9uOnt1cmk6cixyYW5nZTpufX07cmV0dXJuIGkmJihhLmNvbnRhaW5lck5hbWU9aSksYX0sKGxhPXNhfHwoc2E9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4scixpLGEpe3ZhciBvPXtuYW1lOmUsZGV0YWlsOnQsa2luZDpuLHJhbmdlOnIsc2VsZWN0aW9uUmFuZ2U6aX07cmV0dXJuIHZvaWQgMCE9PWEmJihvLmNoaWxkcmVuPWEpLG99LGxhLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJnhhLnN0cmluZyh0Lm5hbWUpJiZ4YS5udW1iZXIodC5raW5kKSYmV3IuaXModC5yYW5nZSkmJldyLmlzKHQuc2VsZWN0aW9uUmFuZ2UpJiYodm9pZCAwPT09dC5kZXRhaWx8fHhhLnN0cmluZyh0LmRldGFpbCkpJiYodm9pZCAwPT09dC5kZXByZWNhdGVkfHx4YS5ib29sZWFuKHQuZGVwcmVjYXRlZCkpJiYodm9pZCAwPT09dC5jaGlsZHJlbnx8QXJyYXkuaXNBcnJheSh0LmNoaWxkcmVuKSkmJih2b2lkIDA9PT10LnRhZ3N8fEFycmF5LmlzQXJyYXkodC50YWdzKSl9LChoYT1jYXx8KGNhPXt9KSkuRW1wdHk9IiIsaGEuUXVpY2tGaXg9InF1aWNrZml4IixoYS5SZWZhY3Rvcj0icmVmYWN0b3IiLGhhLlJlZmFjdG9yRXh0cmFjdD0icmVmYWN0b3IuZXh0cmFjdCIsaGEuUmVmYWN0b3JJbmxpbmU9InJlZmFjdG9yLmlubGluZSIsaGEuUmVmYWN0b3JSZXdyaXRlPSJyZWZhY3Rvci5yZXdyaXRlIixoYS5Tb3VyY2U9InNvdXJjZSIsaGEuU291cmNlT3JnYW5pemVJbXBvcnRzPSJzb3VyY2Uub3JnYW5pemVJbXBvcnRzIixoYS5Tb3VyY2VGaXhBbGw9InNvdXJjZS5maXhBbGwiLCh1YT1kYXx8KGRhPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49e2RpYWdub3N0aWNzOmV9O3JldHVybiBudWxsIT10JiYobi5vbmx5PXQpLG59LHVhLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHhhLmRlZmluZWQodCkmJnhhLnR5cGVkQXJyYXkodC5kaWFnbm9zdGljcyxzaS5pcykmJih2b2lkIDA9PT10Lm9ubHl8fHhhLnR5cGVkQXJyYXkodC5vbmx5LHhhLnN0cmluZykpfSwobWE9cGF8fChwYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9e3RpdGxlOmV9LGk9ITA7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0PyhpPSExLHIua2luZD10KTpjaS5pcyh0KT9yLmNvbW1hbmQ9dDpyLmVkaXQ9dCxpJiZ2b2lkIDAhPT1uJiYoci5raW5kPW4pLHJ9LG1hLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJnhhLnN0cmluZyh0LnRpdGxlKSYmKHZvaWQgMD09PXQuZGlhZ25vc3RpY3N8fHhhLnR5cGVkQXJyYXkodC5kaWFnbm9zdGljcyxzaS5pcykpJiYodm9pZCAwPT09dC5raW5kfHx4YS5zdHJpbmcodC5raW5kKSkmJih2b2lkIDAhPT10LmVkaXR8fHZvaWQgMCE9PXQuY29tbWFuZCkmJih2b2lkIDA9PT10LmNvbW1hbmR8fGNpLmlzKHQuY29tbWFuZCkpJiYodm9pZCAwPT09dC5pc1ByZWZlcnJlZHx8eGEuYm9vbGVhbih0LmlzUHJlZmVycmVkKSkmJih2b2lkIDA9PT10LmVkaXR8fHhpLmlzKHQuZWRpdCkpfSwoZ2E9ZmF8fChmYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXtyYW5nZTplfTtyZXR1cm4geGEuZGVmaW5lZCh0KSYmKG4uZGF0YT10KSxufSxnYS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB4YS5kZWZpbmVkKHQpJiZXci5pcyh0LnJhbmdlKSYmKHhhLnVuZGVmaW5lZCh0LmNvbW1hbmQpfHxjaS5pcyh0LmNvbW1hbmQpKX0sKHdhPWJhfHwoYmE9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dGFiU2l6ZTplLGluc2VydFNwYWNlczp0fX0sd2EuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4geGEuZGVmaW5lZCh0KSYmeGEudWludGVnZXIodC50YWJTaXplKSYmeGEuYm9vbGVhbih0Lmluc2VydFNwYWNlcyl9LCh2YT1fYXx8KF9hPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57cmFuZ2U6ZSx0YXJnZXQ6dCxkYXRhOm59fSx2YS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB4YS5kZWZpbmVkKHQpJiZXci5pcyh0LnJhbmdlKSYmKHhhLnVuZGVmaW5lZCh0LnRhcmdldCl8fHhhLnN0cmluZyh0LnRhcmdldCkpfSwoVGE9eWF8fCh5YT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLHBhcmVudDp0fX0sVGEuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gdm9pZCAwIT09dCYmV3IuaXModC5yYW5nZSkmJih2b2lkIDA9PT10LnBhcmVudHx8VGEuaXModC5wYXJlbnQpKX0sZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4pe2lmKGUubGVuZ3RoPD0xKXJldHVybiBlO3ZhciByPWUubGVuZ3RoLzJ8MCxpPWUuc2xpY2UoMCxyKSxhPWUuc2xpY2Uocik7dChpLG4pLHQoYSxuKTtmb3IodmFyIG89MCxzPTAsbD0wO288aS5sZW5ndGgmJnM8YS5sZW5ndGg7KXt2YXIgYz1uKGlbb10sYVtzXSk7ZVtsKytdPWM8PTA/aVtvKytdOmFbcysrXX1mb3IoO288aS5sZW5ndGg7KWVbbCsrXT1pW28rK107Zm9yKDtzPGEubGVuZ3RoOyllW2wrK109YVtzKytdO3JldHVybiBlfWUuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcgQWEoZSx0LG4scil9LGUuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4hISh4YS5kZWZpbmVkKHQpJiZ4YS5zdHJpbmcodC51cmkpJiYoeGEudW5kZWZpbmVkKHQubGFuZ3VhZ2VJZCl8fHhhLnN0cmluZyh0Lmxhbmd1YWdlSWQpKSYmeGEudWludGVnZXIodC5saW5lQ291bnQpJiZ4YS5mdW5jKHQuZ2V0VGV4dCkmJnhhLmZ1bmModC5wb3NpdGlvbkF0KSYmeGEuZnVuYyh0Lm9mZnNldEF0KSl9LGUuYXBwbHlFZGl0cz1mdW5jdGlvbihlLG4pe2Zvcih2YXIgcj1lLmdldFRleHQoKSxpPXQobiwoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnJhbmdlLnN0YXJ0LmxpbmUtdC5yYW5nZS5zdGFydC5saW5lO3JldHVybiAwPT09bj9lLnJhbmdlLnN0YXJ0LmNoYXJhY3Rlci10LnJhbmdlLnN0YXJ0LmNoYXJhY3RlcjpufSkpLGE9ci5sZW5ndGgsbz1pLmxlbmd0aC0xO28+PTA7by0tKXt2YXIgcz1pW29dLGw9ZS5vZmZzZXRBdChzLnJhbmdlLnN0YXJ0KSxjPWUub2Zmc2V0QXQocy5yYW5nZS5lbmQpO2lmKCEoYzw9YSkpdGhyb3cgbmV3IEVycm9yKCJPdmVybGFwcGluZyBlZGl0Iik7cj1yLnN1YnN0cmluZygwLGwpK3MubmV3VGV4dCtyLnN1YnN0cmluZyhjLHIubGVuZ3RoKSxhPWx9cmV0dXJuIHJ9fShrYXx8KGthPXt9KSk7dmFyIHhhLExhLEVhLEFhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixyKXt0aGlzLl91cmk9ZSx0aGlzLl9sYW5ndWFnZUlkPXQsdGhpcy5fdmVyc2lvbj1uLHRoaXMuX2NvbnRlbnQ9cix0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidXJpIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VyaX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxhbmd1YWdlSWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGFuZ3VhZ2VJZH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInZlcnNpb24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5nZXRUZXh0PWZ1bmN0aW9uKGUpe2lmKGUpe3ZhciB0PXRoaXMub2Zmc2V0QXQoZS5zdGFydCksbj10aGlzLm9mZnNldEF0KGUuZW5kKTtyZXR1cm4gdGhpcy5fY29udGVudC5zdWJzdHJpbmcodCxuKX1yZXR1cm4gdGhpcy5fY29udGVudH0sZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7dGhpcy5fY29udGVudD1lLnRleHQsdGhpcy5fdmVyc2lvbj10LHRoaXMuX2xpbmVPZmZzZXRzPXZvaWQgMH0sZS5wcm90b3R5cGUuZ2V0TGluZU9mZnNldHM9ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT10aGlzLl9saW5lT2Zmc2V0cyl7Zm9yKHZhciBlPVtdLHQ9dGhpcy5fY29udGVudCxuPSEwLHI9MDtyPHQubGVuZ3RoO3IrKyl7biYmKGUucHVzaChyKSxuPSExKTt2YXIgaT10LmNoYXJBdChyKTtuPSJcciI9PT1pfHwiXG4iPT09aSwiXHIiPT09aSYmcisxPHQubGVuZ3RoJiYiXG4iPT09dC5jaGFyQXQocisxKSYmcisrfW4mJnQubGVuZ3RoPjAmJmUucHVzaCh0Lmxlbmd0aCksdGhpcy5fbGluZU9mZnNldHM9ZX1yZXR1cm4gdGhpcy5fbGluZU9mZnNldHN9LGUucHJvdG90eXBlLnBvc2l0aW9uQXQ9ZnVuY3Rpb24oZSl7ZT1NYXRoLm1heChNYXRoLm1pbihlLHRoaXMuX2NvbnRlbnQubGVuZ3RoKSwwKTt2YXIgdD10aGlzLmdldExpbmVPZmZzZXRzKCksbj0wLHI9dC5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIERyLmNyZWF0ZSgwLGUpO2Zvcig7bjxyOyl7dmFyIGk9TWF0aC5mbG9vcigobityKS8yKTt0W2ldPmU/cj1pOm49aSsxfXZhciBhPW4tMTtyZXR1cm4gRHIuY3JlYXRlKGEsZS10W2FdKX0sZS5wcm90b3R5cGUub2Zmc2V0QXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpO2lmKGUubGluZT49dC5sZW5ndGgpcmV0dXJuIHRoaXMuX2NvbnRlbnQubGVuZ3RoO2lmKGUubGluZTwwKXJldHVybiAwO3ZhciBuPXRbZS5saW5lXSxyPWUubGluZSsxPHQubGVuZ3RoP3RbZS5saW5lKzFdOnRoaXMuX2NvbnRlbnQubGVuZ3RoO3JldHVybiBNYXRoLm1heChNYXRoLm1pbihuK2UuY2hhcmFjdGVyLHIpLG4pfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxpbmVDb3VudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldExpbmVPZmZzZXRzKCkubGVuZ3RofSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGV9KCk7TGE9eGF8fCh4YT17fSksRWE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxMYS5kZWZpbmVkPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lfSxMYS51bmRlZmluZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWV9LExhLmJvb2xlYW49ZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lfHwhMT09PWV9LExhLnN0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PUVhLmNhbGwoZSl9LExhLm51bWJlcj1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PUVhLmNhbGwoZSl9LExhLm51bWJlclJhbmdlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PUVhLmNhbGwoZSkmJnQ8PWUmJmU8PW59LExhLmludGVnZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1FYS5jYWxsKGUpJiYtMjE0NzQ4MzY0ODw9ZSYmZTw9MjE0NzQ4MzY0N30sTGEudWludGVnZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1FYS5jYWxsKGUpJiYwPD1lJiZlPD0yMTQ3NDgzNjQ3fSxMYS5mdW5jPWZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1FYS5jYWxsKGUpfSxMYS5vYmplY3RMaXRlcmFsPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfSxMYS50eXBlZEFycmF5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkodCl9O3ZhciBNYSxSYSxOYSxJYSxVYSxIYSxEYSx6YSxXYSxPYT1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLl91cmk9ZSx0aGlzLl9sYW5ndWFnZUlkPXQsdGhpcy5fdmVyc2lvbj1uLHRoaXMuX2NvbnRlbnQ9cix0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9Z2V0IHVyaSgpe3JldHVybiB0aGlzLl91cml9Z2V0IGxhbmd1YWdlSWQoKXtyZXR1cm4gdGhpcy5fbGFuZ3VhZ2VJZH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLl92ZXJzaW9ufWdldFRleHQoZSl7aWYoZSl7Y29uc3QgdD10aGlzLm9mZnNldEF0KGUuc3RhcnQpLG49dGhpcy5vZmZzZXRBdChlLmVuZCk7cmV0dXJuIHRoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKHQsbil9cmV0dXJuIHRoaXMuX2NvbnRlbnR9dXBkYXRlKGUsdCl7Zm9yKGxldCB0IG9mIGUpaWYoT2EuaXNJbmNyZW1lbnRhbCh0KSl7Y29uc3QgZT1GYSh0LnJhbmdlKSxuPXRoaXMub2Zmc2V0QXQoZS5zdGFydCkscj10aGlzLm9mZnNldEF0KGUuZW5kKTt0aGlzLl9jb250ZW50PXRoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKDAsbikrdC50ZXh0K3RoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKHIsdGhpcy5fY29udGVudC5sZW5ndGgpO2NvbnN0IGk9TWF0aC5tYXgoZS5zdGFydC5saW5lLDApLGE9TWF0aC5tYXgoZS5lbmQubGluZSwwKTtsZXQgbz10aGlzLl9saW5lT2Zmc2V0cztjb25zdCBzPXFhKHQudGV4dCwhMSxuKTtpZihhLWk9PT1zLmxlbmd0aClmb3IobGV0IGU9MCx0PXMubGVuZ3RoO2U8dDtlKyspb1tlK2krMV09c1tlXTtlbHNlIHMubGVuZ3RoPDFlND9vLnNwbGljZShpKzEsYS1pLC4uLnMpOnRoaXMuX2xpbmVPZmZzZXRzPW89by5zbGljZSgwLGkrMSkuY29uY2F0KHMsby5zbGljZShhKzEpKTtjb25zdCBsPXQudGV4dC5sZW5ndGgtKHItbik7aWYoMCE9PWwpZm9yKGxldCBlPWkrMStzLmxlbmd0aCx0PW8ubGVuZ3RoO2U8dDtlKyspb1tlXT1vW2VdK2x9ZWxzZXtpZighT2EuaXNGdWxsKHQpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBjaGFuZ2UgZXZlbnQgcmVjZWl2ZWQiKTt0aGlzLl9jb250ZW50PXQudGV4dCx0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9dGhpcy5fdmVyc2lvbj10fWdldExpbmVPZmZzZXRzKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuX2xpbmVPZmZzZXRzJiYodGhpcy5fbGluZU9mZnNldHM9cWEodGhpcy5fY29udGVudCwhMCkpLHRoaXMuX2xpbmVPZmZzZXRzfXBvc2l0aW9uQXQoZSl7ZT1NYXRoLm1heChNYXRoLm1pbihlLHRoaXMuX2NvbnRlbnQubGVuZ3RoKSwwKTtsZXQgdD10aGlzLmdldExpbmVPZmZzZXRzKCksbj0wLHI9dC5sZW5ndGg7aWYoMD09PXIpcmV0dXJue2xpbmU6MCxjaGFyYWN0ZXI6ZX07Zm9yKDtuPHI7KXtsZXQgaT1NYXRoLmZsb29yKChuK3IpLzIpO3RbaV0+ZT9yPWk6bj1pKzF9bGV0IGk9bi0xO3JldHVybntsaW5lOmksY2hhcmFjdGVyOmUtdFtpXX19b2Zmc2V0QXQoZSl7bGV0IHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpO2lmKGUubGluZT49dC5sZW5ndGgpcmV0dXJuIHRoaXMuX2NvbnRlbnQubGVuZ3RoO2lmKGUubGluZTwwKXJldHVybiAwO2xldCBuPXRbZS5saW5lXSxyPWUubGluZSsxPHQubGVuZ3RoP3RbZS5saW5lKzFdOnRoaXMuX2NvbnRlbnQubGVuZ3RoO3JldHVybiBNYXRoLm1heChNYXRoLm1pbihuK2UuY2hhcmFjdGVyLHIpLG4pfWdldCBsaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5nZXRMaW5lT2Zmc2V0cygpLmxlbmd0aH1zdGF0aWMgaXNJbmNyZW1lbnRhbChlKXtsZXQgdD1lO3JldHVybiBudWxsIT10JiYic3RyaW5nIj09dHlwZW9mIHQudGV4dCYmdm9pZCAwIT09dC5yYW5nZSYmKHZvaWQgMD09PXQucmFuZ2VMZW5ndGh8fCJudW1iZXIiPT10eXBlb2YgdC5yYW5nZUxlbmd0aCl9c3RhdGljIGlzRnVsbChlKXtsZXQgdD1lO3JldHVybiBudWxsIT10JiYic3RyaW5nIj09dHlwZW9mIHQudGV4dCYmdm9pZCAwPT09dC5yYW5nZSYmdm9pZCAwPT09dC5yYW5nZUxlbmd0aH19O2Z1bmN0aW9uIFBhKGUsdCl7aWYoZS5sZW5ndGg8PTEpcmV0dXJuIGU7Y29uc3Qgbj1lLmxlbmd0aC8yfDAscj1lLnNsaWNlKDAsbiksaT1lLnNsaWNlKG4pO1BhKHIsdCksUGEoaSx0KTtsZXQgYT0wLG89MCxzPTA7Zm9yKDthPHIubGVuZ3RoJiZvPGkubGVuZ3RoOyl7bGV0IG49dChyW2FdLGlbb10pO2VbcysrXT1uPD0wP3JbYSsrXTppW28rK119Zm9yKDthPHIubGVuZ3RoOyllW3MrK109clthKytdO2Zvcig7bzxpLmxlbmd0aDspZVtzKytdPWlbbysrXTtyZXR1cm4gZX1mdW5jdGlvbiBxYShlLHQsbj0wKXtjb25zdCByPXQ/W25dOltdO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtsZXQgaT1lLmNoYXJDb2RlQXQodCk7MTMhPT1pJiYxMCE9PWl8fCgxMz09PWkmJnQrMTxlLmxlbmd0aCYmMTA9PT1lLmNoYXJDb2RlQXQodCsxKSYmdCsrLHIucHVzaChuK3QrMSkpfXJldHVybiByfWZ1bmN0aW9uIEZhKGUpe2NvbnN0IHQ9ZS5zdGFydCxuPWUuZW5kO3JldHVybiB0LmxpbmU+bi5saW5lfHx0LmxpbmU9PT1uLmxpbmUmJnQuY2hhcmFjdGVyPm4uY2hhcmFjdGVyP3tzdGFydDpuLGVuZDp0fTplfWZ1bmN0aW9uIEJhKGUpe2NvbnN0IHQ9RmEoZS5yYW5nZSk7cmV0dXJuIHQhPT1lLnJhbmdlP3tuZXdUZXh0OmUubmV3VGV4dCxyYW5nZTp0fTplfShSYT1NYXx8KE1hPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcgT2EoZSx0LG4scil9LFJhLnVwZGF0ZT1mdW5jdGlvbihlLHQsbil7aWYoZSBpbnN0YW5jZW9mIE9hKXJldHVybiBlLnVwZGF0ZSh0LG4pLGU7dGhyb3cgbmV3IEVycm9yKCJUZXh0RG9jdW1lbnQudXBkYXRlOiBkb2N1bWVudCBtdXN0IGJlIGNyZWF0ZWQgYnkgVGV4dERvY3VtZW50LmNyZWF0ZSIpfSxSYS5hcHBseUVkaXRzPWZ1bmN0aW9uKGUsdCl7bGV0IG49ZS5nZXRUZXh0KCkscj1QYSh0Lm1hcChCYSksKChlLHQpPT57bGV0IG49ZS5yYW5nZS5zdGFydC5saW5lLXQucmFuZ2Uuc3RhcnQubGluZTtyZXR1cm4gMD09PW4/ZS5yYW5nZS5zdGFydC5jaGFyYWN0ZXItdC5yYW5nZS5zdGFydC5jaGFyYWN0ZXI6bn0pKSxpPTA7Y29uc3QgYT1bXTtmb3IoY29uc3QgdCBvZiByKXtsZXQgcj1lLm9mZnNldEF0KHQucmFuZ2Uuc3RhcnQpO2lmKHI8aSl0aHJvdyBuZXcgRXJyb3IoIk92ZXJsYXBwaW5nIGVkaXQiKTtyPmkmJmEucHVzaChuLnN1YnN0cmluZyhpLHIpKSx0Lm5ld1RleHQubGVuZ3RoJiZhLnB1c2godC5uZXdUZXh0KSxpPWUub2Zmc2V0QXQodC5yYW5nZS5lbmQpfXJldHVybiBhLnB1c2gobi5zdWJzdHIoaSkpLGEuam9pbigiIil9LChJYT1OYXx8KE5hPXt9KSlbSWEuU3RhcnRDb21tZW50VGFnPTBdPSJTdGFydENvbW1lbnRUYWciLElhW0lhLkNvbW1lbnQ9MV09IkNvbW1lbnQiLElhW0lhLkVuZENvbW1lbnRUYWc9Ml09IkVuZENvbW1lbnRUYWciLElhW0lhLlN0YXJ0VGFnT3Blbj0zXT0iU3RhcnRUYWdPcGVuIixJYVtJYS5TdGFydFRhZ0Nsb3NlPTRdPSJTdGFydFRhZ0Nsb3NlIixJYVtJYS5TdGFydFRhZ1NlbGZDbG9zZT01XT0iU3RhcnRUYWdTZWxmQ2xvc2UiLElhW0lhLlN0YXJ0VGFnPTZdPSJTdGFydFRhZyIsSWFbSWEuRW5kVGFnT3Blbj03XT0iRW5kVGFnT3BlbiIsSWFbSWEuRW5kVGFnQ2xvc2U9OF09IkVuZFRhZ0Nsb3NlIixJYVtJYS5FbmRUYWc9OV09IkVuZFRhZyIsSWFbSWEuRGVsaW1pdGVyQXNzaWduPTEwXT0iRGVsaW1pdGVyQXNzaWduIixJYVtJYS5BdHRyaWJ1dGVOYW1lPTExXT0iQXR0cmlidXRlTmFtZSIsSWFbSWEuQXR0cmlidXRlVmFsdWU9MTJdPSJBdHRyaWJ1dGVWYWx1ZSIsSWFbSWEuU3RhcnREb2N0eXBlVGFnPTEzXT0iU3RhcnREb2N0eXBlVGFnIixJYVtJYS5Eb2N0eXBlPTE0XT0iRG9jdHlwZSIsSWFbSWEuRW5kRG9jdHlwZVRhZz0xNV09IkVuZERvY3R5cGVUYWciLElhW0lhLkNvbnRlbnQ9MTZdPSJDb250ZW50IixJYVtJYS5XaGl0ZXNwYWNlPTE3XT0iV2hpdGVzcGFjZSIsSWFbSWEuVW5rbm93bj0xOF09IlVua25vd24iLElhW0lhLlNjcmlwdD0xOV09IlNjcmlwdCIsSWFbSWEuU3R5bGVzPTIwXT0iU3R5bGVzIixJYVtJYS5FT1M9MjFdPSJFT1MiLChIYT1VYXx8KFVhPXt9KSlbSGEuV2l0aGluQ29udGVudD0wXT0iV2l0aGluQ29udGVudCIsSGFbSGEuQWZ0ZXJPcGVuaW5nU3RhcnRUYWc9MV09IkFmdGVyT3BlbmluZ1N0YXJ0VGFnIixIYVtIYS5BZnRlck9wZW5pbmdFbmRUYWc9Ml09IkFmdGVyT3BlbmluZ0VuZFRhZyIsSGFbSGEuV2l0aGluRG9jdHlwZT0zXT0iV2l0aGluRG9jdHlwZSIsSGFbSGEuV2l0aGluVGFnPTRdPSJXaXRoaW5UYWciLEhhW0hhLldpdGhpbkVuZFRhZz01XT0iV2l0aGluRW5kVGFnIixIYVtIYS5XaXRoaW5Db21tZW50PTZdPSJXaXRoaW5Db21tZW50IixIYVtIYS5XaXRoaW5TY3JpcHRDb250ZW50PTddPSJXaXRoaW5TY3JpcHRDb250ZW50IixIYVtIYS5XaXRoaW5TdHlsZUNvbnRlbnQ9OF09IldpdGhpblN0eWxlQ29udGVudCIsSGFbSGEuQWZ0ZXJBdHRyaWJ1dGVOYW1lPTldPSJBZnRlckF0dHJpYnV0ZU5hbWUiLEhhW0hhLkJlZm9yZUF0dHJpYnV0ZVZhbHVlPTEwXT0iQmVmb3JlQXR0cmlidXRlVmFsdWUiLChEYXx8KERhPXt9KSkuTEFURVNUPXt0ZXh0RG9jdW1lbnQ6e2NvbXBsZXRpb246e2NvbXBsZXRpb25JdGVtOntkb2N1bWVudGF0aW9uRm9ybWF0OltIaS5NYXJrZG93bixIaS5QbGFpblRleHRdfX0saG92ZXI6e2NvbnRlbnRGb3JtYXQ6W0hpLk1hcmtkb3duLEhpLlBsYWluVGV4dF19fX0sKFdhPXphfHwoemE9e30pKVtXYS5Vbmtub3duPTBdPSJVbmtub3duIixXYVtXYS5GaWxlPTFdPSJGaWxlIixXYVtXYS5EaXJlY3Rvcnk9Ml09IkRpcmVjdG9yeSIsV2FbV2EuU3ltYm9saWNMaW5rPTY0XT0iU3ltYm9saWNMaW5rIjt2YXIgVmE9UnIoKSxLYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLnNvdXJjZT1lLHRoaXMubGVuPWUubGVuZ3RoLHRoaXMucG9zaXRpb249dH1yZXR1cm4gZS5wcm90b3R5cGUuZW9zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuPD10aGlzLnBvc2l0aW9ufSxlLnByb3RvdHlwZS5nZXRTb3VyY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zb3VyY2V9LGUucHJvdG90eXBlLnBvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9ufSxlLnByb3RvdHlwZS5nb0JhY2tUbz1mdW5jdGlvbihlKXt0aGlzLnBvc2l0aW9uPWV9LGUucHJvdG90eXBlLmdvQmFjaz1mdW5jdGlvbihlKXt0aGlzLnBvc2l0aW9uLT1lfSxlLnByb3RvdHlwZS5hZHZhbmNlPWZ1bmN0aW9uKGUpe3RoaXMucG9zaXRpb24rPWV9LGUucHJvdG90eXBlLmdvVG9FbmQ9ZnVuY3Rpb24oKXt0aGlzLnBvc2l0aW9uPXRoaXMuc291cmNlLmxlbmd0aH0sZS5wcm90b3R5cGUubmV4dENoYXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKyspfHwwfSxlLnByb3RvdHlwZS5wZWVrQ2hhcj1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9MCksdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uK2UpfHwwfSxlLnByb3RvdHlwZS5hZHZhbmNlSWZDaGFyPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKSYmKHRoaXMucG9zaXRpb24rKywhMCl9LGUucHJvdG90eXBlLmFkdmFuY2VJZkNoYXJzPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKHRoaXMucG9zaXRpb24rZS5sZW5ndGg+dGhpcy5zb3VyY2UubGVuZ3RoKXJldHVybiExO2Zvcih0PTA7dDxlLmxlbmd0aDt0KyspaWYodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uK3QpIT09ZVt0XSlyZXR1cm4hMTtyZXR1cm4gdGhpcy5hZHZhbmNlKHQpLCEwfSxlLnByb3RvdHlwZS5hZHZhbmNlSWZSZWdFeHA9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zb3VyY2Uuc3Vic3RyKHRoaXMucG9zaXRpb24pLm1hdGNoKGUpO3JldHVybiB0Pyh0aGlzLnBvc2l0aW9uPXRoaXMucG9zaXRpb24rdC5pbmRleCt0WzBdLmxlbmd0aCx0WzBdKToiIn0sZS5wcm90b3R5cGUuYWR2YW5jZVVudGlsUmVnRXhwPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc291cmNlLnN1YnN0cih0aGlzLnBvc2l0aW9uKS5tYXRjaChlKTtyZXR1cm4gdD8odGhpcy5wb3NpdGlvbj10aGlzLnBvc2l0aW9uK3QuaW5kZXgsdFswXSk6KHRoaXMuZ29Ub0VuZCgpLCIiKX0sZS5wcm90b3R5cGUuYWR2YW5jZVVudGlsQ2hhcj1mdW5jdGlvbihlKXtmb3IoO3RoaXMucG9zaXRpb248dGhpcy5zb3VyY2UubGVuZ3RoOyl7aWYodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKT09PWUpcmV0dXJuITA7dGhpcy5hZHZhbmNlKDEpfXJldHVybiExfSxlLnByb3RvdHlwZS5hZHZhbmNlVW50aWxDaGFycz1mdW5jdGlvbihlKXtmb3IoO3RoaXMucG9zaXRpb24rZS5sZW5ndGg8PXRoaXMuc291cmNlLmxlbmd0aDspe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGgmJnRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbit0KT09PWVbdF07dCsrKTtpZih0PT09ZS5sZW5ndGgpcmV0dXJuITA7dGhpcy5hZHZhbmNlKDEpfXJldHVybiB0aGlzLmdvVG9FbmQoKSwhMX0sZS5wcm90b3R5cGUuc2tpcFdoaXRlc3BhY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hZHZhbmNlV2hpbGVDaGFyKChmdW5jdGlvbihlKXtyZXR1cm4gZT09PXJvfHxlPT09aW98fGU9PT1lb3x8ZT09PW5vfHxlPT09dG99KSk+MH0sZS5wcm90b3R5cGUuYWR2YW5jZVdoaWxlQ2hhcj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5wb3NpdGlvbjt0aGlzLnBvc2l0aW9uPHRoaXMubGVuJiZlKHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbikpOyl0aGlzLnBvc2l0aW9uKys7cmV0dXJuIHRoaXMucG9zaXRpb24tdH0sZX0oKSxqYT0iISIuY2hhckNvZGVBdCgwKSxHYT0iLSIuY2hhckNvZGVBdCgwKSwkYT0iPCIuY2hhckNvZGVBdCgwKSxKYT0iPiIuY2hhckNvZGVBdCgwKSxYYT0iLyIuY2hhckNvZGVBdCgwKSxZYT0iPSIuY2hhckNvZGVBdCgwKSxRYT0nIicuY2hhckNvZGVBdCgwKSxaYT0iJyIuY2hhckNvZGVBdCgwKSxlbz0iXG4iLmNoYXJDb2RlQXQoMCksdG89IlxyIi5jaGFyQ29kZUF0KDApLG5vPSJcZiIuY2hhckNvZGVBdCgwKSxybz0iICIuY2hhckNvZGVBdCgwKSxpbz0iXHQiLmNoYXJDb2RlQXQoMCksYW89eyJ0ZXh0L3gtaGFuZGxlYmFycy10ZW1wbGF0ZSI6ITAsInRleHQvaHRtbCI6ITB9O2Z1bmN0aW9uIG9vKGUsdCxuLHIpe3ZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PW4mJihuPVVhLldpdGhpbkNvbnRlbnQpLHZvaWQgMD09PXImJihyPSExKTt2YXIgaSxhLG8scyxsLGM9bmV3IEthKGUsdCksaD1uLGQ9MCx1PU5hLlVua25vd247ZnVuY3Rpb24gcCgpe3JldHVybiBjLmFkdmFuY2VJZlJlZ0V4cCgvXltfOlx3XVtfOlx3LS5cZF0qLykudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBtKGUsdCxuKXtyZXR1cm4gdT10LGQ9ZSxpPW4sdH1mdW5jdGlvbiBmKCl7dmFyIGUsdD1jLnBvcygpO2lmKGMuZW9zKCkpcmV0dXJuIG0odCxOYS5FT1MpO3N3aXRjaChoKXtjYXNlIFVhLldpdGhpbkNvbW1lbnQ6cmV0dXJuIGMuYWR2YW5jZUlmQ2hhcnMoW0dhLEdhLEphXSk/KGg9VWEuV2l0aGluQ29udGVudCxtKHQsTmEuRW5kQ29tbWVudFRhZykpOihjLmFkdmFuY2VVbnRpbENoYXJzKFtHYSxHYSxKYV0pLG0odCxOYS5Db21tZW50KSk7Y2FzZSBVYS5XaXRoaW5Eb2N0eXBlOnJldHVybiBjLmFkdmFuY2VJZkNoYXIoSmEpPyhoPVVhLldpdGhpbkNvbnRlbnQsbSh0LE5hLkVuZERvY3R5cGVUYWcpKTooYy5hZHZhbmNlVW50aWxDaGFyKEphKSxtKHQsTmEuRG9jdHlwZSkpO2Nhc2UgVWEuV2l0aGluQ29udGVudDppZihjLmFkdmFuY2VJZkNoYXIoJGEpKXtpZighYy5lb3MoKSYmYy5wZWVrQ2hhcigpPT09amEpe2lmKGMuYWR2YW5jZUlmQ2hhcnMoW2phLEdhLEdhXSkpcmV0dXJuIGg9VWEuV2l0aGluQ29tbWVudCxtKHQsTmEuU3RhcnRDb21tZW50VGFnKTtpZihjLmFkdmFuY2VJZlJlZ0V4cCgvXiFkb2N0eXBlL2kpKXJldHVybiBoPVVhLldpdGhpbkRvY3R5cGUsbSh0LE5hLlN0YXJ0RG9jdHlwZVRhZyl9cmV0dXJuIGMuYWR2YW5jZUlmQ2hhcihYYSk/KGg9VWEuQWZ0ZXJPcGVuaW5nRW5kVGFnLG0odCxOYS5FbmRUYWdPcGVuKSk6KGg9VWEuQWZ0ZXJPcGVuaW5nU3RhcnRUYWcsbSh0LE5hLlN0YXJ0VGFnT3BlbikpfXJldHVybiBjLmFkdmFuY2VVbnRpbENoYXIoJGEpLG0odCxOYS5Db250ZW50KTtjYXNlIFVhLkFmdGVyT3BlbmluZ0VuZFRhZzpyZXR1cm4gcCgpLmxlbmd0aD4wPyhoPVVhLldpdGhpbkVuZFRhZyxtKHQsTmEuRW5kVGFnKSk6Yy5za2lwV2hpdGVzcGFjZSgpP20odCxOYS5XaGl0ZXNwYWNlLFZhKCJlcnJvci51bmV4cGVjdGVkV2hpdGVzcGFjZSIsIlRhZyBuYW1lIG11c3QgZGlyZWN0bHkgZm9sbG93IHRoZSBvcGVuIGJyYWNrZXQuIikpOihoPVVhLldpdGhpbkVuZFRhZyxjLmFkdmFuY2VVbnRpbENoYXIoSmEpLHQ8Yy5wb3MoKT9tKHQsTmEuVW5rbm93bixWYSgiZXJyb3IuZW5kVGFnTmFtZUV4cGVjdGVkIiwiRW5kIHRhZyBuYW1lIGV4cGVjdGVkLiIpKTpmKCkpO2Nhc2UgVWEuV2l0aGluRW5kVGFnOmlmKGMuc2tpcFdoaXRlc3BhY2UoKSlyZXR1cm4gbSh0LE5hLldoaXRlc3BhY2UpO2lmKGMuYWR2YW5jZUlmQ2hhcihKYSkpcmV0dXJuIGg9VWEuV2l0aGluQ29udGVudCxtKHQsTmEuRW5kVGFnQ2xvc2UpO2lmKHImJmMucGVla0NoYXIoKT09PSRhKXJldHVybiBoPVVhLldpdGhpbkNvbnRlbnQsbSh0LE5hLkVuZFRhZ0Nsb3NlLFZhKCJlcnJvci5jbG9zaW5nQnJhY2tldE1pc3NpbmciLCJDbG9zaW5nIGJyYWNrZXQgbWlzc2luZy4iKSk7ZT1WYSgiZXJyb3IuY2xvc2luZ0JyYWNrZXRFeHBlY3RlZCIsIkNsb3NpbmcgYnJhY2tldCBleHBlY3RlZC4iKTticmVhaztjYXNlIFVhLkFmdGVyT3BlbmluZ1N0YXJ0VGFnOnJldHVybiBvPXAoKSxsPXZvaWQgMCxzPXZvaWQgMCxvLmxlbmd0aD4wPyhhPSExLGg9VWEuV2l0aGluVGFnLG0odCxOYS5TdGFydFRhZykpOmMuc2tpcFdoaXRlc3BhY2UoKT9tKHQsTmEuV2hpdGVzcGFjZSxWYSgiZXJyb3IudW5leHBlY3RlZFdoaXRlc3BhY2UiLCJUYWcgbmFtZSBtdXN0IGRpcmVjdGx5IGZvbGxvdyB0aGUgb3BlbiBicmFja2V0LiIpKTooaD1VYS5XaXRoaW5UYWcsYy5hZHZhbmNlVW50aWxDaGFyKEphKSx0PGMucG9zKCk/bSh0LE5hLlVua25vd24sVmEoImVycm9yLnN0YXJ0VGFnTmFtZUV4cGVjdGVkIiwiU3RhcnQgdGFnIG5hbWUgZXhwZWN0ZWQuIikpOmYoKSk7Y2FzZSBVYS5XaXRoaW5UYWc6cmV0dXJuIGMuc2tpcFdoaXRlc3BhY2UoKT8oYT0hMCxtKHQsTmEuV2hpdGVzcGFjZSkpOmEmJihzPWMuYWR2YW5jZUlmUmVnRXhwKC9eW15ccyInPjwvPVx4MDAtXHgwRlx4N0ZceDgwLVx4OUZdKi8pLnRvTG93ZXJDYXNlKCkpLmxlbmd0aD4wPyhoPVVhLkFmdGVyQXR0cmlidXRlTmFtZSxhPSExLG0odCxOYS5BdHRyaWJ1dGVOYW1lKSk6Yy5hZHZhbmNlSWZDaGFycyhbWGEsSmFdKT8oaD1VYS5XaXRoaW5Db250ZW50LG0odCxOYS5TdGFydFRhZ1NlbGZDbG9zZSkpOmMuYWR2YW5jZUlmQ2hhcihKYSk/KGg9InNjcmlwdCI9PT1vP2wmJmFvW2xdP1VhLldpdGhpbkNvbnRlbnQ6VWEuV2l0aGluU2NyaXB0Q29udGVudDoic3R5bGUiPT09bz9VYS5XaXRoaW5TdHlsZUNvbnRlbnQ6VWEuV2l0aGluQ29udGVudCxtKHQsTmEuU3RhcnRUYWdDbG9zZSkpOnImJmMucGVla0NoYXIoKT09PSRhPyhoPVVhLldpdGhpbkNvbnRlbnQsbSh0LE5hLlN0YXJ0VGFnQ2xvc2UsVmEoImVycm9yLmNsb3NpbmdCcmFja2V0TWlzc2luZyIsIkNsb3NpbmcgYnJhY2tldCBtaXNzaW5nLiIpKSk6KGMuYWR2YW5jZSgxKSxtKHQsTmEuVW5rbm93bixWYSgiZXJyb3IudW5leHBlY3RlZENoYXJhY3RlckluVGFnIiwiVW5leHBlY3RlZCBjaGFyYWN0ZXIgaW4gdGFnLiIpKSk7Y2FzZSBVYS5BZnRlckF0dHJpYnV0ZU5hbWU6cmV0dXJuIGMuc2tpcFdoaXRlc3BhY2UoKT8oYT0hMCxtKHQsTmEuV2hpdGVzcGFjZSkpOmMuYWR2YW5jZUlmQ2hhcihZYSk/KGg9VWEuQmVmb3JlQXR0cmlidXRlVmFsdWUsbSh0LE5hLkRlbGltaXRlckFzc2lnbikpOihoPVVhLldpdGhpblRhZyxmKCkpO2Nhc2UgVWEuQmVmb3JlQXR0cmlidXRlVmFsdWU6aWYoYy5za2lwV2hpdGVzcGFjZSgpKXJldHVybiBtKHQsTmEuV2hpdGVzcGFjZSk7dmFyIG49Yy5hZHZhbmNlSWZSZWdFeHAoL15bXlxzIidgPTw+XSsvKTtpZihuLmxlbmd0aD4wKXJldHVybiBjLnBlZWtDaGFyKCk9PT1KYSYmYy5wZWVrQ2hhcigtMSk9PT1YYSYmKGMuZ29CYWNrKDEpLG49bi5zdWJzdHIoMCxuLmxlbmd0aC0xKSksInR5cGUiPT09cyYmKGw9biksaD1VYS5XaXRoaW5UYWcsYT0hMSxtKHQsTmEuQXR0cmlidXRlVmFsdWUpO3ZhciBpPWMucGVla0NoYXIoKTtyZXR1cm4gaT09PVphfHxpPT09UWE/KGMuYWR2YW5jZSgxKSxjLmFkdmFuY2VVbnRpbENoYXIoaSkmJmMuYWR2YW5jZSgxKSwidHlwZSI9PT1zJiYobD1jLmdldFNvdXJjZSgpLnN1YnN0cmluZyh0KzEsYy5wb3MoKS0xKSksaD1VYS5XaXRoaW5UYWcsYT0hMSxtKHQsTmEuQXR0cmlidXRlVmFsdWUpKTooaD1VYS5XaXRoaW5UYWcsYT0hMSxmKCkpO2Nhc2UgVWEuV2l0aGluU2NyaXB0Q29udGVudDpmb3IodmFyIGQ9MTshYy5lb3MoKTspe3ZhciB1PWMuYWR2YW5jZUlmUmVnRXhwKC88IS0tfC0tPnw8XC8/c2NyaXB0XHMqXC8/Pj8vaSk7aWYoMD09PXUubGVuZ3RoKXJldHVybiBjLmdvVG9FbmQoKSxtKHQsTmEuU2NyaXB0KTtpZigiXHgzYyEtLSI9PT11KTE9PT1kJiYoZD0yKTtlbHNlIGlmKCItLVx4M2UiPT09dSlkPTE7ZWxzZSBpZigiLyIhPT11WzFdKTI9PT1kJiYoZD0zKTtlbHNle2lmKDMhPT1kKXtjLmdvQmFjayh1Lmxlbmd0aCk7YnJlYWt9ZD0yfX1yZXR1cm4gaD1VYS5XaXRoaW5Db250ZW50LHQ8Yy5wb3MoKT9tKHQsTmEuU2NyaXB0KTpmKCk7Y2FzZSBVYS5XaXRoaW5TdHlsZUNvbnRlbnQ6cmV0dXJuIGMuYWR2YW5jZVVudGlsUmVnRXhwKC88XC9zdHlsZS9pKSxoPVVhLldpdGhpbkNvbnRlbnQsdDxjLnBvcygpP20odCxOYS5TdHlsZXMpOmYoKX1yZXR1cm4gYy5hZHZhbmNlKDEpLGg9VWEuV2l0aGluQ29udGVudCxtKHQsTmEuVW5rbm93bixlKX1yZXR1cm57c2NhbjpmdW5jdGlvbigpe3ZhciBlPWMucG9zKCksdD1oLG49ZigpO3JldHVybiBuPT09TmEuRU9TfHxlIT09Yy5wb3MoKXx8ciYmKG49PT1OYS5TdGFydFRhZ0Nsb3NlfHxuPT09TmEuRW5kVGFnQ2xvc2UpP246KGNvbnNvbGUubG9nKCJTY2FubmVyLnNjYW4gaGFzIG5vdCBhZHZhbmNlZCBhdCBvZmZzZXQgIitlKyIsIHN0YXRlIGJlZm9yZTogIit0KyIgYWZ0ZXI6ICIraCksYy5hZHZhbmNlKDEpLG0oZSxOYS5Vbmtub3duKSl9LGdldFRva2VuVHlwZTpmdW5jdGlvbigpe3JldHVybiB1fSxnZXRUb2tlbk9mZnNldDpmdW5jdGlvbigpe3JldHVybiBkfSxnZXRUb2tlbkxlbmd0aDpmdW5jdGlvbigpe3JldHVybiBjLnBvcygpLWR9LGdldFRva2VuRW5kOmZ1bmN0aW9uKCl7cmV0dXJuIGMucG9zKCl9LGdldFRva2VuVGV4dDpmdW5jdGlvbigpe3JldHVybiBjLmdldFNvdXJjZSgpLnN1YnN0cmluZyhkLGMucG9zKCkpfSxnZXRTY2FubmVyU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sZ2V0VG9rZW5FcnJvcjpmdW5jdGlvbigpe3JldHVybiBpfX19ZnVuY3Rpb24gc28oZSx0KXt2YXIgbj0wLHI9ZS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIDA7Zm9yKDtuPHI7KXt2YXIgaT1NYXRoLmZsb29yKChuK3IpLzIpO3QoZVtpXSk/cj1pOm49aSsxfXJldHVybiBufXZhciBsbz1bImFyZWEiLCJiYXNlIiwiYnIiLCJjb2wiLCJlbWJlZCIsImhyIiwiaW1nIiwiaW5wdXQiLCJrZXlnZW4iLCJsaW5rIiwibWVudWl0ZW0iLCJtZXRhIiwicGFyYW0iLCJzb3VyY2UiLCJ0cmFjayIsIndiciJdO2Z1bmN0aW9uIGNvKGUpe3JldHVybiEhZSYmZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj0wLGk9ZS5sZW5ndGgtMTtyPD1pOyl7dmFyIGE9KHIraSkvMnwwLG89bihlW2FdLHQpO2lmKG88MClyPWErMTtlbHNle2lmKCEobz4wKSlyZXR1cm4gYTtpPWEtMX19cmV0dXJuLShyKzEpfShsbyxlLnRvTG93ZXJDYXNlKCksKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubG9jYWxlQ29tcGFyZSh0KX0pKT49MH12YXIgaG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLHIpe3RoaXMuc3RhcnQ9ZSx0aGlzLmVuZD10LHRoaXMuY2hpbGRyZW49bix0aGlzLnBhcmVudD1yLHRoaXMuY2xvc2VkPSExfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImF0dHJpYnV0ZU5hbWVzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cmlidXRlcz9PYmplY3Qua2V5cyh0aGlzLmF0dHJpYnV0ZXMpOltdfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmlzU2FtZVRhZz1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09dGhpcy50YWc/dm9pZCAwPT09ZTp2b2lkIDAhPT1lJiZ0aGlzLnRhZy5sZW5ndGg9PT1lLmxlbmd0aCYmdGhpcy50YWcudG9Mb3dlckNhc2UoKT09PWV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZmlyc3RDaGlsZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkcmVuWzBdfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibGFzdENoaWxkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGgtMV06dm9pZCAwfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmZpbmROb2RlQmVmb3JlPWZ1bmN0aW9uKGUpe3ZhciB0PXNvKHRoaXMuY2hpbGRyZW4sKGZ1bmN0aW9uKHQpe3JldHVybiBlPD10LnN0YXJ0fSkpLTE7aWYodD49MCl7dmFyIG49dGhpcy5jaGlsZHJlblt0XTtpZihlPm4uc3RhcnQpe2lmKGU8bi5lbmQpcmV0dXJuIG4uZmluZE5vZGVCZWZvcmUoZSk7dmFyIHI9bi5sYXN0Q2hpbGQ7cmV0dXJuIHImJnIuZW5kPT09bi5lbmQ/bi5maW5kTm9kZUJlZm9yZShlKTpufX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuZmluZE5vZGVBdD1mdW5jdGlvbihlKXt2YXIgdD1zbyh0aGlzLmNoaWxkcmVuLChmdW5jdGlvbih0KXtyZXR1cm4gZTw9dC5zdGFydH0pKS0xO2lmKHQ+PTApe3ZhciBuPXRoaXMuY2hpbGRyZW5bdF07aWYoZT5uLnN0YXJ0JiZlPD1uLmVuZClyZXR1cm4gbi5maW5kTm9kZUF0KGUpfXJldHVybiB0aGlzfSxlfSgpO2Z1bmN0aW9uIHVvKGUpe2Zvcih2YXIgdD1vbyhlLHZvaWQgMCx2b2lkIDAsITApLG49bmV3IGhvKDAsZS5sZW5ndGgsW10sdm9pZCAwKSxyPW4saT0tMSxhPXZvaWQgMCxvPW51bGwscz10LnNjYW4oKTtzIT09TmEuRU9TOyl7c3dpdGNoKHMpe2Nhc2UgTmEuU3RhcnRUYWdPcGVuOnZhciBsPW5ldyBobyh0LmdldFRva2VuT2Zmc2V0KCksZS5sZW5ndGgsW10scik7ci5jaGlsZHJlbi5wdXNoKGwpLHI9bDticmVhaztjYXNlIE5hLlN0YXJ0VGFnOnIudGFnPXQuZ2V0VG9rZW5UZXh0KCk7YnJlYWs7Y2FzZSBOYS5TdGFydFRhZ0Nsb3NlOnIucGFyZW50JiYoci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHQuZ2V0VG9rZW5MZW5ndGgoKT8oci5zdGFydFRhZ0VuZD10LmdldFRva2VuRW5kKCksci50YWcmJmNvKHIudGFnKSYmKHIuY2xvc2VkPSEwLHI9ci5wYXJlbnQpKTpyPXIucGFyZW50KTticmVhaztjYXNlIE5hLlN0YXJ0VGFnU2VsZkNsb3NlOnIucGFyZW50JiYoci5jbG9zZWQ9ITAsci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHIuc3RhcnRUYWdFbmQ9dC5nZXRUb2tlbkVuZCgpLHI9ci5wYXJlbnQpO2JyZWFrO2Nhc2UgTmEuRW5kVGFnT3BlbjppPXQuZ2V0VG9rZW5PZmZzZXQoKSxhPXZvaWQgMDticmVhaztjYXNlIE5hLkVuZFRhZzphPXQuZ2V0VG9rZW5UZXh0KCkudG9Mb3dlckNhc2UoKTticmVhaztjYXNlIE5hLkVuZFRhZ0Nsb3NlOmZvcih2YXIgYz1yOyFjLmlzU2FtZVRhZyhhKSYmYy5wYXJlbnQ7KWM9Yy5wYXJlbnQ7aWYoYy5wYXJlbnQpe2Zvcig7ciE9PWM7KXIuZW5kPWksci5jbG9zZWQ9ITEscj1yLnBhcmVudDtyLmNsb3NlZD0hMCxyLmVuZFRhZ1N0YXJ0PWksci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHI9ci5wYXJlbnR9YnJlYWs7Y2FzZSBOYS5BdHRyaWJ1dGVOYW1lOm89dC5nZXRUb2tlblRleHQoKSwoaD1yLmF0dHJpYnV0ZXMpfHwoci5hdHRyaWJ1dGVzPWg9e30pLGhbb109bnVsbDticmVhaztjYXNlIE5hLkF0dHJpYnV0ZVZhbHVlOnZhciBoLGQ9dC5nZXRUb2tlblRleHQoKTsoaD1yLmF0dHJpYnV0ZXMpJiZvJiYoaFtvXT1kLG89bnVsbCl9cz10LnNjYW4oKX1mb3IoO3IucGFyZW50OylyLmVuZD1lLmxlbmd0aCxyLmNsb3NlZD0hMSxyPXIucGFyZW50O3JldHVybntyb290czpuLmNoaWxkcmVuLGZpbmROb2RlQmVmb3JlOm4uZmluZE5vZGVCZWZvcmUuYmluZChuKSxmaW5kTm9kZUF0Om4uZmluZE5vZGVBdC5iaW5kKG4pfX12YXIgcG89eyJBYWN1dGU7Ijoiw4EiLEFhY3V0ZToiw4EiLCJhYWN1dGU7Ijoiw6EiLGFhY3V0ZToiw6EiLCJBYnJldmU7IjoixIIiLCJhYnJldmU7IjoixIMiLCJhYzsiOiLiiL4iLCJhY2Q7Ijoi4oi/IiwiYWNFOyI6IuKIvsyzIiwiQWNpcmM7Ijoiw4IiLEFjaXJjOiLDgiIsImFjaXJjOyI6IsOiIixhY2lyYzoiw6IiLCJhY3V0ZTsiOiLCtCIsYWN1dGU6IsK0IiwiQWN5OyI6ItCQIiwiYWN5OyI6ItCwIiwiQUVsaWc7Ijoiw4YiLEFFbGlnOiLDhiIsImFlbGlnOyI6IsOmIixhZWxpZzoiw6YiLCJhZjsiOiLigaEiLCJBZnI7Ijoi8J2UhCIsImFmcjsiOiLwnZSeIiwiQWdyYXZlOyI6IsOAIixBZ3JhdmU6IsOAIiwiYWdyYXZlOyI6IsOgIixhZ3JhdmU6IsOgIiwiYWxlZnN5bTsiOiLihLUiLCJhbGVwaDsiOiLihLUiLCJBbHBoYTsiOiLOkSIsImFscGhhOyI6Is6xIiwiQW1hY3I7IjoixIAiLCJhbWFjcjsiOiLEgSIsImFtYWxnOyI6IuKovyIsIkFNUDsiOiImIixBTVA6IiYiLCJhbXA7IjoiJiIsYW1wOiImIiwiQW5kOyI6IuKpkyIsImFuZDsiOiLiiKciLCJhbmRhbmQ7Ijoi4qmVIiwiYW5kZDsiOiLiqZwiLCJhbmRzbG9wZTsiOiLiqZgiLCJhbmR2OyI6IuKpmiIsImFuZzsiOiLiiKAiLCJhbmdlOyI6IuKmpCIsImFuZ2xlOyI6IuKIoCIsImFuZ21zZDsiOiLiiKEiLCJhbmdtc2RhYTsiOiLipqgiLCJhbmdtc2RhYjsiOiLipqkiLCJhbmdtc2RhYzsiOiLipqoiLCJhbmdtc2RhZDsiOiLipqsiLCJhbmdtc2RhZTsiOiLipqwiLCJhbmdtc2RhZjsiOiLipq0iLCJhbmdtc2RhZzsiOiLipq4iLCJhbmdtc2RhaDsiOiLipq8iLCJhbmdydDsiOiLiiJ8iLCJhbmdydHZiOyI6IuKKviIsImFuZ3J0dmJkOyI6IuKmnSIsImFuZ3NwaDsiOiLiiKIiLCJhbmdzdDsiOiLDhSIsImFuZ3phcnI7Ijoi4o28IiwiQW9nb247IjoixIQiLCJhb2dvbjsiOiLEhSIsIkFvcGY7Ijoi8J2UuCIsImFvcGY7Ijoi8J2VkiIsImFwOyI6IuKJiCIsImFwYWNpcjsiOiLiqa8iLCJhcEU7Ijoi4qmwIiwiYXBlOyI6IuKJiiIsImFwaWQ7Ijoi4omLIiwiYXBvczsiOiInIiwiQXBwbHlGdW5jdGlvbjsiOiLigaEiLCJhcHByb3g7Ijoi4omIIiwiYXBwcm94ZXE7Ijoi4omKIiwiQXJpbmc7Ijoiw4UiLEFyaW5nOiLDhSIsImFyaW5nOyI6IsOlIixhcmluZzoiw6UiLCJBc2NyOyI6IvCdkpwiLCJhc2NyOyI6IvCdkrYiLCJBc3NpZ247Ijoi4omUIiwiYXN0OyI6IioiLCJhc3ltcDsiOiLiiYgiLCJhc3ltcGVxOyI6IuKJjSIsIkF0aWxkZTsiOiLDgyIsQXRpbGRlOiLDgyIsImF0aWxkZTsiOiLDoyIsYXRpbGRlOiLDoyIsIkF1bWw7Ijoiw4QiLEF1bWw6IsOEIiwiYXVtbDsiOiLDpCIsYXVtbDoiw6QiLCJhd2NvbmludDsiOiLiiLMiLCJhd2ludDsiOiLiqJEiLCJiYWNrY29uZzsiOiLiiYwiLCJiYWNrZXBzaWxvbjsiOiLPtiIsImJhY2twcmltZTsiOiLigLUiLCJiYWNrc2ltOyI6IuKIvSIsImJhY2tzaW1lcTsiOiLii40iLCJCYWNrc2xhc2g7Ijoi4oiWIiwiQmFydjsiOiLiq6ciLCJiYXJ2ZWU7Ijoi4oq9IiwiQmFyd2VkOyI6IuKMhiIsImJhcndlZDsiOiLijIUiLCJiYXJ3ZWRnZTsiOiLijIUiLCJiYnJrOyI6IuKOtSIsImJicmt0YnJrOyI6IuKOtiIsImJjb25nOyI6IuKJjCIsIkJjeTsiOiLQkSIsImJjeTsiOiLQsSIsImJkcXVvOyI6IuKAniIsImJlY2F1czsiOiLiiLUiLCJCZWNhdXNlOyI6IuKItSIsImJlY2F1c2U7Ijoi4oi1IiwiYmVtcHR5djsiOiLiprAiLCJiZXBzaTsiOiLPtiIsImJlcm5vdTsiOiLihKwiLCJCZXJub3VsbGlzOyI6IuKErCIsIkJldGE7IjoizpIiLCJiZXRhOyI6Is6yIiwiYmV0aDsiOiLihLYiLCJiZXR3ZWVuOyI6IuKJrCIsIkJmcjsiOiLwnZSFIiwiYmZyOyI6IvCdlJ8iLCJiaWdjYXA7Ijoi4ouCIiwiYmlnY2lyYzsiOiLil68iLCJiaWdjdXA7Ijoi4ouDIiwiYmlnb2RvdDsiOiLiqIAiLCJiaWdvcGx1czsiOiLiqIEiLCJiaWdvdGltZXM7Ijoi4qiCIiwiYmlnc3FjdXA7Ijoi4qiGIiwiYmlnc3RhcjsiOiLimIUiLCJiaWd0cmlhbmdsZWRvd247Ijoi4pa9IiwiYmlndHJpYW5nbGV1cDsiOiLilrMiLCJiaWd1cGx1czsiOiLiqIQiLCJiaWd2ZWU7Ijoi4ouBIiwiYmlnd2VkZ2U7Ijoi4ouAIiwiYmthcm93OyI6IuKkjSIsImJsYWNrbG96ZW5nZTsiOiLip6siLCJibGFja3NxdWFyZTsiOiLilqoiLCJibGFja3RyaWFuZ2xlOyI6IuKWtCIsImJsYWNrdHJpYW5nbGVkb3duOyI6IuKWviIsImJsYWNrdHJpYW5nbGVsZWZ0OyI6IuKXgiIsImJsYWNrdHJpYW5nbGVyaWdodDsiOiLilrgiLCJibGFuazsiOiLikKMiLCJibGsxMjsiOiLilpIiLCJibGsxNDsiOiLilpEiLCJibGszNDsiOiLilpMiLCJibG9jazsiOiLilogiLCJibmU7IjoiPeKDpSIsImJuZXF1aXY7Ijoi4omh4oOlIiwiYk5vdDsiOiLiq60iLCJibm90OyI6IuKMkCIsIkJvcGY7Ijoi8J2UuSIsImJvcGY7Ijoi8J2VkyIsImJvdDsiOiLiiqUiLCJib3R0b207Ijoi4oqlIiwiYm93dGllOyI6IuKLiCIsImJveGJveDsiOiLip4kiLCJib3hETDsiOiLilZciLCJib3hEbDsiOiLilZYiLCJib3hkTDsiOiLilZUiLCJib3hkbDsiOiLilJAiLCJib3hEUjsiOiLilZQiLCJib3hEcjsiOiLilZMiLCJib3hkUjsiOiLilZIiLCJib3hkcjsiOiLilIwiLCJib3hIOyI6IuKVkCIsImJveGg7Ijoi4pSAIiwiYm94SEQ7Ijoi4pWmIiwiYm94SGQ7Ijoi4pWkIiwiYm94aEQ7Ijoi4pWlIiwiYm94aGQ7Ijoi4pSsIiwiYm94SFU7Ijoi4pWpIiwiYm94SHU7Ijoi4pWnIiwiYm94aFU7Ijoi4pWoIiwiYm94aHU7Ijoi4pS0IiwiYm94bWludXM7Ijoi4oqfIiwiYm94cGx1czsiOiLiip4iLCJib3h0aW1lczsiOiLiiqAiLCJib3hVTDsiOiLilZ0iLCJib3hVbDsiOiLilZwiLCJib3h1TDsiOiLilZsiLCJib3h1bDsiOiLilJgiLCJib3hVUjsiOiLilZoiLCJib3hVcjsiOiLilZkiLCJib3h1UjsiOiLilZgiLCJib3h1cjsiOiLilJQiLCJib3hWOyI6IuKVkSIsImJveHY7Ijoi4pSCIiwiYm94Vkg7Ijoi4pWsIiwiYm94Vmg7Ijoi4pWrIiwiYm94dkg7Ijoi4pWqIiwiYm94dmg7Ijoi4pS8IiwiYm94Vkw7Ijoi4pWjIiwiYm94Vmw7Ijoi4pWiIiwiYm94dkw7Ijoi4pWhIiwiYm94dmw7Ijoi4pSkIiwiYm94VlI7Ijoi4pWgIiwiYm94VnI7Ijoi4pWfIiwiYm94dlI7Ijoi4pWeIiwiYm94dnI7Ijoi4pScIiwiYnByaW1lOyI6IuKAtSIsIkJyZXZlOyI6IsuYIiwiYnJldmU7Ijoiy5giLCJicnZiYXI7IjoiwqYiLGJydmJhcjoiwqYiLCJCc2NyOyI6IuKErCIsImJzY3I7Ijoi8J2StyIsImJzZW1pOyI6IuKBjyIsImJzaW07Ijoi4oi9IiwiYnNpbWU7Ijoi4ouNIiwiYnNvbDsiOiJcXCIsImJzb2xiOyI6IuKnhSIsImJzb2xoc3ViOyI6IuKfiCIsImJ1bGw7Ijoi4oCiIiwiYnVsbGV0OyI6IuKAoiIsImJ1bXA7Ijoi4omOIiwiYnVtcEU7Ijoi4qquIiwiYnVtcGU7Ijoi4omPIiwiQnVtcGVxOyI6IuKJjiIsImJ1bXBlcTsiOiLiiY8iLCJDYWN1dGU7IjoixIYiLCJjYWN1dGU7IjoixIciLCJDYXA7Ijoi4ouSIiwiY2FwOyI6IuKIqSIsImNhcGFuZDsiOiLiqYQiLCJjYXBicmN1cDsiOiLiqYkiLCJjYXBjYXA7Ijoi4qmLIiwiY2FwY3VwOyI6IuKphyIsImNhcGRvdDsiOiLiqYAiLCJDYXBpdGFsRGlmZmVyZW50aWFsRDsiOiLihYUiLCJjYXBzOyI6IuKIqe+4gCIsImNhcmV0OyI6IuKBgSIsImNhcm9uOyI6IsuHIiwiQ2F5bGV5czsiOiLihK0iLCJjY2FwczsiOiLiqY0iLCJDY2Fyb247IjoixIwiLCJjY2Fyb247IjoixI0iLCJDY2VkaWw7Ijoiw4ciLENjZWRpbDoiw4ciLCJjY2VkaWw7Ijoiw6ciLGNjZWRpbDoiw6ciLCJDY2lyYzsiOiLEiCIsImNjaXJjOyI6IsSJIiwiQ2NvbmludDsiOiLiiLAiLCJjY3VwczsiOiLiqYwiLCJjY3Vwc3NtOyI6IuKpkCIsIkNkb3Q7IjoixIoiLCJjZG90OyI6IsSLIiwiY2VkaWw7IjoiwrgiLGNlZGlsOiLCuCIsIkNlZGlsbGE7IjoiwrgiLCJjZW1wdHl2OyI6IuKmsiIsImNlbnQ7IjoiwqIiLGNlbnQ6IsKiIiwiQ2VudGVyRG90OyI6IsK3IiwiY2VudGVyZG90OyI6IsK3IiwiQ2ZyOyI6IuKErSIsImNmcjsiOiLwnZSgIiwiQ0hjeTsiOiLQpyIsImNoY3k7Ijoi0YciLCJjaGVjazsiOiLinJMiLCJjaGVja21hcms7Ijoi4pyTIiwiQ2hpOyI6Is6nIiwiY2hpOyI6Is+HIiwiY2lyOyI6IuKXiyIsImNpcmM7Ijoiy4YiLCJjaXJjZXE7Ijoi4omXIiwiY2lyY2xlYXJyb3dsZWZ0OyI6IuKGuiIsImNpcmNsZWFycm93cmlnaHQ7Ijoi4oa7IiwiY2lyY2xlZGFzdDsiOiLiipsiLCJjaXJjbGVkY2lyYzsiOiLiipoiLCJjaXJjbGVkZGFzaDsiOiLiip0iLCJDaXJjbGVEb3Q7Ijoi4oqZIiwiY2lyY2xlZFI7Ijoiwq4iLCJjaXJjbGVkUzsiOiLik4giLCJDaXJjbGVNaW51czsiOiLiipYiLCJDaXJjbGVQbHVzOyI6IuKKlSIsIkNpcmNsZVRpbWVzOyI6IuKKlyIsImNpckU7Ijoi4qeDIiwiY2lyZTsiOiLiiZciLCJjaXJmbmludDsiOiLiqJAiLCJjaXJtaWQ7Ijoi4quvIiwiY2lyc2NpcjsiOiLip4IiLCJDbG9ja3dpc2VDb250b3VySW50ZWdyYWw7Ijoi4oiyIiwiQ2xvc2VDdXJseURvdWJsZVF1b3RlOyI6IuKAnSIsIkNsb3NlQ3VybHlRdW90ZTsiOiLigJkiLCJjbHViczsiOiLimaMiLCJjbHVic3VpdDsiOiLimaMiLCJDb2xvbjsiOiLiiLciLCJjb2xvbjsiOiI6IiwiQ29sb25lOyI6IuKptCIsImNvbG9uZTsiOiLiiZQiLCJjb2xvbmVxOyI6IuKJlCIsImNvbW1hOyI6IiwiLCJjb21tYXQ7IjoiQCIsImNvbXA7Ijoi4oiBIiwiY29tcGZuOyI6IuKImCIsImNvbXBsZW1lbnQ7Ijoi4oiBIiwiY29tcGxleGVzOyI6IuKEgiIsImNvbmc7Ijoi4omFIiwiY29uZ2RvdDsiOiLiqa0iLCJDb25ncnVlbnQ7Ijoi4omhIiwiQ29uaW50OyI6IuKIryIsImNvbmludDsiOiLiiK4iLCJDb250b3VySW50ZWdyYWw7Ijoi4oiuIiwiQ29wZjsiOiLihIIiLCJjb3BmOyI6IvCdlZQiLCJjb3Byb2Q7Ijoi4oiQIiwiQ29wcm9kdWN0OyI6IuKIkCIsIkNPUFk7IjoiwqkiLENPUFk6IsKpIiwiY29weTsiOiLCqSIsY29weToiwqkiLCJjb3B5c3I7Ijoi4oSXIiwiQ291bnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbDsiOiLiiLMiLCJjcmFycjsiOiLihrUiLCJDcm9zczsiOiLiqK8iLCJjcm9zczsiOiLinJciLCJDc2NyOyI6IvCdkp4iLCJjc2NyOyI6IvCdkrgiLCJjc3ViOyI6IuKrjyIsImNzdWJlOyI6IuKrkSIsImNzdXA7Ijoi4quQIiwiY3N1cGU7Ijoi4quSIiwiY3Rkb3Q7Ijoi4ouvIiwiY3VkYXJybDsiOiLipLgiLCJjdWRhcnJyOyI6IuKktSIsImN1ZXByOyI6IuKLniIsImN1ZXNjOyI6IuKLnyIsImN1bGFycjsiOiLihrYiLCJjdWxhcnJwOyI6IuKkvSIsIkN1cDsiOiLii5MiLCJjdXA7Ijoi4oiqIiwiY3VwYnJjYXA7Ijoi4qmIIiwiQ3VwQ2FwOyI6IuKJjSIsImN1cGNhcDsiOiLiqYYiLCJjdXBjdXA7Ijoi4qmKIiwiY3VwZG90OyI6IuKKjSIsImN1cG9yOyI6IuKphSIsImN1cHM7Ijoi4oiq77iAIiwiY3VyYXJyOyI6IuKGtyIsImN1cmFycm07Ijoi4qS8IiwiY3VybHllcXByZWM7Ijoi4oueIiwiY3VybHllcXN1Y2M7Ijoi4oufIiwiY3VybHl2ZWU7Ijoi4ouOIiwiY3VybHl3ZWRnZTsiOiLii48iLCJjdXJyZW47IjoiwqQiLGN1cnJlbjoiwqQiLCJjdXJ2ZWFycm93bGVmdDsiOiLihrYiLCJjdXJ2ZWFycm93cmlnaHQ7Ijoi4oa3IiwiY3V2ZWU7Ijoi4ouOIiwiY3V3ZWQ7Ijoi4ouPIiwiY3djb25pbnQ7Ijoi4oiyIiwiY3dpbnQ7Ijoi4oixIiwiY3lsY3R5OyI6IuKMrSIsIkRhZ2dlcjsiOiLigKEiLCJkYWdnZXI7Ijoi4oCgIiwiZGFsZXRoOyI6IuKEuCIsIkRhcnI7Ijoi4oahIiwiZEFycjsiOiLih5MiLCJkYXJyOyI6IuKGkyIsImRhc2g7Ijoi4oCQIiwiRGFzaHY7Ijoi4qukIiwiZGFzaHY7Ijoi4oqjIiwiZGJrYXJvdzsiOiLipI8iLCJkYmxhYzsiOiLLnSIsIkRjYXJvbjsiOiLEjiIsImRjYXJvbjsiOiLEjyIsIkRjeTsiOiLQlCIsImRjeTsiOiLQtCIsIkREOyI6IuKFhSIsImRkOyI6IuKFhiIsImRkYWdnZXI7Ijoi4oChIiwiZGRhcnI7Ijoi4oeKIiwiRERvdHJhaGQ7Ijoi4qSRIiwiZGRvdHNlcTsiOiLiqbciLCJkZWc7IjoiwrAiLGRlZzoiwrAiLCJEZWw7Ijoi4oiHIiwiRGVsdGE7IjoizpQiLCJkZWx0YTsiOiLOtCIsImRlbXB0eXY7Ijoi4qaxIiwiZGZpc2h0OyI6IuKlvyIsIkRmcjsiOiLwnZSHIiwiZGZyOyI6IvCdlKEiLCJkSGFyOyI6IuKlpSIsImRoYXJsOyI6IuKHgyIsImRoYXJyOyI6IuKHgiIsIkRpYWNyaXRpY2FsQWN1dGU7IjoiwrQiLCJEaWFjcml0aWNhbERvdDsiOiLLmSIsIkRpYWNyaXRpY2FsRG91YmxlQWN1dGU7Ijoiy50iLCJEaWFjcml0aWNhbEdyYXZlOyI6ImAiLCJEaWFjcml0aWNhbFRpbGRlOyI6IsucIiwiZGlhbTsiOiLii4QiLCJEaWFtb25kOyI6IuKLhCIsImRpYW1vbmQ7Ijoi4ouEIiwiZGlhbW9uZHN1aXQ7Ijoi4pmmIiwiZGlhbXM7Ijoi4pmmIiwiZGllOyI6IsKoIiwiRGlmZmVyZW50aWFsRDsiOiLihYYiLCJkaWdhbW1hOyI6Is+dIiwiZGlzaW47Ijoi4ouyIiwiZGl2OyI6IsO3IiwiZGl2aWRlOyI6IsO3IixkaXZpZGU6IsO3IiwiZGl2aWRlb250aW1lczsiOiLii4ciLCJkaXZvbng7Ijoi4ouHIiwiREpjeTsiOiLQgiIsImRqY3k7Ijoi0ZIiLCJkbGNvcm47Ijoi4oyeIiwiZGxjcm9wOyI6IuKMjSIsImRvbGxhcjsiOiIkIiwiRG9wZjsiOiLwnZS7IiwiZG9wZjsiOiLwnZWVIiwiRG90OyI6IsKoIiwiZG90OyI6IsuZIiwiRG90RG90OyI6IuKDnCIsImRvdGVxOyI6IuKJkCIsImRvdGVxZG90OyI6IuKJkSIsIkRvdEVxdWFsOyI6IuKJkCIsImRvdG1pbnVzOyI6IuKIuCIsImRvdHBsdXM7Ijoi4oiUIiwiZG90c3F1YXJlOyI6IuKKoSIsImRvdWJsZWJhcndlZGdlOyI6IuKMhiIsIkRvdWJsZUNvbnRvdXJJbnRlZ3JhbDsiOiLiiK8iLCJEb3VibGVEb3Q7IjoiwqgiLCJEb3VibGVEb3duQXJyb3c7Ijoi4oeTIiwiRG91YmxlTGVmdEFycm93OyI6IuKHkCIsIkRvdWJsZUxlZnRSaWdodEFycm93OyI6IuKHlCIsIkRvdWJsZUxlZnRUZWU7Ijoi4qukIiwiRG91YmxlTG9uZ0xlZnRBcnJvdzsiOiLin7giLCJEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3c7Ijoi4p+6IiwiRG91YmxlTG9uZ1JpZ2h0QXJyb3c7Ijoi4p+5IiwiRG91YmxlUmlnaHRBcnJvdzsiOiLih5IiLCJEb3VibGVSaWdodFRlZTsiOiLiiqgiLCJEb3VibGVVcEFycm93OyI6IuKHkSIsIkRvdWJsZVVwRG93bkFycm93OyI6IuKHlSIsIkRvdWJsZVZlcnRpY2FsQmFyOyI6IuKIpSIsIkRvd25BcnJvdzsiOiLihpMiLCJEb3duYXJyb3c7Ijoi4oeTIiwiZG93bmFycm93OyI6IuKGkyIsIkRvd25BcnJvd0JhcjsiOiLipJMiLCJEb3duQXJyb3dVcEFycm93OyI6IuKHtSIsIkRvd25CcmV2ZTsiOiLMkSIsImRvd25kb3duYXJyb3dzOyI6IuKHiiIsImRvd25oYXJwb29ubGVmdDsiOiLih4MiLCJkb3duaGFycG9vbnJpZ2h0OyI6IuKHgiIsIkRvd25MZWZ0UmlnaHRWZWN0b3I7Ijoi4qWQIiwiRG93bkxlZnRUZWVWZWN0b3I7Ijoi4qWeIiwiRG93bkxlZnRWZWN0b3I7Ijoi4oa9IiwiRG93bkxlZnRWZWN0b3JCYXI7Ijoi4qWWIiwiRG93blJpZ2h0VGVlVmVjdG9yOyI6IuKlnyIsIkRvd25SaWdodFZlY3RvcjsiOiLih4EiLCJEb3duUmlnaHRWZWN0b3JCYXI7Ijoi4qWXIiwiRG93blRlZTsiOiLiiqQiLCJEb3duVGVlQXJyb3c7Ijoi4oanIiwiZHJia2Fyb3c7Ijoi4qSQIiwiZHJjb3JuOyI6IuKMnyIsImRyY3JvcDsiOiLijIwiLCJEc2NyOyI6IvCdkp8iLCJkc2NyOyI6IvCdkrkiLCJEU2N5OyI6ItCFIiwiZHNjeTsiOiLRlSIsImRzb2w7Ijoi4qe2IiwiRHN0cm9rOyI6IsSQIiwiZHN0cm9rOyI6IsSRIiwiZHRkb3Q7Ijoi4ouxIiwiZHRyaTsiOiLilr8iLCJkdHJpZjsiOiLilr4iLCJkdWFycjsiOiLih7UiLCJkdWhhcjsiOiLipa8iLCJkd2FuZ2xlOyI6IuKmpiIsIkRaY3k7Ijoi0I8iLCJkemN5OyI6ItGfIiwiZHppZ3JhcnI7Ijoi4p+/IiwiRWFjdXRlOyI6IsOJIixFYWN1dGU6IsOJIiwiZWFjdXRlOyI6IsOpIixlYWN1dGU6IsOpIiwiZWFzdGVyOyI6IuKpriIsIkVjYXJvbjsiOiLEmiIsImVjYXJvbjsiOiLEmyIsImVjaXI7Ijoi4omWIiwiRWNpcmM7Ijoiw4oiLEVjaXJjOiLDiiIsImVjaXJjOyI6IsOqIixlY2lyYzoiw6oiLCJlY29sb247Ijoi4omVIiwiRWN5OyI6ItCtIiwiZWN5OyI6ItGNIiwiZUREb3Q7Ijoi4qm3IiwiRWRvdDsiOiLEliIsImVEb3Q7Ijoi4omRIiwiZWRvdDsiOiLElyIsImVlOyI6IuKFhyIsImVmRG90OyI6IuKJkiIsIkVmcjsiOiLwnZSIIiwiZWZyOyI6IvCdlKIiLCJlZzsiOiLiqpoiLCJFZ3JhdmU7Ijoiw4giLEVncmF2ZToiw4giLCJlZ3JhdmU7Ijoiw6giLGVncmF2ZToiw6giLCJlZ3M7Ijoi4qqWIiwiZWdzZG90OyI6IuKqmCIsImVsOyI6IuKqmSIsIkVsZW1lbnQ7Ijoi4oiIIiwiZWxpbnRlcnM7Ijoi4o+nIiwiZWxsOyI6IuKEkyIsImVsczsiOiLiqpUiLCJlbHNkb3Q7Ijoi4qqXIiwiRW1hY3I7IjoixJIiLCJlbWFjcjsiOiLEkyIsImVtcHR5OyI6IuKIhSIsImVtcHR5c2V0OyI6IuKIhSIsIkVtcHR5U21hbGxTcXVhcmU7Ijoi4pe7IiwiZW1wdHl2OyI6IuKIhSIsIkVtcHR5VmVyeVNtYWxsU3F1YXJlOyI6IuKWqyIsImVtc3A7Ijoi4oCDIiwiZW1zcDEzOyI6IuKAhCIsImVtc3AxNDsiOiLigIUiLCJFTkc7IjoixYoiLCJlbmc7IjoixYsiLCJlbnNwOyI6IuKAgiIsIkVvZ29uOyI6IsSYIiwiZW9nb247IjoixJkiLCJFb3BmOyI6IvCdlLwiLCJlb3BmOyI6IvCdlZYiLCJlcGFyOyI6IuKLlSIsImVwYXJzbDsiOiLip6MiLCJlcGx1czsiOiLiqbEiLCJlcHNpOyI6Is61IiwiRXBzaWxvbjsiOiLOlSIsImVwc2lsb247IjoizrUiLCJlcHNpdjsiOiLPtSIsImVxY2lyYzsiOiLiiZYiLCJlcWNvbG9uOyI6IuKJlSIsImVxc2ltOyI6IuKJgiIsImVxc2xhbnRndHI7Ijoi4qqWIiwiZXFzbGFudGxlc3M7Ijoi4qqVIiwiRXF1YWw7Ijoi4qm1IiwiZXF1YWxzOyI6Ij0iLCJFcXVhbFRpbGRlOyI6IuKJgiIsImVxdWVzdDsiOiLiiZ8iLCJFcXVpbGlicml1bTsiOiLih4wiLCJlcXVpdjsiOiLiiaEiLCJlcXVpdkREOyI6IuKpuCIsImVxdnBhcnNsOyI6IuKnpSIsImVyYXJyOyI6IuKlsSIsImVyRG90OyI6IuKJkyIsIkVzY3I7Ijoi4oSwIiwiZXNjcjsiOiLihK8iLCJlc2RvdDsiOiLiiZAiLCJFc2ltOyI6IuKpsyIsImVzaW07Ijoi4omCIiwiRXRhOyI6Is6XIiwiZXRhOyI6Is63IiwiRVRIOyI6IsOQIixFVEg6IsOQIiwiZXRoOyI6IsOwIixldGg6IsOwIiwiRXVtbDsiOiLDiyIsRXVtbDoiw4siLCJldW1sOyI6IsOrIixldW1sOiLDqyIsImV1cm87Ijoi4oKsIiwiZXhjbDsiOiIhIiwiZXhpc3Q7Ijoi4oiDIiwiRXhpc3RzOyI6IuKIgyIsImV4cGVjdGF0aW9uOyI6IuKEsCIsIkV4cG9uZW50aWFsRTsiOiLihYciLCJleHBvbmVudGlhbGU7Ijoi4oWHIiwiZmFsbGluZ2RvdHNlcTsiOiLiiZIiLCJGY3k7Ijoi0KQiLCJmY3k7Ijoi0YQiLCJmZW1hbGU7Ijoi4pmAIiwiZmZpbGlnOyI6Iu+sgyIsImZmbGlnOyI6Iu+sgCIsImZmbGxpZzsiOiLvrIQiLCJGZnI7Ijoi8J2UiSIsImZmcjsiOiLwnZSjIiwiZmlsaWc7Ijoi76yBIiwiRmlsbGVkU21hbGxTcXVhcmU7Ijoi4pe8IiwiRmlsbGVkVmVyeVNtYWxsU3F1YXJlOyI6IuKWqiIsImZqbGlnOyI6ImZqIiwiZmxhdDsiOiLima0iLCJmbGxpZzsiOiLvrIIiLCJmbHRuczsiOiLilrEiLCJmbm9mOyI6IsaSIiwiRm9wZjsiOiLwnZS9IiwiZm9wZjsiOiLwnZWXIiwiRm9yQWxsOyI6IuKIgCIsImZvcmFsbDsiOiLiiIAiLCJmb3JrOyI6IuKLlCIsImZvcmt2OyI6IuKrmSIsIkZvdXJpZXJ0cmY7Ijoi4oSxIiwiZnBhcnRpbnQ7Ijoi4qiNIiwiZnJhYzEyOyI6IsK9IixmcmFjMTI6IsK9IiwiZnJhYzEzOyI6IuKFkyIsImZyYWMxNDsiOiLCvCIsZnJhYzE0OiLCvCIsImZyYWMxNTsiOiLihZUiLCJmcmFjMTY7Ijoi4oWZIiwiZnJhYzE4OyI6IuKFmyIsImZyYWMyMzsiOiLihZQiLCJmcmFjMjU7Ijoi4oWWIiwiZnJhYzM0OyI6IsK+IixmcmFjMzQ6IsK+IiwiZnJhYzM1OyI6IuKFlyIsImZyYWMzODsiOiLihZwiLCJmcmFjNDU7Ijoi4oWYIiwiZnJhYzU2OyI6IuKFmiIsImZyYWM1ODsiOiLihZ0iLCJmcmFjNzg7Ijoi4oWeIiwiZnJhc2w7Ijoi4oGEIiwiZnJvd247Ijoi4oyiIiwiRnNjcjsiOiLihLEiLCJmc2NyOyI6IvCdkrsiLCJnYWN1dGU7Ijoix7UiLCJHYW1tYTsiOiLOkyIsImdhbW1hOyI6Is6zIiwiR2FtbWFkOyI6Is+cIiwiZ2FtbWFkOyI6Is+dIiwiZ2FwOyI6IuKqhiIsIkdicmV2ZTsiOiLEniIsImdicmV2ZTsiOiLEnyIsIkdjZWRpbDsiOiLEoiIsIkdjaXJjOyI6IsScIiwiZ2NpcmM7IjoixJ0iLCJHY3k7Ijoi0JMiLCJnY3k7Ijoi0LMiLCJHZG90OyI6IsSgIiwiZ2RvdDsiOiLEoSIsImdFOyI6IuKJpyIsImdlOyI6IuKJpSIsImdFbDsiOiLiqowiLCJnZWw7Ijoi4oubIiwiZ2VxOyI6IuKJpSIsImdlcXE7Ijoi4omnIiwiZ2Vxc2xhbnQ7Ijoi4qm+IiwiZ2VzOyI6IuKpviIsImdlc2NjOyI6IuKqqSIsImdlc2RvdDsiOiLiqoAiLCJnZXNkb3RvOyI6IuKqgiIsImdlc2RvdG9sOyI6IuKqhCIsImdlc2w7Ijoi4oub77iAIiwiZ2VzbGVzOyI6IuKqlCIsIkdmcjsiOiLwnZSKIiwiZ2ZyOyI6IvCdlKQiLCJHZzsiOiLii5kiLCJnZzsiOiLiiasiLCJnZ2c7Ijoi4ouZIiwiZ2ltZWw7Ijoi4oS3IiwiR0pjeTsiOiLQgyIsImdqY3k7Ijoi0ZMiLCJnbDsiOiLiibciLCJnbGE7Ijoi4qqlIiwiZ2xFOyI6IuKqkiIsImdsajsiOiLiqqQiLCJnbmFwOyI6IuKqiiIsImduYXBwcm94OyI6IuKqiiIsImduRTsiOiLiiakiLCJnbmU7Ijoi4qqIIiwiZ25lcTsiOiLiqogiLCJnbmVxcTsiOiLiiakiLCJnbnNpbTsiOiLii6ciLCJHb3BmOyI6IvCdlL4iLCJnb3BmOyI6IvCdlZgiLCJncmF2ZTsiOiJgIiwiR3JlYXRlckVxdWFsOyI6IuKJpSIsIkdyZWF0ZXJFcXVhbExlc3M7Ijoi4oubIiwiR3JlYXRlckZ1bGxFcXVhbDsiOiLiiaciLCJHcmVhdGVyR3JlYXRlcjsiOiLiqqIiLCJHcmVhdGVyTGVzczsiOiLiibciLCJHcmVhdGVyU2xhbnRFcXVhbDsiOiLiqb4iLCJHcmVhdGVyVGlsZGU7Ijoi4omzIiwiR3NjcjsiOiLwnZKiIiwiZ3NjcjsiOiLihIoiLCJnc2ltOyI6IuKJsyIsImdzaW1lOyI6IuKqjiIsImdzaW1sOyI6IuKqkCIsIkdUOyI6Ij4iLEdUOiI+IiwiR3Q7Ijoi4omrIiwiZ3Q7IjoiPiIsZ3Q6Ij4iLCJndGNjOyI6IuKqpyIsImd0Y2lyOyI6IuKpuiIsImd0ZG90OyI6IuKLlyIsImd0bFBhcjsiOiLippUiLCJndHF1ZXN0OyI6IuKpvCIsImd0cmFwcHJveDsiOiLiqoYiLCJndHJhcnI7Ijoi4qW4IiwiZ3RyZG90OyI6IuKLlyIsImd0cmVxbGVzczsiOiLii5siLCJndHJlcXFsZXNzOyI6IuKqjCIsImd0cmxlc3M7Ijoi4om3IiwiZ3Ryc2ltOyI6IuKJsyIsImd2ZXJ0bmVxcTsiOiLiianvuIAiLCJndm5FOyI6IuKJqe+4gCIsIkhhY2VrOyI6IsuHIiwiaGFpcnNwOyI6IuKAiiIsImhhbGY7Ijoiwr0iLCJoYW1pbHQ7Ijoi4oSLIiwiSEFSRGN5OyI6ItCqIiwiaGFyZGN5OyI6ItGKIiwiaEFycjsiOiLih5QiLCJoYXJyOyI6IuKGlCIsImhhcnJjaXI7Ijoi4qWIIiwiaGFycnc7Ijoi4oatIiwiSGF0OyI6Il4iLCJoYmFyOyI6IuKEjyIsIkhjaXJjOyI6IsSkIiwiaGNpcmM7IjoixKUiLCJoZWFydHM7Ijoi4pmlIiwiaGVhcnRzdWl0OyI6IuKZpSIsImhlbGxpcDsiOiLigKYiLCJoZXJjb247Ijoi4oq5IiwiSGZyOyI6IuKEjCIsImhmcjsiOiLwnZSlIiwiSGlsYmVydFNwYWNlOyI6IuKEiyIsImhrc2Vhcm93OyI6IuKkpSIsImhrc3dhcm93OyI6IuKkpiIsImhvYXJyOyI6IuKHvyIsImhvbXRodDsiOiLiiLsiLCJob29rbGVmdGFycm93OyI6IuKGqSIsImhvb2tyaWdodGFycm93OyI6IuKGqiIsIkhvcGY7Ijoi4oSNIiwiaG9wZjsiOiLwnZWZIiwiaG9yYmFyOyI6IuKAlSIsIkhvcml6b250YWxMaW5lOyI6IuKUgCIsIkhzY3I7Ijoi4oSLIiwiaHNjcjsiOiLwnZK9IiwiaHNsYXNoOyI6IuKEjyIsIkhzdHJvazsiOiLEpiIsImhzdHJvazsiOiLEpyIsIkh1bXBEb3duSHVtcDsiOiLiiY4iLCJIdW1wRXF1YWw7Ijoi4omPIiwiaHlidWxsOyI6IuKBgyIsImh5cGhlbjsiOiLigJAiLCJJYWN1dGU7Ijoiw40iLElhY3V0ZToiw40iLCJpYWN1dGU7Ijoiw60iLGlhY3V0ZToiw60iLCJpYzsiOiLigaMiLCJJY2lyYzsiOiLDjiIsSWNpcmM6IsOOIiwiaWNpcmM7Ijoiw64iLGljaXJjOiLDriIsIkljeTsiOiLQmCIsImljeTsiOiLQuCIsIklkb3Q7IjoixLAiLCJJRWN5OyI6ItCVIiwiaWVjeTsiOiLQtSIsImlleGNsOyI6IsKhIixpZXhjbDoiwqEiLCJpZmY7Ijoi4oeUIiwiSWZyOyI6IuKEkSIsImlmcjsiOiLwnZSmIiwiSWdyYXZlOyI6IsOMIixJZ3JhdmU6IsOMIiwiaWdyYXZlOyI6IsOsIixpZ3JhdmU6IsOsIiwiaWk7Ijoi4oWIIiwiaWlpaW50OyI6IuKojCIsImlpaW50OyI6IuKIrSIsImlpbmZpbjsiOiLip5wiLCJpaW90YTsiOiLihKkiLCJJSmxpZzsiOiLEsiIsImlqbGlnOyI6IsSzIiwiSW07Ijoi4oSRIiwiSW1hY3I7IjoixKoiLCJpbWFjcjsiOiLEqyIsImltYWdlOyI6IuKEkSIsIkltYWdpbmFyeUk7Ijoi4oWIIiwiaW1hZ2xpbmU7Ijoi4oSQIiwiaW1hZ3BhcnQ7Ijoi4oSRIiwiaW1hdGg7IjoixLEiLCJpbW9mOyI6IuKKtyIsImltcGVkOyI6Isa1IiwiSW1wbGllczsiOiLih5IiLCJpbjsiOiLiiIgiLCJpbmNhcmU7Ijoi4oSFIiwiaW5maW47Ijoi4oieIiwiaW5maW50aWU7Ijoi4qedIiwiaW5vZG90OyI6IsSxIiwiSW50OyI6IuKIrCIsImludDsiOiLiiKsiLCJpbnRjYWw7Ijoi4oq6IiwiaW50ZWdlcnM7Ijoi4oSkIiwiSW50ZWdyYWw7Ijoi4oirIiwiaW50ZXJjYWw7Ijoi4oq6IiwiSW50ZXJzZWN0aW9uOyI6IuKLgiIsImludGxhcmhrOyI6IuKolyIsImludHByb2Q7Ijoi4qi8IiwiSW52aXNpYmxlQ29tbWE7Ijoi4oGjIiwiSW52aXNpYmxlVGltZXM7Ijoi4oGiIiwiSU9jeTsiOiLQgSIsImlvY3k7Ijoi0ZEiLCJJb2dvbjsiOiLEriIsImlvZ29uOyI6IsSvIiwiSW9wZjsiOiLwnZWAIiwiaW9wZjsiOiLwnZWaIiwiSW90YTsiOiLOmSIsImlvdGE7IjoizrkiLCJpcHJvZDsiOiLiqLwiLCJpcXVlc3Q7Ijoiwr8iLGlxdWVzdDoiwr8iLCJJc2NyOyI6IuKEkCIsImlzY3I7Ijoi8J2SviIsImlzaW47Ijoi4oiIIiwiaXNpbmRvdDsiOiLii7UiLCJpc2luRTsiOiLii7kiLCJpc2luczsiOiLii7QiLCJpc2luc3Y7Ijoi4ouzIiwiaXNpbnY7Ijoi4oiIIiwiaXQ7Ijoi4oGiIiwiSXRpbGRlOyI6IsSoIiwiaXRpbGRlOyI6IsSpIiwiSXVrY3k7Ijoi0IYiLCJpdWtjeTsiOiLRliIsIkl1bWw7Ijoiw48iLEl1bWw6IsOPIiwiaXVtbDsiOiLDryIsaXVtbDoiw68iLCJKY2lyYzsiOiLEtCIsImpjaXJjOyI6IsS1IiwiSmN5OyI6ItCZIiwiamN5OyI6ItC5IiwiSmZyOyI6IvCdlI0iLCJqZnI7Ijoi8J2UpyIsImptYXRoOyI6Isi3IiwiSm9wZjsiOiLwnZWBIiwiam9wZjsiOiLwnZWbIiwiSnNjcjsiOiLwnZKlIiwianNjcjsiOiLwnZK/IiwiSnNlcmN5OyI6ItCIIiwianNlcmN5OyI6ItGYIiwiSnVrY3k7Ijoi0IQiLCJqdWtjeTsiOiLRlCIsIkthcHBhOyI6Is6aIiwia2FwcGE7IjoizroiLCJrYXBwYXY7Ijoiz7AiLCJLY2VkaWw7IjoixLYiLCJrY2VkaWw7IjoixLciLCJLY3k7Ijoi0JoiLCJrY3k7Ijoi0LoiLCJLZnI7Ijoi8J2UjiIsImtmcjsiOiLwnZSoIiwia2dyZWVuOyI6IsS4IiwiS0hjeTsiOiLQpSIsImtoY3k7Ijoi0YUiLCJLSmN5OyI6ItCMIiwia2pjeTsiOiLRnCIsIktvcGY7Ijoi8J2VgiIsImtvcGY7Ijoi8J2VnCIsIktzY3I7Ijoi8J2SpiIsImtzY3I7Ijoi8J2TgCIsImxBYXJyOyI6IuKHmiIsIkxhY3V0ZTsiOiLEuSIsImxhY3V0ZTsiOiLEuiIsImxhZW1wdHl2OyI6IuKmtCIsImxhZ3JhbjsiOiLihJIiLCJMYW1iZGE7IjoizpsiLCJsYW1iZGE7IjoizrsiLCJMYW5nOyI6IuKfqiIsImxhbmc7Ijoi4p+oIiwibGFuZ2Q7Ijoi4qaRIiwibGFuZ2xlOyI6IuKfqCIsImxhcDsiOiLiqoUiLCJMYXBsYWNldHJmOyI6IuKEkiIsImxhcXVvOyI6IsKrIixsYXF1bzoiwqsiLCJMYXJyOyI6IuKGniIsImxBcnI7Ijoi4oeQIiwibGFycjsiOiLihpAiLCJsYXJyYjsiOiLih6QiLCJsYXJyYmZzOyI6IuKknyIsImxhcnJmczsiOiLipJ0iLCJsYXJyaGs7Ijoi4oapIiwibGFycmxwOyI6IuKGqyIsImxhcnJwbDsiOiLipLkiLCJsYXJyc2ltOyI6IuKlsyIsImxhcnJ0bDsiOiLihqIiLCJsYXQ7Ijoi4qqrIiwibEF0YWlsOyI6IuKkmyIsImxhdGFpbDsiOiLipJkiLCJsYXRlOyI6IuKqrSIsImxhdGVzOyI6IuKqre+4gCIsImxCYXJyOyI6IuKkjiIsImxiYXJyOyI6IuKkjCIsImxiYnJrOyI6IuKdsiIsImxicmFjZTsiOiJ7IiwibGJyYWNrOyI6IlsiLCJsYnJrZTsiOiLiposiLCJsYnJrc2xkOyI6IuKmjyIsImxicmtzbHU7Ijoi4qaNIiwiTGNhcm9uOyI6IsS9IiwibGNhcm9uOyI6IsS+IiwiTGNlZGlsOyI6IsS7IiwibGNlZGlsOyI6IsS8IiwibGNlaWw7Ijoi4oyIIiwibGN1YjsiOiJ7IiwiTGN5OyI6ItCbIiwibGN5OyI6ItC7IiwibGRjYTsiOiLipLYiLCJsZHF1bzsiOiLigJwiLCJsZHF1b3I7Ijoi4oCeIiwibGRyZGhhcjsiOiLipaciLCJsZHJ1c2hhcjsiOiLipYsiLCJsZHNoOyI6IuKGsiIsImxFOyI6IuKJpiIsImxlOyI6IuKJpCIsIkxlZnRBbmdsZUJyYWNrZXQ7Ijoi4p+oIiwiTGVmdEFycm93OyI6IuKGkCIsIkxlZnRhcnJvdzsiOiLih5AiLCJsZWZ0YXJyb3c7Ijoi4oaQIiwiTGVmdEFycm93QmFyOyI6IuKHpCIsIkxlZnRBcnJvd1JpZ2h0QXJyb3c7Ijoi4oeGIiwibGVmdGFycm93dGFpbDsiOiLihqIiLCJMZWZ0Q2VpbGluZzsiOiLijIgiLCJMZWZ0RG91YmxlQnJhY2tldDsiOiLin6YiLCJMZWZ0RG93blRlZVZlY3RvcjsiOiLipaEiLCJMZWZ0RG93blZlY3RvcjsiOiLih4MiLCJMZWZ0RG93blZlY3RvckJhcjsiOiLipZkiLCJMZWZ0Rmxvb3I7Ijoi4oyKIiwibGVmdGhhcnBvb25kb3duOyI6IuKGvSIsImxlZnRoYXJwb29udXA7Ijoi4oa8IiwibGVmdGxlZnRhcnJvd3M7Ijoi4oeHIiwiTGVmdFJpZ2h0QXJyb3c7Ijoi4oaUIiwiTGVmdHJpZ2h0YXJyb3c7Ijoi4oeUIiwibGVmdHJpZ2h0YXJyb3c7Ijoi4oaUIiwibGVmdHJpZ2h0YXJyb3dzOyI6IuKHhiIsImxlZnRyaWdodGhhcnBvb25zOyI6IuKHiyIsImxlZnRyaWdodHNxdWlnYXJyb3c7Ijoi4oatIiwiTGVmdFJpZ2h0VmVjdG9yOyI6IuKljiIsIkxlZnRUZWU7Ijoi4oqjIiwiTGVmdFRlZUFycm93OyI6IuKGpCIsIkxlZnRUZWVWZWN0b3I7Ijoi4qWaIiwibGVmdHRocmVldGltZXM7Ijoi4ouLIiwiTGVmdFRyaWFuZ2xlOyI6IuKKsiIsIkxlZnRUcmlhbmdsZUJhcjsiOiLip48iLCJMZWZ0VHJpYW5nbGVFcXVhbDsiOiLiirQiLCJMZWZ0VXBEb3duVmVjdG9yOyI6IuKlkSIsIkxlZnRVcFRlZVZlY3RvcjsiOiLipaAiLCJMZWZ0VXBWZWN0b3I7Ijoi4oa/IiwiTGVmdFVwVmVjdG9yQmFyOyI6IuKlmCIsIkxlZnRWZWN0b3I7Ijoi4oa8IiwiTGVmdFZlY3RvckJhcjsiOiLipZIiLCJsRWc7Ijoi4qqLIiwibGVnOyI6IuKLmiIsImxlcTsiOiLiiaQiLCJsZXFxOyI6IuKJpiIsImxlcXNsYW50OyI6IuKpvSIsImxlczsiOiLiqb0iLCJsZXNjYzsiOiLiqqgiLCJsZXNkb3Q7Ijoi4qm/IiwibGVzZG90bzsiOiLiqoEiLCJsZXNkb3RvcjsiOiLiqoMiLCJsZXNnOyI6IuKLmu+4gCIsImxlc2dlczsiOiLiqpMiLCJsZXNzYXBwcm94OyI6IuKqhSIsImxlc3Nkb3Q7Ijoi4ouWIiwibGVzc2VxZ3RyOyI6IuKLmiIsImxlc3NlcXFndHI7Ijoi4qqLIiwiTGVzc0VxdWFsR3JlYXRlcjsiOiLii5oiLCJMZXNzRnVsbEVxdWFsOyI6IuKJpiIsIkxlc3NHcmVhdGVyOyI6IuKJtiIsImxlc3NndHI7Ijoi4om2IiwiTGVzc0xlc3M7Ijoi4qqhIiwibGVzc3NpbTsiOiLiibIiLCJMZXNzU2xhbnRFcXVhbDsiOiLiqb0iLCJMZXNzVGlsZGU7Ijoi4omyIiwibGZpc2h0OyI6IuKlvCIsImxmbG9vcjsiOiLijIoiLCJMZnI7Ijoi8J2UjyIsImxmcjsiOiLwnZSpIiwibGc7Ijoi4om2IiwibGdFOyI6IuKqkSIsImxIYXI7Ijoi4qWiIiwibGhhcmQ7Ijoi4oa9IiwibGhhcnU7Ijoi4oa8IiwibGhhcnVsOyI6IuKlqiIsImxoYmxrOyI6IuKWhCIsIkxKY3k7Ijoi0IkiLCJsamN5OyI6ItGZIiwiTGw7Ijoi4ouYIiwibGw7Ijoi4omqIiwibGxhcnI7Ijoi4oeHIiwibGxjb3JuZXI7Ijoi4oyeIiwiTGxlZnRhcnJvdzsiOiLih5oiLCJsbGhhcmQ7Ijoi4qWrIiwibGx0cmk7Ijoi4pe6IiwiTG1pZG90OyI6IsS/IiwibG1pZG90OyI6IsWAIiwibG1vdXN0OyI6IuKOsCIsImxtb3VzdGFjaGU7Ijoi4o6wIiwibG5hcDsiOiLiqokiLCJsbmFwcHJveDsiOiLiqokiLCJsbkU7Ijoi4omoIiwibG5lOyI6IuKqhyIsImxuZXE7Ijoi4qqHIiwibG5lcXE7Ijoi4omoIiwibG5zaW07Ijoi4oumIiwibG9hbmc7Ijoi4p+sIiwibG9hcnI7Ijoi4oe9IiwibG9icms7Ijoi4p+mIiwiTG9uZ0xlZnRBcnJvdzsiOiLin7UiLCJMb25nbGVmdGFycm93OyI6IuKfuCIsImxvbmdsZWZ0YXJyb3c7Ijoi4p+1IiwiTG9uZ0xlZnRSaWdodEFycm93OyI6IuKftyIsIkxvbmdsZWZ0cmlnaHRhcnJvdzsiOiLin7oiLCJsb25nbGVmdHJpZ2h0YXJyb3c7Ijoi4p+3IiwibG9uZ21hcHN0bzsiOiLin7wiLCJMb25nUmlnaHRBcnJvdzsiOiLin7YiLCJMb25ncmlnaHRhcnJvdzsiOiLin7kiLCJsb25ncmlnaHRhcnJvdzsiOiLin7YiLCJsb29wYXJyb3dsZWZ0OyI6IuKGqyIsImxvb3BhcnJvd3JpZ2h0OyI6IuKGrCIsImxvcGFyOyI6IuKmhSIsIkxvcGY7Ijoi8J2VgyIsImxvcGY7Ijoi8J2VnSIsImxvcGx1czsiOiLiqK0iLCJsb3RpbWVzOyI6IuKotCIsImxvd2FzdDsiOiLiiJciLCJsb3diYXI7IjoiXyIsIkxvd2VyTGVmdEFycm93OyI6IuKGmSIsIkxvd2VyUmlnaHRBcnJvdzsiOiLihpgiLCJsb3o7Ijoi4peKIiwibG96ZW5nZTsiOiLil4oiLCJsb3pmOyI6IuKnqyIsImxwYXI7IjoiKCIsImxwYXJsdDsiOiLippMiLCJscmFycjsiOiLih4YiLCJscmNvcm5lcjsiOiLijJ8iLCJscmhhcjsiOiLih4siLCJscmhhcmQ7Ijoi4qWtIiwibHJtOyI6IuKAjiIsImxydHJpOyI6IuKKvyIsImxzYXF1bzsiOiLigLkiLCJMc2NyOyI6IuKEkiIsImxzY3I7Ijoi8J2TgSIsIkxzaDsiOiLihrAiLCJsc2g7Ijoi4oawIiwibHNpbTsiOiLiibIiLCJsc2ltZTsiOiLiqo0iLCJsc2ltZzsiOiLiqo8iLCJsc3FiOyI6IlsiLCJsc3F1bzsiOiLigJgiLCJsc3F1b3I7Ijoi4oCaIiwiTHN0cm9rOyI6IsWBIiwibHN0cm9rOyI6IsWCIiwiTFQ7IjoiPCIsTFQ6IjwiLCJMdDsiOiLiiaoiLCJsdDsiOiI8IixsdDoiPCIsImx0Y2M7Ijoi4qqmIiwibHRjaXI7Ijoi4qm5IiwibHRkb3Q7Ijoi4ouWIiwibHRocmVlOyI6IuKLiyIsImx0aW1lczsiOiLii4kiLCJsdGxhcnI7Ijoi4qW2IiwibHRxdWVzdDsiOiLiqbsiLCJsdHJpOyI6IuKXgyIsImx0cmllOyI6IuKKtCIsImx0cmlmOyI6IuKXgiIsImx0clBhcjsiOiLippYiLCJsdXJkc2hhcjsiOiLipYoiLCJsdXJ1aGFyOyI6IuKlpiIsImx2ZXJ0bmVxcTsiOiLiiajvuIAiLCJsdm5FOyI6IuKJqO+4gCIsIm1hY3I7Ijoiwq8iLG1hY3I6IsKvIiwibWFsZTsiOiLimYIiLCJtYWx0OyI6IuKcoCIsIm1hbHRlc2U7Ijoi4pygIiwiTWFwOyI6IuKkhSIsIm1hcDsiOiLihqYiLCJtYXBzdG87Ijoi4oamIiwibWFwc3RvZG93bjsiOiLihqciLCJtYXBzdG9sZWZ0OyI6IuKGpCIsIm1hcHN0b3VwOyI6IuKGpSIsIm1hcmtlcjsiOiLilq4iLCJtY29tbWE7Ijoi4qipIiwiTWN5OyI6ItCcIiwibWN5OyI6ItC8IiwibWRhc2g7Ijoi4oCUIiwibUREb3Q7Ijoi4oi6IiwibWVhc3VyZWRhbmdsZTsiOiLiiKEiLCJNZWRpdW1TcGFjZTsiOiLigZ8iLCJNZWxsaW50cmY7Ijoi4oSzIiwiTWZyOyI6IvCdlJAiLCJtZnI7Ijoi8J2UqiIsIm1obzsiOiLihKciLCJtaWNybzsiOiLCtSIsbWljcm86IsK1IiwibWlkOyI6IuKIoyIsIm1pZGFzdDsiOiIqIiwibWlkY2lyOyI6IuKrsCIsIm1pZGRvdDsiOiLCtyIsbWlkZG90OiLCtyIsIm1pbnVzOyI6IuKIkiIsIm1pbnVzYjsiOiLiip8iLCJtaW51c2Q7Ijoi4oi4IiwibWludXNkdTsiOiLiqKoiLCJNaW51c1BsdXM7Ijoi4oiTIiwibWxjcDsiOiLiq5siLCJtbGRyOyI6IuKApiIsIm1ucGx1czsiOiLiiJMiLCJtb2RlbHM7Ijoi4oqnIiwiTW9wZjsiOiLwnZWEIiwibW9wZjsiOiLwnZWeIiwibXA7Ijoi4oiTIiwiTXNjcjsiOiLihLMiLCJtc2NyOyI6IvCdk4IiLCJtc3Rwb3M7Ijoi4oi+IiwiTXU7IjoizpwiLCJtdTsiOiLOvCIsIm11bHRpbWFwOyI6IuKKuCIsIm11bWFwOyI6IuKKuCIsIm5hYmxhOyI6IuKIhyIsIk5hY3V0ZTsiOiLFgyIsIm5hY3V0ZTsiOiLFhCIsIm5hbmc7Ijoi4oig4oOSIiwibmFwOyI6IuKJiSIsIm5hcEU7Ijoi4qmwzLgiLCJuYXBpZDsiOiLiiYvMuCIsIm5hcG9zOyI6IsWJIiwibmFwcHJveDsiOiLiiYkiLCJuYXR1cjsiOiLima4iLCJuYXR1cmFsOyI6IuKZriIsIm5hdHVyYWxzOyI6IuKElSIsIm5ic3A7IjoiwqAiLG5ic3A6IsKgIiwibmJ1bXA7Ijoi4omOzLgiLCJuYnVtcGU7Ijoi4omPzLgiLCJuY2FwOyI6IuKpgyIsIk5jYXJvbjsiOiLFhyIsIm5jYXJvbjsiOiLFiCIsIk5jZWRpbDsiOiLFhSIsIm5jZWRpbDsiOiLFhiIsIm5jb25nOyI6IuKJhyIsIm5jb25nZG90OyI6IuKprcy4IiwibmN1cDsiOiLiqYIiLCJOY3k7Ijoi0J0iLCJuY3k7Ijoi0L0iLCJuZGFzaDsiOiLigJMiLCJuZTsiOiLiiaAiLCJuZWFyaGs7Ijoi4qSkIiwibmVBcnI7Ijoi4oeXIiwibmVhcnI7Ijoi4oaXIiwibmVhcnJvdzsiOiLihpciLCJuZWRvdDsiOiLiiZDMuCIsIk5lZ2F0aXZlTWVkaXVtU3BhY2U7Ijoi4oCLIiwiTmVnYXRpdmVUaGlja1NwYWNlOyI6IuKAiyIsIk5lZ2F0aXZlVGhpblNwYWNlOyI6IuKAiyIsIk5lZ2F0aXZlVmVyeVRoaW5TcGFjZTsiOiLigIsiLCJuZXF1aXY7Ijoi4omiIiwibmVzZWFyOyI6IuKkqCIsIm5lc2ltOyI6IuKJgsy4IiwiTmVzdGVkR3JlYXRlckdyZWF0ZXI7Ijoi4omrIiwiTmVzdGVkTGVzc0xlc3M7Ijoi4omqIiwiTmV3TGluZTsiOiJcbiIsIm5leGlzdDsiOiLiiIQiLCJuZXhpc3RzOyI6IuKIhCIsIk5mcjsiOiLwnZSRIiwibmZyOyI6IvCdlKsiLCJuZ0U7Ijoi4omnzLgiLCJuZ2U7Ijoi4omxIiwibmdlcTsiOiLiibEiLCJuZ2VxcTsiOiLiiafMuCIsIm5nZXFzbGFudDsiOiLiqb7MuCIsIm5nZXM7Ijoi4qm+zLgiLCJuR2c7Ijoi4ouZzLgiLCJuZ3NpbTsiOiLiibUiLCJuR3Q7Ijoi4omr4oOSIiwibmd0OyI6IuKJryIsIm5ndHI7Ijoi4omvIiwibkd0djsiOiLiiavMuCIsIm5oQXJyOyI6IuKHjiIsIm5oYXJyOyI6IuKGriIsIm5ocGFyOyI6IuKrsiIsIm5pOyI6IuKIiyIsIm5pczsiOiLii7wiLCJuaXNkOyI6IuKLuiIsIm5pdjsiOiLiiIsiLCJOSmN5OyI6ItCKIiwibmpjeTsiOiLRmiIsIm5sQXJyOyI6IuKHjSIsIm5sYXJyOyI6IuKGmiIsIm5sZHI7Ijoi4oClIiwibmxFOyI6IuKJpsy4IiwibmxlOyI6IuKJsCIsIm5MZWZ0YXJyb3c7Ijoi4oeNIiwibmxlZnRhcnJvdzsiOiLihpoiLCJuTGVmdHJpZ2h0YXJyb3c7Ijoi4oeOIiwibmxlZnRyaWdodGFycm93OyI6IuKGriIsIm5sZXE7Ijoi4omwIiwibmxlcXE7Ijoi4ommzLgiLCJubGVxc2xhbnQ7Ijoi4qm9zLgiLCJubGVzOyI6IuKpvcy4Iiwibmxlc3M7Ijoi4omuIiwibkxsOyI6IuKLmMy4IiwibmxzaW07Ijoi4om0Iiwibkx0OyI6IuKJquKDkiIsIm5sdDsiOiLiia4iLCJubHRyaTsiOiLii6oiLCJubHRyaWU7Ijoi4ousIiwibkx0djsiOiLiiarMuCIsIm5taWQ7Ijoi4oikIiwiTm9CcmVhazsiOiLigaAiLCJOb25CcmVha2luZ1NwYWNlOyI6IsKgIiwiTm9wZjsiOiLihJUiLCJub3BmOyI6IvCdlZ8iLCJOb3Q7Ijoi4qusIiwibm90OyI6IsKsIixub3Q6IsKsIiwiTm90Q29uZ3J1ZW50OyI6IuKJoiIsIk5vdEN1cENhcDsiOiLiia0iLCJOb3REb3VibGVWZXJ0aWNhbEJhcjsiOiLiiKYiLCJOb3RFbGVtZW50OyI6IuKIiSIsIk5vdEVxdWFsOyI6IuKJoCIsIk5vdEVxdWFsVGlsZGU7Ijoi4omCzLgiLCJOb3RFeGlzdHM7Ijoi4oiEIiwiTm90R3JlYXRlcjsiOiLiia8iLCJOb3RHcmVhdGVyRXF1YWw7Ijoi4omxIiwiTm90R3JlYXRlckZ1bGxFcXVhbDsiOiLiiafMuCIsIk5vdEdyZWF0ZXJHcmVhdGVyOyI6IuKJq8y4IiwiTm90R3JlYXRlckxlc3M7Ijoi4om5IiwiTm90R3JlYXRlclNsYW50RXF1YWw7Ijoi4qm+zLgiLCJOb3RHcmVhdGVyVGlsZGU7Ijoi4om1IiwiTm90SHVtcERvd25IdW1wOyI6IuKJjsy4IiwiTm90SHVtcEVxdWFsOyI6IuKJj8y4Iiwibm90aW47Ijoi4oiJIiwibm90aW5kb3Q7Ijoi4ou1zLgiLCJub3RpbkU7Ijoi4ou5zLgiLCJub3RpbnZhOyI6IuKIiSIsIm5vdGludmI7Ijoi4ou3Iiwibm90aW52YzsiOiLii7YiLCJOb3RMZWZ0VHJpYW5nbGU7Ijoi4ouqIiwiTm90TGVmdFRyaWFuZ2xlQmFyOyI6IuKnj8y4IiwiTm90TGVmdFRyaWFuZ2xlRXF1YWw7Ijoi4ousIiwiTm90TGVzczsiOiLiia4iLCJOb3RMZXNzRXF1YWw7Ijoi4omwIiwiTm90TGVzc0dyZWF0ZXI7Ijoi4om4IiwiTm90TGVzc0xlc3M7Ijoi4omqzLgiLCJOb3RMZXNzU2xhbnRFcXVhbDsiOiLiqb3MuCIsIk5vdExlc3NUaWxkZTsiOiLiibQiLCJOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlcjsiOiLiqqLMuCIsIk5vdE5lc3RlZExlc3NMZXNzOyI6IuKqocy4Iiwibm90bmk7Ijoi4oiMIiwibm90bml2YTsiOiLiiIwiLCJub3RuaXZiOyI6IuKLviIsIm5vdG5pdmM7Ijoi4ou9IiwiTm90UHJlY2VkZXM7Ijoi4oqAIiwiTm90UHJlY2VkZXNFcXVhbDsiOiLiqq/MuCIsIk5vdFByZWNlZGVzU2xhbnRFcXVhbDsiOiLii6AiLCJOb3RSZXZlcnNlRWxlbWVudDsiOiLiiIwiLCJOb3RSaWdodFRyaWFuZ2xlOyI6IuKLqyIsIk5vdFJpZ2h0VHJpYW5nbGVCYXI7Ijoi4qeQzLgiLCJOb3RSaWdodFRyaWFuZ2xlRXF1YWw7Ijoi4outIiwiTm90U3F1YXJlU3Vic2V0OyI6IuKKj8y4IiwiTm90U3F1YXJlU3Vic2V0RXF1YWw7Ijoi4ouiIiwiTm90U3F1YXJlU3VwZXJzZXQ7Ijoi4oqQzLgiLCJOb3RTcXVhcmVTdXBlcnNldEVxdWFsOyI6IuKLoyIsIk5vdFN1YnNldDsiOiLiioLig5IiLCJOb3RTdWJzZXRFcXVhbDsiOiLiiogiLCJOb3RTdWNjZWVkczsiOiLiioEiLCJOb3RTdWNjZWVkc0VxdWFsOyI6IuKqsMy4IiwiTm90U3VjY2VlZHNTbGFudEVxdWFsOyI6IuKLoSIsIk5vdFN1Y2NlZWRzVGlsZGU7Ijoi4om/zLgiLCJOb3RTdXBlcnNldDsiOiLiioPig5IiLCJOb3RTdXBlcnNldEVxdWFsOyI6IuKKiSIsIk5vdFRpbGRlOyI6IuKJgSIsIk5vdFRpbGRlRXF1YWw7Ijoi4omEIiwiTm90VGlsZGVGdWxsRXF1YWw7Ijoi4omHIiwiTm90VGlsZGVUaWxkZTsiOiLiiYkiLCJOb3RWZXJ0aWNhbEJhcjsiOiLiiKQiLCJucGFyOyI6IuKIpiIsIm5wYXJhbGxlbDsiOiLiiKYiLCJucGFyc2w7Ijoi4qu94oOlIiwibnBhcnQ7Ijoi4oiCzLgiLCJucG9saW50OyI6IuKolCIsIm5wcjsiOiLiioAiLCJucHJjdWU7Ijoi4ougIiwibnByZTsiOiLiqq/MuCIsIm5wcmVjOyI6IuKKgCIsIm5wcmVjZXE7Ijoi4qqvzLgiLCJuckFycjsiOiLih48iLCJucmFycjsiOiLihpsiLCJucmFycmM7Ijoi4qSzzLgiLCJucmFycnc7Ijoi4oadzLgiLCJuUmlnaHRhcnJvdzsiOiLih48iLCJucmlnaHRhcnJvdzsiOiLihpsiLCJucnRyaTsiOiLii6siLCJucnRyaWU7Ijoi4outIiwibnNjOyI6IuKKgSIsIm5zY2N1ZTsiOiLii6EiLCJuc2NlOyI6IuKqsMy4IiwiTnNjcjsiOiLwnZKpIiwibnNjcjsiOiLwnZODIiwibnNob3J0bWlkOyI6IuKIpCIsIm5zaG9ydHBhcmFsbGVsOyI6IuKIpiIsIm5zaW07Ijoi4omBIiwibnNpbWU7Ijoi4omEIiwibnNpbWVxOyI6IuKJhCIsIm5zbWlkOyI6IuKIpCIsIm5zcGFyOyI6IuKIpiIsIm5zcXN1YmU7Ijoi4ouiIiwibnNxc3VwZTsiOiLii6MiLCJuc3ViOyI6IuKKhCIsIm5zdWJFOyI6IuKrhcy4IiwibnN1YmU7Ijoi4oqIIiwibnN1YnNldDsiOiLiioLig5IiLCJuc3Vic2V0ZXE7Ijoi4oqIIiwibnN1YnNldGVxcTsiOiLiq4XMuCIsIm5zdWNjOyI6IuKKgSIsIm5zdWNjZXE7Ijoi4qqwzLgiLCJuc3VwOyI6IuKKhSIsIm5zdXBFOyI6IuKrhsy4IiwibnN1cGU7Ijoi4oqJIiwibnN1cHNldDsiOiLiioPig5IiLCJuc3Vwc2V0ZXE7Ijoi4oqJIiwibnN1cHNldGVxcTsiOiLiq4bMuCIsIm50Z2w7Ijoi4om5IiwiTnRpbGRlOyI6IsORIixOdGlsZGU6IsORIiwibnRpbGRlOyI6IsOxIixudGlsZGU6IsOxIiwibnRsZzsiOiLiibgiLCJudHJpYW5nbGVsZWZ0OyI6IuKLqiIsIm50cmlhbmdsZWxlZnRlcTsiOiLii6wiLCJudHJpYW5nbGVyaWdodDsiOiLii6siLCJudHJpYW5nbGVyaWdodGVxOyI6IuKLrSIsIk51OyI6Is6dIiwibnU7Ijoizr0iLCJudW07IjoiIyIsIm51bWVybzsiOiLihJYiLCJudW1zcDsiOiLigIciLCJudmFwOyI6IuKJjeKDkiIsIm5WRGFzaDsiOiLiiq8iLCJuVmRhc2g7Ijoi4oquIiwibnZEYXNoOyI6IuKKrSIsIm52ZGFzaDsiOiLiiqwiLCJudmdlOyI6IuKJpeKDkiIsIm52Z3Q7IjoiPuKDkiIsIm52SGFycjsiOiLipIQiLCJudmluZmluOyI6IuKnniIsIm52bEFycjsiOiLipIIiLCJudmxlOyI6IuKJpOKDkiIsIm52bHQ7IjoiPOKDkiIsIm52bHRyaWU7Ijoi4oq04oOSIiwibnZyQXJyOyI6IuKkgyIsIm52cnRyaWU7Ijoi4oq14oOSIiwibnZzaW07Ijoi4oi84oOSIiwibndhcmhrOyI6IuKkoyIsIm53QXJyOyI6IuKHliIsIm53YXJyOyI6IuKGliIsIm53YXJyb3c7Ijoi4oaWIiwibnduZWFyOyI6IuKkpyIsIk9hY3V0ZTsiOiLDkyIsT2FjdXRlOiLDkyIsIm9hY3V0ZTsiOiLDsyIsb2FjdXRlOiLDsyIsIm9hc3Q7Ijoi4oqbIiwib2NpcjsiOiLiipoiLCJPY2lyYzsiOiLDlCIsT2NpcmM6IsOUIiwib2NpcmM7Ijoiw7QiLG9jaXJjOiLDtCIsIk9jeTsiOiLQniIsIm9jeTsiOiLQviIsIm9kYXNoOyI6IuKKnSIsIk9kYmxhYzsiOiLFkCIsIm9kYmxhYzsiOiLFkSIsIm9kaXY7Ijoi4qi4Iiwib2RvdDsiOiLiipkiLCJvZHNvbGQ7Ijoi4qa8IiwiT0VsaWc7IjoixZIiLCJvZWxpZzsiOiLFkyIsIm9mY2lyOyI6IuKmvyIsIk9mcjsiOiLwnZSSIiwib2ZyOyI6IvCdlKwiLCJvZ29uOyI6IsubIiwiT2dyYXZlOyI6IsOSIixPZ3JhdmU6IsOSIiwib2dyYXZlOyI6IsOyIixvZ3JhdmU6IsOyIiwib2d0OyI6IuKngSIsIm9oYmFyOyI6IuKmtSIsIm9obTsiOiLOqSIsIm9pbnQ7Ijoi4oiuIiwib2xhcnI7Ijoi4oa6Iiwib2xjaXI7Ijoi4qa+Iiwib2xjcm9zczsiOiLiprsiLCJvbGluZTsiOiLigL4iLCJvbHQ7Ijoi4qeAIiwiT21hY3I7IjoixYwiLCJvbWFjcjsiOiLFjSIsIk9tZWdhOyI6Is6pIiwib21lZ2E7Ijoiz4kiLCJPbWljcm9uOyI6Is6fIiwib21pY3JvbjsiOiLOvyIsIm9taWQ7Ijoi4qa2Iiwib21pbnVzOyI6IuKKliIsIk9vcGY7Ijoi8J2VhiIsIm9vcGY7Ijoi8J2VoCIsIm9wYXI7Ijoi4qa3IiwiT3BlbkN1cmx5RG91YmxlUXVvdGU7Ijoi4oCcIiwiT3BlbkN1cmx5UXVvdGU7Ijoi4oCYIiwib3BlcnA7Ijoi4qa5Iiwib3BsdXM7Ijoi4oqVIiwiT3I7Ijoi4qmUIiwib3I7Ijoi4oioIiwib3JhcnI7Ijoi4oa7Iiwib3JkOyI6IuKpnSIsIm9yZGVyOyI6IuKEtCIsIm9yZGVyb2Y7Ijoi4oS0Iiwib3JkZjsiOiLCqiIsb3JkZjoiwqoiLCJvcmRtOyI6IsK6IixvcmRtOiLCuiIsIm9yaWdvZjsiOiLiirYiLCJvcm9yOyI6IuKpliIsIm9yc2xvcGU7Ijoi4qmXIiwib3J2OyI6IuKpmyIsIm9TOyI6IuKTiCIsIk9zY3I7Ijoi8J2SqiIsIm9zY3I7Ijoi4oS0IiwiT3NsYXNoOyI6IsOYIixPc2xhc2g6IsOYIiwib3NsYXNoOyI6IsO4Iixvc2xhc2g6IsO4Iiwib3NvbDsiOiLiipgiLCJPdGlsZGU7Ijoiw5UiLE90aWxkZToiw5UiLCJvdGlsZGU7Ijoiw7UiLG90aWxkZToiw7UiLCJPdGltZXM7Ijoi4qi3Iiwib3RpbWVzOyI6IuKKlyIsIm90aW1lc2FzOyI6IuKotiIsIk91bWw7Ijoiw5YiLE91bWw6IsOWIiwib3VtbDsiOiLDtiIsb3VtbDoiw7YiLCJvdmJhcjsiOiLijL0iLCJPdmVyQmFyOyI6IuKAviIsIk92ZXJCcmFjZTsiOiLij54iLCJPdmVyQnJhY2tldDsiOiLijrQiLCJPdmVyUGFyZW50aGVzaXM7Ijoi4o+cIiwicGFyOyI6IuKIpSIsInBhcmE7IjoiwrYiLHBhcmE6IsK2IiwicGFyYWxsZWw7Ijoi4oilIiwicGFyc2ltOyI6IuKrsyIsInBhcnNsOyI6IuKrvSIsInBhcnQ7Ijoi4oiCIiwiUGFydGlhbEQ7Ijoi4oiCIiwiUGN5OyI6ItCfIiwicGN5OyI6ItC/IiwicGVyY250OyI6IiUiLCJwZXJpb2Q7IjoiLiIsInBlcm1pbDsiOiLigLAiLCJwZXJwOyI6IuKKpSIsInBlcnRlbms7Ijoi4oCxIiwiUGZyOyI6IvCdlJMiLCJwZnI7Ijoi8J2UrSIsIlBoaTsiOiLOpiIsInBoaTsiOiLPhiIsInBoaXY7Ijoiz5UiLCJwaG1tYXQ7Ijoi4oSzIiwicGhvbmU7Ijoi4piOIiwiUGk7IjoizqAiLCJwaTsiOiLPgCIsInBpdGNoZm9yazsiOiLii5QiLCJwaXY7Ijoiz5YiLCJwbGFuY2s7Ijoi4oSPIiwicGxhbmNraDsiOiLihI4iLCJwbGFua3Y7Ijoi4oSPIiwicGx1czsiOiIrIiwicGx1c2FjaXI7Ijoi4qijIiwicGx1c2I7Ijoi4oqeIiwicGx1c2NpcjsiOiLiqKIiLCJwbHVzZG87Ijoi4oiUIiwicGx1c2R1OyI6IuKopSIsInBsdXNlOyI6IuKpsiIsIlBsdXNNaW51czsiOiLCsSIsInBsdXNtbjsiOiLCsSIscGx1c21uOiLCsSIsInBsdXNzaW07Ijoi4qimIiwicGx1c3R3bzsiOiLiqKciLCJwbTsiOiLCsSIsIlBvaW5jYXJlcGxhbmU7Ijoi4oSMIiwicG9pbnRpbnQ7Ijoi4qiVIiwiUG9wZjsiOiLihJkiLCJwb3BmOyI6IvCdlaEiLCJwb3VuZDsiOiLCoyIscG91bmQ6IsKjIiwiUHI7Ijoi4qq7IiwicHI7Ijoi4om6IiwicHJhcDsiOiLiqrciLCJwcmN1ZTsiOiLiibwiLCJwckU7Ijoi4qqzIiwicHJlOyI6IuKqryIsInByZWM7Ijoi4om6IiwicHJlY2FwcHJveDsiOiLiqrciLCJwcmVjY3VybHllcTsiOiLiibwiLCJQcmVjZWRlczsiOiLiiboiLCJQcmVjZWRlc0VxdWFsOyI6IuKqryIsIlByZWNlZGVzU2xhbnRFcXVhbDsiOiLiibwiLCJQcmVjZWRlc1RpbGRlOyI6IuKJviIsInByZWNlcTsiOiLiqq8iLCJwcmVjbmFwcHJveDsiOiLiqrkiLCJwcmVjbmVxcTsiOiLiqrUiLCJwcmVjbnNpbTsiOiLii6giLCJwcmVjc2ltOyI6IuKJviIsIlByaW1lOyI6IuKAsyIsInByaW1lOyI6IuKAsiIsInByaW1lczsiOiLihJkiLCJwcm5hcDsiOiLiqrkiLCJwcm5FOyI6IuKqtSIsInBybnNpbTsiOiLii6giLCJwcm9kOyI6IuKIjyIsIlByb2R1Y3Q7Ijoi4oiPIiwicHJvZmFsYXI7Ijoi4oyuIiwicHJvZmxpbmU7Ijoi4oySIiwicHJvZnN1cmY7Ijoi4oyTIiwicHJvcDsiOiLiiJ0iLCJQcm9wb3J0aW9uOyI6IuKItyIsIlByb3BvcnRpb25hbDsiOiLiiJ0iLCJwcm9wdG87Ijoi4oidIiwicHJzaW07Ijoi4om+IiwicHJ1cmVsOyI6IuKKsCIsIlBzY3I7Ijoi8J2SqyIsInBzY3I7Ijoi8J2ThSIsIlBzaTsiOiLOqCIsInBzaTsiOiLPiCIsInB1bmNzcDsiOiLigIgiLCJRZnI7Ijoi8J2UlCIsInFmcjsiOiLwnZSuIiwicWludDsiOiLiqIwiLCJRb3BmOyI6IuKEmiIsInFvcGY7Ijoi8J2VoiIsInFwcmltZTsiOiLigZciLCJRc2NyOyI6IvCdkqwiLCJxc2NyOyI6IvCdk4YiLCJxdWF0ZXJuaW9uczsiOiLihI0iLCJxdWF0aW50OyI6IuKoliIsInF1ZXN0OyI6Ij8iLCJxdWVzdGVxOyI6IuKJnyIsIlFVT1Q7IjonIicsUVVPVDonIicsInF1b3Q7IjonIicscXVvdDonIicsInJBYXJyOyI6IuKHmyIsInJhY2U7Ijoi4oi9zLEiLCJSYWN1dGU7IjoixZQiLCJyYWN1dGU7IjoixZUiLCJyYWRpYzsiOiLiiJoiLCJyYWVtcHR5djsiOiLiprMiLCJSYW5nOyI6IuKfqyIsInJhbmc7Ijoi4p+pIiwicmFuZ2Q7Ijoi4qaSIiwicmFuZ2U7Ijoi4qalIiwicmFuZ2xlOyI6IuKfqSIsInJhcXVvOyI6IsK7IixyYXF1bzoiwrsiLCJSYXJyOyI6IuKGoCIsInJBcnI7Ijoi4oeSIiwicmFycjsiOiLihpIiLCJyYXJyYXA7Ijoi4qW1IiwicmFycmI7Ijoi4oelIiwicmFycmJmczsiOiLipKAiLCJyYXJyYzsiOiLipLMiLCJyYXJyZnM7Ijoi4qSeIiwicmFycmhrOyI6IuKGqiIsInJhcnJscDsiOiLihqwiLCJyYXJycGw7Ijoi4qWFIiwicmFycnNpbTsiOiLipbQiLCJSYXJydGw7Ijoi4qSWIiwicmFycnRsOyI6IuKGoyIsInJhcnJ3OyI6IuKGnSIsInJBdGFpbDsiOiLipJwiLCJyYXRhaWw7Ijoi4qSaIiwicmF0aW87Ijoi4oi2IiwicmF0aW9uYWxzOyI6IuKEmiIsIlJCYXJyOyI6IuKkkCIsInJCYXJyOyI6IuKkjyIsInJiYXJyOyI6IuKkjSIsInJiYnJrOyI6IuKdsyIsInJicmFjZTsiOiJ9IiwicmJyYWNrOyI6Il0iLCJyYnJrZTsiOiLipowiLCJyYnJrc2xkOyI6IuKmjiIsInJicmtzbHU7Ijoi4qaQIiwiUmNhcm9uOyI6IsWYIiwicmNhcm9uOyI6IsWZIiwiUmNlZGlsOyI6IsWWIiwicmNlZGlsOyI6IsWXIiwicmNlaWw7Ijoi4oyJIiwicmN1YjsiOiJ9IiwiUmN5OyI6ItCgIiwicmN5OyI6ItGAIiwicmRjYTsiOiLipLciLCJyZGxkaGFyOyI6IuKlqSIsInJkcXVvOyI6IuKAnSIsInJkcXVvcjsiOiLigJ0iLCJyZHNoOyI6IuKGsyIsIlJlOyI6IuKEnCIsInJlYWw7Ijoi4oScIiwicmVhbGluZTsiOiLihJsiLCJyZWFscGFydDsiOiLihJwiLCJyZWFsczsiOiLihJ0iLCJyZWN0OyI6IuKWrSIsIlJFRzsiOiLCriIsUkVHOiLCriIsInJlZzsiOiLCriIscmVnOiLCriIsIlJldmVyc2VFbGVtZW50OyI6IuKIiyIsIlJldmVyc2VFcXVpbGlicml1bTsiOiLih4siLCJSZXZlcnNlVXBFcXVpbGlicml1bTsiOiLipa8iLCJyZmlzaHQ7Ijoi4qW9IiwicmZsb29yOyI6IuKMiyIsIlJmcjsiOiLihJwiLCJyZnI7Ijoi8J2UryIsInJIYXI7Ijoi4qWkIiwicmhhcmQ7Ijoi4oeBIiwicmhhcnU7Ijoi4oeAIiwicmhhcnVsOyI6IuKlrCIsIlJobzsiOiLOoSIsInJobzsiOiLPgSIsInJob3Y7Ijoiz7EiLCJSaWdodEFuZ2xlQnJhY2tldDsiOiLin6kiLCJSaWdodEFycm93OyI6IuKGkiIsIlJpZ2h0YXJyb3c7Ijoi4oeSIiwicmlnaHRhcnJvdzsiOiLihpIiLCJSaWdodEFycm93QmFyOyI6IuKHpSIsIlJpZ2h0QXJyb3dMZWZ0QXJyb3c7Ijoi4oeEIiwicmlnaHRhcnJvd3RhaWw7Ijoi4oajIiwiUmlnaHRDZWlsaW5nOyI6IuKMiSIsIlJpZ2h0RG91YmxlQnJhY2tldDsiOiLin6ciLCJSaWdodERvd25UZWVWZWN0b3I7Ijoi4qWdIiwiUmlnaHREb3duVmVjdG9yOyI6IuKHgiIsIlJpZ2h0RG93blZlY3RvckJhcjsiOiLipZUiLCJSaWdodEZsb29yOyI6IuKMiyIsInJpZ2h0aGFycG9vbmRvd247Ijoi4oeBIiwicmlnaHRoYXJwb29udXA7Ijoi4oeAIiwicmlnaHRsZWZ0YXJyb3dzOyI6IuKHhCIsInJpZ2h0bGVmdGhhcnBvb25zOyI6IuKHjCIsInJpZ2h0cmlnaHRhcnJvd3M7Ijoi4oeJIiwicmlnaHRzcXVpZ2Fycm93OyI6IuKGnSIsIlJpZ2h0VGVlOyI6IuKKoiIsIlJpZ2h0VGVlQXJyb3c7Ijoi4oamIiwiUmlnaHRUZWVWZWN0b3I7Ijoi4qWbIiwicmlnaHR0aHJlZXRpbWVzOyI6IuKLjCIsIlJpZ2h0VHJpYW5nbGU7Ijoi4oqzIiwiUmlnaHRUcmlhbmdsZUJhcjsiOiLip5AiLCJSaWdodFRyaWFuZ2xlRXF1YWw7Ijoi4oq1IiwiUmlnaHRVcERvd25WZWN0b3I7Ijoi4qWPIiwiUmlnaHRVcFRlZVZlY3RvcjsiOiLipZwiLCJSaWdodFVwVmVjdG9yOyI6IuKGviIsIlJpZ2h0VXBWZWN0b3JCYXI7Ijoi4qWUIiwiUmlnaHRWZWN0b3I7Ijoi4oeAIiwiUmlnaHRWZWN0b3JCYXI7Ijoi4qWTIiwicmluZzsiOiLLmiIsInJpc2luZ2RvdHNlcTsiOiLiiZMiLCJybGFycjsiOiLih4QiLCJybGhhcjsiOiLih4wiLCJybG07Ijoi4oCPIiwicm1vdXN0OyI6IuKOsSIsInJtb3VzdGFjaGU7Ijoi4o6xIiwicm5taWQ7Ijoi4quuIiwicm9hbmc7Ijoi4p+tIiwicm9hcnI7Ijoi4oe+Iiwicm9icms7Ijoi4p+nIiwicm9wYXI7Ijoi4qaGIiwiUm9wZjsiOiLihJ0iLCJyb3BmOyI6IvCdlaMiLCJyb3BsdXM7Ijoi4qiuIiwicm90aW1lczsiOiLiqLUiLCJSb3VuZEltcGxpZXM7Ijoi4qWwIiwicnBhcjsiOiIpIiwicnBhcmd0OyI6IuKmlCIsInJwcG9saW50OyI6IuKokiIsInJyYXJyOyI6IuKHiSIsIlJyaWdodGFycm93OyI6IuKHmyIsInJzYXF1bzsiOiLigLoiLCJSc2NyOyI6IuKEmyIsInJzY3I7Ijoi8J2ThyIsIlJzaDsiOiLihrEiLCJyc2g7Ijoi4oaxIiwicnNxYjsiOiJdIiwicnNxdW87Ijoi4oCZIiwicnNxdW9yOyI6IuKAmSIsInJ0aHJlZTsiOiLii4wiLCJydGltZXM7Ijoi4ouKIiwicnRyaTsiOiLilrkiLCJydHJpZTsiOiLiirUiLCJydHJpZjsiOiLilrgiLCJydHJpbHRyaTsiOiLip44iLCJSdWxlRGVsYXllZDsiOiLip7QiLCJydWx1aGFyOyI6IuKlqCIsInJ4OyI6IuKEniIsIlNhY3V0ZTsiOiLFmiIsInNhY3V0ZTsiOiLFmyIsInNicXVvOyI6IuKAmiIsIlNjOyI6IuKqvCIsInNjOyI6IuKJuyIsInNjYXA7Ijoi4qq4IiwiU2Nhcm9uOyI6IsWgIiwic2Nhcm9uOyI6IsWhIiwic2NjdWU7Ijoi4om9Iiwic2NFOyI6IuKqtCIsInNjZTsiOiLiqrAiLCJTY2VkaWw7IjoixZ4iLCJzY2VkaWw7IjoixZ8iLCJTY2lyYzsiOiLFnCIsInNjaXJjOyI6IsWdIiwic2NuYXA7Ijoi4qq6Iiwic2NuRTsiOiLiqrYiLCJzY25zaW07Ijoi4oupIiwic2Nwb2xpbnQ7Ijoi4qiTIiwic2NzaW07Ijoi4om/IiwiU2N5OyI6ItChIiwic2N5OyI6ItGBIiwic2RvdDsiOiLii4UiLCJzZG90YjsiOiLiiqEiLCJzZG90ZTsiOiLiqaYiLCJzZWFyaGs7Ijoi4qSlIiwic2VBcnI7Ijoi4oeYIiwic2VhcnI7Ijoi4oaYIiwic2VhcnJvdzsiOiLihpgiLCJzZWN0OyI6IsKnIixzZWN0OiLCpyIsInNlbWk7IjoiOyIsInNlc3dhcjsiOiLipKkiLCJzZXRtaW51czsiOiLiiJYiLCJzZXRtbjsiOiLiiJYiLCJzZXh0OyI6IuKctiIsIlNmcjsiOiLwnZSWIiwic2ZyOyI6IvCdlLAiLCJzZnJvd247Ijoi4oyiIiwic2hhcnA7Ijoi4pmvIiwiU0hDSGN5OyI6ItCpIiwic2hjaGN5OyI6ItGJIiwiU0hjeTsiOiLQqCIsInNoY3k7Ijoi0YgiLCJTaG9ydERvd25BcnJvdzsiOiLihpMiLCJTaG9ydExlZnRBcnJvdzsiOiLihpAiLCJzaG9ydG1pZDsiOiLiiKMiLCJzaG9ydHBhcmFsbGVsOyI6IuKIpSIsIlNob3J0UmlnaHRBcnJvdzsiOiLihpIiLCJTaG9ydFVwQXJyb3c7Ijoi4oaRIiwic2h5OyI6IsKtIixzaHk6IsKtIiwiU2lnbWE7IjoizqMiLCJzaWdtYTsiOiLPgyIsInNpZ21hZjsiOiLPgiIsInNpZ21hdjsiOiLPgiIsInNpbTsiOiLiiLwiLCJzaW1kb3Q7Ijoi4qmqIiwic2ltZTsiOiLiiYMiLCJzaW1lcTsiOiLiiYMiLCJzaW1nOyI6IuKqniIsInNpbWdFOyI6IuKqoCIsInNpbWw7Ijoi4qqdIiwic2ltbEU7Ijoi4qqfIiwic2ltbmU7Ijoi4omGIiwic2ltcGx1czsiOiLiqKQiLCJzaW1yYXJyOyI6IuKlsiIsInNsYXJyOyI6IuKGkCIsIlNtYWxsQ2lyY2xlOyI6IuKImCIsInNtYWxsc2V0bWludXM7Ijoi4oiWIiwic21hc2hwOyI6IuKosyIsInNtZXBhcnNsOyI6IuKnpCIsInNtaWQ7Ijoi4oijIiwic21pbGU7Ijoi4oyjIiwic210OyI6IuKqqiIsInNtdGU7Ijoi4qqsIiwic210ZXM7Ijoi4qqs77iAIiwiU09GVGN5OyI6ItCsIiwic29mdGN5OyI6ItGMIiwic29sOyI6Ii8iLCJzb2xiOyI6IuKnhCIsInNvbGJhcjsiOiLijL8iLCJTb3BmOyI6IvCdlYoiLCJzb3BmOyI6IvCdlaQiLCJzcGFkZXM7Ijoi4pmgIiwic3BhZGVzdWl0OyI6IuKZoCIsInNwYXI7Ijoi4oilIiwic3FjYXA7Ijoi4oqTIiwic3FjYXBzOyI6IuKKk++4gCIsInNxY3VwOyI6IuKKlCIsInNxY3VwczsiOiLiipTvuIAiLCJTcXJ0OyI6IuKImiIsInNxc3ViOyI6IuKKjyIsInNxc3ViZTsiOiLiipEiLCJzcXN1YnNldDsiOiLiio8iLCJzcXN1YnNldGVxOyI6IuKKkSIsInNxc3VwOyI6IuKKkCIsInNxc3VwZTsiOiLiipIiLCJzcXN1cHNldDsiOiLiipAiLCJzcXN1cHNldGVxOyI6IuKKkiIsInNxdTsiOiLilqEiLCJTcXVhcmU7Ijoi4pahIiwic3F1YXJlOyI6IuKWoSIsIlNxdWFyZUludGVyc2VjdGlvbjsiOiLiipMiLCJTcXVhcmVTdWJzZXQ7Ijoi4oqPIiwiU3F1YXJlU3Vic2V0RXF1YWw7Ijoi4oqRIiwiU3F1YXJlU3VwZXJzZXQ7Ijoi4oqQIiwiU3F1YXJlU3VwZXJzZXRFcXVhbDsiOiLiipIiLCJTcXVhcmVVbmlvbjsiOiLiipQiLCJzcXVhcmY7Ijoi4paqIiwic3F1ZjsiOiLilqoiLCJzcmFycjsiOiLihpIiLCJTc2NyOyI6IvCdkq4iLCJzc2NyOyI6IvCdk4giLCJzc2V0bW47Ijoi4oiWIiwic3NtaWxlOyI6IuKMoyIsInNzdGFyZjsiOiLii4YiLCJTdGFyOyI6IuKLhiIsInN0YXI7Ijoi4piGIiwic3RhcmY7Ijoi4piFIiwic3RyYWlnaHRlcHNpbG9uOyI6Is+1Iiwic3RyYWlnaHRwaGk7Ijoiz5UiLCJzdHJuczsiOiLCryIsIlN1YjsiOiLii5AiLCJzdWI7Ijoi4oqCIiwic3ViZG90OyI6IuKqvSIsInN1YkU7Ijoi4quFIiwic3ViZTsiOiLiioYiLCJzdWJlZG90OyI6IuKrgyIsInN1Ym11bHQ7Ijoi4quBIiwic3VibkU7Ijoi4quLIiwic3VibmU7Ijoi4oqKIiwic3VicGx1czsiOiLiqr8iLCJzdWJyYXJyOyI6IuKluSIsIlN1YnNldDsiOiLii5AiLCJzdWJzZXQ7Ijoi4oqCIiwic3Vic2V0ZXE7Ijoi4oqGIiwic3Vic2V0ZXFxOyI6IuKrhSIsIlN1YnNldEVxdWFsOyI6IuKKhiIsInN1YnNldG5lcTsiOiLiiooiLCJzdWJzZXRuZXFxOyI6IuKriyIsInN1YnNpbTsiOiLiq4ciLCJzdWJzdWI7Ijoi4quVIiwic3Vic3VwOyI6IuKrkyIsInN1Y2M7Ijoi4om7Iiwic3VjY2FwcHJveDsiOiLiqrgiLCJzdWNjY3VybHllcTsiOiLiib0iLCJTdWNjZWVkczsiOiLiibsiLCJTdWNjZWVkc0VxdWFsOyI6IuKqsCIsIlN1Y2NlZWRzU2xhbnRFcXVhbDsiOiLiib0iLCJTdWNjZWVkc1RpbGRlOyI6IuKJvyIsInN1Y2NlcTsiOiLiqrAiLCJzdWNjbmFwcHJveDsiOiLiqroiLCJzdWNjbmVxcTsiOiLiqrYiLCJzdWNjbnNpbTsiOiLii6kiLCJzdWNjc2ltOyI6IuKJvyIsIlN1Y2hUaGF0OyI6IuKIiyIsIlN1bTsiOiLiiJEiLCJzdW07Ijoi4oiRIiwic3VuZzsiOiLimaoiLCJTdXA7Ijoi4ouRIiwic3VwOyI6IuKKgyIsInN1cDE7IjoiwrkiLHN1cDE6IsK5Iiwic3VwMjsiOiLCsiIsc3VwMjoiwrIiLCJzdXAzOyI6IsKzIixzdXAzOiLCsyIsInN1cGRvdDsiOiLiqr4iLCJzdXBkc3ViOyI6IuKrmCIsInN1cEU7Ijoi4quGIiwic3VwZTsiOiLiiociLCJzdXBlZG90OyI6IuKrhCIsIlN1cGVyc2V0OyI6IuKKgyIsIlN1cGVyc2V0RXF1YWw7Ijoi4oqHIiwic3VwaHNvbDsiOiLin4kiLCJzdXBoc3ViOyI6IuKrlyIsInN1cGxhcnI7Ijoi4qW7Iiwic3VwbXVsdDsiOiLiq4IiLCJzdXBuRTsiOiLiq4wiLCJzdXBuZTsiOiLiiosiLCJzdXBwbHVzOyI6IuKrgCIsIlN1cHNldDsiOiLii5EiLCJzdXBzZXQ7Ijoi4oqDIiwic3Vwc2V0ZXE7Ijoi4oqHIiwic3Vwc2V0ZXFxOyI6IuKrhiIsInN1cHNldG5lcTsiOiLiiosiLCJzdXBzZXRuZXFxOyI6IuKrjCIsInN1cHNpbTsiOiLiq4giLCJzdXBzdWI7Ijoi4quUIiwic3Vwc3VwOyI6IuKrliIsInN3YXJoazsiOiLipKYiLCJzd0FycjsiOiLih5kiLCJzd2FycjsiOiLihpkiLCJzd2Fycm93OyI6IuKGmSIsInN3bndhcjsiOiLipKoiLCJzemxpZzsiOiLDnyIsc3psaWc6IsOfIiwiVGFiOyI6Ilx0IiwidGFyZ2V0OyI6IuKMliIsIlRhdTsiOiLOpCIsInRhdTsiOiLPhCIsInRicms7Ijoi4o60IiwiVGNhcm9uOyI6IsWkIiwidGNhcm9uOyI6IsWlIiwiVGNlZGlsOyI6IsWiIiwidGNlZGlsOyI6IsWjIiwiVGN5OyI6ItCiIiwidGN5OyI6ItGCIiwidGRvdDsiOiLig5siLCJ0ZWxyZWM7Ijoi4oyVIiwiVGZyOyI6IvCdlJciLCJ0ZnI7Ijoi8J2UsSIsInRoZXJlNDsiOiLiiLQiLCJUaGVyZWZvcmU7Ijoi4oi0IiwidGhlcmVmb3JlOyI6IuKItCIsIlRoZXRhOyI6Is6YIiwidGhldGE7IjoizrgiLCJ0aGV0YXN5bTsiOiLPkSIsInRoZXRhdjsiOiLPkSIsInRoaWNrYXBwcm94OyI6IuKJiCIsInRoaWNrc2ltOyI6IuKIvCIsIlRoaWNrU3BhY2U7Ijoi4oGf4oCKIiwidGhpbnNwOyI6IuKAiSIsIlRoaW5TcGFjZTsiOiLigIkiLCJ0aGthcDsiOiLiiYgiLCJ0aGtzaW07Ijoi4oi8IiwiVEhPUk47Ijoiw54iLFRIT1JOOiLDniIsInRob3JuOyI6IsO+Iix0aG9ybjoiw74iLCJUaWxkZTsiOiLiiLwiLCJ0aWxkZTsiOiLLnCIsIlRpbGRlRXF1YWw7Ijoi4omDIiwiVGlsZGVGdWxsRXF1YWw7Ijoi4omFIiwiVGlsZGVUaWxkZTsiOiLiiYgiLCJ0aW1lczsiOiLDlyIsdGltZXM6IsOXIiwidGltZXNiOyI6IuKKoCIsInRpbWVzYmFyOyI6IuKosSIsInRpbWVzZDsiOiLiqLAiLCJ0aW50OyI6IuKIrSIsInRvZWE7Ijoi4qSoIiwidG9wOyI6IuKKpCIsInRvcGJvdDsiOiLijLYiLCJ0b3BjaXI7Ijoi4quxIiwiVG9wZjsiOiLwnZWLIiwidG9wZjsiOiLwnZWlIiwidG9wZm9yazsiOiLiq5oiLCJ0b3NhOyI6IuKkqSIsInRwcmltZTsiOiLigLQiLCJUUkFERTsiOiLihKIiLCJ0cmFkZTsiOiLihKIiLCJ0cmlhbmdsZTsiOiLilrUiLCJ0cmlhbmdsZWRvd247Ijoi4pa/IiwidHJpYW5nbGVsZWZ0OyI6IuKXgyIsInRyaWFuZ2xlbGVmdGVxOyI6IuKKtCIsInRyaWFuZ2xlcTsiOiLiiZwiLCJ0cmlhbmdsZXJpZ2h0OyI6IuKWuSIsInRyaWFuZ2xlcmlnaHRlcTsiOiLiirUiLCJ0cmlkb3Q7Ijoi4pesIiwidHJpZTsiOiLiiZwiLCJ0cmltaW51czsiOiLiqLoiLCJUcmlwbGVEb3Q7Ijoi4oObIiwidHJpcGx1czsiOiLiqLkiLCJ0cmlzYjsiOiLip40iLCJ0cml0aW1lOyI6IuKouyIsInRycGV6aXVtOyI6IuKPoiIsIlRzY3I7Ijoi8J2SryIsInRzY3I7Ijoi8J2TiSIsIlRTY3k7Ijoi0KYiLCJ0c2N5OyI6ItGGIiwiVFNIY3k7Ijoi0IsiLCJ0c2hjeTsiOiLRmyIsIlRzdHJvazsiOiLFpiIsInRzdHJvazsiOiLFpyIsInR3aXh0OyI6IuKJrCIsInR3b2hlYWRsZWZ0YXJyb3c7Ijoi4oaeIiwidHdvaGVhZHJpZ2h0YXJyb3c7Ijoi4oagIiwiVWFjdXRlOyI6IsOaIixVYWN1dGU6IsOaIiwidWFjdXRlOyI6IsO6Iix1YWN1dGU6IsO6IiwiVWFycjsiOiLihp8iLCJ1QXJyOyI6IuKHkSIsInVhcnI7Ijoi4oaRIiwiVWFycm9jaXI7Ijoi4qWJIiwiVWJyY3k7Ijoi0I4iLCJ1YnJjeTsiOiLRniIsIlVicmV2ZTsiOiLFrCIsInVicmV2ZTsiOiLFrSIsIlVjaXJjOyI6IsObIixVY2lyYzoiw5siLCJ1Y2lyYzsiOiLDuyIsdWNpcmM6IsO7IiwiVWN5OyI6ItCjIiwidWN5OyI6ItGDIiwidWRhcnI7Ijoi4oeFIiwiVWRibGFjOyI6IsWwIiwidWRibGFjOyI6IsWxIiwidWRoYXI7Ijoi4qWuIiwidWZpc2h0OyI6IuKlviIsIlVmcjsiOiLwnZSYIiwidWZyOyI6IvCdlLIiLCJVZ3JhdmU7Ijoiw5kiLFVncmF2ZToiw5kiLCJ1Z3JhdmU7Ijoiw7kiLHVncmF2ZToiw7kiLCJ1SGFyOyI6IuKloyIsInVoYXJsOyI6IuKGvyIsInVoYXJyOyI6IuKGviIsInVoYmxrOyI6IuKWgCIsInVsY29ybjsiOiLijJwiLCJ1bGNvcm5lcjsiOiLijJwiLCJ1bGNyb3A7Ijoi4oyPIiwidWx0cmk7Ijoi4pe4IiwiVW1hY3I7IjoixaoiLCJ1bWFjcjsiOiLFqyIsInVtbDsiOiLCqCIsdW1sOiLCqCIsIlVuZGVyQmFyOyI6Il8iLCJVbmRlckJyYWNlOyI6IuKPnyIsIlVuZGVyQnJhY2tldDsiOiLijrUiLCJVbmRlclBhcmVudGhlc2lzOyI6IuKPnSIsIlVuaW9uOyI6IuKLgyIsIlVuaW9uUGx1czsiOiLiio4iLCJVb2dvbjsiOiLFsiIsInVvZ29uOyI6IsWzIiwiVW9wZjsiOiLwnZWMIiwidW9wZjsiOiLwnZWmIiwiVXBBcnJvdzsiOiLihpEiLCJVcGFycm93OyI6IuKHkSIsInVwYXJyb3c7Ijoi4oaRIiwiVXBBcnJvd0JhcjsiOiLipJIiLCJVcEFycm93RG93bkFycm93OyI6IuKHhSIsIlVwRG93bkFycm93OyI6IuKGlSIsIlVwZG93bmFycm93OyI6IuKHlSIsInVwZG93bmFycm93OyI6IuKGlSIsIlVwRXF1aWxpYnJpdW07Ijoi4qWuIiwidXBoYXJwb29ubGVmdDsiOiLihr8iLCJ1cGhhcnBvb25yaWdodDsiOiLihr4iLCJ1cGx1czsiOiLiio4iLCJVcHBlckxlZnRBcnJvdzsiOiLihpYiLCJVcHBlclJpZ2h0QXJyb3c7Ijoi4oaXIiwiVXBzaTsiOiLPkiIsInVwc2k7Ijoiz4UiLCJ1cHNpaDsiOiLPkiIsIlVwc2lsb247IjoizqUiLCJ1cHNpbG9uOyI6Is+FIiwiVXBUZWU7Ijoi4oqlIiwiVXBUZWVBcnJvdzsiOiLihqUiLCJ1cHVwYXJyb3dzOyI6IuKHiCIsInVyY29ybjsiOiLijJ0iLCJ1cmNvcm5lcjsiOiLijJ0iLCJ1cmNyb3A7Ijoi4oyOIiwiVXJpbmc7Ijoixa4iLCJ1cmluZzsiOiLFryIsInVydHJpOyI6IuKXuSIsIlVzY3I7Ijoi8J2SsCIsInVzY3I7Ijoi8J2TiiIsInV0ZG90OyI6IuKLsCIsIlV0aWxkZTsiOiLFqCIsInV0aWxkZTsiOiLFqSIsInV0cmk7Ijoi4pa1IiwidXRyaWY7Ijoi4pa0IiwidXVhcnI7Ijoi4oeIIiwiVXVtbDsiOiLDnCIsVXVtbDoiw5wiLCJ1dW1sOyI6IsO8Iix1dW1sOiLDvCIsInV3YW5nbGU7Ijoi4qanIiwidmFuZ3J0OyI6IuKmnCIsInZhcmVwc2lsb247Ijoiz7UiLCJ2YXJrYXBwYTsiOiLPsCIsInZhcm5vdGhpbmc7Ijoi4oiFIiwidmFycGhpOyI6Is+VIiwidmFycGk7Ijoiz5YiLCJ2YXJwcm9wdG87Ijoi4oidIiwidkFycjsiOiLih5UiLCJ2YXJyOyI6IuKGlSIsInZhcnJobzsiOiLPsSIsInZhcnNpZ21hOyI6Is+CIiwidmFyc3Vic2V0bmVxOyI6IuKKiu+4gCIsInZhcnN1YnNldG5lcXE7Ijoi4quL77iAIiwidmFyc3Vwc2V0bmVxOyI6IuKKi++4gCIsInZhcnN1cHNldG5lcXE7Ijoi4quM77iAIiwidmFydGhldGE7Ijoiz5EiLCJ2YXJ0cmlhbmdsZWxlZnQ7Ijoi4oqyIiwidmFydHJpYW5nbGVyaWdodDsiOiLiirMiLCJWYmFyOyI6IuKrqyIsInZCYXI7Ijoi4quoIiwidkJhcnY7Ijoi4qupIiwiVmN5OyI6ItCSIiwidmN5OyI6ItCyIiwiVkRhc2g7Ijoi4oqrIiwiVmRhc2g7Ijoi4oqpIiwidkRhc2g7Ijoi4oqoIiwidmRhc2g7Ijoi4oqiIiwiVmRhc2hsOyI6IuKrpiIsIlZlZTsiOiLii4EiLCJ2ZWU7Ijoi4oioIiwidmVlYmFyOyI6IuKKuyIsInZlZWVxOyI6IuKJmiIsInZlbGxpcDsiOiLii64iLCJWZXJiYXI7Ijoi4oCWIiwidmVyYmFyOyI6InwiLCJWZXJ0OyI6IuKAliIsInZlcnQ7IjoifCIsIlZlcnRpY2FsQmFyOyI6IuKIoyIsIlZlcnRpY2FsTGluZTsiOiJ8IiwiVmVydGljYWxTZXBhcmF0b3I7Ijoi4p2YIiwiVmVydGljYWxUaWxkZTsiOiLiiYAiLCJWZXJ5VGhpblNwYWNlOyI6IuKAiiIsIlZmcjsiOiLwnZSZIiwidmZyOyI6IvCdlLMiLCJ2bHRyaTsiOiLiirIiLCJ2bnN1YjsiOiLiioLig5IiLCJ2bnN1cDsiOiLiioPig5IiLCJWb3BmOyI6IvCdlY0iLCJ2b3BmOyI6IvCdlaciLCJ2cHJvcDsiOiLiiJ0iLCJ2cnRyaTsiOiLiirMiLCJWc2NyOyI6IvCdkrEiLCJ2c2NyOyI6IvCdk4siLCJ2c3VibkU7Ijoi4quL77iAIiwidnN1Ym5lOyI6IuKKiu+4gCIsInZzdXBuRTsiOiLiq4zvuIAiLCJ2c3VwbmU7Ijoi4oqL77iAIiwiVnZkYXNoOyI6IuKKqiIsInZ6aWd6YWc7Ijoi4qaaIiwiV2NpcmM7IjoixbQiLCJ3Y2lyYzsiOiLFtSIsIndlZGJhcjsiOiLiqZ8iLCJXZWRnZTsiOiLii4AiLCJ3ZWRnZTsiOiLiiKciLCJ3ZWRnZXE7Ijoi4omZIiwid2VpZXJwOyI6IuKEmCIsIldmcjsiOiLwnZSaIiwid2ZyOyI6IvCdlLQiLCJXb3BmOyI6IvCdlY4iLCJ3b3BmOyI6IvCdlagiLCJ3cDsiOiLihJgiLCJ3cjsiOiLiiYAiLCJ3cmVhdGg7Ijoi4omAIiwiV3NjcjsiOiLwnZKyIiwid3NjcjsiOiLwnZOMIiwieGNhcDsiOiLii4IiLCJ4Y2lyYzsiOiLil68iLCJ4Y3VwOyI6IuKLgyIsInhkdHJpOyI6IuKWvSIsIlhmcjsiOiLwnZSbIiwieGZyOyI6IvCdlLUiLCJ4aEFycjsiOiLin7oiLCJ4aGFycjsiOiLin7ciLCJYaTsiOiLOniIsInhpOyI6Is6+IiwieGxBcnI7Ijoi4p+4IiwieGxhcnI7Ijoi4p+1IiwieG1hcDsiOiLin7wiLCJ4bmlzOyI6IuKLuyIsInhvZG90OyI6IuKogCIsIlhvcGY7Ijoi8J2VjyIsInhvcGY7Ijoi8J2VqSIsInhvcGx1czsiOiLiqIEiLCJ4b3RpbWU7Ijoi4qiCIiwieHJBcnI7Ijoi4p+5IiwieHJhcnI7Ijoi4p+2IiwiWHNjcjsiOiLwnZKzIiwieHNjcjsiOiLwnZONIiwieHNxY3VwOyI6IuKohiIsInh1cGx1czsiOiLiqIQiLCJ4dXRyaTsiOiLilrMiLCJ4dmVlOyI6IuKLgSIsInh3ZWRnZTsiOiLii4AiLCJZYWN1dGU7Ijoiw50iLFlhY3V0ZToiw50iLCJ5YWN1dGU7Ijoiw70iLHlhY3V0ZToiw70iLCJZQWN5OyI6ItCvIiwieWFjeTsiOiLRjyIsIlljaXJjOyI6IsW2IiwieWNpcmM7IjoixbciLCJZY3k7Ijoi0KsiLCJ5Y3k7Ijoi0YsiLCJ5ZW47IjoiwqUiLHllbjoiwqUiLCJZZnI7Ijoi8J2UnCIsInlmcjsiOiLwnZS2IiwiWUljeTsiOiLQhyIsInlpY3k7Ijoi0ZciLCJZb3BmOyI6IvCdlZAiLCJ5b3BmOyI6IvCdlaoiLCJZc2NyOyI6IvCdkrQiLCJ5c2NyOyI6IvCdk44iLCJZVWN5OyI6ItCuIiwieXVjeTsiOiLRjiIsIll1bWw7IjoixbgiLCJ5dW1sOyI6IsO/Iix5dW1sOiLDvyIsIlphY3V0ZTsiOiLFuSIsInphY3V0ZTsiOiLFuiIsIlpjYXJvbjsiOiLFvSIsInpjYXJvbjsiOiLFviIsIlpjeTsiOiLQlyIsInpjeTsiOiLQtyIsIlpkb3Q7IjoixbsiLCJ6ZG90OyI6IsW8IiwiemVldHJmOyI6IuKEqCIsIlplcm9XaWR0aFNwYWNlOyI6IuKAiyIsIlpldGE7IjoizpYiLCJ6ZXRhOyI6Is62IiwiWmZyOyI6IuKEqCIsInpmcjsiOiLwnZS3IiwiWkhjeTsiOiLQliIsInpoY3k7Ijoi0LYiLCJ6aWdyYXJyOyI6IuKHnSIsIlpvcGY7Ijoi4oSkIiwiem9wZjsiOiLwnZWrIiwiWnNjcjsiOiLwnZK1IiwienNjcjsiOiLwnZOPIiwiendqOyI6IuKAjSIsInp3bmo7Ijoi4oCMIn07ZnVuY3Rpb24gbW8oZSx0KXtpZihlLmxlbmd0aDx0Lmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpZihlW25dIT09dFtuXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBmbyhlLHQpe2Zvcih2YXIgbj0iIjt0PjA7KTE9PSgxJnQpJiYobis9ZSksZSs9ZSx0Pj4+PTE7cmV0dXJuIG59dmFyIGdvPSJhIi5jaGFyQ29kZUF0KDApLGJvPSJ6Ii5jaGFyQ29kZUF0KDApLHdvPSJBIi5jaGFyQ29kZUF0KDApLF9vPSJaIi5jaGFyQ29kZUF0KDApLHZvPSIwIi5jaGFyQ29kZUF0KDApLHlvPSI5Ii5jaGFyQ29kZUF0KDApO2Z1bmN0aW9uIFRvKGUsdCl7dmFyIG49ZS5jaGFyQ29kZUF0KHQpO3JldHVybiBnbzw9biYmbjw9Ym98fHdvPD1uJiZuPD1fb3x8dm88PW4mJm48PXlvfWZ1bmN0aW9uIGtvKGUpe3JldHVybiB2b2lkIDAhPT1lfXZhciBTbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt2YXIgbj10aGlzO3RoaXMuaWQ9ZSx0aGlzLl90YWdzPVtdLHRoaXMuX3RhZ01hcD17fSx0aGlzLl92YWx1ZVNldE1hcD17fSx0aGlzLl90YWdzPXQudGFnc3x8W10sdGhpcy5fZ2xvYmFsQXR0cmlidXRlcz10Lmdsb2JhbEF0dHJpYnV0ZXN8fFtdLHRoaXMuX3RhZ3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bi5fdGFnTWFwW2UubmFtZS50b0xvd2VyQ2FzZSgpXT1lfSkpLHQudmFsdWVTZXRzJiZ0LnZhbHVlU2V0cy5mb3JFYWNoKChmdW5jdGlvbihlKXtuLl92YWx1ZVNldE1hcFtlLm5hbWVdPWUudmFsdWVzfSkpfXJldHVybiBlLnByb3RvdHlwZS5pc0FwcGxpY2FibGU9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuZ2V0SWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZH0sZS5wcm90b3R5cGUucHJvdmlkZVRhZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdGFnc30sZS5wcm90b3R5cGUucHJvdmlkZUF0dHJpYnV0ZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9W10sbj1mdW5jdGlvbihlKXt0LnB1c2goZSl9LHI9dGhpcy5fdGFnTWFwW2UudG9Mb3dlckNhc2UoKV07cmV0dXJuIHImJnIuYXR0cmlidXRlcy5mb3JFYWNoKG4pLHRoaXMuX2dsb2JhbEF0dHJpYnV0ZXMuZm9yRWFjaChuKSx0fSxlLnByb3RvdHlwZS5wcm92aWRlVmFsdWVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPVtdO3Q9dC50b0xvd2VyQ2FzZSgpO3ZhciBpPWZ1bmN0aW9uKGUpe2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5uYW1lLnRvTG93ZXJDYXNlKCk9PT10JiYoZS52YWx1ZXMmJmUudmFsdWVzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3IucHVzaChlKX0pKSxlLnZhbHVlU2V0JiZuLl92YWx1ZVNldE1hcFtlLnZhbHVlU2V0XSYmbi5fdmFsdWVTZXRNYXBbZS52YWx1ZVNldF0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7ci5wdXNoKGUpfSkpKX0pKX0sYT10aGlzLl90YWdNYXBbZS50b0xvd2VyQ2FzZSgpXTtyZXR1cm4gYSYmaShhLmF0dHJpYnV0ZXMpLGkodGhpcy5fZ2xvYmFsQXR0cmlidXRlcykscn0sZX0oKTtmdW5jdGlvbiBDbyhlLHQsbil7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciByPXtraW5kOm4/Im1hcmtkb3duIjoicGxhaW50ZXh0Iix2YWx1ZToiIn07aWYoZS5kZXNjcmlwdGlvbiYmITEhPT10LmRvY3VtZW50YXRpb24pe3ZhciBpPWZ1bmN0aW9uKGUpe2lmKGUpcmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP3traW5kOiJtYXJrZG93biIsdmFsdWU6ZX06e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTplLnZhbHVlfX0oZS5kZXNjcmlwdGlvbik7aSYmKHIudmFsdWUrPWkudmFsdWUpfWlmKGUucmVmZXJlbmNlcyYmZS5yZWZlcmVuY2VzLmxlbmd0aD4wJiYhMSE9PXQucmVmZXJlbmNlcyYmKHIudmFsdWUubGVuZ3RoJiYoci52YWx1ZSs9IlxuXG4iKSxyLnZhbHVlKz1uP2UucmVmZXJlbmNlcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiJbIitlLm5hbWUrIl0oIitlLnVybCsiKSJ9KSkuam9pbigiIHwgIik6ZS5yZWZlcmVuY2VzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZSsiOiAiK2UudXJsfSkpLmpvaW4oIlxuIikpLCIiIT09ci52YWx1ZSlyZXR1cm4gcn12YXIgeG89ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGksYSl7ZnVuY3Rpb24gbyhlKXt0cnl7bChyLm5leHQoZSkpfWNhdGNoKGUpe2EoZSl9fWZ1bmN0aW9uIHMoZSl7dHJ5e2woci50aHJvdyhlKSl9Y2F0Y2goZSl7YShlKX19ZnVuY3Rpb24gbChlKXt2YXIgdDtlLmRvbmU/aShlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4obyxzKX1sKChyPXIuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9LExvPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLGEsbz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZpWzBdKXRocm93IGlbMV07cmV0dXJuIGlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gYT17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihhW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGE7ZnVuY3Rpb24gcyhhKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIGZ1bmN0aW9uKGEpe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7bzspdHJ5e2lmKG49MSxyJiYoaT0yJmFbMF0/ci5yZXR1cm46YVswXT9yLnRocm93fHwoKGk9ci5yZXR1cm4pJiZpLmNhbGwociksMCk6ci5uZXh0KSYmIShpPWkuY2FsbChyLGFbMV0pKS5kb25lKXJldHVybiBpO3N3aXRjaChyPTAsaSYmKGE9WzImYVswXSxpLnZhbHVlXSksYVswXSl7Y2FzZSAwOmNhc2UgMTppPWE7YnJlYWs7Y2FzZSA0OnJldHVybiBvLmxhYmVsKysse3ZhbHVlOmFbMV0sZG9uZTohMX07Y2FzZSA1Om8ubGFiZWwrKyxyPWFbMV0sYT1bMF07Y29udGludWU7Y2FzZSA3OmE9by5vcHMucG9wKCksby50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShpPW8udHJ5cywoaT1pLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdKXx8NiE9PWFbMF0mJjIhPT1hWzBdKSl7bz0wO2NvbnRpbnVlfWlmKDM9PT1hWzBdJiYoIWl8fGFbMV0+aVswXSYmYVsxXTxpWzNdKSl7by5sYWJlbD1hWzFdO2JyZWFrfWlmKDY9PT1hWzBdJiZvLmxhYmVsPGlbMV0pe28ubGFiZWw9aVsxXSxpPWE7YnJlYWt9aWYoaSYmby5sYWJlbDxpWzJdKXtvLmxhYmVsPWlbMl0sby5vcHMucHVzaChhKTticmVha31pWzJdJiZvLm9wcy5wb3AoKSxvLnRyeXMucG9wKCk7Y29udGludWV9YT10LmNhbGwoZSxvKX1jYXRjaChlKXthPVs2LGVdLHI9MH1maW5hbGx5e249aT0wfWlmKDUmYVswXSl0aHJvdyBhWzFdO3JldHVybnt2YWx1ZTphWzBdP2FbMV06dm9pZCAwLGRvbmU6ITB9fShbYSxzXSl9fX0sRW89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMucmVhZERpcmVjdG9yeT1lLHRoaXMuYXRyaWJ1dGVDb21wbGV0aW9ucz1bXX1yZXR1cm4gZS5wcm90b3R5cGUub25IdG1sQXR0cmlidXRlVmFsdWU9ZnVuY3Rpb24oZSl7KGZ1bmN0aW9uKGUsdCl7aWYoInNyYyI9PT10fHwiaHJlZiI9PT10KXJldHVybiEwO3ZhciBuPU5vW2VdO2lmKG4pcmV0dXJuInN0cmluZyI9PXR5cGVvZiBuP249PT10Oi0xIT09bi5pbmRleE9mKHQpO3JldHVybiExfSkoZS50YWcsZS5hdHRyaWJ1dGUpJiZ0aGlzLmF0cmlidXRlQ29tcGxldGlvbnMucHVzaChlKX0sZS5wcm90b3R5cGUuY29tcHV0ZUNvbXBsZXRpb25zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHhvKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgbixyLGksYSxvLHMsbCxjLGgsZDtyZXR1cm4gTG8odGhpcywoZnVuY3Rpb24odSl7c3dpdGNoKHUubGFiZWwpe2Nhc2UgMDpuPXtpdGVtczpbXSxpc0luY29tcGxldGU6ITF9LHI9MCxpPXRoaXMuYXRyaWJ1dGVDb21wbGV0aW9ucyx1LmxhYmVsPTE7Y2FzZSAxOnJldHVybiByPGkubGVuZ3RoPyhhPWlbcl0sZnVuY3Rpb24oZSl7aWYobW8oZSwiaHR0cCIpfHxtbyhlLCJodHRwcyIpfHxtbyhlLCIvLyIpKXJldHVybiExO3JldHVybiEwfShvPWZ1bmN0aW9uKGUpe3JldHVybiBtbyhlLCInIil8fG1vKGUsJyInKT9lLnNsaWNlKDEsLTEpOmV9KGUuZ2V0VGV4dChhLnJhbmdlKSkpPyIuIiE9PW8mJiIuLiIhPT1vP1szLDJdOihuLmlzSW5jb21wbGV0ZT0hMCxbMyw0XSk6WzMsNF0pOlszLDVdO2Nhc2UgMjpyZXR1cm4gcz1mdW5jdGlvbihlLHQsbil7dmFyIHIsaT1lLmxhc3RJbmRleE9mKCIvIik7aWYoLTE9PT1pKXI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVJvKGUuc3RhcnQsdCksaT1SbyhlLmVuZCxuKTtyZXR1cm4gV3IuY3JlYXRlKHIsaSl9KG4sMSwtMSk7ZWxzZXt2YXIgYT10LnNsaWNlKGkrMSksbz1SbyhuLmVuZCwtMS1hLmxlbmd0aCkscz1hLmluZGV4T2YoIiAiKSxsPXZvaWQgMDtsPS0xIT09cz9SbyhvLHMpOlJvKG4uZW5kLC0xKSxyPVdyLmNyZWF0ZShvLGwpfXJldHVybiByfShhLnZhbHVlLG8sYS5yYW5nZSksWzQsdGhpcy5wcm92aWRlUGF0aFN1Z2dlc3Rpb25zKGEudmFsdWUscyxlLHQpXTtjYXNlIDM6Zm9yKGw9dS5zZW50KCksYz0wLGg9bDtjPGgubGVuZ3RoO2MrKylkPWhbY10sbi5pdGVtcy5wdXNoKGQpO3UubGFiZWw9NDtjYXNlIDQ6cmV0dXJuIHIrKyxbMywxXTtjYXNlIDU6cmV0dXJuWzIsbl19fSkpfSkpfSxlLnByb3RvdHlwZS5wcm92aWRlUGF0aFN1Z2dlc3Rpb25zPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB4byh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIGksYSxvLHMsbCxjLGgsZCx1O3JldHVybiBMbyh0aGlzLChmdW5jdGlvbihwKXtzd2l0Y2gocC5sYWJlbCl7Y2FzZSAwOmlmKGk9ZS5zdWJzdHJpbmcoMCxlLmxhc3RJbmRleE9mKCIvIikrMSksIShhPXIucmVzb2x2ZVJlZmVyZW5jZShpfHwiLiIsbi51cmkpKSlyZXR1cm5bMyw0XTtwLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBwLnRyeXMucHVzaChbMSwzLCw0XSksbz1bXSxbNCx0aGlzLnJlYWREaXJlY3RvcnkoYSldO2Nhc2UgMjpmb3Iocz1wLnNlbnQoKSxsPTAsYz1zO2w8Yy5sZW5ndGg7bCsrKWg9Y1tsXSxkPWhbMF0sdT1oWzFdLGQuY2hhckNvZGVBdCgwKSE9PUFvJiZvLnB1c2goTW8oZCx1PT09emEuRGlyZWN0b3J5LHQpKTtyZXR1cm5bMixvXTtjYXNlIDM6cmV0dXJuIHAuc2VudCgpLFszLDRdO2Nhc2UgNDpyZXR1cm5bMixbXV19fSkpfSkpfSxlfSgpLEFvPSIuIi5jaGFyQ29kZUF0KDApO2Z1bmN0aW9uIE1vKGUsdCxuKXtyZXR1cm4gdD97bGFiZWw6ZSs9Ii8iLGtpbmQ6V2kuRm9sZGVyLHRleHRFZGl0OmRpLnJlcGxhY2UobixlKSxjb21tYW5kOnt0aXRsZToiU3VnZ2VzdCIsY29tbWFuZDoiZWRpdG9yLmFjdGlvbi50cmlnZ2VyU3VnZ2VzdCJ9fTp7bGFiZWw6ZSxraW5kOldpLkZpbGUsdGV4dEVkaXQ6ZGkucmVwbGFjZShuLGUpfX1mdW5jdGlvbiBSbyhlLHQpe3JldHVybiBEci5jcmVhdGUoZS5saW5lLGUuY2hhcmFjdGVyK3QpfXZhciBObz17YToiaHJlZiIsYXJlYToiaHJlZiIsYm9keToiYmFja2dyb3VuZCIsZGVsOiJjaXRlIixmb3JtOiJhY3Rpb24iLGZyYW1lOlsic3JjIiwibG9uZ2Rlc2MiXSxpbWc6WyJzcmMiLCJsb25nZGVzYyJdLGluczoiY2l0ZSIsbGluazoiaHJlZiIsb2JqZWN0OiJkYXRhIixxOiJjaXRlIixzY3JpcHQ6InNyYyIsYXVkaW86InNyYyIsYnV0dG9uOiJmb3JtYWN0aW9uIixjb21tYW5kOiJpY29uIixlbWJlZDoic3JjIixodG1sOiJtYW5pZmVzdCIsaW5wdXQ6WyJzcmMiLCJmb3JtYWN0aW9uIl0sc291cmNlOiJzcmMiLHRyYWNrOiJzcmMiLHZpZGVvOlsic3JjIiwicG9zdGVyIl19LElvPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihpLGEpe2Z1bmN0aW9uIG8oZSl7dHJ5e2woci5uZXh0KGUpKX1jYXRjaChlKXthKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXtsKHIudGhyb3coZSkpfWNhdGNoKGUpe2EoZSl9fWZ1bmN0aW9uIGwoZSl7dmFyIHQ7ZS5kb25lP2koZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKG8scyl9bCgocj1yLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfSxVbz1mdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxhLG89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmaVswXSl0aHJvdyBpWzFdO3JldHVybiBpWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGE9e25leHQ6cygwKSx0aHJvdzpzKDEpLHJldHVybjpzKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoYVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxhO2Z1bmN0aW9uIHMoYSl7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBmdW5jdGlvbihhKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO287KXRyeXtpZihuPTEsciYmKGk9MiZhWzBdP3IucmV0dXJuOmFbMF0/ci50aHJvd3x8KChpPXIucmV0dXJuKSYmaS5jYWxsKHIpLDApOnIubmV4dCkmJiEoaT1pLmNhbGwocixhWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gocj0wLGkmJihhPVsyJmFbMF0saS52YWx1ZV0pLGFbMF0pe2Nhc2UgMDpjYXNlIDE6aT1hO2JyZWFrO2Nhc2UgNDpyZXR1cm4gby5sYWJlbCsrLHt2YWx1ZTphWzFdLGRvbmU6ITF9O2Nhc2UgNTpvLmxhYmVsKysscj1hWzFdLGE9WzBdO2NvbnRpbnVlO2Nhc2UgNzphPW8ub3BzLnBvcCgpLG8udHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoaT1vLnRyeXMsKGk9aS5sZW5ndGg+MCYmaVtpLmxlbmd0aC0xXSl8fDYhPT1hWzBdJiYyIT09YVswXSkpe289MDtjb250aW51ZX1pZigzPT09YVswXSYmKCFpfHxhWzFdPmlbMF0mJmFbMV08aVszXSkpe28ubGFiZWw9YVsxXTticmVha31pZig2PT09YVswXSYmby5sYWJlbDxpWzFdKXtvLmxhYmVsPWlbMV0saT1hO2JyZWFrfWlmKGkmJm8ubGFiZWw8aVsyXSl7by5sYWJlbD1pWzJdLG8ub3BzLnB1c2goYSk7YnJlYWt9aVsyXSYmby5vcHMucG9wKCksby50cnlzLnBvcCgpO2NvbnRpbnVlfWE9dC5jYWxsKGUsbyl9Y2F0Y2goZSl7YT1bNixlXSxyPTB9ZmluYWxseXtuPWk9MH1pZig1JmFbMF0pdGhyb3cgYVsxXTtyZXR1cm57dmFsdWU6YVswXT9hWzFdOnZvaWQgMCxkb25lOiEwfX0oW2Esc10pfX19LEhvPVJyKCksRG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5sc09wdGlvbnM9ZSx0aGlzLmRhdGFNYW5hZ2VyPXQsdGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzPVtdfXJldHVybiBlLnByb3RvdHlwZS5zZXRDb21wbGV0aW9uUGFydGljaXBhbnRzPWZ1bmN0aW9uKGUpe3RoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cz1lfHxbXX0sZS5wcm90b3R5cGUuZG9Db21wbGV0ZTI9ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4gSW8odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBhLG8scyxsO3JldHVybiBVbyh0aGlzLChmdW5jdGlvbihjKXtzd2l0Y2goYy5sYWJlbCl7Y2FzZSAwOmlmKCF0aGlzLmxzT3B0aW9ucy5maWxlU3lzdGVtUHJvdmlkZXJ8fCF0aGlzLmxzT3B0aW9ucy5maWxlU3lzdGVtUHJvdmlkZXIucmVhZERpcmVjdG9yeSlyZXR1cm5bMix0aGlzLmRvQ29tcGxldGUoZSx0LG4saSldO2E9bmV3IEVvKHRoaXMubHNPcHRpb25zLmZpbGVTeXN0ZW1Qcm92aWRlci5yZWFkRGlyZWN0b3J5KSxvPXRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cyx0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9W2FdLmNvbmNhdChvKSxzPXRoaXMuZG9Db21wbGV0ZShlLHQsbixpKSxjLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBjLnRyeXMucHVzaChbMSwsMyw0XSksWzQsYS5jb21wdXRlQ29tcGxldGlvbnMoZSxyKV07Y2FzZSAyOnJldHVybiBsPWMuc2VudCgpLFsyLHtpc0luY29tcGxldGU6cy5pc0luY29tcGxldGV8fGwuaXNJbmNvbXBsZXRlLGl0ZW1zOmwuaXRlbXMuY29uY2F0KHMuaXRlbXMpfV07Y2FzZSAzOnJldHVybiB0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9byxbN107Y2FzZSA0OnJldHVyblsyXX19KSl9KSl9LGUucHJvdG90eXBlLmRvQ29tcGxldGU9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dGhpcy5fZG9Db21wbGV0ZShlLHQsbixyKTtyZXR1cm4gdGhpcy5jb252ZXJ0Q29tcGxldGlvbkxpc3QoaSl9LGUucHJvdG90eXBlLl9kb0NvbXBsZXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXtpc0luY29tcGxldGU6ITEsaXRlbXM6W119LGE9dGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzLG89dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhUHJvdmlkZXJzKCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pc0FwcGxpY2FibGUoZS5sYW5ndWFnZUlkKSYmKCFyfHwhMSE9PXJbdC5nZXRJZCgpXSl9KSkscz10aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSxsPWUuZ2V0VGV4dCgpLGM9ZS5vZmZzZXRBdCh0KSxoPW4uZmluZE5vZGVCZWZvcmUoYyk7aWYoIWgpcmV0dXJuIGk7dmFyIGQsdT1vbyhsLGguc3RhcnQpLHA9IiI7ZnVuY3Rpb24gbSh0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj1jKSx0PmMmJih0PWMpLHtzdGFydDplLnBvc2l0aW9uQXQodCksZW5kOmUucG9zaXRpb25BdChuKX19ZnVuY3Rpb24gZihlLHQpe3ZhciBuPW0oZSx0KTtyZXR1cm4gby5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnByb3ZpZGVUYWdzKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aS5pdGVtcy5wdXNoKHtsYWJlbDplLm5hbWUsa2luZDpXaS5Qcm9wZXJ0eSxkb2N1bWVudGF0aW9uOkNvKGUsdm9pZCAwLHMpLHRleHRFZGl0OmRpLnJlcGxhY2UobixlLm5hbWUpLGluc2VydFRleHRGb3JtYXQ6UGkuUGxhaW5UZXh0fSl9KSl9KSksaX1mdW5jdGlvbiBnKGUpe2Zvcih2YXIgdD1lO3Q+MDspe3ZhciBuPWwuY2hhckF0KHQtMSk7aWYoIlxuXHIiLmluZGV4T2Yobik+PTApcmV0dXJuIGwuc3Vic3RyaW5nKHQsZSk7aWYoIXpvKG4pKXJldHVybiBudWxsO3QtLX1yZXR1cm4gbC5zdWJzdHJpbmcoMCxlKX1mdW5jdGlvbiBiKGUsdCxuKXt2b2lkIDA9PT1uJiYobj1jKTt2YXIgcj1tKGUsbiksYT1XbyhsLG4sVWEuV2l0aGluRW5kVGFnLE5hLkVuZFRhZ0Nsb3NlKT8iIjoiPiIsZD1oO2Zvcih0JiYoZD1kLnBhcmVudCk7ZDspe3ZhciB1PWQudGFnO2lmKHUmJighZC5jbG9zZWR8fGQuZW5kVGFnU3RhcnQmJmQuZW5kVGFnU3RhcnQ+Yykpe3ZhciBwPXtsYWJlbDoiLyIrdSxraW5kOldpLlByb3BlcnR5LGZpbHRlclRleHQ6Ii8iK3UsdGV4dEVkaXQ6ZGkucmVwbGFjZShyLCIvIit1K2EpLGluc2VydFRleHRGb3JtYXQ6UGkuUGxhaW5UZXh0fSxmPWcoZC5zdGFydCksYj1nKGUtMSk7aWYobnVsbCE9PWYmJm51bGwhPT1iJiZmIT09Yil7dmFyIHc9ZisiPC8iK3UrYTtwLnRleHRFZGl0PWRpLnJlcGxhY2UobShlLTEtYi5sZW5ndGgpLHcpLHAuZmlsdGVyVGV4dD1iKyI8LyIrdX1yZXR1cm4gaS5pdGVtcy5wdXNoKHApLGl9ZD1kLnBhcmVudH1yZXR1cm4gdHx8by5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnByb3ZpZGVUYWdzKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aS5pdGVtcy5wdXNoKHtsYWJlbDoiLyIrZS5uYW1lLGtpbmQ6V2kuUHJvcGVydHksZG9jdW1lbnRhdGlvbjpDbyhlLHZvaWQgMCxzKSxmaWx0ZXJUZXh0OiIvIitlLm5hbWUrYSx0ZXh0RWRpdDpkaS5yZXBsYWNlKHIsIi8iK2UubmFtZSthKSxpbnNlcnRUZXh0Rm9ybWF0OlBpLlBsYWluVGV4dH0pfSkpfSkpLGl9ZnVuY3Rpb24gdyh0LG4pe2lmKHImJnIuaGlkZUF1dG9Db21wbGV0ZVByb3Bvc2FscylyZXR1cm4gaTtpZighY28obikpe3ZhciBhPWUucG9zaXRpb25BdCh0KTtpLml0ZW1zLnB1c2goe2xhYmVsOiI8LyIrbisiPiIsa2luZDpXaS5Qcm9wZXJ0eSxmaWx0ZXJUZXh0OiI8LyIrbisiPiIsdGV4dEVkaXQ6ZGkuaW5zZXJ0KGEsIiQwPC8iK24rIj4iKSxpbnNlcnRUZXh0Rm9ybWF0OlBpLlNuaXBwZXR9KX1yZXR1cm4gaX1mdW5jdGlvbiBfKGUsdCl7cmV0dXJuIGYoZSx0KSxiKGUsITAsdCksaX1mdW5jdGlvbiB2KGUsdCl7dmFyIGE7dm9pZCAwPT09dCYmKHQ9Yyk7Zm9yKHZhciBkPWM7ZDx0JiYiPCIhPT1sW2RdOylkKys7dmFyIHU9bC5zdWJzdHJpbmcoZSx0KSxmPW0oZSxkKSxnPSIiO2lmKCFXbyhsLHQsVWEuQWZ0ZXJBdHRyaWJ1dGVOYW1lLE5hLkRlbGltaXRlckFzc2lnbikpe3ZhciBiPW51bGwhPT0oYT1udWxsPT1yP3ZvaWQgMDpyLmF0dHJpYnV0ZURlZmF1bHRWYWx1ZSkmJnZvaWQgMCE9PWE/YToiZG91YmxlcXVvdGVzIjtnPSJlbXB0eSI9PT1iPyI9JDEiOiJzaW5nbGVxdW90ZXMiPT09Yj8iPSckMSciOic9IiQxIid9dmFyIHcsXz0odz1PYmplY3QuY3JlYXRlKG51bGwpLGguYXR0cmlidXRlTmFtZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7d1tlXT0hMH0pKSx3KTtyZXR1cm4gX1t1XT0hMSxvLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UucHJvdmlkZUF0dHJpYnV0ZXMocCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYoIV9bZS5uYW1lXSl7X1tlLm5hbWVdPSEwO3ZhciB0LG49ZS5uYW1lOyJ2IiE9PWUudmFsdWVTZXQmJmcubGVuZ3RoJiYobis9ZywoZS52YWx1ZVNldHx8InN0eWxlIj09PWUubmFtZSkmJih0PXt0aXRsZToiU3VnZ2VzdCIsY29tbWFuZDoiZWRpdG9yLmFjdGlvbi50cmlnZ2VyU3VnZ2VzdCJ9KSksaS5pdGVtcy5wdXNoKHtsYWJlbDplLm5hbWUsa2luZDoiaGFuZGxlciI9PT1lLnZhbHVlU2V0P1dpLkZ1bmN0aW9uOldpLlZhbHVlLGRvY3VtZW50YXRpb246Q28oZSx2b2lkIDAscyksdGV4dEVkaXQ6ZGkucmVwbGFjZShmLG4pLGluc2VydFRleHRGb3JtYXQ6UGkuU25pcHBldCxjb21tYW5kOnR9KX19KSl9KSksZnVuY3Rpb24oZSx0KXt2YXIgcj0iZGF0YS0iLGE9e307ZnVuY3Rpb24gbyhlKXtlLmF0dHJpYnV0ZU5hbWVzLmZvckVhY2goKGZ1bmN0aW9uKGUpeyFtbyhlLHIpfHxhW2VdfHx0W2VdfHwoYVtlXT1lKyc9IiQxIicpfSkpLGUuY2hpbGRyZW4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSl9KSl9YVtyXT1yKyckMT0iJDIiJyxuJiZuLnJvb3RzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBvKGUpfSkpO09iamVjdC5rZXlzKGEpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBpLml0ZW1zLnB1c2goe2xhYmVsOnQsa2luZDpXaS5WYWx1ZSx0ZXh0RWRpdDpkaS5yZXBsYWNlKGUsYVt0XSksaW5zZXJ0VGV4dEZvcm1hdDpQaS5TbmlwcGV0fSl9KSl9KGYsXyksaX1mdW5jdGlvbiB5KG4scil7dmFyIGgsdSxmLGc7aWYodm9pZCAwPT09ciYmKHI9YyksYz5uJiZjPD1yJiYoZz1sW25dLC9eWyInXSokLy50ZXN0KGcpKSl7dmFyIGI9bisxLHc9cjtyPm4mJmxbci0xXT09PWxbbl0mJnctLTt2YXIgXz1mdW5jdGlvbihlLHQsbil7Zm9yKDt0Pm4mJiF6byhlW3QtMV0pOyl0LS07cmV0dXJuIHR9KGwsYyxiKSx2PWZ1bmN0aW9uKGUsdCxuKXtmb3IoO3Q8biYmIXpvKGVbdF0pOyl0Kys7cmV0dXJuIHR9KGwsYyx3KTtoPW0oXyx2KSxmPWM+PWImJmM8PXc/bC5zdWJzdHJpbmcoYixjKToiIix1PSExfWVsc2UgaD1tKG4sciksZj1sLnN1YnN0cmluZyhuLGMpLHU9ITA7aWYoYS5sZW5ndGg+MClmb3IodmFyIHk9cC50b0xvd2VyQ2FzZSgpLFQ9ZC50b0xvd2VyQ2FzZSgpLGs9bShuLHIpLEM9MCx4PWE7Qzx4Lmxlbmd0aDtDKyspe3ZhciBMPXhbQ107TC5vbkh0bWxBdHRyaWJ1dGVWYWx1ZSYmTC5vbkh0bWxBdHRyaWJ1dGVWYWx1ZSh7ZG9jdW1lbnQ6ZSxwb3NpdGlvbjp0LHRhZzp5LGF0dHJpYnV0ZTpULHZhbHVlOmYscmFuZ2U6a30pfXJldHVybiBvLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UucHJvdmlkZVZhbHVlcyhwLGQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PXU/JyInK2UubmFtZSsnIic6ZS5uYW1lO2kuaXRlbXMucHVzaCh7bGFiZWw6ZS5uYW1lLGZpbHRlclRleHQ6dCxraW5kOldpLlVuaXQsZG9jdW1lbnRhdGlvbjpDbyhlLHZvaWQgMCxzKSx0ZXh0RWRpdDpkaS5yZXBsYWNlKGgsdCksaW5zZXJ0VGV4dEZvcm1hdDpQaS5QbGFpblRleHR9KX0pKX0pKSxTKCksaX1mdW5jdGlvbiBUKGUpe3JldHVybiBjPT09dS5nZXRUb2tlbkVuZCgpJiYoeD11LnNjYW4oKSk9PT1lJiZ1LmdldFRva2VuT2Zmc2V0KCk9PT1jP3UuZ2V0VG9rZW5FbmQoKTpjfWZ1bmN0aW9uIGsoKXtmb3IodmFyIG49MCxyPWE7bjxyLmxlbmd0aDtuKyspe3ZhciBpPXJbbl07aS5vbkh0bWxDb250ZW50JiZpLm9uSHRtbENvbnRlbnQoe2RvY3VtZW50OmUscG9zaXRpb246dH0pfXJldHVybiBTKCl9ZnVuY3Rpb24gUygpe2Zvcih2YXIgZSxuLHIsYT1jLTEsbz10LmNoYXJhY3RlcjthPj0wJiZUbyhsLGEpOylhLS0sby0tO2lmKGE+PTAmJiImIj09PWxbYV0pe3ZhciBzPVdyLmNyZWF0ZShEci5jcmVhdGUodC5saW5lLG8tMSksdCk7Zm9yKHZhciBoIGluIHBvKWlmKG49IjsiLHI9dm9pZCAwLChyPShlPWgpLmxlbmd0aC1uLmxlbmd0aCk+MD9lLmxhc3RJbmRleE9mKG4pPT09cjowPT09ciYmZT09PW4pe3ZhciBkPSImIitoO2kuaXRlbXMucHVzaCh7bGFiZWw6ZCxraW5kOldpLktleXdvcmQsZG9jdW1lbnRhdGlvbjpIbygiZW50aXR5LnByb3Bvc2UiLCJDaGFyYWN0ZXIgZW50aXR5IHJlcHJlc2VudGluZyAnIitwb1toXSsiJyIpLHRleHRFZGl0OmRpLnJlcGxhY2UocyxkKSxpbnNlcnRUZXh0Rm9ybWF0OlBpLlBsYWluVGV4dH0pfX1yZXR1cm4gaX1mb3IodmFyIEMseD11LnNjYW4oKTt4IT09TmEuRU9TJiZ1LmdldFRva2VuT2Zmc2V0KCk8PWM7KXtzd2l0Y2goeCl7Y2FzZSBOYS5TdGFydFRhZ09wZW46aWYodS5nZXRUb2tlbkVuZCgpPT09Yyl7dmFyIEw9VChOYS5TdGFydFRhZyk7cmV0dXJuIDA9PT10LmxpbmUmJihDPXZvaWQgMCxDPW0oYyxMKSxpLml0ZW1zLnB1c2goe2xhYmVsOiIhRE9DVFlQRSIsa2luZDpXaS5Qcm9wZXJ0eSxkb2N1bWVudGF0aW9uOiJBIHByZWFtYmxlIGZvciBhbiBIVE1MIGRvY3VtZW50LiIsdGV4dEVkaXQ6ZGkucmVwbGFjZShDLCIhRE9DVFlQRSBodG1sPiIpLGluc2VydFRleHRGb3JtYXQ6UGkuUGxhaW5UZXh0fSkpLF8oYyxMKX1icmVhaztjYXNlIE5hLlN0YXJ0VGFnOmlmKHUuZ2V0VG9rZW5PZmZzZXQoKTw9YyYmYzw9dS5nZXRUb2tlbkVuZCgpKXJldHVybiBmKHUuZ2V0VG9rZW5PZmZzZXQoKSx1LmdldFRva2VuRW5kKCkpO3A9dS5nZXRUb2tlblRleHQoKTticmVhaztjYXNlIE5hLkF0dHJpYnV0ZU5hbWU6aWYodS5nZXRUb2tlbk9mZnNldCgpPD1jJiZjPD11LmdldFRva2VuRW5kKCkpcmV0dXJuIHYodS5nZXRUb2tlbk9mZnNldCgpLHUuZ2V0VG9rZW5FbmQoKSk7ZD11LmdldFRva2VuVGV4dCgpO2JyZWFrO2Nhc2UgTmEuRGVsaW1pdGVyQXNzaWduOmlmKHUuZ2V0VG9rZW5FbmQoKT09PWMpe0w9VChOYS5BdHRyaWJ1dGVWYWx1ZSk7cmV0dXJuIHkoYyxMKX1icmVhaztjYXNlIE5hLkF0dHJpYnV0ZVZhbHVlOmlmKHUuZ2V0VG9rZW5PZmZzZXQoKTw9YyYmYzw9dS5nZXRUb2tlbkVuZCgpKXJldHVybiB5KHUuZ2V0VG9rZW5PZmZzZXQoKSx1LmdldFRva2VuRW5kKCkpO2JyZWFrO2Nhc2UgTmEuV2hpdGVzcGFjZTppZihjPD11LmdldFRva2VuRW5kKCkpc3dpdGNoKHUuZ2V0U2Nhbm5lclN0YXRlKCkpe2Nhc2UgVWEuQWZ0ZXJPcGVuaW5nU3RhcnRUYWc6cmV0dXJuIF8odS5nZXRUb2tlbk9mZnNldCgpLFQoTmEuU3RhcnRUYWcpKTtjYXNlIFVhLldpdGhpblRhZzpjYXNlIFVhLkFmdGVyQXR0cmlidXRlTmFtZTpyZXR1cm4gdih1LmdldFRva2VuRW5kKCkpO2Nhc2UgVWEuQmVmb3JlQXR0cmlidXRlVmFsdWU6cmV0dXJuIHkodS5nZXRUb2tlbkVuZCgpKTtjYXNlIFVhLkFmdGVyT3BlbmluZ0VuZFRhZzpyZXR1cm4gYih1LmdldFRva2VuT2Zmc2V0KCktMSwhMSk7Y2FzZSBVYS5XaXRoaW5Db250ZW50OnJldHVybiBrKCl9YnJlYWs7Y2FzZSBOYS5FbmRUYWdPcGVuOmlmKGM8PXUuZ2V0VG9rZW5FbmQoKSlyZXR1cm4gYih1LmdldFRva2VuT2Zmc2V0KCkrMSwhMSxUKE5hLkVuZFRhZykpO2JyZWFrO2Nhc2UgTmEuRW5kVGFnOmlmKGM8PXUuZ2V0VG9rZW5FbmQoKSlmb3IodmFyIEU9dS5nZXRUb2tlbk9mZnNldCgpLTE7RT49MDspe3ZhciBBPWwuY2hhckF0KEUpO2lmKCIvIj09PUEpcmV0dXJuIGIoRSwhMSx1LmdldFRva2VuRW5kKCkpO2lmKCF6byhBKSlicmVhaztFLS19YnJlYWs7Y2FzZSBOYS5TdGFydFRhZ0Nsb3NlOmlmKGM8PXUuZ2V0VG9rZW5FbmQoKSYmcClyZXR1cm4gdyh1LmdldFRva2VuRW5kKCkscCk7YnJlYWs7Y2FzZSBOYS5Db250ZW50OmlmKGM8PXUuZ2V0VG9rZW5FbmQoKSlyZXR1cm4gaygpO2JyZWFrO2RlZmF1bHQ6aWYoYzw9dS5nZXRUb2tlbkVuZCgpKXJldHVybiBpfXg9dS5zY2FuKCl9cmV0dXJuIGl9LGUucHJvdG90eXBlLmRvUXVvdGVDb21wbGV0ZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxhPWUub2Zmc2V0QXQodCk7aWYoYTw9MClyZXR1cm4gbnVsbDt2YXIgbz1udWxsIT09KGk9bnVsbD09cj92b2lkIDA6ci5hdHRyaWJ1dGVEZWZhdWx0VmFsdWUpJiZ2b2lkIDAhPT1pP2k6ImRvdWJsZXF1b3RlcyI7aWYoImVtcHR5Ij09PW8pcmV0dXJuIG51bGw7aWYoIj0iIT09ZS5nZXRUZXh0KCkuY2hhckF0KGEtMSkpcmV0dXJuIG51bGw7dmFyIHM9ImRvdWJsZXF1b3RlcyI9PT1vPyciJDEiJzoiJyQxJyIsbD1uLmZpbmROb2RlQmVmb3JlKGEpO2lmKGwmJmwuYXR0cmlidXRlcyYmbC5zdGFydDxhJiYoIWwuZW5kVGFnU3RhcnR8fGwuZW5kVGFnU3RhcnQ+YSkpZm9yKHZhciBjPW9vKGUuZ2V0VGV4dCgpLGwuc3RhcnQpLGg9Yy5zY2FuKCk7aCE9PU5hLkVPUyYmYy5nZXRUb2tlbkVuZCgpPD1hOyl7aWYoaD09PU5hLkF0dHJpYnV0ZU5hbWUmJmMuZ2V0VG9rZW5FbmQoKT09PWEtMSlyZXR1cm4oaD1jLnNjYW4oKSkhPT1OYS5EZWxpbWl0ZXJBc3NpZ258fChoPWMuc2NhbigpKT09PU5hLlVua25vd258fGg9PT1OYS5BdHRyaWJ1dGVWYWx1ZT9udWxsOnM7aD1jLnNjYW4oKX1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuZG9UYWdDb21wbGV0ZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5vZmZzZXRBdCh0KTtpZihyPD0wKXJldHVybiBudWxsO3ZhciBpPWUuZ2V0VGV4dCgpLmNoYXJBdChyLTEpO2lmKCI+Ij09PWkpe2lmKChvPW4uZmluZE5vZGVCZWZvcmUocikpJiZvLnRhZyYmIWNvKG8udGFnKSYmby5zdGFydDxyJiYoIW8uZW5kVGFnU3RhcnR8fG8uZW5kVGFnU3RhcnQ+cikpZm9yKHZhciBhPShzPW9vKGUuZ2V0VGV4dCgpLG8uc3RhcnQpKS5zY2FuKCk7YSE9PU5hLkVPUyYmcy5nZXRUb2tlbkVuZCgpPD1yOyl7aWYoYT09PU5hLlN0YXJ0VGFnQ2xvc2UmJnMuZ2V0VG9rZW5FbmQoKT09PXIpcmV0dXJuIiQwPC8iK28udGFnKyI+IjthPXMuc2NhbigpfX1lbHNlIGlmKCIvIj09PWkpe2Zvcih2YXIgbz1uLmZpbmROb2RlQmVmb3JlKHIpO28mJm8uY2xvc2VkJiYhKG8uZW5kVGFnU3RhcnQmJm8uZW5kVGFnU3RhcnQ+cik7KW89by5wYXJlbnQ7aWYobyYmby50YWcpe3ZhciBzO2ZvcihhPShzPW9vKGUuZ2V0VGV4dCgpLG8uc3RhcnQpKS5zY2FuKCk7YSE9PU5hLkVPUyYmcy5nZXRUb2tlbkVuZCgpPD1yOyl7aWYoYT09PU5hLkVuZFRhZ09wZW4mJnMuZ2V0VG9rZW5FbmQoKT09PXIpcmV0dXJuIG8udGFnKyI+IjthPXMuc2NhbigpfX19cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmNvbnZlcnRDb21wbGV0aW9uTGlzdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCl8fGUuaXRlbXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5kb2N1bWVudGF0aW9uJiYic3RyaW5nIiE9dHlwZW9mIGUuZG9jdW1lbnRhdGlvbiYmKGUuZG9jdW1lbnRhdGlvbj17a2luZDoicGxhaW50ZXh0Iix2YWx1ZTplLmRvY3VtZW50YXRpb24udmFsdWV9KX0pKSxlfSxlLnByb3RvdHlwZS5kb2VzU3VwcG9ydE1hcmtkb3duPWZ1bmN0aW9uKCl7dmFyIGUsdCxuO2lmKCFrbyh0aGlzLnN1cHBvcnRzTWFya2Rvd24pKXtpZigha28odGhpcy5sc09wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzKSlyZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3duPSEwLHRoaXMuc3VwcG9ydHNNYXJrZG93bjt2YXIgcj1udWxsPT09KG49bnVsbD09PSh0PW51bGw9PT0oZT10aGlzLmxzT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMudGV4dERvY3VtZW50KXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jb21wbGV0aW9uKXx8dm9pZCAwPT09dD92b2lkIDA6dC5jb21wbGV0aW9uSXRlbSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZG9jdW1lbnRhdGlvbkZvcm1hdDt0aGlzLnN1cHBvcnRzTWFya2Rvd249QXJyYXkuaXNBcnJheShyKSYmLTEhPT1yLmluZGV4T2YoSGkuTWFya2Rvd24pfXJldHVybiB0aGlzLnN1cHBvcnRzTWFya2Rvd259LGV9KCk7ZnVuY3Rpb24gem8oZSl7cmV0dXJuL15ccyokLy50ZXN0KGUpfWZ1bmN0aW9uIFdvKGUsdCxuLHIpe2Zvcih2YXIgaT1vbyhlLHQsbiksYT1pLnNjYW4oKTthPT09TmEuV2hpdGVzcGFjZTspYT1pLnNjYW4oKTtyZXR1cm4gYT09PXJ9dmFyIE9vLFBvLHFvLEZvPVJyKCksQm89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5sc09wdGlvbnM9ZSx0aGlzLmRhdGFNYW5hZ2VyPXR9cmV0dXJuIGUucHJvdG90eXBlLmRvSG92ZXI9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dGhpcy5jb252ZXJ0Q29udGVudHMuYmluZCh0aGlzKSxhPXRoaXMuZG9lc1N1cHBvcnRNYXJrZG93bigpLG89ZS5vZmZzZXRBdCh0KSxzPW4uZmluZE5vZGVBdChvKSxsPWUuZ2V0VGV4dCgpO2lmKCFzfHwhcy50YWcpcmV0dXJuIG51bGw7dmFyIGM9dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhUHJvdmlkZXJzKCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pc0FwcGxpY2FibGUoZS5sYW5ndWFnZUlkKX0pKTtmdW5jdGlvbiBoKGUsdCxuKXtmb3IodmFyIG89ZnVuY3Rpb24obil7dmFyIG89bnVsbDtpZihuLnByb3ZpZGVUYWdzKCkuZm9yRWFjaCgoZnVuY3Rpb24obil7aWYobi5uYW1lLnRvTG93ZXJDYXNlKCk9PT1lLnRvTG93ZXJDYXNlKCkpe3ZhciBpPUNvKG4scixhKTtpfHwoaT17a2luZDphPyJtYXJrZG93biI6InBsYWludGV4dCIsdmFsdWU6IiJ9KSxvPXtjb250ZW50czppLHJhbmdlOnR9fX0pKSxvKXJldHVybiBvLmNvbnRlbnRzPWkoby5jb250ZW50cykse3ZhbHVlOm99fSxzPTAsbD1jO3M8bC5sZW5ndGg7cysrKXt2YXIgaD1vKGxbc10pO2lmKCJvYmplY3QiPT10eXBlb2YgaClyZXR1cm4gaC52YWx1ZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBkKHQsbil7Zm9yKHZhciByPW9vKGUuZ2V0VGV4dCgpLG4pLGk9ci5zY2FuKCk7aSE9PU5hLkVPUyYmKHIuZ2V0VG9rZW5FbmQoKTxvfHxyLmdldFRva2VuRW5kKCk9PT1vJiZpIT09dCk7KWk9ci5zY2FuKCk7cmV0dXJuIGk9PT10JiZvPD1yLmdldFRva2VuRW5kKCk/e3N0YXJ0OmUucG9zaXRpb25BdChyLmdldFRva2VuT2Zmc2V0KCkpLGVuZDplLnBvc2l0aW9uQXQoci5nZXRUb2tlbkVuZCgpKX06bnVsbH1pZihzLmVuZFRhZ1N0YXJ0JiZvPj1zLmVuZFRhZ1N0YXJ0KXt2YXIgdT1kKE5hLkVuZFRhZyxzLmVuZFRhZ1N0YXJ0KTtyZXR1cm4gdT9oKHMudGFnLHUpOm51bGx9dmFyIHA9ZChOYS5TdGFydFRhZyxzLnN0YXJ0KTtpZihwKXJldHVybiBoKHMudGFnLHApO3ZhciBtPWQoTmEuQXR0cmlidXRlTmFtZSxzLnN0YXJ0KTtpZihtKXJldHVybiBmdW5jdGlvbihlLHQsbil7Zm9yKHZhciBvPWZ1bmN0aW9uKG8pe3ZhciBzPW51bGw7aWYoby5wcm92aWRlQXR0cmlidXRlcyhlKS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZih0PT09ZS5uYW1lJiZlLmRlc2NyaXB0aW9uKXt2YXIgaT1DbyhlLHIsYSk7cz1pP3tjb250ZW50czppLHJhbmdlOm59Om51bGx9fSkpLHMpcmV0dXJuIHMuY29udGVudHM9aShzLmNvbnRlbnRzKSx7dmFsdWU6c319LHM9MCxsPWM7czxsLmxlbmd0aDtzKyspe3ZhciBoPW8obFtzXSk7aWYoIm9iamVjdCI9PXR5cGVvZiBoKXJldHVybiBoLnZhbHVlfXJldHVybiBudWxsfShiPXMudGFnLGUuZ2V0VGV4dChtKSxtKTt2YXIgZj1mdW5jdGlvbigpe2Zvcih2YXIgZT1vLTEsbj10LmNoYXJhY3RlcjtlPj0wJiZUbyhsLGUpOyllLS0sbi0tO2Zvcih2YXIgcj1lKzEsaT1uO1RvKGwscik7KXIrKyxpKys7aWYoZT49MCYmIiYiPT09bFtlXSl7cmV0dXJuIjsiPT09bFtyXT9Xci5jcmVhdGUoRHIuY3JlYXRlKHQubGluZSxuKSxEci5jcmVhdGUodC5saW5lLGkrMSkpOldyLmNyZWF0ZShEci5jcmVhdGUodC5saW5lLG4pLERyLmNyZWF0ZSh0LmxpbmUsaSkpfXJldHVybiBudWxsfSgpO2lmKGYpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW8tMSxuPSImIjt0Pj0wJiZUbyhlLHQpOyl0LS07Zm9yKHQrPTE7VG8oZSx0KTspbis9ZVt0XSx0Kz0xO3JldHVybiBuKyI7In0oZSk7Zm9yKHZhciByIGluIHBvKXt2YXIgYT1udWxsO2lmKG49PT0iJiIrcil7dmFyIHM9cG9bcl0uY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSxsPSJVKyI7aWYocy5sZW5ndGg8NClmb3IodmFyIGM9NC1zLmxlbmd0aCxoPTA7aDxjOylsKz0iMCIsaCs9MTtsKz1zO3ZhciBkPUZvKCJlbnRpdHkucHJvcG9zZSIsIkNoYXJhY3RlciBlbnRpdHkgcmVwcmVzZW50aW5nICciK3BvW3JdKyInLCB1bmljb2RlIGVxdWl2YWxlbnQgJyIrbCsiJyIpO2E9ZD97Y29udGVudHM6ZCxyYW5nZTp0fTpudWxsfWlmKGEpcmV0dXJuIGEuY29udGVudHM9aShhLmNvbnRlbnRzKSxhfXJldHVybiBudWxsfShsLGYpO3ZhciBnPWQoTmEuQXR0cmlidXRlVmFsdWUscy5zdGFydCk7aWYoZyl7dmFyIGI9cy50YWcsdz1mdW5jdGlvbihlKXtpZihlLmxlbmd0aDw9MSlyZXR1cm4gZS5yZXBsYWNlKC9bJyJdLywiIik7IiciIT09ZVswXSYmJyInIT09ZVswXXx8KGU9ZS5zbGljZSgxKSk7IiciIT09ZVtlLmxlbmd0aC0xXSYmJyInIT09ZVtlLmxlbmd0aC0xXXx8KGU9ZS5zbGljZSgwLC0xKSk7cmV0dXJuIGV9KGUuZ2V0VGV4dChnKSksXz1mdW5jdGlvbih0LG4pe2Zvcih2YXIgcj1vbyhlLmdldFRleHQoKSx0KSxpPXIuc2NhbigpLGE9dm9pZCAwO2khPT1OYS5FT1MmJnIuZ2V0VG9rZW5FbmQoKTw9bjspKGk9ci5zY2FuKCkpPT09TmEuQXR0cmlidXRlTmFtZSYmKGE9ci5nZXRUb2tlblRleHQoKSk7cmV0dXJuIGF9KHMuc3RhcnQsZS5vZmZzZXRBdChnLnN0YXJ0KSk7aWYoXylyZXR1cm4gZnVuY3Rpb24oZSx0LG4sbyl7Zm9yKHZhciBzPWZ1bmN0aW9uKHMpe3ZhciBsPW51bGw7aWYocy5wcm92aWRlVmFsdWVzKGUsdCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYobj09PWUubmFtZSYmZS5kZXNjcmlwdGlvbil7dmFyIHQ9Q28oZSxyLGEpO2w9dD97Y29udGVudHM6dCxyYW5nZTpvfTpudWxsfX0pKSxsKXJldHVybiBsLmNvbnRlbnRzPWkobC5jb250ZW50cykse3ZhbHVlOmx9fSxsPTAsaD1jO2w8aC5sZW5ndGg7bCsrKXt2YXIgZD1zKGhbbF0pO2lmKCJvYmplY3QiPT10eXBlb2YgZClyZXR1cm4gZC52YWx1ZX1yZXR1cm4gbnVsbH0oYixfLHcsZyl9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmNvbnZlcnRDb250ZW50cz1mdW5jdGlvbihlKXtpZighdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCkpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZTtpZigia2luZCJpbiBlKXJldHVybntraW5kOiJwbGFpbnRleHQiLHZhbHVlOmUudmFsdWV9O2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiBlLnZhbHVlO2UubWFwKChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ZTplLnZhbHVlfSkpfXJldHVybiBlfSxlLnByb3RvdHlwZS5kb2VzU3VwcG9ydE1hcmtkb3duPWZ1bmN0aW9uKCl7dmFyIGUsdCxuO2lmKCFrbyh0aGlzLnN1cHBvcnRzTWFya2Rvd24pKXtpZigha28odGhpcy5sc09wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzKSlyZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3duPSEwLHRoaXMuc3VwcG9ydHNNYXJrZG93bjt2YXIgcj1udWxsPT09KG49bnVsbD09PSh0PW51bGw9PT0oZT10aGlzLmxzT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnRleHREb2N1bWVudCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaG92ZXIpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmNvbnRlbnRGb3JtYXQ7dGhpcy5zdXBwb3J0c01hcmtkb3duPUFycmF5LmlzQXJyYXkocikmJi0xIT09ci5pbmRleE9mKEhpLk1hcmtkb3duKX1yZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3dufSxlfSgpO2Z1bmN0aW9uIFZvKGUsdCl7cmV0dXJuIGV9T289WywsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt0aGlzLl9fcGFyZW50PWUsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX19pbmRlbnRfY291bnQ9LTEsdGhpcy5fX2FsaWdubWVudF9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGV4PTAsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PTAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PS0xLHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD0wLHRoaXMuX19pdGVtcz1bXX1mdW5jdGlvbiBuKGUsdCl7dGhpcy5fX2NhY2hlPVsiIl0sdGhpcy5fX2luZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy5fX2luZGVudF9zdHJpbmc9ZS5pbmRlbnRfY2hhcixlLmluZGVudF93aXRoX3RhYnN8fCh0aGlzLl9faW5kZW50X3N0cmluZz1uZXcgQXJyYXkoZS5pbmRlbnRfc2l6ZSsxKS5qb2luKGUuaW5kZW50X2NoYXIpKSx0PXR8fCIiLGUuaW5kZW50X2xldmVsPjAmJih0PW5ldyBBcnJheShlLmluZGVudF9sZXZlbCsxKS5qb2luKHRoaXMuX19pbmRlbnRfc3RyaW5nKSksdGhpcy5fX2Jhc2Vfc3RyaW5nPXQsdGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aD10Lmxlbmd0aH1mdW5jdGlvbiByKGUscil7dGhpcy5fX2luZGVudF9jYWNoZT1uZXcgbihlLHIpLHRoaXMucmF3PSExLHRoaXMuX2VuZF93aXRoX25ld2xpbmU9ZS5lbmRfd2l0aF9uZXdsaW5lLHRoaXMuaW5kZW50X3NpemU9ZS5pbmRlbnRfc2l6ZSx0aGlzLndyYXBfbGluZV9sZW5ndGg9ZS53cmFwX2xpbmVfbGVuZ3RoLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPWUuaW5kZW50X2VtcHR5X2xpbmVzLHRoaXMuX19saW5lcz1bXSx0aGlzLnByZXZpb3VzX2xpbmU9bnVsbCx0aGlzLmN1cnJlbnRfbGluZT1udWxsLHRoaXMubmV4dF9saW5lPW5ldyB0KHRoaXMpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMSx0aGlzLl9fYWRkX291dHB1dGxpbmUoKX10LnByb3RvdHlwZS5jbG9uZV9lbXB0eT1mdW5jdGlvbigpe3ZhciBlPW5ldyB0KHRoaXMuX19wYXJlbnQpO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlfSx0LnByb3RvdHlwZS5pdGVtPWZ1bmN0aW9uKGUpe3JldHVybiBlPDA/dGhpcy5fX2l0ZW1zW3RoaXMuX19pdGVtcy5sZW5ndGgrZV06dGhpcy5fX2l0ZW1zW2VdfSx0LnByb3RvdHlwZS5oYXNfbWF0Y2g9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19pdGVtcy5sZW5ndGgtMTt0Pj0wO3QtLSlpZih0aGlzLl9faXRlbXNbdF0ubWF0Y2goZSkpcmV0dXJuITA7cmV0dXJuITF9LHQucHJvdG90eXBlLnNldF9pbmRlbnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmlzX2VtcHR5KCkmJih0aGlzLl9faW5kZW50X2NvdW50PWV8fDAsdGhpcy5fX2FsaWdubWVudF9jb3VudD10fHwwLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3NpemUodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSl9LHQucHJvdG90eXBlLl9zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuX19wYXJlbnQud3JhcF9saW5lX2xlbmd0aCYmKHRoaXMuX193cmFwX3BvaW50X2luZGV4PXRoaXMuX19pdGVtcy5sZW5ndGgsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PXRoaXMuX19jaGFyYWN0ZXJfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PXRoaXMuX19wYXJlbnQubmV4dF9saW5lLl9faW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2FsaWdubWVudF9jb3VudCl9LHQucHJvdG90eXBlLl9zaG91bGRfd3JhcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fd3JhcF9wb2ludF9pbmRleCYmdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJnRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2NoYXJhY3Rlcl9jb3VudH0sdC5wcm90b3R5cGUuX2FsbG93X3dyYXA9ZnVuY3Rpb24oKXtpZih0aGlzLl9zaG91bGRfd3JhcCgpKXt0aGlzLl9fcGFyZW50LmFkZF9uZXdfbGluZSgpO3ZhciBlPXRoaXMuX19wYXJlbnQuY3VycmVudF9saW5lO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudCksZS5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSh0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksdGhpcy5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSgwLHRoaXMuX193cmFwX3BvaW50X2luZGV4KSxlLl9fY2hhcmFjdGVyX2NvdW50Kz10aGlzLl9fY2hhcmFjdGVyX2NvdW50LXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50PXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCwiICI9PT1lLl9faXRlbXNbMF0mJihlLl9faXRlbXMuc3BsaWNlKDAsMSksZS5fX2NoYXJhY3Rlcl9jb3VudC09MSksITB9cmV0dXJuITF9LHQucHJvdG90eXBlLmlzX2VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9faXRlbXMubGVuZ3RofSx0LnByb3RvdHlwZS5sYXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKT9udWxsOnRoaXMuX19pdGVtc1t0aGlzLl9faXRlbXMubGVuZ3RoLTFdfSx0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUpe3RoaXMuX19pdGVtcy5wdXNoKGUpO3ZhciB0PWUubGFzdEluZGV4T2YoIlxuIik7LTEhPT10P3RoaXMuX19jaGFyYWN0ZXJfY291bnQ9ZS5sZW5ndGgtdDp0aGlzLl9fY2hhcmFjdGVyX2NvdW50Kz1lLmxlbmd0aH0sdC5wcm90b3R5cGUucG9wPWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHwoZT10aGlzLl9faXRlbXMucG9wKCksdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09ZS5sZW5ndGgpLGV9LHQucHJvdG90eXBlLl9yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5fX2luZGVudF9jb3VudD4wJiYodGhpcy5fX2luZGVudF9jb3VudC09MSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT10aGlzLl9fcGFyZW50LmluZGVudF9zaXplKX0sdC5wcm90b3R5cGUuX3JlbW92ZV93cmFwX2luZGVudD1mdW5jdGlvbigpe3RoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD4wJiYodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LT0xKX0sdC5wcm90b3R5cGUudHJpbT1mdW5jdGlvbigpe2Zvcig7IiAiPT09dGhpcy5sYXN0KCk7KXRoaXMuX19pdGVtcy5wb3AoKSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT0xfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmlzX2VtcHR5KCk/dGhpcy5fX3BhcmVudC5pbmRlbnRfZW1wdHlfbGluZXMmJihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCkpOihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlKz10aGlzLl9faXRlbXMuam9pbigiIikpLGV9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc2l6ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg7cmV0dXJuIHQ9dHx8MCxlPDAmJihuPTApLG4rPWUqdGhpcy5fX2luZGVudF9zaXplLG4rPXR9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2Jhc2Vfc3RyaW5nO3JldHVybiB0PXR8fDAsZTwwJiYoZT0wLG49IiIpLHQrPWUqdGhpcy5fX2luZGVudF9zaXplLHRoaXMuX19lbnN1cmVfY2FjaGUodCksbis9dGhpcy5fX2NhY2hlW3RdfSxuLnByb3RvdHlwZS5fX2Vuc3VyZV9jYWNoZT1mdW5jdGlvbihlKXtmb3IoO2U+PXRoaXMuX19jYWNoZS5sZW5ndGg7KXRoaXMuX19hZGRfY29sdW1uKCl9LG4ucHJvdG90eXBlLl9fYWRkX2NvbHVtbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX19jYWNoZS5sZW5ndGgsdD0wLG49IiI7dGhpcy5fX2luZGVudF9zaXplJiZlPj10aGlzLl9faW5kZW50X3NpemUmJihlLT0odD1NYXRoLmZsb29yKGUvdGhpcy5fX2luZGVudF9zaXplKSkqdGhpcy5fX2luZGVudF9zaXplLG49bmV3IEFycmF5KHQrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLGUmJihuKz1uZXcgQXJyYXkoZSsxKS5qb2luKCIgIikpLHRoaXMuX19jYWNoZS5wdXNoKG4pfSxyLnByb3RvdHlwZS5fX2FkZF9vdXRwdXRsaW5lPWZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuY3VycmVudF9saW5lLHRoaXMuY3VycmVudF9saW5lPXRoaXMubmV4dF9saW5lLmNsb25lX2VtcHR5KCksdGhpcy5fX2xpbmVzLnB1c2godGhpcy5jdXJyZW50X2xpbmUpfSxyLnByb3RvdHlwZS5nZXRfbGluZV9udW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2xpbmVzLmxlbmd0aH0sci5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3N0cmluZyhlLHQpfSxyLnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3NpemUoZSx0KX0sci5wcm90b3R5cGUuaXNfZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5wcmV2aW91c19saW5lJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSxyLnByb3RvdHlwZS5hZGRfbmV3X2xpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuISh0aGlzLmlzX2VtcHR5KCl8fCFlJiZ0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpfHwodGhpcy5yYXd8fHRoaXMuX19hZGRfb3V0cHV0bGluZSgpLDApKX0sci5wcm90b3R5cGUuZ2V0X2NvZGU9ZnVuY3Rpb24oZSl7dGhpcy50cmltKCEwKTt2YXIgdD10aGlzLmN1cnJlbnRfbGluZS5wb3AoKTt0JiYoIlxuIj09PXRbdC5sZW5ndGgtMV0mJih0PXQucmVwbGFjZSgvXG4rJC9nLCIiKSksdGhpcy5jdXJyZW50X2xpbmUucHVzaCh0KSksdGhpcy5fZW5kX3dpdGhfbmV3bGluZSYmdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCk7dmFyIG49dGhpcy5fX2xpbmVzLmpvaW4oIlxuIik7cmV0dXJuIlxuIiE9PWUmJihuPW4ucmVwbGFjZSgvW1xuXS9nLGUpKSxufSxyLnByb3RvdHlwZS5zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuY3VycmVudF9saW5lLl9zZXRfd3JhcF9wb2ludCgpfSxyLnByb3RvdHlwZS5zZXRfaW5kZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9ZXx8MCx0PXR8fDAsdGhpcy5uZXh0X2xpbmUuc2V0X2luZGVudChlLHQpLHRoaXMuX19saW5lcy5sZW5ndGg+MT8odGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudChlLHQpLCEwKToodGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudCgpLCExKX0sci5wcm90b3R5cGUuYWRkX3Jhd190b2tlbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubmV3bGluZXM7dCsrKXRoaXMuX19hZGRfb3V0cHV0bGluZSgpO3RoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoLTEpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZS53aGl0ZXNwYWNlX2JlZm9yZSksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlLnRleHQpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMX0sci5wcm90b3R5cGUuYWRkX3Rva2VuPWZ1bmN0aW9uKGUpe3RoaXMuX19hZGRfc3BhY2VfYmVmb3JlX3Rva2VuKCksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlKSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9dGhpcy5jdXJyZW50X2xpbmUuX2FsbG93X3dyYXAoKX0sci5wcm90b3R5cGUuX19hZGRfc3BhY2VfYmVmb3JlX3Rva2VuPWZ1bmN0aW9uKCl7dGhpcy5zcGFjZV9iZWZvcmVfdG9rZW4mJiF0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpJiYodGhpcy5ub25fYnJlYWtpbmdfc3BhY2V8fHRoaXMuc2V0X3dyYXBfcG9pbnQoKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKCIgIikpfSxyLnByb3RvdHlwZS5yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLl9fbGluZXMubGVuZ3RoO2U8dDspdGhpcy5fX2xpbmVzW2VdLl9yZW1vdmVfaW5kZW50KCksZSsrO3RoaXMuY3VycmVudF9saW5lLl9yZW1vdmVfd3JhcF9pbmRlbnQoKX0sci5wcm90b3R5cGUudHJpbT1mdW5jdGlvbihlKXtmb3IoZT12b2lkIDAhPT1lJiZlLHRoaXMuY3VycmVudF9saW5lLnRyaW0oKTtlJiZ0aGlzLl9fbGluZXMubGVuZ3RoPjEmJnRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCk7KXRoaXMuX19saW5lcy5wb3AoKSx0aGlzLmN1cnJlbnRfbGluZT10aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0xXSx0aGlzLmN1cnJlbnRfbGluZS50cmltKCk7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuX19saW5lcy5sZW5ndGg+MT90aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0yXTpudWxsfSxyLnByb3RvdHlwZS5qdXN0X2FkZGVkX25ld2xpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKX0sci5wcm90b3R5cGUuanVzdF9hZGRlZF9ibGFua2xpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHx0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpJiZ0aGlzLnByZXZpb3VzX2xpbmUuaXNfZW1wdHkoKX0sci5wcm90b3R5cGUuZW5zdXJlX2VtcHR5X2xpbmVfYWJvdmU9ZnVuY3Rpb24oZSxuKXtmb3IodmFyIHI9dGhpcy5fX2xpbmVzLmxlbmd0aC0yO3I+PTA7KXt2YXIgaT10aGlzLl9fbGluZXNbcl07aWYoaS5pc19lbXB0eSgpKWJyZWFrO2lmKDAhPT1pLml0ZW0oMCkuaW5kZXhPZihlKSYmaS5pdGVtKC0xKSE9PW4pe3RoaXMuX19saW5lcy5zcGxpY2UocisxLDAsbmV3IHQodGhpcykpLHRoaXMucHJldmlvdXNfbGluZT10aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0yXTticmVha31yLS19fSxlLmV4cG9ydHMuT3V0cHV0PXJ9LCwsLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXt0aGlzLnJhd19vcHRpb25zPW4oZSx0KSx0aGlzLmRpc2FibGVkPXRoaXMuX2dldF9ib29sZWFuKCJkaXNhYmxlZCIpLHRoaXMuZW9sPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJlb2wiLCJhdXRvIiksdGhpcy5lbmRfd2l0aF9uZXdsaW5lPXRoaXMuX2dldF9ib29sZWFuKCJlbmRfd2l0aF9uZXdsaW5lIiksdGhpcy5pbmRlbnRfc2l6ZT10aGlzLl9nZXRfbnVtYmVyKCJpbmRlbnRfc2l6ZSIsNCksdGhpcy5pbmRlbnRfY2hhcj10aGlzLl9nZXRfY2hhcmFjdGVycygiaW5kZW50X2NoYXIiLCIgIiksdGhpcy5pbmRlbnRfbGV2ZWw9dGhpcy5fZ2V0X251bWJlcigiaW5kZW50X2xldmVsIiksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfYm9vbGVhbigicHJlc2VydmVfbmV3bGluZXMiLCEwKSx0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfbnVtYmVyKCJtYXhfcHJlc2VydmVfbmV3bGluZXMiLDMyNzg2KSx0aGlzLnByZXNlcnZlX25ld2xpbmVzfHwodGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9MCksdGhpcy5pbmRlbnRfd2l0aF90YWJzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfd2l0aF90YWJzIiwiXHQiPT09dGhpcy5pbmRlbnRfY2hhciksdGhpcy5pbmRlbnRfd2l0aF90YWJzJiYodGhpcy5pbmRlbnRfY2hhcj0iXHQiLDE9PT10aGlzLmluZGVudF9zaXplJiYodGhpcy5pbmRlbnRfc2l6ZT00KSksdGhpcy53cmFwX2xpbmVfbGVuZ3RoPXRoaXMuX2dldF9udW1iZXIoIndyYXBfbGluZV9sZW5ndGgiLHRoaXMuX2dldF9udW1iZXIoIm1heF9jaGFyIikpLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfZW1wdHlfbGluZXMiKSx0aGlzLnRlbXBsYXRpbmc9dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KCJ0ZW1wbGF0aW5nIixbImF1dG8iLCJub25lIiwiZGphbmdvIiwiZXJiIiwiaGFuZGxlYmFycyIsInBocCIsInNtYXJ0eSJdLFsiYXV0byJdKX1mdW5jdGlvbiBuKGUsdCl7dmFyIG4saT17fTtmb3IobiBpbiBlPXIoZSkpbiE9PXQmJihpW25dPWVbbl0pO2lmKHQmJmVbdF0pZm9yKG4gaW4gZVt0XSlpW25dPWVbdF1bbl07cmV0dXJuIGl9ZnVuY3Rpb24gcihlKXt2YXIgdCxuPXt9O2Zvcih0IGluIGUpblt0LnJlcGxhY2UoLy0vZywiXyIpXT1lW3RdO3JldHVybiBufXQucHJvdG90eXBlLl9nZXRfYXJyYXk9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhd19vcHRpb25zW2VdLHI9dHx8W107cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuP251bGwhPT1uJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5jb25jYXQmJihyPW4uY29uY2F0KCkpOiJzdHJpbmciPT10eXBlb2YgbiYmKHI9bi5zcGxpdCgvW15hLXpBLVowLTlfXC9cLV0rLykpLHJ9LHQucHJvdG90eXBlLl9nZXRfYm9vbGVhbj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucmF3X29wdGlvbnNbZV07cmV0dXJuIHZvaWQgMD09PW4/ISF0OiEhbn0sdC5wcm90b3R5cGUuX2dldF9jaGFyYWN0ZXJzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXSxyPXR8fCIiO3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmKHI9bi5yZXBsYWNlKC9cXHIvLCJcciIpLnJlcGxhY2UoL1xcbi8sIlxuIikucmVwbGFjZSgvXFx0LywiXHQiKSkscn0sdC5wcm90b3R5cGUuX2dldF9udW1iZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhd19vcHRpb25zW2VdO3Q9cGFyc2VJbnQodCwxMCksaXNOYU4odCkmJih0PTApO3ZhciByPXBhcnNlSW50KG4sMTApO3JldHVybiBpc05hTihyKSYmKHI9dCkscn0sdC5wcm90b3R5cGUuX2dldF9zZWxlY3Rpb249ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX2dldF9zZWxlY3Rpb25fbGlzdChlLHQsbik7aWYoMSE9PXIubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBPcHRpb24gVmFsdWU6IFRoZSBvcHRpb24gJyIrZSsiJyBjYW4gb25seSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4iK3QrIlxuWW91IHBhc3NlZCBpbjogJyIrdGhpcy5yYXdfb3B0aW9uc1tlXSsiJyIpO3JldHVybiByWzBdfSx0LnByb3RvdHlwZS5fZ2V0X3NlbGVjdGlvbl9saXN0PWZ1bmN0aW9uKGUsdCxuKXtpZighdHx8MD09PXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiU2VsZWN0aW9uIGxpc3QgY2Fubm90IGJlIGVtcHR5LiIpO2lmKG49bnx8W3RbMF1dLCF0aGlzLl9pc192YWxpZF9zZWxlY3Rpb24obix0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRGVmYXVsdCBWYWx1ZSEiKTt2YXIgcj10aGlzLl9nZXRfYXJyYXkoZSxuKTtpZighdGhpcy5faXNfdmFsaWRfc2VsZWN0aW9uKHIsdCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIE9wdGlvbiBWYWx1ZTogVGhlIG9wdGlvbiAnIitlKyInIGNhbiBjb250YWluIG9ubHkgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4iK3QrIlxuWW91IHBhc3NlZCBpbjogJyIrdGhpcy5yYXdfb3B0aW9uc1tlXSsiJyIpO3JldHVybiByfSx0LnByb3RvdHlwZS5faXNfdmFsaWRfc2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubGVuZ3RoJiZ0Lmxlbmd0aCYmIWUuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuLTE9PT10LmluZGV4T2YoZSl9KSl9LGUuZXhwb3J0cy5PcHRpb25zPXQsZS5leHBvcnRzLm5vcm1hbGl6ZU9wdHM9cixlLmV4cG9ydHMubWVyZ2VPcHRzPW59LCxmdW5jdGlvbihlKXt2YXIgdD1SZWdFeHAucHJvdG90eXBlLmhhc093blByb3BlcnR5KCJzdGlja3kiKTtmdW5jdGlvbiBuKGUpe3RoaXMuX19pbnB1dD1lfHwiIix0aGlzLl9faW5wdXRfbGVuZ3RoPXRoaXMuX19pbnB1dC5sZW5ndGgsdGhpcy5fX3Bvc2l0aW9uPTB9bi5wcm90b3R5cGUucmVzdGFydD1mdW5jdGlvbigpe3RoaXMuX19wb3NpdGlvbj0wfSxuLnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7dGhpcy5fX3Bvc2l0aW9uPjAmJih0aGlzLl9fcG9zaXRpb24tPTEpfSxuLnByb3RvdHlwZS5oYXNOZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19wb3NpdGlvbjx0aGlzLl9faW5wdXRfbGVuZ3RofSxuLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5oYXNOZXh0KCkmJihlPXRoaXMuX19pbnB1dC5jaGFyQXQodGhpcy5fX3Bvc2l0aW9uKSx0aGlzLl9fcG9zaXRpb24rPTEpLGV9LG4ucHJvdG90eXBlLnBlZWs9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gZT1lfHwwLChlKz10aGlzLl9fcG9zaXRpb24pPj0wJiZlPHRoaXMuX19pbnB1dF9sZW5ndGgmJih0PXRoaXMuX19pbnB1dC5jaGFyQXQoZSkpLHR9LG4ucHJvdG90eXBlLl9fbWF0Y2g9ZnVuY3Rpb24oZSxuKXtlLmxhc3RJbmRleD1uO3ZhciByPWUuZXhlYyh0aGlzLl9faW5wdXQpO3JldHVybiFyfHx0JiZlLnN0aWNreXx8ci5pbmRleCE9PW4mJihyPW51bGwpLHJ9LG4ucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10fHwwLCh0Kz10aGlzLl9fcG9zaXRpb24pPj0wJiZ0PHRoaXMuX19pbnB1dF9sZW5ndGgmJiEhdGhpcy5fX21hdGNoKGUsdCl9LG4ucHJvdG90eXBlLnRlc3RDaGFyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5wZWVrKHQpO3JldHVybiBlLmxhc3RJbmRleD0wLG51bGwhPT1uJiZlLnRlc3Qobil9LG4ucHJvdG90eXBlLm1hdGNoPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19tYXRjaChlLHRoaXMuX19wb3NpdGlvbik7cmV0dXJuIHQ/dGhpcy5fX3Bvc2l0aW9uKz10WzBdLmxlbmd0aDp0PW51bGwsdH0sbi5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaT0iIjtyZXR1cm4gZSYmKHI9dGhpcy5tYXRjaChlKSkmJihpKz1yWzBdKSwhdHx8IXImJmV8fChpKz10aGlzLnJlYWRVbnRpbCh0LG4pKSxpfSxuLnByb3RvdHlwZS5yZWFkVW50aWw9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPXRoaXMuX19wb3NpdGlvbjtlLmxhc3RJbmRleD10aGlzLl9fcG9zaXRpb247dmFyIGk9ZS5leGVjKHRoaXMuX19pbnB1dCk7cmV0dXJuIGk/KHI9aS5pbmRleCx0JiYocis9aVswXS5sZW5ndGgpKTpyPXRoaXMuX19pbnB1dF9sZW5ndGgsbj10aGlzLl9faW5wdXQuc3Vic3RyaW5nKHRoaXMuX19wb3NpdGlvbixyKSx0aGlzLl9fcG9zaXRpb249cixufSxuLnByb3RvdHlwZS5yZWFkVW50aWxBZnRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZWFkVW50aWwoZSwhMCl9LG4ucHJvdG90eXBlLmdldF9yZWdleHA9ZnVuY3Rpb24oZSxuKXt2YXIgcj1udWxsLGk9ImciO3JldHVybiBuJiZ0JiYoaT0ieSIpLCJzdHJpbmciPT10eXBlb2YgZSYmIiIhPT1lP3I9bmV3IFJlZ0V4cChlLGkpOmUmJihyPW5ldyBSZWdFeHAoZS5zb3VyY2UsaSkpLHJ9LG4ucHJvdG90eXBlLmdldF9saXRlcmFsX3JlZ2V4cD1mdW5jdGlvbihlKXtyZXR1cm4gUmVnRXhwKGUucmVwbGFjZSgvWy1cL1xcXiQqKz8uKCl8W1xde31dL2csIlxcJCYiKSl9LG4ucHJvdG90eXBlLnBlZWtVbnRpbEFmdGVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19wb3NpdGlvbixuPXRoaXMucmVhZFVudGlsQWZ0ZXIoZSk7cmV0dXJuIHRoaXMuX19wb3NpdGlvbj10LG59LG4ucHJvdG90eXBlLmxvb2tCYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19wb3NpdGlvbi0xO3JldHVybiB0Pj1lLmxlbmd0aCYmdGhpcy5fX2lucHV0LnN1YnN0cmluZyh0LWUubGVuZ3RoLHQpLnRvTG93ZXJDYXNlKCk9PT1lfSxlLmV4cG9ydHMuSW5wdXRTY2FubmVyPW59LCwsLCxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTplLnNvdXJjZSx0PSJzdHJpbmciPT10eXBlb2YgdD90OnQuc291cmNlLHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm49bmV3IFJlZ0V4cChlKy8gYmVhdXRpZnkoIFx3K1s6XVx3KykrIC8uc291cmNlK3QsImciKSx0aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm49LyAoXHcrKVs6XShcdyspL2csdGhpcy5fX2RpcmVjdGl2ZXNfZW5kX2lnbm9yZV9wYXR0ZXJuPW5ldyBSZWdFeHAoZSsvXHNiZWF1dGlmeVxzaWdub3JlOmVuZFxzLy5zb3VyY2UrdCwiZyIpfXQucHJvdG90eXBlLmdldF9kaXJlY3RpdmVzPWZ1bmN0aW9uKGUpe2lmKCFlLm1hdGNoKHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm4pKXJldHVybiBudWxsO3ZhciB0PXt9O3RoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5sYXN0SW5kZXg9MDtmb3IodmFyIG49dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmV4ZWMoZSk7bjspdFtuWzFdXT1uWzJdLG49dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmV4ZWMoZSk7cmV0dXJuIHR9LHQucHJvdG90eXBlLnJlYWRJZ25vcmVkPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlYWRVbnRpbEFmdGVyKHRoaXMuX19kaXJlY3RpdmVzX2VuZF9pZ25vcmVfcGF0dGVybil9LGUuZXhwb3J0cy5EaXJlY3RpdmVzPXR9LCxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxNikuQmVhdXRpZmllcixpPW4oMTcpLk9wdGlvbnM7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyByKGUsdCkuYmVhdXRpZnkoKX0sZS5leHBvcnRzLmRlZmF1bHRPcHRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTcpLk9wdGlvbnMsaT1uKDIpLk91dHB1dCxhPW4oOCkuSW5wdXRTY2FubmVyLG89bmV3KDAsbigxMykuRGlyZWN0aXZlcykoL1wvXCovLC9cKlwvLykscz0vXHJcbnxbXHJcbl0vLGw9L1xyXG58W1xyXG5dL2csYz0vXHMvLGg9Lyg/OlxzfFxuKSsvZyxkPS9cL1wqKD86W1xzXFNdKj8pKCg/OlwqXC8pfCQpL2csdT0vXC9cLyg/OlteXG5cclx1MjAyOFx1MjAyOV0qKS9nO2Z1bmN0aW9uIHAoZSx0KXt0aGlzLl9zb3VyY2VfdGV4dD1lfHwiIix0aGlzLl9vcHRpb25zPW5ldyByKHQpLHRoaXMuX2NoPW51bGwsdGhpcy5faW5wdXQ9bnVsbCx0aGlzLk5FU1RFRF9BVF9SVUxFPXsiQHBhZ2UiOiEwLCJAZm9udC1mYWNlIjohMCwiQGtleWZyYW1lcyI6ITAsIkBtZWRpYSI6ITAsIkBzdXBwb3J0cyI6ITAsIkBkb2N1bWVudCI6ITB9LHRoaXMuQ09ORElUSU9OQUxfR1JPVVBfUlVMRT17IkBtZWRpYSI6ITAsIkBzdXBwb3J0cyI6ITAsIkBkb2N1bWVudCI6ITB9fXAucHJvdG90eXBlLmVhdFN0cmluZz1mdW5jdGlvbihlKXt2YXIgdD0iIjtmb3IodGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpO3RoaXMuX2NoOyl7aWYodCs9dGhpcy5fY2gsIlxcIj09PXRoaXMuX2NoKXQrPXRoaXMuX2lucHV0Lm5leHQoKTtlbHNlIGlmKC0xIT09ZS5pbmRleE9mKHRoaXMuX2NoKXx8IlxuIj09PXRoaXMuX2NoKWJyZWFrO3RoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKX1yZXR1cm4gdH0scC5wcm90b3R5cGUuZWF0V2hpdGVzcGFjZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9Yy50ZXN0KHRoaXMuX2lucHV0LnBlZWsoKSksbj0wO2MudGVzdCh0aGlzLl9pbnB1dC5wZWVrKCkpOyl0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCksZSYmIlxuIj09PXRoaXMuX2NoJiYoMD09PW58fG48dGhpcy5fb3B0aW9ucy5tYXhfcHJlc2VydmVfbmV3bGluZXMpJiYobisrLHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoITApKTtyZXR1cm4gdH0scC5wcm90b3R5cGUuZm91bmROZXN0ZWRQc2V1ZG9DbGFzcz1mdW5jdGlvbigpe2Zvcih2YXIgZT0wLHQ9MSxuPXRoaXMuX2lucHV0LnBlZWsodCk7bjspe2lmKCJ7Ij09PW4pcmV0dXJuITA7aWYoIigiPT09billKz0xO2Vsc2UgaWYoIikiPT09bil7aWYoMD09PWUpcmV0dXJuITE7ZS09MX1lbHNlIGlmKCI7Ij09PW58fCJ9Ij09PW4pcmV0dXJuITE7dCsrLG49dGhpcy5faW5wdXQucGVlayh0KX1yZXR1cm4hMX0scC5wcm90b3R5cGUucHJpbnRfc3RyaW5nPWZ1bmN0aW9uKGUpe3RoaXMuX291dHB1dC5zZXRfaW5kZW50KHRoaXMuX2luZGVudExldmVsKSx0aGlzLl9vdXRwdXQubm9uX2JyZWFraW5nX3NwYWNlPSEwLHRoaXMuX291dHB1dC5hZGRfdG9rZW4oZSl9LHAucHJvdG90eXBlLnByZXNlcnZlU2luZ2xlU3BhY2U9ZnVuY3Rpb24oZSl7ZSYmKHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApfSxwLnByb3RvdHlwZS5pbmRlbnQ9ZnVuY3Rpb24oKXt0aGlzLl9pbmRlbnRMZXZlbCsrfSxwLnByb3RvdHlwZS5vdXRkZW50PWZ1bmN0aW9uKCl7dGhpcy5faW5kZW50TGV2ZWw+MCYmdGhpcy5faW5kZW50TGV2ZWwtLX0scC5wcm90b3R5cGUuYmVhdXRpZnk9ZnVuY3Rpb24oKXtpZih0aGlzLl9vcHRpb25zLmRpc2FibGVkKXJldHVybiB0aGlzLl9zb3VyY2VfdGV4dDt2YXIgZT10aGlzLl9zb3VyY2VfdGV4dCx0PXRoaXMuX29wdGlvbnMuZW9sOyJhdXRvIj09PXQmJih0PSJcbiIsZSYmcy50ZXN0KGV8fCIiKSYmKHQ9ZS5tYXRjaChzKVswXSkpO3ZhciBuPShlPWUucmVwbGFjZShsLCJcbiIpKS5tYXRjaCgvXltcdCBdKi8pWzBdO3RoaXMuX291dHB1dD1uZXcgaSh0aGlzLl9vcHRpb25zLG4pLHRoaXMuX2lucHV0PW5ldyBhKGUpLHRoaXMuX2luZGVudExldmVsPTAsdGhpcy5fbmVzdGVkTGV2ZWw9MCx0aGlzLl9jaD1udWxsO2Zvcih2YXIgcixwLG09MCxmPSExLGc9ITEsYj0hMSx3PSExLF89ITEsdj10aGlzLl9jaDtyPSIiIT09dGhpcy5faW5wdXQucmVhZChoKSxwPXYsdGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLCJcXCI9PT10aGlzLl9jaCYmdGhpcy5faW5wdXQuaGFzTmV4dCgpJiYodGhpcy5fY2grPXRoaXMuX2lucHV0Lm5leHQoKSksdj10aGlzLl9jaCx0aGlzLl9jaDspaWYoIi8iPT09dGhpcy5fY2gmJiIqIj09PXRoaXMuX2lucHV0LnBlZWsoKSl7dGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpLHRoaXMuX2lucHV0LmJhY2soKTt2YXIgeT10aGlzLl9pbnB1dC5yZWFkKGQpLFQ9by5nZXRfZGlyZWN0aXZlcyh5KTtUJiYic3RhcnQiPT09VC5pZ25vcmUmJih5Kz1vLnJlYWRJZ25vcmVkKHRoaXMuX2lucHV0KSksdGhpcy5wcmludF9zdHJpbmcoeSksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCl9ZWxzZSBpZigiLyI9PT10aGlzLl9jaCYmIi8iPT09dGhpcy5faW5wdXQucGVlaygpKXRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsdGhpcy5faW5wdXQuYmFjaygpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2lucHV0LnJlYWQodSkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCk7ZWxzZSBpZigiQCI9PT10aGlzLl9jaClpZih0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UociksInsiPT09dGhpcy5faW5wdXQucGVlaygpKXRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoK3RoaXMuZWF0U3RyaW5nKCJ9IikpO2Vsc2V7dGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpO3ZhciBrPXRoaXMuX2lucHV0LnBlZWtVbnRpbEFmdGVyKC9bOiAsO3t9KClbXF1cLz0nIl0vZyk7ay5tYXRjaCgvWyA6XSQvKSYmKGs9dGhpcy5lYXRTdHJpbmcoIjogIikucmVwbGFjZSgvXHMkLywiIiksdGhpcy5wcmludF9zdHJpbmcoayksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCksImV4dGVuZCI9PT0oaz1rLnJlcGxhY2UoL1xzJC8sIiIpKT93PSEwOiJpbXBvcnQiPT09ayYmKF89ITApLGsgaW4gdGhpcy5ORVNURURfQVRfUlVMRT8odGhpcy5fbmVzdGVkTGV2ZWwrPTEsayBpbiB0aGlzLkNPTkRJVElPTkFMX0dST1VQX1JVTEUmJihiPSEwKSk6Znx8MCE9PW18fC0xPT09ay5pbmRleE9mKCI6Iil8fChnPSEwLHRoaXMuaW5kZW50KCkpfWVsc2UiIyI9PT10aGlzLl9jaCYmInsiPT09dGhpcy5faW5wdXQucGVlaygpPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UociksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcoIn0iKSkpOiJ7Ij09PXRoaXMuX2NoPyhnJiYoZz0hMSx0aGlzLm91dGRlbnQoKSksYj8oYj0hMSxmPXRoaXMuX2luZGVudExldmVsPj10aGlzLl9uZXN0ZWRMZXZlbCk6Zj10aGlzLl9pbmRlbnRMZXZlbD49dGhpcy5fbmVzdGVkTGV2ZWwtMSx0aGlzLl9vcHRpb25zLm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyYmZiYmdGhpcy5fb3V0cHV0LnByZXZpb3VzX2xpbmUmJiJ7IiE9PXRoaXMuX291dHB1dC5wcmV2aW91c19saW5lLml0ZW0oLTEpJiZ0aGlzLl9vdXRwdXQuZW5zdXJlX2VtcHR5X2xpbmVfYWJvdmUoIi8iLCIsIiksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCwiZXhwYW5kIj09PXRoaXMuX29wdGlvbnMuYnJhY2Vfc3R5bGU/KHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5pbmRlbnQoKSx0aGlzLl9vdXRwdXQuc2V0X2luZGVudCh0aGlzLl9pbmRlbnRMZXZlbCkpOih0aGlzLmluZGVudCgpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCkpOiJ9Ij09PXRoaXMuX2NoPyh0aGlzLm91dGRlbnQoKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksInsiPT09cCYmdGhpcy5fb3V0cHV0LnRyaW0oITApLF89ITEsdz0hMSxnJiYodGhpcy5vdXRkZW50KCksZz0hMSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLGY9ITEsdGhpcy5fbmVzdGVkTGV2ZWwmJnRoaXMuX25lc3RlZExldmVsLS0sdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksdGhpcy5fb3B0aW9ucy5uZXdsaW5lX2JldHdlZW5fcnVsZXMmJiF0aGlzLl9vdXRwdXQuanVzdF9hZGRlZF9ibGFua2xpbmUoKSYmIn0iIT09dGhpcy5faW5wdXQucGVlaygpJiZ0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCEwKSk6IjoiPT09dGhpcy5fY2g/IWYmJiFifHx0aGlzLl9pbnB1dC5sb29rQmFjaygiJiIpfHx0aGlzLmZvdW5kTmVzdGVkUHNldWRvQ2xhc3MoKXx8dGhpcy5faW5wdXQubG9va0JhY2soIigiKXx8d3x8MCE9PW0/KHRoaXMuX2lucHV0Lmxvb2tCYWNrKCIgIikmJih0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKSwiOiI9PT10aGlzLl9pbnB1dC5wZWVrKCk/KHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSx0aGlzLnByaW50X3N0cmluZygiOjoiKSk6dGhpcy5wcmludF9zdHJpbmcoIjoiKSk6KHRoaXMucHJpbnRfc3RyaW5nKCI6IiksZ3x8KGc9ITAsdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLmVhdFdoaXRlc3BhY2UoITApLHRoaXMuaW5kZW50KCkpKTonIic9PT10aGlzLl9jaHx8IiciPT09dGhpcy5fY2g/KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShyKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCt0aGlzLmVhdFN0cmluZyh0aGlzLl9jaCkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCkpOiI7Ij09PXRoaXMuX2NoPzA9PT1tPyhnJiYodGhpcy5vdXRkZW50KCksZz0hMSksdz0hMSxfPSExLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLCIvIiE9PXRoaXMuX2lucHV0LnBlZWsoKSYmdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpKToodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6IigiPT09dGhpcy5fY2g/dGhpcy5faW5wdXQubG9va0JhY2soInVybCIpPyh0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCksbSsrLHRoaXMuaW5kZW50KCksdGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLCIpIj09PXRoaXMuX2NofHwnIic9PT10aGlzLl9jaHx8IiciPT09dGhpcy5fY2g/dGhpcy5faW5wdXQuYmFjaygpOnRoaXMuX2NoJiYodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcoIikiKSksbSYmKG0tLSx0aGlzLm91dGRlbnQoKSkpKToodGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKHIpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSxtKyssdGhpcy5pbmRlbnQoKSk6IikiPT09dGhpcy5fY2g/KG0mJihtLS0sdGhpcy5vdXRkZW50KCkpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6IiwiPT09dGhpcy5fY2g/KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLCF0aGlzLl9vcHRpb25zLnNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lfHxnfHwwIT09bXx8X3x8dz90aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwOnRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSk6Ij4iIT09dGhpcy5fY2gmJiIrIiE9PXRoaXMuX2NoJiYifiIhPT10aGlzLl9jaHx8Z3x8MCE9PW0/Il0iPT09dGhpcy5fY2g/dGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpOiJbIj09PXRoaXMuX2NoPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UociksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpKToiPSI9PT10aGlzLl9jaD8odGhpcy5lYXRXaGl0ZXNwYWNlKCksdGhpcy5wcmludF9zdHJpbmcoIj0iKSxjLnRlc3QodGhpcy5fY2gpJiYodGhpcy5fY2g9IiIpKToiISIhPT10aGlzLl9jaHx8dGhpcy5faW5wdXQubG9va0JhY2soIlxcIik/KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShyKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCkpOih0aGlzLnByaW50X3N0cmluZygiICIpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6dGhpcy5fb3B0aW9ucy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj8odGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSx0aGlzLl9jaCYmYy50ZXN0KHRoaXMuX2NoKSYmKHRoaXMuX2NoPSIiKSk7cmV0dXJuIHRoaXMuX291dHB1dC5nZXRfY29kZSh0KX0sZS5leHBvcnRzLkJlYXV0aWZpZXI9cH0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNikuT3B0aW9ucztmdW5jdGlvbiBpKGUpe3IuY2FsbCh0aGlzLGUsImNzcyIpLHRoaXMuc2VsZWN0b3Jfc2VwYXJhdG9yX25ld2xpbmU9dGhpcy5fZ2V0X2Jvb2xlYW4oInNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lIiwhMCksdGhpcy5uZXdsaW5lX2JldHdlZW5fcnVsZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oIm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyIsITApO3ZhciB0PXRoaXMuX2dldF9ib29sZWFuKCJzcGFjZV9hcm91bmRfc2VsZWN0b3Jfc2VwYXJhdG9yIik7dGhpcy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj10aGlzLl9nZXRfYm9vbGVhbigic3BhY2VfYXJvdW5kX2NvbWJpbmF0b3IiKXx8dDt2YXIgbj10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoImJyYWNlX3N0eWxlIixbImNvbGxhcHNlIiwiZXhwYW5kIiwiZW5kLWV4cGFuZCIsIm5vbmUiLCJwcmVzZXJ2ZS1pbmxpbmUiXSk7dGhpcy5icmFjZV9zdHlsZT0iY29sbGFwc2UiO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKSJleHBhbmQiIT09bltpXT90aGlzLmJyYWNlX3N0eWxlPSJjb2xsYXBzZSI6dGhpcy5icmFjZV9zdHlsZT1uW2ldfWkucHJvdG90eXBlPW5ldyByLGUuZXhwb3J0cy5PcHRpb25zPWl9XSxQbz17fSxxbz1mdW5jdGlvbiBlKHQpe3ZhciBuPVBvW3RdO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG4uZXhwb3J0czt2YXIgcj1Qb1t0XT17ZXhwb3J0czp7fX07cmV0dXJuIE9vW3RdKHIsci5leHBvcnRzLGUpLHIuZXhwb3J0c30oMTUpO3ZhciBLbyxqbyxHbz1xbztmdW5jdGlvbiAkbyhlLHQsbil7dmFyIHI9ZS5nZXRUZXh0KCksaT0hMCxhPTAsbz1uLnRhYlNpemV8fDQ7aWYodCl7Zm9yKHZhciBzPWUub2Zmc2V0QXQodC5zdGFydCksbD1zO2w+MCYmWm8ocixsLTEpOylsLS07MD09PWx8fFFvKHIsbC0xKT9zPWw6bDxzJiYocz1sKzEpO2Zvcih2YXIgYz1lLm9mZnNldEF0KHQuZW5kKSxoPWM7aDxyLmxlbmd0aCYmWm8ocixoKTspaCsrOyhoPT09ci5sZW5ndGh8fFFvKHIsaCkpJiYoYz1oKSx0PVdyLmNyZWF0ZShlLnBvc2l0aW9uQXQocyksZS5wb3NpdGlvbkF0KGMpKTt2YXIgZD1yLnN1YnN0cmluZygwLHMpO2lmKG5ldyBSZWdFeHAoLy4qWzxdW14+XSokLykudGVzdChkKSlyZXR1cm5be3JhbmdlOnQsbmV3VGV4dDpyPXIuc3Vic3RyaW5nKHMsYyl9XTtpZihpPWM9PT1yLmxlbmd0aCxyPXIuc3Vic3RyaW5nKHMsYyksMCE9PXMpe3ZhciB1PWUub2Zmc2V0QXQoRHIuY3JlYXRlKHQuc3RhcnQubGluZSwwKSk7YT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dCxpPTAsYT1uLnRhYlNpemV8fDQ7Zm9yKDtyPGUubGVuZ3RoOyl7dmFyIG89ZS5jaGFyQXQocik7aWYoIiAiPT09bylpKys7ZWxzZXtpZigiXHQiIT09bylicmVhaztpKz1hfXIrK31yZXR1cm4gTWF0aC5mbG9vcihpL2EpfShlLmdldFRleHQoKSx1LG4pfX1lbHNlIHQ9V3IuY3JlYXRlKERyLmNyZWF0ZSgwLDApLGUucG9zaXRpb25BdChyLmxlbmd0aCkpO3ZhciBwPXtpbmRlbnRfc2l6ZTpvLGluZGVudF9jaGFyOm4uaW5zZXJ0U3BhY2VzPyIgIjoiXHQiLGluZGVudF9lbXB0eV9saW5lczpKbyhuLCJpbmRlbnRFbXB0eUxpbmVzIiwhMSksd3JhcF9saW5lX2xlbmd0aDpKbyhuLCJ3cmFwTGluZUxlbmd0aCIsMTIwKSx1bmZvcm1hdHRlZDpYbyhuLCJ1bmZvcm1hdHRlZCIsdm9pZCAwKSxjb250ZW50X3VuZm9ybWF0dGVkOlhvKG4sImNvbnRlbnRVbmZvcm1hdHRlZCIsdm9pZCAwKSxpbmRlbnRfaW5uZXJfaHRtbDpKbyhuLCJpbmRlbnRJbm5lckh0bWwiLCExKSxwcmVzZXJ2ZV9uZXdsaW5lczpKbyhuLCJwcmVzZXJ2ZU5ld0xpbmVzIiwhMCksbWF4X3ByZXNlcnZlX25ld2xpbmVzOkpvKG4sIm1heFByZXNlcnZlTmV3TGluZXMiLDMyNzg2KSxpbmRlbnRfaGFuZGxlYmFyczpKbyhuLCJpbmRlbnRIYW5kbGViYXJzIiwhMSksZW5kX3dpdGhfbmV3bGluZTppJiZKbyhuLCJlbmRXaXRoTmV3bGluZSIsITEpLGV4dHJhX2xpbmVyczpYbyhuLCJleHRyYUxpbmVycyIsdm9pZCAwKSx3cmFwX2F0dHJpYnV0ZXM6Sm8obiwid3JhcEF0dHJpYnV0ZXMiLCJhdXRvIiksd3JhcF9hdHRyaWJ1dGVzX2luZGVudF9zaXplOkpvKG4sIndyYXBBdHRyaWJ1dGVzSW5kZW50U2l6ZSIsdm9pZCAwKSxlb2w6IlxuIixpbmRlbnRfc2NyaXB0czpKbyhuLCJpbmRlbnRTY3JpcHRzIiwibm9ybWFsIiksdGVtcGxhdGluZzpZbyhuLCJhbGwiKSx1bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlcjpKbyhuLCJ1bmZvcm1hdHRlZENvbnRlbnREZWxpbWl0ZXIiLCIiKX0sbT1mdW5jdGlvbihlLHQpe3JldHVybiBLbyhlLHQsVm8sR28pfShyLnJlcGxhY2UoL15ccysvLCIiKSxwKTtpZihhPjApe3ZhciBmPW4uaW5zZXJ0U3BhY2VzP2ZvKCIgIixvKmEpOmZvKCJcdCIsYSk7bT1tLnNwbGl0KCJcbiIpLmpvaW4oIlxuIitmKSwwPT09dC5zdGFydC5jaGFyYWN0ZXImJihtPWYrbSl9cmV0dXJuW3tyYW5nZTp0LG5ld1RleHQ6bX1dfWZ1bmN0aW9uIEpvKGUsdCxuKXtpZihlJiZlLmhhc093blByb3BlcnR5KHQpKXt2YXIgcj1lW3RdO2lmKG51bGwhPT1yKXJldHVybiByfXJldHVybiBufWZ1bmN0aW9uIFhvKGUsdCxuKXt2YXIgcj1KbyhlLHQsbnVsbCk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiByP3IubGVuZ3RoPjA/ci5zcGxpdCgiLCIpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbSgpLnRvTG93ZXJDYXNlKCl9KSk6W106bn1mdW5jdGlvbiBZbyhlLHQpe3JldHVybiEwPT09Sm8oZSwidGVtcGxhdGluZyIsdCk/WyJhdXRvIl06WyJub25lIl19ZnVuY3Rpb24gUW8oZSx0KXtyZXR1cm4tMSE9PSJcclxuIi5pbmRleE9mKGUuY2hhckF0KHQpKX1mdW5jdGlvbiBabyhlLHQpe3JldHVybi0xIT09IiBcdCIuaW5kZXhPZihlLmNoYXJBdCh0KSl9IWZ1bmN0aW9uKCl7dmFyIGU9WywsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt0aGlzLl9fcGFyZW50PWUsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX19pbmRlbnRfY291bnQ9LTEsdGhpcy5fX2FsaWdubWVudF9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGV4PTAsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PTAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PS0xLHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD0wLHRoaXMuX19pdGVtcz1bXX1mdW5jdGlvbiBuKGUsdCl7dGhpcy5fX2NhY2hlPVsiIl0sdGhpcy5fX2luZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy5fX2luZGVudF9zdHJpbmc9ZS5pbmRlbnRfY2hhcixlLmluZGVudF93aXRoX3RhYnN8fCh0aGlzLl9faW5kZW50X3N0cmluZz1uZXcgQXJyYXkoZS5pbmRlbnRfc2l6ZSsxKS5qb2luKGUuaW5kZW50X2NoYXIpKSx0PXR8fCIiLGUuaW5kZW50X2xldmVsPjAmJih0PW5ldyBBcnJheShlLmluZGVudF9sZXZlbCsxKS5qb2luKHRoaXMuX19pbmRlbnRfc3RyaW5nKSksdGhpcy5fX2Jhc2Vfc3RyaW5nPXQsdGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aD10Lmxlbmd0aH1mdW5jdGlvbiByKGUscil7dGhpcy5fX2luZGVudF9jYWNoZT1uZXcgbihlLHIpLHRoaXMucmF3PSExLHRoaXMuX2VuZF93aXRoX25ld2xpbmU9ZS5lbmRfd2l0aF9uZXdsaW5lLHRoaXMuaW5kZW50X3NpemU9ZS5pbmRlbnRfc2l6ZSx0aGlzLndyYXBfbGluZV9sZW5ndGg9ZS53cmFwX2xpbmVfbGVuZ3RoLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPWUuaW5kZW50X2VtcHR5X2xpbmVzLHRoaXMuX19saW5lcz1bXSx0aGlzLnByZXZpb3VzX2xpbmU9bnVsbCx0aGlzLmN1cnJlbnRfbGluZT1udWxsLHRoaXMubmV4dF9saW5lPW5ldyB0KHRoaXMpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMSx0aGlzLl9fYWRkX291dHB1dGxpbmUoKX10LnByb3RvdHlwZS5jbG9uZV9lbXB0eT1mdW5jdGlvbigpe3ZhciBlPW5ldyB0KHRoaXMuX19wYXJlbnQpO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlfSx0LnByb3RvdHlwZS5pdGVtPWZ1bmN0aW9uKGUpe3JldHVybiBlPDA/dGhpcy5fX2l0ZW1zW3RoaXMuX19pdGVtcy5sZW5ndGgrZV06dGhpcy5fX2l0ZW1zW2VdfSx0LnByb3RvdHlwZS5oYXNfbWF0Y2g9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19pdGVtcy5sZW5ndGgtMTt0Pj0wO3QtLSlpZih0aGlzLl9faXRlbXNbdF0ubWF0Y2goZSkpcmV0dXJuITA7cmV0dXJuITF9LHQucHJvdG90eXBlLnNldF9pbmRlbnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmlzX2VtcHR5KCkmJih0aGlzLl9faW5kZW50X2NvdW50PWV8fDAsdGhpcy5fX2FsaWdubWVudF9jb3VudD10fHwwLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3NpemUodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSl9LHQucHJvdG90eXBlLl9zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuX19wYXJlbnQud3JhcF9saW5lX2xlbmd0aCYmKHRoaXMuX193cmFwX3BvaW50X2luZGV4PXRoaXMuX19pdGVtcy5sZW5ndGgsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PXRoaXMuX19jaGFyYWN0ZXJfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PXRoaXMuX19wYXJlbnQubmV4dF9saW5lLl9faW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2FsaWdubWVudF9jb3VudCl9LHQucHJvdG90eXBlLl9zaG91bGRfd3JhcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fd3JhcF9wb2ludF9pbmRleCYmdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJnRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2NoYXJhY3Rlcl9jb3VudH0sdC5wcm90b3R5cGUuX2FsbG93X3dyYXA9ZnVuY3Rpb24oKXtpZih0aGlzLl9zaG91bGRfd3JhcCgpKXt0aGlzLl9fcGFyZW50LmFkZF9uZXdfbGluZSgpO3ZhciBlPXRoaXMuX19wYXJlbnQuY3VycmVudF9saW5lO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudCksZS5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSh0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksdGhpcy5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSgwLHRoaXMuX193cmFwX3BvaW50X2luZGV4KSxlLl9fY2hhcmFjdGVyX2NvdW50Kz10aGlzLl9fY2hhcmFjdGVyX2NvdW50LXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50PXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCwiICI9PT1lLl9faXRlbXNbMF0mJihlLl9faXRlbXMuc3BsaWNlKDAsMSksZS5fX2NoYXJhY3Rlcl9jb3VudC09MSksITB9cmV0dXJuITF9LHQucHJvdG90eXBlLmlzX2VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9faXRlbXMubGVuZ3RofSx0LnByb3RvdHlwZS5sYXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKT9udWxsOnRoaXMuX19pdGVtc1t0aGlzLl9faXRlbXMubGVuZ3RoLTFdfSx0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUpe3RoaXMuX19pdGVtcy5wdXNoKGUpO3ZhciB0PWUubGFzdEluZGV4T2YoIlxuIik7LTEhPT10P3RoaXMuX19jaGFyYWN0ZXJfY291bnQ9ZS5sZW5ndGgtdDp0aGlzLl9fY2hhcmFjdGVyX2NvdW50Kz1lLmxlbmd0aH0sdC5wcm90b3R5cGUucG9wPWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHwoZT10aGlzLl9faXRlbXMucG9wKCksdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09ZS5sZW5ndGgpLGV9LHQucHJvdG90eXBlLl9yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5fX2luZGVudF9jb3VudD4wJiYodGhpcy5fX2luZGVudF9jb3VudC09MSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT10aGlzLl9fcGFyZW50LmluZGVudF9zaXplKX0sdC5wcm90b3R5cGUuX3JlbW92ZV93cmFwX2luZGVudD1mdW5jdGlvbigpe3RoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD4wJiYodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LT0xKX0sdC5wcm90b3R5cGUudHJpbT1mdW5jdGlvbigpe2Zvcig7IiAiPT09dGhpcy5sYXN0KCk7KXRoaXMuX19pdGVtcy5wb3AoKSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT0xfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmlzX2VtcHR5KCk/dGhpcy5fX3BhcmVudC5pbmRlbnRfZW1wdHlfbGluZXMmJihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCkpOihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlKz10aGlzLl9faXRlbXMuam9pbigiIikpLGV9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc2l6ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg7cmV0dXJuIHQ9dHx8MCxlPDAmJihuPTApLG4rPWUqdGhpcy5fX2luZGVudF9zaXplLG4rPXR9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2Jhc2Vfc3RyaW5nO3JldHVybiB0PXR8fDAsZTwwJiYoZT0wLG49IiIpLHQrPWUqdGhpcy5fX2luZGVudF9zaXplLHRoaXMuX19lbnN1cmVfY2FjaGUodCksbis9dGhpcy5fX2NhY2hlW3RdfSxuLnByb3RvdHlwZS5fX2Vuc3VyZV9jYWNoZT1mdW5jdGlvbihlKXtmb3IoO2U+PXRoaXMuX19jYWNoZS5sZW5ndGg7KXRoaXMuX19hZGRfY29sdW1uKCl9LG4ucHJvdG90eXBlLl9fYWRkX2NvbHVtbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX19jYWNoZS5sZW5ndGgsdD0wLG49IiI7dGhpcy5fX2luZGVudF9zaXplJiZlPj10aGlzLl9faW5kZW50X3NpemUmJihlLT0odD1NYXRoLmZsb29yKGUvdGhpcy5fX2luZGVudF9zaXplKSkqdGhpcy5fX2luZGVudF9zaXplLG49bmV3IEFycmF5KHQrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLGUmJihuKz1uZXcgQXJyYXkoZSsxKS5qb2luKCIgIikpLHRoaXMuX19jYWNoZS5wdXNoKG4pfSxyLnByb3RvdHlwZS5fX2FkZF9vdXRwdXRsaW5lPWZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuY3VycmVudF9saW5lLHRoaXMuY3VycmVudF9saW5lPXRoaXMubmV4dF9saW5lLmNsb25lX2VtcHR5KCksdGhpcy5fX2xpbmVzLnB1c2godGhpcy5jdXJyZW50X2xpbmUpfSxyLnByb3RvdHlwZS5nZXRfbGluZV9udW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2xpbmVzLmxlbmd0aH0sci5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3N0cmluZyhlLHQpfSxyLnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3NpemUoZSx0KX0sci5wcm90b3R5cGUuaXNfZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5wcmV2aW91c19saW5lJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSxyLnByb3RvdHlwZS5hZGRfbmV3X2xpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuISh0aGlzLmlzX2VtcHR5KCl8fCFlJiZ0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpKSYmKHRoaXMucmF3fHx0aGlzLl9fYWRkX291dHB1dGxpbmUoKSwhMCl9LHIucHJvdG90eXBlLmdldF9jb2RlPWZ1bmN0aW9uKGUpe3RoaXMudHJpbSghMCk7dmFyIHQ9dGhpcy5jdXJyZW50X2xpbmUucG9wKCk7dCYmKCJcbiI9PT10W3QubGVuZ3RoLTFdJiYodD10LnJlcGxhY2UoL1xuKyQvZywiIikpLHRoaXMuY3VycmVudF9saW5lLnB1c2godCkpLHRoaXMuX2VuZF93aXRoX25ld2xpbmUmJnRoaXMuX19hZGRfb3V0cHV0bGluZSgpO3ZhciBuPXRoaXMuX19saW5lcy5qb2luKCJcbiIpO3JldHVybiJcbiIhPT1lJiYobj1uLnJlcGxhY2UoL1tcbl0vZyxlKSksbn0sci5wcm90b3R5cGUuc2V0X3dyYXBfcG9pbnQ9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRfbGluZS5fc2V0X3dyYXBfcG9pbnQoKX0sci5wcm90b3R5cGUuc2V0X2luZGVudD1mdW5jdGlvbihlLHQpe3JldHVybiBlPWV8fDAsdD10fHwwLHRoaXMubmV4dF9saW5lLnNldF9pbmRlbnQoZSx0KSx0aGlzLl9fbGluZXMubGVuZ3RoPjE/KHRoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoZSx0KSwhMCk6KHRoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoKSwhMSl9LHIucHJvdG90eXBlLmFkZF9yYXdfdG9rZW49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLm5ld2xpbmVzO3QrKyl0aGlzLl9fYWRkX291dHB1dGxpbmUoKTt0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KC0xKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKGUud2hpdGVzcGFjZV9iZWZvcmUpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZS50ZXh0KSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9ITF9LHIucHJvdG90eXBlLmFkZF90b2tlbj1mdW5jdGlvbihlKXt0aGlzLl9fYWRkX3NwYWNlX2JlZm9yZV90b2tlbigpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZSksdGhpcy5zcGFjZV9iZWZvcmVfdG9rZW49ITEsdGhpcy5ub25fYnJlYWtpbmdfc3BhY2U9ITEsdGhpcy5wcmV2aW91c190b2tlbl93cmFwcGVkPXRoaXMuY3VycmVudF9saW5lLl9hbGxvd193cmFwKCl9LHIucHJvdG90eXBlLl9fYWRkX3NwYWNlX2JlZm9yZV90b2tlbj1mdW5jdGlvbigpe3RoaXMuc3BhY2VfYmVmb3JlX3Rva2VuJiYhdGhpcy5qdXN0X2FkZGVkX25ld2xpbmUoKSYmKHRoaXMubm9uX2JyZWFraW5nX3NwYWNlfHx0aGlzLnNldF93cmFwX3BvaW50KCksdGhpcy5jdXJyZW50X2xpbmUucHVzaCgiICIpKX0sci5wcm90b3R5cGUucmVtb3ZlX2luZGVudD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5fX2xpbmVzLmxlbmd0aDtlPHQ7KXRoaXMuX19saW5lc1tlXS5fcmVtb3ZlX2luZGVudCgpLGUrKzt0aGlzLmN1cnJlbnRfbGluZS5fcmVtb3ZlX3dyYXBfaW5kZW50KCl9LHIucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oZSl7Zm9yKGU9dm9pZCAwIT09ZSYmZSx0aGlzLmN1cnJlbnRfbGluZS50cmltKCk7ZSYmdGhpcy5fX2xpbmVzLmxlbmd0aD4xJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpOyl0aGlzLl9fbGluZXMucG9wKCksdGhpcy5jdXJyZW50X2xpbmU9dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMV0sdGhpcy5jdXJyZW50X2xpbmUudHJpbSgpO3RoaXMucHJldmlvdXNfbGluZT10aGlzLl9fbGluZXMubGVuZ3RoPjE/dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMl06bnVsbH0sci5wcm90b3R5cGUuanVzdF9hZGRlZF9uZXdsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCl9LHIucHJvdG90eXBlLmp1c3RfYWRkZWRfYmxhbmtsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKXx8dGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKSYmdGhpcy5wcmV2aW91c19saW5lLmlzX2VtcHR5KCl9LHIucHJvdG90eXBlLmVuc3VyZV9lbXB0eV9saW5lX2Fib3ZlPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciByPXRoaXMuX19saW5lcy5sZW5ndGgtMjtyPj0wOyl7dmFyIGk9dGhpcy5fX2xpbmVzW3JdO2lmKGkuaXNfZW1wdHkoKSlicmVhaztpZigwIT09aS5pdGVtKDApLmluZGV4T2YoZSkmJmkuaXRlbSgtMSkhPT1uKXt0aGlzLl9fbGluZXMuc3BsaWNlKHIrMSwwLG5ldyB0KHRoaXMpKSx0aGlzLnByZXZpb3VzX2xpbmU9dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMl07YnJlYWt9ci0tfX0sZS5leHBvcnRzLk91dHB1dD1yfSxmdW5jdGlvbihlKXtlLmV4cG9ydHMuVG9rZW49ZnVuY3Rpb24oZSx0LG4scil7dGhpcy50eXBlPWUsdGhpcy50ZXh0PXQsdGhpcy5jb21tZW50c19iZWZvcmU9bnVsbCx0aGlzLm5ld2xpbmVzPW58fDAsdGhpcy53aGl0ZXNwYWNlX2JlZm9yZT1yfHwiIix0aGlzLnBhcmVudD1udWxsLHRoaXMubmV4dD1udWxsLHRoaXMucHJldmlvdXM9bnVsbCx0aGlzLm9wZW5lZD1udWxsLHRoaXMuY2xvc2VkPW51bGwsdGhpcy5kaXJlY3RpdmVzPW51bGx9fSwsLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXt0aGlzLnJhd19vcHRpb25zPW4oZSx0KSx0aGlzLmRpc2FibGVkPXRoaXMuX2dldF9ib29sZWFuKCJkaXNhYmxlZCIpLHRoaXMuZW9sPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJlb2wiLCJhdXRvIiksdGhpcy5lbmRfd2l0aF9uZXdsaW5lPXRoaXMuX2dldF9ib29sZWFuKCJlbmRfd2l0aF9uZXdsaW5lIiksdGhpcy5pbmRlbnRfc2l6ZT10aGlzLl9nZXRfbnVtYmVyKCJpbmRlbnRfc2l6ZSIsNCksdGhpcy5pbmRlbnRfY2hhcj10aGlzLl9nZXRfY2hhcmFjdGVycygiaW5kZW50X2NoYXIiLCIgIiksdGhpcy5pbmRlbnRfbGV2ZWw9dGhpcy5fZ2V0X251bWJlcigiaW5kZW50X2xldmVsIiksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfYm9vbGVhbigicHJlc2VydmVfbmV3bGluZXMiLCEwKSx0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfbnVtYmVyKCJtYXhfcHJlc2VydmVfbmV3bGluZXMiLDMyNzg2KSx0aGlzLnByZXNlcnZlX25ld2xpbmVzfHwodGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9MCksdGhpcy5pbmRlbnRfd2l0aF90YWJzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfd2l0aF90YWJzIiwiXHQiPT09dGhpcy5pbmRlbnRfY2hhciksdGhpcy5pbmRlbnRfd2l0aF90YWJzJiYodGhpcy5pbmRlbnRfY2hhcj0iXHQiLDE9PT10aGlzLmluZGVudF9zaXplJiYodGhpcy5pbmRlbnRfc2l6ZT00KSksdGhpcy53cmFwX2xpbmVfbGVuZ3RoPXRoaXMuX2dldF9udW1iZXIoIndyYXBfbGluZV9sZW5ndGgiLHRoaXMuX2dldF9udW1iZXIoIm1heF9jaGFyIikpLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfZW1wdHlfbGluZXMiKSx0aGlzLnRlbXBsYXRpbmc9dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KCJ0ZW1wbGF0aW5nIixbImF1dG8iLCJub25lIiwiZGphbmdvIiwiZXJiIiwiaGFuZGxlYmFycyIsInBocCIsInNtYXJ0eSJdLFsiYXV0byJdKX1mdW5jdGlvbiBuKGUsdCl7dmFyIG4saT17fTtmb3IobiBpbiBlPXIoZSkpbiE9PXQmJihpW25dPWVbbl0pO2lmKHQmJmVbdF0pZm9yKG4gaW4gZVt0XSlpW25dPWVbdF1bbl07cmV0dXJuIGl9ZnVuY3Rpb24gcihlKXt2YXIgdCxuPXt9O2Zvcih0IGluIGUpe25bdC5yZXBsYWNlKC8tL2csIl8iKV09ZVt0XX1yZXR1cm4gbn10LnByb3RvdHlwZS5fZ2V0X2FycmF5PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXSxyPXR8fFtdO3JldHVybiJvYmplY3QiPT10eXBlb2Ygbj9udWxsIT09biYmImZ1bmN0aW9uIj09dHlwZW9mIG4uY29uY2F0JiYocj1uLmNvbmNhdCgpKToic3RyaW5nIj09dHlwZW9mIG4mJihyPW4uc3BsaXQoL1teYS16QS1aMC05X1wvXC1dKy8pKSxyfSx0LnByb3RvdHlwZS5fZ2V0X2Jvb2xlYW49ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhd19vcHRpb25zW2VdO3JldHVybiB2b2lkIDA9PT1uPyEhdDohIW59LHQucHJvdG90eXBlLl9nZXRfY2hhcmFjdGVycz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucmF3X29wdGlvbnNbZV0scj10fHwiIjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4mJihyPW4ucmVwbGFjZSgvXFxyLywiXHIiKS5yZXBsYWNlKC9cXG4vLCJcbiIpLnJlcGxhY2UoL1xcdC8sIlx0IikpLHJ9LHQucHJvdG90eXBlLl9nZXRfbnVtYmVyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXTt0PXBhcnNlSW50KHQsMTApLGlzTmFOKHQpJiYodD0wKTt2YXIgcj1wYXJzZUludChuLDEwKTtyZXR1cm4gaXNOYU4ocikmJihyPXQpLHJ9LHQucHJvdG90eXBlLl9nZXRfc2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoZSx0LG4pO2lmKDEhPT1yLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgT3B0aW9uIFZhbHVlOiBUaGUgb3B0aW9uICciK2UrIicgY2FuIG9ubHkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuIit0KyJcbllvdSBwYXNzZWQgaW46ICciK3RoaXMucmF3X29wdGlvbnNbZV0rIiciKTtyZXR1cm4gclswXX0sdC5wcm90b3R5cGUuX2dldF9zZWxlY3Rpb25fbGlzdD1mdW5jdGlvbihlLHQsbil7aWYoIXR8fDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlNlbGVjdGlvbiBsaXN0IGNhbm5vdCBiZSBlbXB0eS4iKTtpZihuPW58fFt0WzBdXSwhdGhpcy5faXNfdmFsaWRfc2VsZWN0aW9uKG4sdCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIERlZmF1bHQgVmFsdWUhIik7dmFyIHI9dGhpcy5fZ2V0X2FycmF5KGUsbik7aWYoIXRoaXMuX2lzX3ZhbGlkX3NlbGVjdGlvbihyLHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBPcHRpb24gVmFsdWU6IFRoZSBvcHRpb24gJyIrZSsiJyBjYW4gY29udGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuIit0KyJcbllvdSBwYXNzZWQgaW46ICciK3RoaXMucmF3X29wdGlvbnNbZV0rIiciKTtyZXR1cm4gcn0sdC5wcm90b3R5cGUuX2lzX3ZhbGlkX3NlbGVjdGlvbj1mdW5jdGlvbihlLHQpe3JldHVybiBlLmxlbmd0aCYmdC5sZW5ndGgmJiFlLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybi0xPT09dC5pbmRleE9mKGUpfSkpfSxlLmV4cG9ydHMuT3B0aW9ucz10LGUuZXhwb3J0cy5ub3JtYWxpemVPcHRzPXIsZS5leHBvcnRzLm1lcmdlT3B0cz1ufSwsZnVuY3Rpb24oZSl7dmFyIHQ9UmVnRXhwLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgic3RpY2t5Iik7ZnVuY3Rpb24gbihlKXt0aGlzLl9faW5wdXQ9ZXx8IiIsdGhpcy5fX2lucHV0X2xlbmd0aD10aGlzLl9faW5wdXQubGVuZ3RoLHRoaXMuX19wb3NpdGlvbj0wfW4ucHJvdG90eXBlLnJlc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcG9zaXRpb249MH0sbi5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX19wb3NpdGlvbj4wJiYodGhpcy5fX3Bvc2l0aW9uLT0xKX0sbi5wcm90b3R5cGUuaGFzTmV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fcG9zaXRpb248dGhpcy5fX2lucHV0X2xlbmd0aH0sbi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIHRoaXMuaGFzTmV4dCgpJiYoZT10aGlzLl9faW5wdXQuY2hhckF0KHRoaXMuX19wb3NpdGlvbiksdGhpcy5fX3Bvc2l0aW9uKz0xKSxlfSxuLnByb3RvdHlwZS5wZWVrPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7cmV0dXJuIGU9ZXx8MCwoZSs9dGhpcy5fX3Bvc2l0aW9uKT49MCYmZTx0aGlzLl9faW5wdXRfbGVuZ3RoJiYodD10aGlzLl9faW5wdXQuY2hhckF0KGUpKSx0fSxuLnByb3RvdHlwZS5fX21hdGNoPWZ1bmN0aW9uKGUsbil7ZS5sYXN0SW5kZXg9bjt2YXIgcj1lLmV4ZWModGhpcy5fX2lucHV0KTtyZXR1cm4hcnx8dCYmZS5zdGlja3l8fHIuaW5kZXghPT1uJiYocj1udWxsKSxyfSxuLnByb3RvdHlwZS50ZXN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9dHx8MCwodCs9dGhpcy5fX3Bvc2l0aW9uKT49MCYmdDx0aGlzLl9faW5wdXRfbGVuZ3RoJiYhIXRoaXMuX19tYXRjaChlLHQpfSxuLnByb3RvdHlwZS50ZXN0Q2hhcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucGVlayh0KTtyZXR1cm4gZS5sYXN0SW5kZXg9MCxudWxsIT09biYmZS50ZXN0KG4pfSxuLnByb3RvdHlwZS5tYXRjaD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fbWF0Y2goZSx0aGlzLl9fcG9zaXRpb24pO3JldHVybiB0P3RoaXMuX19wb3NpdGlvbis9dFswXS5sZW5ndGg6dD1udWxsLHR9LG4ucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9IiI7cmV0dXJuIGUmJihyPXRoaXMubWF0Y2goZSkpJiYoaSs9clswXSksIXR8fCFyJiZlfHwoaSs9dGhpcy5yZWFkVW50aWwodCxuKSksaX0sbi5wcm90b3R5cGUucmVhZFVudGlsPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj10aGlzLl9fcG9zaXRpb247ZS5sYXN0SW5kZXg9dGhpcy5fX3Bvc2l0aW9uO3ZhciBpPWUuZXhlYyh0aGlzLl9faW5wdXQpO3JldHVybiBpPyhyPWkuaW5kZXgsdCYmKHIrPWlbMF0ubGVuZ3RoKSk6cj10aGlzLl9faW5wdXRfbGVuZ3RoLG49dGhpcy5fX2lucHV0LnN1YnN0cmluZyh0aGlzLl9fcG9zaXRpb24sciksdGhpcy5fX3Bvc2l0aW9uPXIsbn0sbi5wcm90b3R5cGUucmVhZFVudGlsQWZ0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmVhZFVudGlsKGUsITApfSxuLnByb3RvdHlwZS5nZXRfcmVnZXhwPWZ1bmN0aW9uKGUsbil7dmFyIHI9bnVsbCxpPSJnIjtyZXR1cm4gbiYmdCYmKGk9InkiKSwic3RyaW5nIj09dHlwZW9mIGUmJiIiIT09ZT9yPW5ldyBSZWdFeHAoZSxpKTplJiYocj1uZXcgUmVnRXhwKGUuc291cmNlLGkpKSxyfSxuLnByb3RvdHlwZS5nZXRfbGl0ZXJhbF9yZWdleHA9ZnVuY3Rpb24oZSl7cmV0dXJuIFJlZ0V4cChlLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIikpfSxuLnByb3RvdHlwZS5wZWVrVW50aWxBZnRlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fcG9zaXRpb24sbj10aGlzLnJlYWRVbnRpbEFmdGVyKGUpO3JldHVybiB0aGlzLl9fcG9zaXRpb249dCxufSxuLnByb3RvdHlwZS5sb29rQmFjaz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fcG9zaXRpb24tMTtyZXR1cm4gdD49ZS5sZW5ndGgmJnRoaXMuX19pbnB1dC5zdWJzdHJpbmcodC1lLmxlbmd0aCx0KS50b0xvd2VyQ2FzZSgpPT09ZX0sZS5leHBvcnRzLklucHV0U2Nhbm5lcj1ufSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big4KS5JbnB1dFNjYW5uZXIsaT1uKDMpLlRva2VuLGE9bigxMCkuVG9rZW5TdHJlYW0sbz1uKDExKS5XaGl0ZXNwYWNlUGF0dGVybixzPXtTVEFSVDoiVEtfU1RBUlQiLFJBVzoiVEtfUkFXIixFT0Y6IlRLX0VPRiJ9LGw9ZnVuY3Rpb24oZSx0KXt0aGlzLl9pbnB1dD1uZXcgcihlKSx0aGlzLl9vcHRpb25zPXR8fHt9LHRoaXMuX190b2tlbnM9bnVsbCx0aGlzLl9wYXR0ZXJucz17fSx0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlPW5ldyBvKHRoaXMuX2lucHV0KX07bC5wcm90b3R5cGUudG9rZW5pemU9ZnVuY3Rpb24oKXt2YXIgZTt0aGlzLl9pbnB1dC5yZXN0YXJ0KCksdGhpcy5fX3Rva2Vucz1uZXcgYSx0aGlzLl9yZXNldCgpO2Zvcih2YXIgdD1uZXcgaShzLlNUQVJULCIiKSxuPW51bGwscj1bXSxvPW5ldyBhO3QudHlwZSE9PXMuRU9GOyl7Zm9yKGU9dGhpcy5fZ2V0X25leHRfdG9rZW4odCxuKTt0aGlzLl9pc19jb21tZW50KGUpOylvLmFkZChlKSxlPXRoaXMuX2dldF9uZXh0X3Rva2VuKHQsbik7by5pc0VtcHR5KCl8fChlLmNvbW1lbnRzX2JlZm9yZT1vLG89bmV3IGEpLGUucGFyZW50PW4sdGhpcy5faXNfb3BlbmluZyhlKT8oci5wdXNoKG4pLG49ZSk6biYmdGhpcy5faXNfY2xvc2luZyhlLG4pJiYoZS5vcGVuZWQ9bixuLmNsb3NlZD1lLG49ci5wb3AoKSxlLnBhcmVudD1uKSxlLnByZXZpb3VzPXQsdC5uZXh0PWUsdGhpcy5fX3Rva2Vucy5hZGQoZSksdD1lfXJldHVybiB0aGlzLl9fdG9rZW5zfSxsLnByb3RvdHlwZS5faXNfZmlyc3RfdG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3Rva2Vucy5pc0VtcHR5KCl9LGwucHJvdG90eXBlLl9yZXNldD1mdW5jdGlvbigpe30sbC5wcm90b3R5cGUuX2dldF9uZXh0X3Rva2VuPWZ1bmN0aW9uKGUsdCl7dGhpcy5fcmVhZFdoaXRlc3BhY2UoKTt2YXIgbj10aGlzLl9pbnB1dC5yZWFkKC8uKy9nKTtyZXR1cm4gbj90aGlzLl9jcmVhdGVfdG9rZW4ocy5SQVcsbik6dGhpcy5fY3JlYXRlX3Rva2VuKHMuRU9GLCIiKX0sbC5wcm90b3R5cGUuX2lzX2NvbW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuITF9LGwucHJvdG90eXBlLl9pc19vcGVuaW5nPWZ1bmN0aW9uKGUpe3JldHVybiExfSxsLnByb3RvdHlwZS5faXNfY2xvc2luZz1mdW5jdGlvbihlLHQpe3JldHVybiExfSxsLnByb3RvdHlwZS5fY3JlYXRlX3Rva2VuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBpKGUsdCx0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlLm5ld2xpbmVfY291bnQsdGhpcy5fcGF0dGVybnMud2hpdGVzcGFjZS53aGl0ZXNwYWNlX2JlZm9yZV90b2tlbil9LGwucHJvdG90eXBlLl9yZWFkV2hpdGVzcGFjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlLnJlYWQoKX0sZS5leHBvcnRzLlRva2VuaXplcj1sLGUuZXhwb3J0cy5UT0tFTj1zfSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3RoaXMuX190b2tlbnM9W10sdGhpcy5fX3Rva2Vuc19sZW5ndGg9dGhpcy5fX3Rva2Vucy5sZW5ndGgsdGhpcy5fX3Bvc2l0aW9uPTAsdGhpcy5fX3BhcmVudF90b2tlbj1lfXQucHJvdG90eXBlLnJlc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcG9zaXRpb249MH0sdC5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5fX3Rva2Vuc19sZW5ndGh9LHQucHJvdG90eXBlLmhhc05leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3Bvc2l0aW9uPHRoaXMuX190b2tlbnNfbGVuZ3RofSx0LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5oYXNOZXh0KCkmJihlPXRoaXMuX190b2tlbnNbdGhpcy5fX3Bvc2l0aW9uXSx0aGlzLl9fcG9zaXRpb24rPTEpLGV9LHQucHJvdG90eXBlLnBlZWs9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gZT1lfHwwLChlKz10aGlzLl9fcG9zaXRpb24pPj0wJiZlPHRoaXMuX190b2tlbnNfbGVuZ3RoJiYodD10aGlzLl9fdG9rZW5zW2VdKSx0fSx0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5fX3BhcmVudF90b2tlbiYmKGUucGFyZW50PXRoaXMuX19wYXJlbnRfdG9rZW4pLHRoaXMuX190b2tlbnMucHVzaChlKSx0aGlzLl9fdG9rZW5zX2xlbmd0aCs9MX0sZS5leHBvcnRzLlRva2VuU3RyZWFtPXR9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDEyKS5QYXR0ZXJuO2Z1bmN0aW9uIGkoZSx0KXtyLmNhbGwodGhpcyxlLHQpLHQ/dGhpcy5fbGluZV9yZWdleHA9dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCh0Ll9saW5lX3JlZ2V4cCk6dGhpcy5fX3NldF93aGl0ZXNwYWNlX3BhdHRlcm5zKCIiLCIiKSx0aGlzLm5ld2xpbmVfY291bnQ9MCx0aGlzLndoaXRlc3BhY2VfYmVmb3JlX3Rva2VuPSIifWkucHJvdG90eXBlPW5ldyByLGkucHJvdG90eXBlLl9fc2V0X3doaXRlc3BhY2VfcGF0dGVybnM9ZnVuY3Rpb24oZSx0KXtlKz0iXFx0ICIsdCs9IlxcblxcciIsdGhpcy5fbWF0Y2hfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKCJbIitlK3QrIl0rIiwhMCksdGhpcy5fbmV3bGluZV9yZWdleHA9dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCgiXFxyXFxufFsiK3QrIl0iKX0saS5wcm90b3R5cGUucmVhZD1mdW5jdGlvbigpe3RoaXMubmV3bGluZV9jb3VudD0wLHRoaXMud2hpdGVzcGFjZV9iZWZvcmVfdG9rZW49IiI7dmFyIGU9dGhpcy5faW5wdXQucmVhZCh0aGlzLl9tYXRjaF9wYXR0ZXJuKTtpZigiICI9PT1lKXRoaXMud2hpdGVzcGFjZV9iZWZvcmVfdG9rZW49IiAiO2Vsc2UgaWYoZSl7dmFyIHQ9dGhpcy5fX3NwbGl0KHRoaXMuX25ld2xpbmVfcmVnZXhwLGUpO3RoaXMubmV3bGluZV9jb3VudD10Lmxlbmd0aC0xLHRoaXMud2hpdGVzcGFjZV9iZWZvcmVfdG9rZW49dFt0aGlzLm5ld2xpbmVfY291bnRdfXJldHVybiBlfSxpLnByb3RvdHlwZS5tYXRjaGluZz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX2NyZWF0ZSgpO3JldHVybiBuLl9fc2V0X3doaXRlc3BhY2VfcGF0dGVybnMoZSx0KSxuLl91cGRhdGUoKSxufSxpLnByb3RvdHlwZS5fY3JlYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpKHRoaXMuX2lucHV0LHRoaXMpfSxpLnByb3RvdHlwZS5fX3NwbGl0PWZ1bmN0aW9uKGUsdCl7ZS5sYXN0SW5kZXg9MDtmb3IodmFyIG49MCxyPVtdLGk9ZS5leGVjKHQpO2k7KXIucHVzaCh0LnN1YnN0cmluZyhuLGkuaW5kZXgpKSxuPWkuaW5kZXgraVswXS5sZW5ndGgsaT1lLmV4ZWModCk7cmV0dXJuIG48dC5sZW5ndGg/ci5wdXNoKHQuc3Vic3RyaW5nKG4sdC5sZW5ndGgpKTpyLnB1c2goIiIpLHJ9LGUuZXhwb3J0cy5XaGl0ZXNwYWNlUGF0dGVybj1pfSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7dGhpcy5faW5wdXQ9ZSx0aGlzLl9zdGFydGluZ19wYXR0ZXJuPW51bGwsdGhpcy5fbWF0Y2hfcGF0dGVybj1udWxsLHRoaXMuX3VudGlsX3BhdHRlcm49bnVsbCx0aGlzLl91bnRpbF9hZnRlcj0hMSx0JiYodGhpcy5fc3RhcnRpbmdfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKHQuX3N0YXJ0aW5nX3BhdHRlcm4sITApLHRoaXMuX21hdGNoX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCh0Ll9tYXRjaF9wYXR0ZXJuLCEwKSx0aGlzLl91bnRpbF9wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAodC5fdW50aWxfcGF0dGVybiksdGhpcy5fdW50aWxfYWZ0ZXI9dC5fdW50aWxfYWZ0ZXIpfXQucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9pbnB1dC5yZWFkKHRoaXMuX3N0YXJ0aW5nX3BhdHRlcm4pO3JldHVybiB0aGlzLl9zdGFydGluZ19wYXR0ZXJuJiYhZXx8KGUrPXRoaXMuX2lucHV0LnJlYWQodGhpcy5fbWF0Y2hfcGF0dGVybix0aGlzLl91bnRpbF9wYXR0ZXJuLHRoaXMuX3VudGlsX2FmdGVyKSksZX0sdC5wcm90b3R5cGUucmVhZF9tYXRjaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbnB1dC5tYXRjaCh0aGlzLl9tYXRjaF9wYXR0ZXJuKX0sdC5wcm90b3R5cGUudW50aWxfYWZ0ZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX3VudGlsX2FmdGVyPSEwLHQuX3VudGlsX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cChlKSx0Ll91cGRhdGUoKSx0fSx0LnByb3RvdHlwZS51bnRpbD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fdW50aWxfYWZ0ZXI9ITEsdC5fdW50aWxfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKGUpLHQuX3VwZGF0ZSgpLHR9LHQucHJvdG90eXBlLnN0YXJ0aW5nX3dpdGg9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX3N0YXJ0aW5nX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cChlLCEwKSx0Ll91cGRhdGUoKSx0fSx0LnByb3RvdHlwZS5tYXRjaGluZz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fbWF0Y2hfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKGUsITApLHQuX3VwZGF0ZSgpLHR9LHQucHJvdG90eXBlLl9jcmVhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHQodGhpcy5faW5wdXQsdGhpcyl9LHQucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt9LGUuZXhwb3J0cy5QYXR0ZXJuPXR9LGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXtlPSJzdHJpbmciPT10eXBlb2YgZT9lOmUuc291cmNlLHQ9InN0cmluZyI9PXR5cGVvZiB0P3Q6dC5zb3VyY2UsdGhpcy5fX2RpcmVjdGl2ZXNfYmxvY2tfcGF0dGVybj1uZXcgUmVnRXhwKGUrLyBiZWF1dGlmeSggXHcrWzpdXHcrKSsgLy5zb3VyY2UrdCwiZyIpLHRoaXMuX19kaXJlY3RpdmVfcGF0dGVybj0vIChcdyspWzpdKFx3KykvZyx0aGlzLl9fZGlyZWN0aXZlc19lbmRfaWdub3JlX3BhdHRlcm49bmV3IFJlZ0V4cChlKy9cc2JlYXV0aWZ5XHNpZ25vcmU6ZW5kXHMvLnNvdXJjZSt0LCJnIil9dC5wcm90b3R5cGUuZ2V0X2RpcmVjdGl2ZXM9ZnVuY3Rpb24oZSl7aWYoIWUubWF0Y2godGhpcy5fX2RpcmVjdGl2ZXNfYmxvY2tfcGF0dGVybikpcmV0dXJuIG51bGw7dmFyIHQ9e307dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmxhc3RJbmRleD0wO2Zvcih2YXIgbj10aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4uZXhlYyhlKTtuOyl0W25bMV1dPW5bMl0sbj10aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4uZXhlYyhlKTtyZXR1cm4gdH0sdC5wcm90b3R5cGUucmVhZElnbm9yZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVhZFVudGlsQWZ0ZXIodGhpcy5fX2RpcmVjdGl2ZXNfZW5kX2lnbm9yZV9wYXR0ZXJuKX0sZS5leHBvcnRzLkRpcmVjdGl2ZXM9dH0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTIpLlBhdHRlcm4saT17ZGphbmdvOiExLGVyYjohMSxoYW5kbGViYXJzOiExLHBocDohMSxzbWFydHk6ITF9O2Z1bmN0aW9uIGEoZSx0KXtyLmNhbGwodGhpcyxlLHQpLHRoaXMuX190ZW1wbGF0ZV9wYXR0ZXJuPW51bGwsdGhpcy5fZGlzYWJsZWQ9T2JqZWN0LmFzc2lnbih7fSxpKSx0aGlzLl9leGNsdWRlZD1PYmplY3QuYXNzaWduKHt9LGkpLHQmJih0aGlzLl9fdGVtcGxhdGVfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKHQuX190ZW1wbGF0ZV9wYXR0ZXJuKSx0aGlzLl9leGNsdWRlZD1PYmplY3QuYXNzaWduKHRoaXMuX2V4Y2x1ZGVkLHQuX2V4Y2x1ZGVkKSx0aGlzLl9kaXNhYmxlZD1PYmplY3QuYXNzaWduKHRoaXMuX2Rpc2FibGVkLHQuX2Rpc2FibGVkKSk7dmFyIG49bmV3IHIoZSk7dGhpcy5fX3BhdHRlcm5zPXtoYW5kbGViYXJzX2NvbW1lbnQ6bi5zdGFydGluZ193aXRoKC97eyEtLS8pLnVudGlsX2FmdGVyKC8tLX19LyksaGFuZGxlYmFyc191bmVzY2FwZWQ6bi5zdGFydGluZ193aXRoKC97e3svKS51bnRpbF9hZnRlcigvfX19LyksaGFuZGxlYmFyczpuLnN0YXJ0aW5nX3dpdGgoL3t7LykudW50aWxfYWZ0ZXIoL319LykscGhwOm4uc3RhcnRpbmdfd2l0aCgvPFw/KD86Wz0gXXxwaHApLykudW50aWxfYWZ0ZXIoL1w/Pi8pLGVyYjpuLnN0YXJ0aW5nX3dpdGgoLzwlW14lXS8pLnVudGlsX2FmdGVyKC9bXiVdJT4vKSxkamFuZ286bi5zdGFydGluZ193aXRoKC97JS8pLnVudGlsX2FmdGVyKC8lfS8pLGRqYW5nb192YWx1ZTpuLnN0YXJ0aW5nX3dpdGgoL3t7LykudW50aWxfYWZ0ZXIoL319LyksZGphbmdvX2NvbW1lbnQ6bi5zdGFydGluZ193aXRoKC97Iy8pLnVudGlsX2FmdGVyKC8jfS8pLHNtYXJ0eTpuLnN0YXJ0aW5nX3dpdGgoL3soPz1bXn17XHNcbl0pLykudW50aWxfYWZ0ZXIoL1teXHNcbl19Lyksc21hcnR5X2NvbW1lbnQ6bi5zdGFydGluZ193aXRoKC97XCovKS51bnRpbF9hZnRlcigvXCp9Lyksc21hcnR5X2xpdGVyYWw6bi5zdGFydGluZ193aXRoKC97bGl0ZXJhbH0vKS51bnRpbF9hZnRlcigve1wvbGl0ZXJhbH0vKX19YS5wcm90b3R5cGU9bmV3IHIsYS5wcm90b3R5cGUuX2NyZWF0ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgYSh0aGlzLl9pbnB1dCx0aGlzKX0sYS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX19zZXRfdGVtcGxhdGVkX3BhdHRlcm4oKX0sYS5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fZGlzYWJsZWRbZV09ITAsdC5fdXBkYXRlKCksdH0sYS5wcm90b3R5cGUucmVhZF9vcHRpb25zPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2NyZWF0ZSgpO2Zvcih2YXIgbiBpbiBpKXQuX2Rpc2FibGVkW25dPS0xPT09ZS50ZW1wbGF0aW5nLmluZGV4T2Yobik7cmV0dXJuIHQuX3VwZGF0ZSgpLHR9LGEucHJvdG90eXBlLmV4Y2x1ZGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX2V4Y2x1ZGVkW2VdPSEwLHQuX3VwZGF0ZSgpLHR9LGEucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oKXt2YXIgZT0iIjtlPXRoaXMuX21hdGNoX3BhdHRlcm4/dGhpcy5faW5wdXQucmVhZCh0aGlzLl9zdGFydGluZ19wYXR0ZXJuKTp0aGlzLl9pbnB1dC5yZWFkKHRoaXMuX3N0YXJ0aW5nX3BhdHRlcm4sdGhpcy5fX3RlbXBsYXRlX3BhdHRlcm4pO2Zvcih2YXIgdD10aGlzLl9yZWFkX3RlbXBsYXRlKCk7dDspdGhpcy5fbWF0Y2hfcGF0dGVybj90Kz10aGlzLl9pbnB1dC5yZWFkKHRoaXMuX21hdGNoX3BhdHRlcm4pOnQrPXRoaXMuX2lucHV0LnJlYWRVbnRpbCh0aGlzLl9fdGVtcGxhdGVfcGF0dGVybiksZSs9dCx0PXRoaXMuX3JlYWRfdGVtcGxhdGUoKTtyZXR1cm4gdGhpcy5fdW50aWxfYWZ0ZXImJihlKz10aGlzLl9pbnB1dC5yZWFkVW50aWxBZnRlcih0aGlzLl91bnRpbF9wYXR0ZXJuKSksZX0sYS5wcm90b3R5cGUuX19zZXRfdGVtcGxhdGVkX3BhdHRlcm49ZnVuY3Rpb24oKXt2YXIgZT1bXTt0aGlzLl9kaXNhYmxlZC5waHB8fGUucHVzaCh0aGlzLl9fcGF0dGVybnMucGhwLl9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksdGhpcy5fZGlzYWJsZWQuaGFuZGxlYmFyc3x8ZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzLl9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksdGhpcy5fZGlzYWJsZWQuZXJifHxlLnB1c2godGhpcy5fX3BhdHRlcm5zLmVyYi5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpLHRoaXMuX2Rpc2FibGVkLmRqYW5nb3x8KGUucHVzaCh0aGlzLl9fcGF0dGVybnMuZGphbmdvLl9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5kamFuZ29fdmFsdWUuX3N0YXJ0aW5nX3BhdHRlcm4uc291cmNlKSxlLnB1c2godGhpcy5fX3BhdHRlcm5zLmRqYW5nb19jb21tZW50Ll9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSkpLHRoaXMuX2Rpc2FibGVkLnNtYXJ0eXx8ZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5zbWFydHkuX3N0YXJ0aW5nX3BhdHRlcm4uc291cmNlKSx0aGlzLl91bnRpbF9wYXR0ZXJuJiZlLnB1c2godGhpcy5fdW50aWxfcGF0dGVybi5zb3VyY2UpLHRoaXMuX190ZW1wbGF0ZV9wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAoIig/OiIrZS5qb2luKCJ8IikrIikiKX0sYS5wcm90b3R5cGUuX3JlYWRfdGVtcGxhdGU9ZnVuY3Rpb24oKXt2YXIgZT0iIix0PXRoaXMuX2lucHV0LnBlZWsoKTtpZigiPCI9PT10KXt2YXIgbj10aGlzLl9pbnB1dC5wZWVrKDEpO3RoaXMuX2Rpc2FibGVkLnBocHx8dGhpcy5fZXhjbHVkZWQucGhwfHwiPyIhPT1ufHwoZT1lfHx0aGlzLl9fcGF0dGVybnMucGhwLnJlYWQoKSksdGhpcy5fZGlzYWJsZWQuZXJifHx0aGlzLl9leGNsdWRlZC5lcmJ8fCIlIiE9PW58fChlPWV8fHRoaXMuX19wYXR0ZXJucy5lcmIucmVhZCgpKX1lbHNlInsiPT09dCYmKHRoaXMuX2Rpc2FibGVkLmhhbmRsZWJhcnN8fHRoaXMuX2V4Y2x1ZGVkLmhhbmRsZWJhcnN8fChlPShlPShlPWV8fHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzX2NvbW1lbnQucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLmhhbmRsZWJhcnNfdW5lc2NhcGVkLnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzLnJlYWQoKSksdGhpcy5fZGlzYWJsZWQuZGphbmdvfHwodGhpcy5fZXhjbHVkZWQuZGphbmdvfHx0aGlzLl9leGNsdWRlZC5oYW5kbGViYXJzfHwoZT1lfHx0aGlzLl9fcGF0dGVybnMuZGphbmdvX3ZhbHVlLnJlYWQoKSksdGhpcy5fZXhjbHVkZWQuZGphbmdvfHwoZT0oZT1lfHx0aGlzLl9fcGF0dGVybnMuZGphbmdvX2NvbW1lbnQucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLmRqYW5nby5yZWFkKCkpKSx0aGlzLl9kaXNhYmxlZC5zbWFydHl8fHRoaXMuX2Rpc2FibGVkLmRqYW5nbyYmdGhpcy5fZGlzYWJsZWQuaGFuZGxlYmFycyYmKGU9KGU9KGU9ZXx8dGhpcy5fX3BhdHRlcm5zLnNtYXJ0eV9jb21tZW50LnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5zbWFydHlfbGl0ZXJhbC5yZWFkKCkpfHx0aGlzLl9fcGF0dGVybnMuc21hcnR5LnJlYWQoKSkpO3JldHVybiBlfSxlLmV4cG9ydHMuVGVtcGxhdGFibGVQYXR0ZXJuPWF9LCwsLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDE5KS5CZWF1dGlmaWVyLGk9bigyMCkuT3B0aW9ucztlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4saSl7cmV0dXJuIG5ldyByKGUsdCxuLGkpLmJlYXV0aWZ5KCl9LGUuZXhwb3J0cy5kZWZhdWx0T3B0aW9ucz1mdW5jdGlvbigpe3JldHVybiBuZXcgaX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDIwKS5PcHRpb25zLGk9bigyKS5PdXRwdXQsYT1uKDIxKS5Ub2tlbml6ZXIsbz1uKDIxKS5UT0tFTixzPS9cclxufFtcclxuXS8sbD0vXHJcbnxbXHJcbl0vZyxjPWZ1bmN0aW9uKGUsdCl7dGhpcy5pbmRlbnRfbGV2ZWw9MCx0aGlzLmFsaWdubWVudF9zaXplPTAsdGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9ZS5tYXhfcHJlc2VydmVfbmV3bGluZXMsdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcz1lLnByZXNlcnZlX25ld2xpbmVzLHRoaXMuX291dHB1dD1uZXcgaShlLHQpfTtjLnByb3RvdHlwZS5jdXJyZW50X2xpbmVfaGFzX21hdGNoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9vdXRwdXQuY3VycmVudF9saW5lLmhhc19tYXRjaChlKX0sYy5wcm90b3R5cGUuc2V0X3NwYWNlX2JlZm9yZV90b2tlbj1mdW5jdGlvbihlLHQpe3RoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ZSx0aGlzLl9vdXRwdXQubm9uX2JyZWFraW5nX3NwYWNlPXR9LGMucHJvdG90eXBlLnNldF93cmFwX3BvaW50PWZ1bmN0aW9uKCl7dGhpcy5fb3V0cHV0LnNldF9pbmRlbnQodGhpcy5pbmRlbnRfbGV2ZWwsdGhpcy5hbGlnbm1lbnRfc2l6ZSksdGhpcy5fb3V0cHV0LnNldF93cmFwX3BvaW50KCl9LGMucHJvdG90eXBlLmFkZF9yYXdfdG9rZW49ZnVuY3Rpb24oZSl7dGhpcy5fb3V0cHV0LmFkZF9yYXdfdG9rZW4oZSl9LGMucHJvdG90eXBlLnByaW50X3ByZXNlcnZlZF9uZXdsaW5lcz1mdW5jdGlvbihlKXt2YXIgdD0wO2UudHlwZSE9PW8uVEVYVCYmZS5wcmV2aW91cy50eXBlIT09by5URVhUJiYodD1lLm5ld2xpbmVzPzE6MCksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcyYmKHQ9ZS5uZXdsaW5lczx0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcysxP2UubmV3bGluZXM6dGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXMrMSk7Zm9yKHZhciBuPTA7bjx0O24rKyl0aGlzLnByaW50X25ld2xpbmUobj4wKTtyZXR1cm4gMCE9PXR9LGMucHJvdG90eXBlLnRyYXZlcnNlX3doaXRlc3BhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuISghZS53aGl0ZXNwYWNlX2JlZm9yZSYmIWUubmV3bGluZXMpJiYodGhpcy5wcmludF9wcmVzZXJ2ZWRfbmV3bGluZXMoZSl8fCh0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKSwhMCl9LGMucHJvdG90eXBlLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3V0cHV0LnByZXZpb3VzX3Rva2VuX3dyYXBwZWR9LGMucHJvdG90eXBlLnByaW50X25ld2xpbmU9ZnVuY3Rpb24oZSl7dGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZShlKX0sYy5wcm90b3R5cGUucHJpbnRfdG9rZW49ZnVuY3Rpb24oZSl7ZS50ZXh0JiYodGhpcy5fb3V0cHV0LnNldF9pbmRlbnQodGhpcy5pbmRlbnRfbGV2ZWwsdGhpcy5hbGlnbm1lbnRfc2l6ZSksdGhpcy5fb3V0cHV0LmFkZF90b2tlbihlLnRleHQpKX0sYy5wcm90b3R5cGUuaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5pbmRlbnRfbGV2ZWwrK30sYy5wcm90b3R5cGUuZ2V0X2Z1bGxfaW5kZW50PWZ1bmN0aW9uKGUpe3JldHVybihlPXRoaXMuaW5kZW50X2xldmVsKyhlfHwwKSk8MT8iIjp0aGlzLl9vdXRwdXQuZ2V0X2luZGVudF9zdHJpbmcoZSl9O3ZhciBoPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbCxyPW51bGw7cmV0dXJuIHQuY2xvc2VkPygic2NyaXB0Ij09PWU/bj0idGV4dC9qYXZhc2NyaXB0Ijoic3R5bGUiPT09ZSYmKG49InRleHQvY3NzIiksbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9bnVsbCxuPWUubmV4dDtuLnR5cGUhPT1vLkVPRiYmZS5jbG9zZWQhPT1uOyl7aWYobi50eXBlPT09by5BVFRSSUJVVEUmJiJ0eXBlIj09PW4udGV4dCl7bi5uZXh0JiZuLm5leHQudHlwZT09PW8uRVFVQUxTJiZuLm5leHQubmV4dCYmbi5uZXh0Lm5leHQudHlwZT09PW8uVkFMVUUmJih0PW4ubmV4dC5uZXh0LnRleHQpO2JyZWFrfW49bi5uZXh0fXJldHVybiB0fSh0KXx8bixuLnNlYXJjaCgidGV4dC9jc3MiKT4tMT9yPSJjc3MiOm4uc2VhcmNoKC9tb2R1bGV8KCh0ZXh0fGFwcGxpY2F0aW9ufGRvam8pXC8oeC0pPyhqYXZhc2NyaXB0fGVjbWFzY3JpcHR8anNjcmlwdHxsaXZlc2NyaXB0fChsZFwrKT9qc29ufG1ldGhvZHxhc3BlY3QpKS8pPi0xP3I9ImphdmFzY3JpcHQiOm4uc2VhcmNoKC8odGV4dHxhcHBsaWNhdGlvbnxkb2pvKVwvKHgtKT8oaHRtbCkvKT4tMT9yPSJodG1sIjpuLnNlYXJjaCgvdGVzdFwvbnVsbC8pPi0xJiYocj0ibnVsbCIpLHIpOm51bGx9O2Z1bmN0aW9uIGQoZSx0KXtyZXR1cm4tMSE9PXQuaW5kZXhPZihlKX1mdW5jdGlvbiB1KGUsdCxuKXt0aGlzLnBhcmVudD1lfHxudWxsLHRoaXMudGFnPXQ/dC50YWdfbmFtZToiIix0aGlzLmluZGVudF9sZXZlbD1ufHwwLHRoaXMucGFyc2VyX3Rva2VuPXR8fG51bGx9ZnVuY3Rpb24gcChlKXt0aGlzLl9wcmludGVyPWUsdGhpcy5fY3VycmVudF9mcmFtZT1udWxsfWZ1bmN0aW9uIG0oZSx0LG4saSl7dGhpcy5fc291cmNlX3RleHQ9ZXx8IiIsdD10fHx7fSx0aGlzLl9qc19iZWF1dGlmeT1uLHRoaXMuX2Nzc19iZWF1dGlmeT1pLHRoaXMuX3RhZ19zdGFjaz1udWxsO3ZhciBhPW5ldyByKHQsImh0bWwiKTt0aGlzLl9vcHRpb25zPWEsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlPSJmb3JjZSI9PT10aGlzLl9vcHRpb25zLndyYXBfYXR0cmlidXRlcy5zdWJzdHIoMCwiZm9yY2UiLmxlbmd0aCksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2V4cGFuZF9tdWx0aWxpbmU9ImZvcmNlLWV4cGFuZC1tdWx0aWxpbmUiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2FsaWduZWQ9ImZvcmNlLWFsaWduZWQiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2FsaWduZWRfbXVsdGlwbGU9ImFsaWduZWQtbXVsdGlwbGUiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlPSJwcmVzZXJ2ZSI9PT10aGlzLl9vcHRpb25zLndyYXBfYXR0cmlidXRlcy5zdWJzdHIoMCwicHJlc2VydmUiLmxlbmd0aCksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlX2FsaWduZWQ9InByZXNlcnZlLWFsaWduZWQiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXN9cC5wcm90b3R5cGUuZ2V0X3BhcnNlcl90b2tlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJyZW50X2ZyYW1lP3RoaXMuX2N1cnJlbnRfZnJhbWUucGFyc2VyX3Rva2VuOm51bGx9LHAucHJvdG90eXBlLnJlY29yZF90YWc9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHUodGhpcy5fY3VycmVudF9mcmFtZSxlLHRoaXMuX3ByaW50ZXIuaW5kZW50X2xldmVsKTt0aGlzLl9jdXJyZW50X2ZyYW1lPXR9LHAucHJvdG90eXBlLl90cnlfcG9wX2ZyYW1lPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7cmV0dXJuIGUmJih0PWUucGFyc2VyX3Rva2VuLHRoaXMuX3ByaW50ZXIuaW5kZW50X2xldmVsPWUuaW5kZW50X2xldmVsLHRoaXMuX2N1cnJlbnRfZnJhbWU9ZS5wYXJlbnQpLHR9LHAucHJvdG90eXBlLl9nZXRfZnJhbWU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy5fY3VycmVudF9mcmFtZTtuJiYtMT09PWUuaW5kZXhPZihuLnRhZyk7KXtpZih0JiYtMSE9PXQuaW5kZXhPZihuLnRhZykpe249bnVsbDticmVha31uPW4ucGFyZW50fXJldHVybiBufSxwLnByb3RvdHlwZS50cnlfcG9wPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fZ2V0X2ZyYW1lKFtlXSx0KTtyZXR1cm4gdGhpcy5fdHJ5X3BvcF9mcmFtZShuKX0scC5wcm90b3R5cGUuaW5kZW50X3RvX3RhZz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9nZXRfZnJhbWUoZSk7dCYmKHRoaXMuX3ByaW50ZXIuaW5kZW50X2xldmVsPXQuaW5kZW50X2xldmVsKX0sbS5wcm90b3R5cGUuYmVhdXRpZnk9ZnVuY3Rpb24oKXtpZih0aGlzLl9vcHRpb25zLmRpc2FibGVkKXJldHVybiB0aGlzLl9zb3VyY2VfdGV4dDt2YXIgZT10aGlzLl9zb3VyY2VfdGV4dCx0PXRoaXMuX29wdGlvbnMuZW9sOyJhdXRvIj09PXRoaXMuX29wdGlvbnMuZW9sJiYodD0iXG4iLGUmJnMudGVzdChlKSYmKHQ9ZS5tYXRjaChzKVswXSkpO3ZhciBuPShlPWUucmVwbGFjZShsLCJcbiIpKS5tYXRjaCgvXltcdCBdKi8pWzBdLHI9e3RleHQ6IiIsdHlwZToiIn0saT1uZXcgZixoPW5ldyBjKHRoaXMuX29wdGlvbnMsbiksZD1uZXcgYShlLHRoaXMuX29wdGlvbnMpLnRva2VuaXplKCk7dGhpcy5fdGFnX3N0YWNrPW5ldyBwKGgpO2Zvcih2YXIgdT1udWxsLG09ZC5uZXh0KCk7bS50eXBlIT09by5FT0Y7KW0udHlwZT09PW8uVEFHX09QRU58fG0udHlwZT09PW8uQ09NTUVOVD9pPXU9dGhpcy5faGFuZGxlX3RhZ19vcGVuKGgsbSxpLHIpOm0udHlwZT09PW8uQVRUUklCVVRFfHxtLnR5cGU9PT1vLkVRVUFMU3x8bS50eXBlPT09by5WQUxVRXx8bS50eXBlPT09by5URVhUJiYhaS50YWdfY29tcGxldGU/dT10aGlzLl9oYW5kbGVfaW5zaWRlX3RhZyhoLG0saSxkKTptLnR5cGU9PT1vLlRBR19DTE9TRT91PXRoaXMuX2hhbmRsZV90YWdfY2xvc2UoaCxtLGkpOm0udHlwZT09PW8uVEVYVD91PXRoaXMuX2hhbmRsZV90ZXh0KGgsbSxpKTpoLmFkZF9yYXdfdG9rZW4obSkscj11LG09ZC5uZXh0KCk7cmV0dXJuIGguX291dHB1dC5nZXRfY29kZSh0KX0sbS5wcm90b3R5cGUuX2hhbmRsZV90YWdfY2xvc2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXt0ZXh0OnQudGV4dCx0eXBlOnQudHlwZX07cmV0dXJuIGUuYWxpZ25tZW50X3NpemU9MCxuLnRhZ19jb21wbGV0ZT0hMCxlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW4odC5uZXdsaW5lc3x8IiIhPT10LndoaXRlc3BhY2VfYmVmb3JlLCEwKSxuLmlzX3VuZm9ybWF0dGVkP2UuYWRkX3Jhd190b2tlbih0KTooIjwiPT09bi50YWdfc3RhcnRfY2hhciYmKGUuc2V0X3NwYWNlX2JlZm9yZV90b2tlbigiLyI9PT10LnRleHRbMF0sITApLHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZV9leHBhbmRfbXVsdGlsaW5lJiZuLmhhc193cmFwcGVkX2F0dHJzJiZlLnByaW50X25ld2xpbmUoITEpKSxlLnByaW50X3Rva2VuKHQpKSwhbi5pbmRlbnRfY29udGVudHx8bi5pc191bmZvcm1hdHRlZHx8bi5pc19jb250ZW50X3VuZm9ybWF0dGVkfHwoZS5pbmRlbnQoKSxuLmluZGVudF9jb250ZW50PSExKSxuLmlzX2lubGluZV9lbGVtZW50fHxuLmlzX3VuZm9ybWF0dGVkfHxuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fGUuc2V0X3dyYXBfcG9pbnQoKSxyfSxtLnByb3RvdHlwZS5faGFuZGxlX2luc2lkZV90YWc9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9bi5oYXNfd3JhcHBlZF9hdHRycyxhPXt0ZXh0OnQudGV4dCx0eXBlOnQudHlwZX07aWYoZS5zZXRfc3BhY2VfYmVmb3JlX3Rva2VuKHQubmV3bGluZXN8fCIiIT09dC53aGl0ZXNwYWNlX2JlZm9yZSwhMCksbi5pc191bmZvcm1hdHRlZCllLmFkZF9yYXdfdG9rZW4odCk7ZWxzZSBpZigieyI9PT1uLnRhZ19zdGFydF9jaGFyJiZ0LnR5cGU9PT1vLlRFWFQpZS5wcmludF9wcmVzZXJ2ZWRfbmV3bGluZXModCk/KHQubmV3bGluZXM9MCxlLmFkZF9yYXdfdG9rZW4odCkpOmUucHJpbnRfdG9rZW4odCk7ZWxzZXtpZih0LnR5cGU9PT1vLkFUVFJJQlVURT8oZS5zZXRfc3BhY2VfYmVmb3JlX3Rva2VuKCEwKSxuLmF0dHJfY291bnQrPTEpOih0LnR5cGU9PT1vLkVRVUFMU3x8dC50eXBlPT09by5WQUxVRSYmdC5wcmV2aW91cy50eXBlPT09by5FUVVBTFMpJiZlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW4oITEpLHQudHlwZT09PW8uQVRUUklCVVRFJiYiPCI9PT1uLnRhZ19zdGFydF9jaGFyJiYoKHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19wcmVzZXJ2ZXx8dGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlX2FsaWduZWQpJiYoZS50cmF2ZXJzZV93aGl0ZXNwYWNlKHQpLGk9aXx8MCE9PXQubmV3bGluZXMpLHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZSkpe3ZhciBzPW4uYXR0cl9jb3VudD4xO2lmKHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZV9leHBhbmRfbXVsdGlsaW5lJiYxPT09bi5hdHRyX2NvdW50KXt2YXIgbCxjPSEwLGg9MDtkb3tpZigobD1yLnBlZWsoaCkpLnR5cGU9PT1vLkFUVFJJQlVURSl7Yz0hMTticmVha31oKz0xfXdoaWxlKGg8NCYmbC50eXBlIT09by5FT0YmJmwudHlwZSE9PW8uVEFHX0NMT1NFKTtzPSFjfXMmJihlLnByaW50X25ld2xpbmUoITEpLGk9ITApfWUucHJpbnRfdG9rZW4odCksaT1pfHxlLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQoKSxuLmhhc193cmFwcGVkX2F0dHJzPWl9cmV0dXJuIGF9LG0ucHJvdG90eXBlLl9oYW5kbGVfdGV4dD1mdW5jdGlvbihlLHQsbil7dmFyIHI9e3RleHQ6dC50ZXh0LHR5cGU6IlRLX0NPTlRFTlQifTtyZXR1cm4gbi5jdXN0b21fYmVhdXRpZmllcl9uYW1lP3RoaXMuX3ByaW50X2N1c3RvbV9iZWF0aWZpZXJfdGV4dChlLHQsbik6bi5pc191bmZvcm1hdHRlZHx8bi5pc19jb250ZW50X3VuZm9ybWF0dGVkP2UuYWRkX3Jhd190b2tlbih0KTooZS50cmF2ZXJzZV93aGl0ZXNwYWNlKHQpLGUucHJpbnRfdG9rZW4odCkpLHJ9LG0ucHJvdG90eXBlLl9wcmludF9jdXN0b21fYmVhdGlmaWVyX3RleHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7aWYoIiIhPT10LnRleHQpe3ZhciBpLGE9dC50ZXh0LG89MSxzPSIiLGw9IiI7ImphdmFzY3JpcHQiPT09bi5jdXN0b21fYmVhdXRpZmllcl9uYW1lJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fanNfYmVhdXRpZnk/aT10aGlzLl9qc19iZWF1dGlmeToiY3NzIj09PW4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZSYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX2Nzc19iZWF1dGlmeT9pPXRoaXMuX2Nzc19iZWF1dGlmeToiaHRtbCI9PT1uLmN1c3RvbV9iZWF1dGlmaWVyX25hbWUmJihpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBtKGUsdCxyLl9qc19iZWF1dGlmeSxyLl9jc3NfYmVhdXRpZnkpLmJlYXV0aWZ5KCl9KSwia2VlcCI9PT10aGlzLl9vcHRpb25zLmluZGVudF9zY3JpcHRzP289MDoic2VwYXJhdGUiPT09dGhpcy5fb3B0aW9ucy5pbmRlbnRfc2NyaXB0cyYmKG89LWUuaW5kZW50X2xldmVsKTt2YXIgYz1lLmdldF9mdWxsX2luZGVudChvKTtpZihhPWEucmVwbGFjZSgvXG5bIFx0XSokLywiIiksImh0bWwiIT09bi5jdXN0b21fYmVhdXRpZmllcl9uYW1lJiYiPCI9PT1hWzBdJiZhLm1hdGNoKC9eKDwhLS18PCFcW0NEQVRBXFspLykpe3ZhciBoPS9eKDwhLS1bXlxuXSp8PCFcW0NEQVRBXFspKFxuPykoWyBcdFxuXSopKFtcc1xTXSopKC0tPnxdXT4pJC8uZXhlYyhhKTtpZighaClyZXR1cm4gdm9pZCBlLmFkZF9yYXdfdG9rZW4odCk7cz1jK2hbMV0rIlxuIixhPWhbNF0saFs1XSYmKGw9YytoWzVdKSxhPWEucmVwbGFjZSgvXG5bIFx0XSokLywiIiksKGhbMl18fC0xIT09aFszXS5pbmRleE9mKCJcbiIpKSYmKGg9aFszXS5tYXRjaCgvWyBcdF0rJC8pKSYmKHQud2hpdGVzcGFjZV9iZWZvcmU9aFswXSl9aWYoYSlpZihpKXt2YXIgZD1mdW5jdGlvbigpe3RoaXMuZW9sPSJcbiJ9O2QucHJvdG90eXBlPXRoaXMuX29wdGlvbnMucmF3X29wdGlvbnMsYT1pKGMrYSxuZXcgZCl9ZWxzZXt2YXIgdT10LndoaXRlc3BhY2VfYmVmb3JlO3UmJihhPWEucmVwbGFjZShuZXcgUmVnRXhwKCJcbigiK3UrIik/IiwiZyIpLCJcbiIpKSxhPWMrYS5yZXBsYWNlKC9cbi9nLCJcbiIrYyl9cyYmKGE9YT9zK2ErIlxuIitsOnMrbCksZS5wcmludF9uZXdsaW5lKCExKSxhJiYodC50ZXh0PWEsdC53aGl0ZXNwYWNlX2JlZm9yZT0iIix0Lm5ld2xpbmVzPTAsZS5hZGRfcmF3X3Rva2VuKHQpLGUucHJpbnRfbmV3bGluZSghMCkpfX0sbS5wcm90b3R5cGUuX2hhbmRsZV90YWdfb3Blbj1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT10aGlzLl9nZXRfdGFnX29wZW5fdG9rZW4odCk7cmV0dXJuIW4uaXNfdW5mb3JtYXR0ZWQmJiFuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fG4uaXNfZW1wdHlfZWxlbWVudHx8dC50eXBlIT09by5UQUdfT1BFTnx8MCE9PXQudGV4dC5pbmRleE9mKCI8LyIpPyhlLnRyYXZlcnNlX3doaXRlc3BhY2UodCksdGhpcy5fc2V0X3RhZ19wb3NpdGlvbihlLHQsaSxuLHIpLGkuaXNfaW5saW5lX2VsZW1lbnR8fGUuc2V0X3dyYXBfcG9pbnQoKSxlLnByaW50X3Rva2VuKHQpKTooZS5hZGRfcmF3X3Rva2VuKHQpLGkuc3RhcnRfdGFnX3Rva2VuPXRoaXMuX3RhZ19zdGFjay50cnlfcG9wKGkudGFnX25hbWUpKSwodGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2FsaWduZWR8fHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19hbGlnbmVkX211bHRpcGxlfHx0aGlzLl9pc193cmFwX2F0dHJpYnV0ZXNfcHJlc2VydmVfYWxpZ25lZCkmJihpLmFsaWdubWVudF9zaXplPXQudGV4dC5sZW5ndGgrMSksaS50YWdfY29tcGxldGV8fGkuaXNfdW5mb3JtYXR0ZWR8fChlLmFsaWdubWVudF9zaXplPWkuYWxpZ25tZW50X3NpemUpLGl9O3ZhciBmPWZ1bmN0aW9uKGUsdCl7dmFyIG47KHRoaXMucGFyZW50PWV8fG51bGwsdGhpcy50ZXh0PSIiLHRoaXMudHlwZT0iVEtfVEFHX09QRU4iLHRoaXMudGFnX25hbWU9IiIsdGhpcy5pc19pbmxpbmVfZWxlbWVudD0hMSx0aGlzLmlzX3VuZm9ybWF0dGVkPSExLHRoaXMuaXNfY29udGVudF91bmZvcm1hdHRlZD0hMSx0aGlzLmlzX2VtcHR5X2VsZW1lbnQ9ITEsdGhpcy5pc19zdGFydF90YWc9ITEsdGhpcy5pc19lbmRfdGFnPSExLHRoaXMuaW5kZW50X2NvbnRlbnQ9ITEsdGhpcy5tdWx0aWxpbmVfY29udGVudD0hMSx0aGlzLmN1c3RvbV9iZWF1dGlmaWVyX25hbWU9bnVsbCx0aGlzLnN0YXJ0X3RhZ190b2tlbj1udWxsLHRoaXMuYXR0cl9jb3VudD0wLHRoaXMuaGFzX3dyYXBwZWRfYXR0cnM9ITEsdGhpcy5hbGlnbm1lbnRfc2l6ZT0wLHRoaXMudGFnX2NvbXBsZXRlPSExLHRoaXMudGFnX3N0YXJ0X2NoYXI9IiIsdGhpcy50YWdfY2hlY2s9IiIsdCk/KHRoaXMudGFnX3N0YXJ0X2NoYXI9dC50ZXh0WzBdLHRoaXMudGV4dD10LnRleHQsIjwiPT09dGhpcy50YWdfc3RhcnRfY2hhcj8obj10LnRleHQubWF0Y2goL148KFteXHM+XSopLyksdGhpcy50YWdfY2hlY2s9bj9uWzFdOiIiKToobj10LnRleHQubWF0Y2goL157eyg/OltcXl18I1wqPyk/KFteXHN9XSspLyksdGhpcy50YWdfY2hlY2s9bj9uWzFdOiIiLCJ7eyM+Ij09PXQudGV4dCYmIj4iPT09dGhpcy50YWdfY2hlY2smJm51bGwhPT10Lm5leHQmJih0aGlzLnRhZ19jaGVjaz10Lm5leHQudGV4dCkpLHRoaXMudGFnX2NoZWNrPXRoaXMudGFnX2NoZWNrLnRvTG93ZXJDYXNlKCksdC50eXBlPT09by5DT01NRU5UJiYodGhpcy50YWdfY29tcGxldGU9ITApLHRoaXMuaXNfc3RhcnRfdGFnPSIvIiE9PXRoaXMudGFnX2NoZWNrLmNoYXJBdCgwKSx0aGlzLnRhZ19uYW1lPXRoaXMuaXNfc3RhcnRfdGFnP3RoaXMudGFnX2NoZWNrOnRoaXMudGFnX2NoZWNrLnN1YnN0cigxKSx0aGlzLmlzX2VuZF90YWc9IXRoaXMuaXNfc3RhcnRfdGFnfHx0LmNsb3NlZCYmIi8+Ij09PXQuY2xvc2VkLnRleHQsdGhpcy5pc19lbmRfdGFnPXRoaXMuaXNfZW5kX3RhZ3x8InsiPT09dGhpcy50YWdfc3RhcnRfY2hhciYmKHRoaXMudGV4dC5sZW5ndGg8M3x8L1teI1xeXS8udGVzdCh0aGlzLnRleHQuY2hhckF0KDIpKSkpOnRoaXMudGFnX2NvbXBsZXRlPSEwfTttLnByb3RvdHlwZS5fZ2V0X3RhZ19vcGVuX3Rva2VuPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBmKHRoaXMuX3RhZ19zdGFjay5nZXRfcGFyc2VyX3Rva2VuKCksZSk7cmV0dXJuIHQuYWxpZ25tZW50X3NpemU9dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXNfaW5kZW50X3NpemUsdC5pc19lbmRfdGFnPXQuaXNfZW5kX3RhZ3x8ZCh0LnRhZ19jaGVjayx0aGlzLl9vcHRpb25zLnZvaWRfZWxlbWVudHMpLHQuaXNfZW1wdHlfZWxlbWVudD10LnRhZ19jb21wbGV0ZXx8dC5pc19zdGFydF90YWcmJnQuaXNfZW5kX3RhZyx0LmlzX3VuZm9ybWF0dGVkPSF0LnRhZ19jb21wbGV0ZSYmZCh0LnRhZ19jaGVjayx0aGlzLl9vcHRpb25zLnVuZm9ybWF0dGVkKSx0LmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWQ9IXQuaXNfZW1wdHlfZWxlbWVudCYmZCh0LnRhZ19jaGVjayx0aGlzLl9vcHRpb25zLmNvbnRlbnRfdW5mb3JtYXR0ZWQpLHQuaXNfaW5saW5lX2VsZW1lbnQ9ZCh0LnRhZ19uYW1lLHRoaXMuX29wdGlvbnMuaW5saW5lKXx8InsiPT09dC50YWdfc3RhcnRfY2hhcix0fSxtLnByb3RvdHlwZS5fc2V0X3RhZ19wb3NpdGlvbj1mdW5jdGlvbihlLHQsbixyLGkpe2lmKG4uaXNfZW1wdHlfZWxlbWVudHx8KG4uaXNfZW5kX3RhZz9uLnN0YXJ0X3RhZ190b2tlbj10aGlzLl90YWdfc3RhY2sudHJ5X3BvcChuLnRhZ19uYW1lKToodGhpcy5fZG9fb3B0aW9uYWxfZW5kX2VsZW1lbnQobikmJihuLmlzX2lubGluZV9lbGVtZW50fHxlLnByaW50X25ld2xpbmUoITEpKSx0aGlzLl90YWdfc3RhY2sucmVjb3JkX3RhZyhuKSwic2NyaXB0IiE9PW4udGFnX25hbWUmJiJzdHlsZSIhPT1uLnRhZ19uYW1lfHxuLmlzX3VuZm9ybWF0dGVkfHxuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fChuLmN1c3RvbV9iZWF1dGlmaWVyX25hbWU9aChuLnRhZ19jaGVjayx0KSkpKSxkKG4udGFnX2NoZWNrLHRoaXMuX29wdGlvbnMuZXh0cmFfbGluZXJzKSYmKGUucHJpbnRfbmV3bGluZSghMSksZS5fb3V0cHV0Lmp1c3RfYWRkZWRfYmxhbmtsaW5lKCl8fGUucHJpbnRfbmV3bGluZSghMCkpLG4uaXNfZW1wdHlfZWxlbWVudCl7aWYoInsiPT09bi50YWdfc3RhcnRfY2hhciYmImVsc2UiPT09bi50YWdfY2hlY2spdGhpcy5fdGFnX3N0YWNrLmluZGVudF90b190YWcoWyJpZiIsInVubGVzcyIsImVhY2giXSksbi5pbmRlbnRfY29udGVudD0hMCxlLmN1cnJlbnRfbGluZV9oYXNfbWF0Y2goL3t7I2lmLyl8fGUucHJpbnRfbmV3bGluZSghMSk7IiEtLSI9PT1uLnRhZ19uYW1lJiZpLnR5cGU9PT1vLlRBR19DTE9TRSYmci5pc19lbmRfdGFnJiYtMT09PW4udGV4dC5pbmRleE9mKCJcbiIpfHwobi5pc19pbmxpbmVfZWxlbWVudHx8bi5pc191bmZvcm1hdHRlZHx8ZS5wcmludF9uZXdsaW5lKCExKSx0aGlzLl9jYWxjbHVhdGVfcGFyZW50X211bHRpbGluZShlLG4pKX1lbHNlIGlmKG4uaXNfZW5kX3RhZyl7dmFyIGE9ITE7YT0oYT1uLnN0YXJ0X3RhZ190b2tlbiYmbi5zdGFydF90YWdfdG9rZW4ubXVsdGlsaW5lX2NvbnRlbnQpfHwhbi5pc19pbmxpbmVfZWxlbWVudCYmIShyLmlzX2lubGluZV9lbGVtZW50fHxyLmlzX3VuZm9ybWF0dGVkKSYmIShpLnR5cGU9PT1vLlRBR19DTE9TRSYmbi5zdGFydF90YWdfdG9rZW49PT1yKSYmIlRLX0NPTlRFTlQiIT09aS50eXBlLChuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fG4uaXNfdW5mb3JtYXR0ZWQpJiYoYT0hMSksYSYmZS5wcmludF9uZXdsaW5lKCExKX1lbHNlIG4uaW5kZW50X2NvbnRlbnQ9IW4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZSwiPCI9PT1uLnRhZ19zdGFydF9jaGFyJiYoImh0bWwiPT09bi50YWdfbmFtZT9uLmluZGVudF9jb250ZW50PXRoaXMuX29wdGlvbnMuaW5kZW50X2lubmVyX2h0bWw6ImhlYWQiPT09bi50YWdfbmFtZT9uLmluZGVudF9jb250ZW50PXRoaXMuX29wdGlvbnMuaW5kZW50X2hlYWRfaW5uZXJfaHRtbDoiYm9keSI9PT1uLnRhZ19uYW1lJiYobi5pbmRlbnRfY29udGVudD10aGlzLl9vcHRpb25zLmluZGVudF9ib2R5X2lubmVyX2h0bWwpKSxuLmlzX2lubGluZV9lbGVtZW50fHxuLmlzX3VuZm9ybWF0dGVkfHwiVEtfQ09OVEVOVCI9PT1pLnR5cGUmJiFuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fGUucHJpbnRfbmV3bGluZSghMSksdGhpcy5fY2FsY2x1YXRlX3BhcmVudF9tdWx0aWxpbmUoZSxuKX0sbS5wcm90b3R5cGUuX2NhbGNsdWF0ZV9wYXJlbnRfbXVsdGlsaW5lPWZ1bmN0aW9uKGUsdCl7IXQucGFyZW50fHwhZS5fb3V0cHV0Lmp1c3RfYWRkZWRfbmV3bGluZSgpfHwodC5pc19pbmxpbmVfZWxlbWVudHx8dC5pc191bmZvcm1hdHRlZCkmJnQucGFyZW50LmlzX2lubGluZV9lbGVtZW50fHwodC5wYXJlbnQubXVsdGlsaW5lX2NvbnRlbnQ9ITApfTt2YXIgZz1bImFkZHJlc3MiLCJhcnRpY2xlIiwiYXNpZGUiLCJibG9ja3F1b3RlIiwiZGV0YWlscyIsImRpdiIsImRsIiwiZmllbGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9vdGVyIiwiZm9ybSIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWRlciIsImhyIiwibWFpbiIsIm5hdiIsIm9sIiwicCIsInByZSIsInNlY3Rpb24iLCJ0YWJsZSIsInVsIl0sYj1bImEiLCJhdWRpbyIsImRlbCIsImlucyIsIm1hcCIsIm5vc2NyaXB0IiwidmlkZW8iXTttLnByb3RvdHlwZS5fZG9fb3B0aW9uYWxfZW5kX2VsZW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtpZighZS5pc19lbXB0eV9lbGVtZW50JiZlLmlzX3N0YXJ0X3RhZyYmZS5wYXJlbnQpe2lmKCJib2R5Ij09PWUudGFnX25hbWUpdD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiaGVhZCIpO2Vsc2UgaWYoImxpIj09PWUudGFnX25hbWUpdD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgibGkiLFsib2wiLCJ1bCJdKTtlbHNlIGlmKCJkZCI9PT1lLnRhZ19uYW1lfHwiZHQiPT09ZS50YWdfbmFtZSl0PSh0PXR8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJkdCIsWyJkbCJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJkZCIsWyJkbCJdKTtlbHNlIGlmKCJwIj09PWUucGFyZW50LnRhZ19uYW1lJiYtMSE9PWcuaW5kZXhPZihlLnRhZ19uYW1lKSl7dmFyIG49ZS5wYXJlbnQucGFyZW50O24mJi0xIT09Yi5pbmRleE9mKG4udGFnX25hbWUpfHwodD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgicCIpKX1lbHNlInJwIj09PWUudGFnX25hbWV8fCJydCI9PT1lLnRhZ19uYW1lP3Q9KHQ9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInJ0IixbInJ1YnkiLCJydGMiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgicnAiLFsicnVieSIsInJ0YyJdKToib3B0Z3JvdXAiPT09ZS50YWdfbmFtZT90PXR8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJvcHRncm91cCIsWyJzZWxlY3QiXSk6Im9wdGlvbiI9PT1lLnRhZ19uYW1lP3Q9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoIm9wdGlvbiIsWyJzZWxlY3QiLCJkYXRhbGlzdCIsIm9wdGdyb3VwIl0pOiJjb2xncm91cCI9PT1lLnRhZ19uYW1lP3Q9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNhcHRpb24iLFsidGFibGUiXSk6InRoZWFkIj09PWUudGFnX25hbWU/dD0odD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiY2FwdGlvbiIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjb2xncm91cCIsWyJ0YWJsZSJdKToidGJvZHkiPT09ZS50YWdfbmFtZXx8InRmb290Ij09PWUudGFnX25hbWU/dD0odD0odD0odD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiY2FwdGlvbiIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjb2xncm91cCIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJ0aGVhZCIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJ0Ym9keSIsWyJ0YWJsZSJdKToidHIiPT09ZS50YWdfbmFtZT90PSh0PSh0PXR8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjYXB0aW9uIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNvbGdyb3VwIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInRyIixbInRhYmxlIiwidGhlYWQiLCJ0Ym9keSIsInRmb290Il0pOiJ0aCIhPT1lLnRhZ19uYW1lJiYidGQiIT09ZS50YWdfbmFtZXx8KHQ9KHQ9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInRkIixbInRhYmxlIiwidGhlYWQiLCJ0Ym9keSIsInRmb290IiwidHIiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgidGgiLFsidGFibGUiLCJ0aGVhZCIsInRib2R5IiwidGZvb3QiLCJ0ciJdKSk7cmV0dXJuIGUucGFyZW50PXRoaXMuX3RhZ19zdGFjay5nZXRfcGFyc2VyX3Rva2VuKCksdH19LGUuZXhwb3J0cy5CZWF1dGlmaWVyPW19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDYpLk9wdGlvbnM7ZnVuY3Rpb24gaShlKXtyLmNhbGwodGhpcyxlLCJodG1sIiksMT09PXRoaXMudGVtcGxhdGluZy5sZW5ndGgmJiJhdXRvIj09PXRoaXMudGVtcGxhdGluZ1swXSYmKHRoaXMudGVtcGxhdGluZz1bImRqYW5nbyIsImVyYiIsImhhbmRsZWJhcnMiLCJwaHAiXSksdGhpcy5pbmRlbnRfaW5uZXJfaHRtbD10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X2lubmVyX2h0bWwiKSx0aGlzLmluZGVudF9ib2R5X2lubmVyX2h0bWw9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9ib2R5X2lubmVyX2h0bWwiLCEwKSx0aGlzLmluZGVudF9oZWFkX2lubmVyX2h0bWw9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9oZWFkX2lubmVyX2h0bWwiLCEwKSx0aGlzLmluZGVudF9oYW5kbGViYXJzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfaGFuZGxlYmFycyIsITApLHRoaXMud3JhcF9hdHRyaWJ1dGVzPXRoaXMuX2dldF9zZWxlY3Rpb24oIndyYXBfYXR0cmlidXRlcyIsWyJhdXRvIiwiZm9yY2UiLCJmb3JjZS1hbGlnbmVkIiwiZm9yY2UtZXhwYW5kLW11bHRpbGluZSIsImFsaWduZWQtbXVsdGlwbGUiLCJwcmVzZXJ2ZSIsInByZXNlcnZlLWFsaWduZWQiXSksdGhpcy53cmFwX2F0dHJpYnV0ZXNfaW5kZW50X3NpemU9dGhpcy5fZ2V0X251bWJlcigid3JhcF9hdHRyaWJ1dGVzX2luZGVudF9zaXplIix0aGlzLmluZGVudF9zaXplKSx0aGlzLmV4dHJhX2xpbmVycz10aGlzLl9nZXRfYXJyYXkoImV4dHJhX2xpbmVycyIsWyJoZWFkIiwiYm9keSIsIi9odG1sIl0pLHRoaXMuaW5saW5lPXRoaXMuX2dldF9hcnJheSgiaW5saW5lIixbImEiLCJhYmJyIiwiYXJlYSIsImF1ZGlvIiwiYiIsImJkaSIsImJkbyIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2l0ZSIsImNvZGUiLCJkYXRhIiwiZGF0YWxpc3QiLCJkZWwiLCJkZm4iLCJlbSIsImVtYmVkIiwiaSIsImlmcmFtZSIsImltZyIsImlucHV0IiwiaW5zIiwia2JkIiwia2V5Z2VuIiwibGFiZWwiLCJtYXAiLCJtYXJrIiwibWF0aCIsIm1ldGVyIiwibm9zY3JpcHQiLCJvYmplY3QiLCJvdXRwdXQiLCJwcm9ncmVzcyIsInEiLCJydWJ5IiwicyIsInNhbXAiLCJzZWxlY3QiLCJzbWFsbCIsInNwYW4iLCJzdHJvbmciLCJzdWIiLCJzdXAiLCJzdmciLCJ0ZW1wbGF0ZSIsInRleHRhcmVhIiwidGltZSIsInUiLCJ2YXIiLCJ2aWRlbyIsIndiciIsInRleHQiLCJhY3JvbnltIiwiYmlnIiwic3RyaWtlIiwidHQiXSksdGhpcy52b2lkX2VsZW1lbnRzPXRoaXMuX2dldF9hcnJheSgidm9pZF9lbGVtZW50cyIsWyJhcmVhIiwiYmFzZSIsImJyIiwiY29sIiwiZW1iZWQiLCJociIsImltZyIsImlucHV0Iiwia2V5Z2VuIiwibGluayIsIm1lbnVpdGVtIiwibWV0YSIsInBhcmFtIiwic291cmNlIiwidHJhY2siLCJ3YnIiLCIhZG9jdHlwZSIsIj94bWwiLCJiYXNlZm9udCIsImlzaW5kZXgiXSksdGhpcy51bmZvcm1hdHRlZD10aGlzLl9nZXRfYXJyYXkoInVuZm9ybWF0dGVkIixbXSksdGhpcy5jb250ZW50X3VuZm9ybWF0dGVkPXRoaXMuX2dldF9hcnJheSgiY29udGVudF91bmZvcm1hdHRlZCIsWyJwcmUiLCJ0ZXh0YXJlYSJdKSx0aGlzLnVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJ1bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlciIpLHRoaXMuaW5kZW50X3NjcmlwdHM9dGhpcy5fZ2V0X3NlbGVjdGlvbigiaW5kZW50X3NjcmlwdHMiLFsibm9ybWFsIiwia2VlcCIsInNlcGFyYXRlIl0pfWkucHJvdG90eXBlPW5ldyByLGUuZXhwb3J0cy5PcHRpb25zPWl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDkpLlRva2VuaXplcixpPW4oOSkuVE9LRU4sYT1uKDEzKS5EaXJlY3RpdmVzLG89bigxNCkuVGVtcGxhdGFibGVQYXR0ZXJuLHM9bigxMikuUGF0dGVybixsPXtUQUdfT1BFTjoiVEtfVEFHX09QRU4iLFRBR19DTE9TRToiVEtfVEFHX0NMT1NFIixBVFRSSUJVVEU6IlRLX0FUVFJJQlVURSIsRVFVQUxTOiJUS19FUVVBTFMiLFZBTFVFOiJUS19WQUxVRSIsQ09NTUVOVDoiVEtfQ09NTUVOVCIsVEVYVDoiVEtfVEVYVCIsVU5LTk9XTjoiVEtfVU5LTk9XTiIsU1RBUlQ6aS5TVEFSVCxSQVc6aS5SQVcsRU9GOmkuRU9GfSxjPW5ldyBhKC88XCEtLS8sLy0tPi8pLGg9ZnVuY3Rpb24oZSx0KXtyLmNhbGwodGhpcyxlLHQpLHRoaXMuX2N1cnJlbnRfdGFnX25hbWU9IiI7dmFyIG49bmV3IG8odGhpcy5faW5wdXQpLnJlYWRfb3B0aW9ucyh0aGlzLl9vcHRpb25zKSxpPW5ldyBzKHRoaXMuX2lucHV0KTtpZih0aGlzLl9fcGF0dGVybnM9e3dvcmQ6bi51bnRpbCgvW1xuXHJcdCA8XS8pLHNpbmdsZV9xdW90ZTpuLnVudGlsX2FmdGVyKC8nLyksZG91YmxlX3F1b3RlOm4udW50aWxfYWZ0ZXIoLyIvKSxhdHRyaWJ1dGU6bi51bnRpbCgvW1xuXHJcdCA9Pl18XC8+LyksZWxlbWVudF9uYW1lOm4udW50aWwoL1tcblxyXHQgPlwvXS8pLGhhbmRsZWJhcnNfY29tbWVudDppLnN0YXJ0aW5nX3dpdGgoL3t7IS0tLykudW50aWxfYWZ0ZXIoLy0tfX0vKSxoYW5kbGViYXJzOmkuc3RhcnRpbmdfd2l0aCgve3svKS51bnRpbF9hZnRlcigvfX0vKSxoYW5kbGViYXJzX29wZW46aS51bnRpbCgvW1xuXHJcdCB9XS8pLGhhbmRsZWJhcnNfcmF3X2Nsb3NlOmkudW50aWwoL319LyksY29tbWVudDppLnN0YXJ0aW5nX3dpdGgoLzwhLS0vKS51bnRpbF9hZnRlcigvLS0+LyksY2RhdGE6aS5zdGFydGluZ193aXRoKC88IVxbQ0RBVEFcWy8pLnVudGlsX2FmdGVyKC9dXT4vKSxjb25kaXRpb25hbF9jb21tZW50Omkuc3RhcnRpbmdfd2l0aCgvPCFcWy8pLnVudGlsX2FmdGVyKC9dPi8pLHByb2Nlc3Npbmc6aS5zdGFydGluZ193aXRoKC88XD8vKS51bnRpbF9hZnRlcigvXD8+Lyl9LHRoaXMuX29wdGlvbnMuaW5kZW50X2hhbmRsZWJhcnMmJih0aGlzLl9fcGF0dGVybnMud29yZD10aGlzLl9fcGF0dGVybnMud29yZC5leGNsdWRlKCJoYW5kbGViYXJzIikpLHRoaXMuX3VuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyPW51bGwsdGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlcil7dmFyIGE9dGhpcy5faW5wdXQuZ2V0X2xpdGVyYWxfcmVnZXhwKHRoaXMuX29wdGlvbnMudW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXIpO3RoaXMuX19wYXR0ZXJucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlcj1pLm1hdGNoaW5nKGEpLnVudGlsX2FmdGVyKGEpfX07KGgucHJvdG90eXBlPW5ldyByKS5faXNfY29tbWVudD1mdW5jdGlvbihlKXtyZXR1cm4hMX0saC5wcm90b3R5cGUuX2lzX29wZW5pbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09PWwuVEFHX09QRU59LGgucHJvdG90eXBlLl9pc19jbG9zaW5nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudHlwZT09PWwuVEFHX0NMT1NFJiZ0JiYoKCI+Ij09PWUudGV4dHx8Ii8+Ij09PWUudGV4dCkmJiI8Ij09PXQudGV4dFswXXx8In19Ij09PWUudGV4dCYmInsiPT09dC50ZXh0WzBdJiYieyI9PT10LnRleHRbMV0pfSxoLnByb3RvdHlwZS5fcmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLl9jdXJyZW50X3RhZ19uYW1lPSIifSxoLnByb3RvdHlwZS5fZ2V0X25leHRfdG9rZW49ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsO3RoaXMuX3JlYWRXaGl0ZXNwYWNlKCk7dmFyIHI9dGhpcy5faW5wdXQucGVlaygpO3JldHVybiBudWxsPT09cj90aGlzLl9jcmVhdGVfdG9rZW4obC5FT0YsIiIpOm49KG49KG49KG49KG49KG49KG49KG49KG49bnx8dGhpcy5fcmVhZF9vcGVuX2hhbmRsZWJhcnMocix0KSl8fHRoaXMuX3JlYWRfYXR0cmlidXRlKHIsZSx0KSl8fHRoaXMuX3JlYWRfY2xvc2Uocix0KSl8fHRoaXMuX3JlYWRfcmF3X2NvbnRlbnQocixlLHQpKXx8dGhpcy5fcmVhZF9jb250ZW50X3dvcmQocikpfHx0aGlzLl9yZWFkX2NvbW1lbnRfb3JfY2RhdGEocikpfHx0aGlzLl9yZWFkX3Byb2Nlc3NpbmcocikpfHx0aGlzLl9yZWFkX29wZW4ocix0KSl8fHRoaXMuX2NyZWF0ZV90b2tlbihsLlVOS05PV04sdGhpcy5faW5wdXQubmV4dCgpKX0saC5wcm90b3R5cGUuX3JlYWRfY29tbWVudF9vcl9jZGF0YT1mdW5jdGlvbihlKXt2YXIgdD1udWxsLG49bnVsbCxyPW51bGw7IjwiPT09ZSYmKCIhIj09PXRoaXMuX2lucHV0LnBlZWsoMSkmJigobj10aGlzLl9fcGF0dGVybnMuY29tbWVudC5yZWFkKCkpPyhyPWMuZ2V0X2RpcmVjdGl2ZXMobikpJiYic3RhcnQiPT09ci5pZ25vcmUmJihuKz1jLnJlYWRJZ25vcmVkKHRoaXMuX2lucHV0KSk6bj10aGlzLl9fcGF0dGVybnMuY2RhdGEucmVhZCgpKSxuJiYoKHQ9dGhpcy5fY3JlYXRlX3Rva2VuKGwuQ09NTUVOVCxuKSkuZGlyZWN0aXZlcz1yKSk7cmV0dXJuIHR9LGgucHJvdG90eXBlLl9yZWFkX3Byb2Nlc3Npbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbCxuPW51bGw7aWYoIjwiPT09ZSl7dmFyIHI9dGhpcy5faW5wdXQucGVlaygxKTsiISIhPT1yJiYiPyIhPT1yfHwobj0obj10aGlzLl9fcGF0dGVybnMuY29uZGl0aW9uYWxfY29tbWVudC5yZWFkKCkpfHx0aGlzLl9fcGF0dGVybnMucHJvY2Vzc2luZy5yZWFkKCkpLG4mJigodD10aGlzLl9jcmVhdGVfdG9rZW4obC5DT01NRU5ULG4pKS5kaXJlY3RpdmVzPW51bGwpfXJldHVybiB0fSxoLnByb3RvdHlwZS5fcmVhZF9vcGVuPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbCxyPW51bGw7cmV0dXJuIHR8fCI8Ij09PWUmJihuPXRoaXMuX2lucHV0Lm5leHQoKSwiLyI9PT10aGlzLl9pbnB1dC5wZWVrKCkmJihuKz10aGlzLl9pbnB1dC5uZXh0KCkpLG4rPXRoaXMuX19wYXR0ZXJucy5lbGVtZW50X25hbWUucmVhZCgpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX09QRU4sbikpLHJ9LGgucHJvdG90eXBlLl9yZWFkX29wZW5faGFuZGxlYmFycz1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGwscj1udWxsO3JldHVybiB0fHx0aGlzLl9vcHRpb25zLmluZGVudF9oYW5kbGViYXJzJiYieyI9PT1lJiYieyI9PT10aGlzLl9pbnB1dC5wZWVrKDEpJiYoIiEiPT09dGhpcy5faW5wdXQucGVlaygyKT8obj0obj10aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFyc19jb21tZW50LnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzLnJlYWQoKSxyPXRoaXMuX2NyZWF0ZV90b2tlbihsLkNPTU1FTlQsbikpOihuPXRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzX29wZW4ucmVhZCgpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX09QRU4sbikpKSxyfSxoLnByb3RvdHlwZS5fcmVhZF9jbG9zZT1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGwscj1udWxsO3JldHVybiB0JiYoIjwiPT09dC50ZXh0WzBdJiYoIj4iPT09ZXx8Ii8iPT09ZSYmIj4iPT09dGhpcy5faW5wdXQucGVlaygxKSk/KG49dGhpcy5faW5wdXQubmV4dCgpLCIvIj09PWUmJihuKz10aGlzLl9pbnB1dC5uZXh0KCkpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX0NMT1NFLG4pKToieyI9PT10LnRleHRbMF0mJiJ9Ij09PWUmJiJ9Ij09PXRoaXMuX2lucHV0LnBlZWsoMSkmJih0aGlzLl9pbnB1dC5uZXh0KCksdGhpcy5faW5wdXQubmV4dCgpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX0NMT1NFLCJ9fSIpKSkscn0saC5wcm90b3R5cGUuX3JlYWRfYXR0cmlidXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1udWxsLGk9IiI7aWYobiYmIjwiPT09bi50ZXh0WzBdKWlmKCI9Ij09PWUpcj10aGlzLl9jcmVhdGVfdG9rZW4obC5FUVVBTFMsdGhpcy5faW5wdXQubmV4dCgpKTtlbHNlIGlmKCciJz09PWV8fCInIj09PWUpe3ZhciBhPXRoaXMuX2lucHV0Lm5leHQoKTthKz0nIic9PT1lP3RoaXMuX19wYXR0ZXJucy5kb3VibGVfcXVvdGUucmVhZCgpOnRoaXMuX19wYXR0ZXJucy5zaW5nbGVfcXVvdGUucmVhZCgpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVkFMVUUsYSl9ZWxzZShpPXRoaXMuX19wYXR0ZXJucy5hdHRyaWJ1dGUucmVhZCgpKSYmKHI9dC50eXBlPT09bC5FUVVBTFM/dGhpcy5fY3JlYXRlX3Rva2VuKGwuVkFMVUUsaSk6dGhpcy5fY3JlYXRlX3Rva2VuKGwuQVRUUklCVVRFLGkpKTtyZXR1cm4gcn0saC5wcm90b3R5cGUuX2lzX2NvbnRlbnRfdW5mb3JtYXR0ZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuLTE9PT10aGlzLl9vcHRpb25zLnZvaWRfZWxlbWVudHMuaW5kZXhPZihlKSYmKC0xIT09dGhpcy5fb3B0aW9ucy5jb250ZW50X3VuZm9ybWF0dGVkLmluZGV4T2YoZSl8fC0xIT09dGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZC5pbmRleE9mKGUpKX0saC5wcm90b3R5cGUuX3JlYWRfcmF3X2NvbnRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSIiO2lmKG4mJiJ7Ij09PW4udGV4dFswXSlyPXRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzX3Jhd19jbG9zZS5yZWFkKCk7ZWxzZSBpZih0LnR5cGU9PT1sLlRBR19DTE9TRSYmIjwiPT09dC5vcGVuZWQudGV4dFswXSYmIi8iIT09dC50ZXh0WzBdKXt2YXIgaT10Lm9wZW5lZC50ZXh0LnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpO2lmKCJzY3JpcHQiPT09aXx8InN0eWxlIj09PWkpe3ZhciBhPXRoaXMuX3JlYWRfY29tbWVudF9vcl9jZGF0YShlKTtpZihhKXJldHVybiBhLnR5cGU9bC5URVhULGE7cj10aGlzLl9pbnB1dC5yZWFkVW50aWwobmV3IFJlZ0V4cCgiPC8iK2krIltcXG5cXHJcXHQgXSo/PiIsImlnIikpfWVsc2UgdGhpcy5faXNfY29udGVudF91bmZvcm1hdHRlZChpKSYmKHI9dGhpcy5faW5wdXQucmVhZFVudGlsKG5ldyBSZWdFeHAoIjwvIitpKyJbXFxuXFxyXFx0IF0qPz4iLCJpZyIpKSl9cmV0dXJuIHI/dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEVYVCxyKTpudWxsfSxoLnByb3RvdHlwZS5fcmVhZF9jb250ZW50X3dvcmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7aWYodGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlciYmZT09PXRoaXMuX29wdGlvbnMudW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXJbMF0mJih0PXRoaXMuX19wYXR0ZXJucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlci5yZWFkKCkpLHR8fCh0PXRoaXMuX19wYXR0ZXJucy53b3JkLnJlYWQoKSksdClyZXR1cm4gdGhpcy5fY3JlYXRlX3Rva2VuKGwuVEVYVCx0KX0sZS5leHBvcnRzLlRva2VuaXplcj1oLGUuZXhwb3J0cy5UT0tFTj1sfV0sdD17fTt2YXIgbj1mdW5jdGlvbiBuKHIpe3ZhciBpPXRbcl07aWYodm9pZCAwIT09aSlyZXR1cm4gaS5leHBvcnRzO3ZhciBhPXRbcl09e2V4cG9ydHM6e319O3JldHVybiBlW3JdKGEsYS5leHBvcnRzLG4pLGEuZXhwb3J0c30oMTgpO0tvPW59KCksam89KCgpPT57dmFyIGU9ezQ3MDplPT57ZnVuY3Rpb24gdChlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCAiK0pTT04uc3RyaW5naWZ5KGUpKX1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciBuLHI9IiIsaT0wLGE9LTEsbz0wLHM9MDtzPD1lLmxlbmd0aDsrK3Mpe2lmKHM8ZS5sZW5ndGgpbj1lLmNoYXJDb2RlQXQocyk7ZWxzZXtpZig0Nz09PW4pYnJlYWs7bj00N31pZig0Nz09PW4pe2lmKGE9PT1zLTF8fDE9PT1vKTtlbHNlIGlmKGEhPT1zLTEmJjI9PT1vKXtpZihyLmxlbmd0aDwyfHwyIT09aXx8NDYhPT1yLmNoYXJDb2RlQXQoci5sZW5ndGgtMSl8fDQ2IT09ci5jaGFyQ29kZUF0KHIubGVuZ3RoLTIpKWlmKHIubGVuZ3RoPjIpe3ZhciBsPXIubGFzdEluZGV4T2YoIi8iKTtpZihsIT09ci5sZW5ndGgtMSl7LTE9PT1sPyhyPSIiLGk9MCk6aT0ocj1yLnNsaWNlKDAsbCkpLmxlbmd0aC0xLXIubGFzdEluZGV4T2YoIi8iKSxhPXMsbz0wO2NvbnRpbnVlfX1lbHNlIGlmKDI9PT1yLmxlbmd0aHx8MT09PXIubGVuZ3RoKXtyPSIiLGk9MCxhPXMsbz0wO2NvbnRpbnVlfXQmJihyLmxlbmd0aD4wP3IrPSIvLi4iOnI9Ii4uIixpPTIpfWVsc2Ugci5sZW5ndGg+MD9yKz0iLyIrZS5zbGljZShhKzEscyk6cj1lLnNsaWNlKGErMSxzKSxpPXMtYS0xO2E9cyxvPTB9ZWxzZSA0Nj09PW4mJi0xIT09bz8rK286bz0tMX1yZXR1cm4gcn12YXIgcj17cmVzb2x2ZTpmdW5jdGlvbigpe2Zvcih2YXIgZSxyPSIiLGk9ITEsYT1hcmd1bWVudHMubGVuZ3RoLTE7YT49LTEmJiFpO2EtLSl7dmFyIG87YT49MD9vPWFyZ3VtZW50c1thXToodm9pZCAwPT09ZSYmKGU9cHJvY2Vzcy5jd2QoKSksbz1lKSx0KG8pLDAhPT1vLmxlbmd0aCYmKHI9bysiLyIrcixpPTQ3PT09by5jaGFyQ29kZUF0KDApKX1yZXR1cm4gcj1uKHIsIWkpLGk/ci5sZW5ndGg+MD8iLyIrcjoiLyI6ci5sZW5ndGg+MD9yOiIuIn0sbm9ybWFsaXplOmZ1bmN0aW9uKGUpe2lmKHQoZSksMD09PWUubGVuZ3RoKXJldHVybiIuIjt2YXIgcj00Nz09PWUuY2hhckNvZGVBdCgwKSxpPTQ3PT09ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpO3JldHVybiAwIT09KGU9bihlLCFyKSkubGVuZ3RofHxyfHwoZT0iLiIpLGUubGVuZ3RoPjAmJmkmJihlKz0iLyIpLHI/Ii8iK2U6ZX0saXNBYnNvbHV0ZTpmdW5jdGlvbihlKXtyZXR1cm4gdChlKSxlLmxlbmd0aD4wJiY0Nz09PWUuY2hhckNvZGVBdCgwKX0sam9pbjpmdW5jdGlvbigpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiIuIjtmb3IodmFyIGUsbj0wO248YXJndW1lbnRzLmxlbmd0aDsrK24pe3ZhciBpPWFyZ3VtZW50c1tuXTt0KGkpLGkubGVuZ3RoPjAmJih2b2lkIDA9PT1lP2U9aTplKz0iLyIraSl9cmV0dXJuIHZvaWQgMD09PWU/Ii4iOnIubm9ybWFsaXplKGUpfSxyZWxhdGl2ZTpmdW5jdGlvbihlLG4pe2lmKHQoZSksdChuKSxlPT09bilyZXR1cm4iIjtpZigoZT1yLnJlc29sdmUoZSkpPT09KG49ci5yZXNvbHZlKG4pKSlyZXR1cm4iIjtmb3IodmFyIGk9MTtpPGUubGVuZ3RoJiY0Nz09PWUuY2hhckNvZGVBdChpKTsrK2kpO2Zvcih2YXIgYT1lLmxlbmd0aCxvPWEtaSxzPTE7czxuLmxlbmd0aCYmNDc9PT1uLmNoYXJDb2RlQXQocyk7KytzKTtmb3IodmFyIGw9bi5sZW5ndGgtcyxjPW88bD9vOmwsaD0tMSxkPTA7ZDw9YzsrK2Qpe2lmKGQ9PT1jKXtpZihsPmMpe2lmKDQ3PT09bi5jaGFyQ29kZUF0KHMrZCkpcmV0dXJuIG4uc2xpY2UocytkKzEpO2lmKDA9PT1kKXJldHVybiBuLnNsaWNlKHMrZCl9ZWxzZSBvPmMmJig0Nz09PWUuY2hhckNvZGVBdChpK2QpP2g9ZDowPT09ZCYmKGg9MCkpO2JyZWFrfXZhciB1PWUuY2hhckNvZGVBdChpK2QpO2lmKHUhPT1uLmNoYXJDb2RlQXQocytkKSlicmVhazs0Nz09PXUmJihoPWQpfXZhciBwPSIiO2ZvcihkPWkraCsxO2Q8PWE7KytkKWQhPT1hJiY0NyE9PWUuY2hhckNvZGVBdChkKXx8KDA9PT1wLmxlbmd0aD9wKz0iLi4iOnArPSIvLi4iKTtyZXR1cm4gcC5sZW5ndGg+MD9wK24uc2xpY2UocytoKToocys9aCw0Nz09PW4uY2hhckNvZGVBdChzKSYmKytzLG4uc2xpY2UocykpfSxfbWFrZUxvbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGRpcm5hbWU6ZnVuY3Rpb24oZSl7aWYodChlKSwwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2Zvcih2YXIgbj1lLmNoYXJDb2RlQXQoMCkscj00Nz09PW4saT0tMSxhPSEwLG89ZS5sZW5ndGgtMTtvPj0xOy0tbylpZig0Nz09PShuPWUuY2hhckNvZGVBdChvKSkpe2lmKCFhKXtpPW87YnJlYWt9fWVsc2UgYT0hMTtyZXR1cm4tMT09PWk/cj8iLyI6Ii4iOnImJjE9PT1pPyIvLyI6ZS5zbGljZSgwLGkpfSxiYXNlbmFtZTpmdW5jdGlvbihlLG4pe2lmKHZvaWQgMCE9PW4mJiJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCciZXh0IiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJyk7dChlKTt2YXIgcixpPTAsYT0tMSxvPSEwO2lmKHZvaWQgMCE9PW4mJm4ubGVuZ3RoPjAmJm4ubGVuZ3RoPD1lLmxlbmd0aCl7aWYobi5sZW5ndGg9PT1lLmxlbmd0aCYmbj09PWUpcmV0dXJuIiI7dmFyIHM9bi5sZW5ndGgtMSxsPS0xO2ZvcihyPWUubGVuZ3RoLTE7cj49MDstLXIpe3ZhciBjPWUuY2hhckNvZGVBdChyKTtpZig0Nz09PWMpe2lmKCFvKXtpPXIrMTticmVha319ZWxzZS0xPT09bCYmKG89ITEsbD1yKzEpLHM+PTAmJihjPT09bi5jaGFyQ29kZUF0KHMpPy0xPT0tLXMmJihhPXIpOihzPS0xLGE9bCkpfXJldHVybiBpPT09YT9hPWw6LTE9PT1hJiYoYT1lLmxlbmd0aCksZS5zbGljZShpLGEpfWZvcihyPWUubGVuZ3RoLTE7cj49MDstLXIpaWYoNDc9PT1lLmNoYXJDb2RlQXQocikpe2lmKCFvKXtpPXIrMTticmVha319ZWxzZS0xPT09YSYmKG89ITEsYT1yKzEpO3JldHVybi0xPT09YT8iIjplLnNsaWNlKGksYSl9LGV4dG5hbWU6ZnVuY3Rpb24oZSl7dChlKTtmb3IodmFyIG49LTEscj0wLGk9LTEsYT0hMCxvPTAscz1lLmxlbmd0aC0xO3M+PTA7LS1zKXt2YXIgbD1lLmNoYXJDb2RlQXQocyk7aWYoNDchPT1sKS0xPT09aSYmKGE9ITEsaT1zKzEpLDQ2PT09bD8tMT09PW4/bj1zOjEhPT1vJiYobz0xKTotMSE9PW4mJihvPS0xKTtlbHNlIGlmKCFhKXtyPXMrMTticmVha319cmV0dXJuLTE9PT1ufHwtMT09PWl8fDA9PT1vfHwxPT09byYmbj09PWktMSYmbj09PXIrMT8iIjplLnNsaWNlKG4saSl9LGZvcm1hdDpmdW5jdGlvbihlKXtpZihudWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAicGF0aE9iamVjdCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBlKTtyZXR1cm4gbj0odD1lKS5kaXJ8fHQucm9vdCxyPXQuYmFzZXx8KHQubmFtZXx8IiIpKyh0LmV4dHx8IiIpLG4/bj09PXQucm9vdD9uK3I6bisiLyIrcjpyO3ZhciB0LG4scn0scGFyc2U6ZnVuY3Rpb24oZSl7dChlKTt2YXIgbj17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PWUubGVuZ3RoKXJldHVybiBuO3ZhciByLGk9ZS5jaGFyQ29kZUF0KDApLGE9NDc9PT1pO2E/KG4ucm9vdD0iLyIscj0xKTpyPTA7Zm9yKHZhciBvPS0xLHM9MCxsPS0xLGM9ITAsaD1lLmxlbmd0aC0xLGQ9MDtoPj1yOy0taClpZig0NyE9PShpPWUuY2hhckNvZGVBdChoKSkpLTE9PT1sJiYoYz0hMSxsPWgrMSksNDY9PT1pPy0xPT09bz9vPWg6MSE9PWQmJihkPTEpOi0xIT09byYmKGQ9LTEpO2Vsc2UgaWYoIWMpe3M9aCsxO2JyZWFrfXJldHVybi0xPT09b3x8LTE9PT1sfHwwPT09ZHx8MT09PWQmJm89PT1sLTEmJm89PT1zKzE/LTEhPT1sJiYobi5iYXNlPW4ubmFtZT0wPT09cyYmYT9lLnNsaWNlKDEsbCk6ZS5zbGljZShzLGwpKTooMD09PXMmJmE/KG4ubmFtZT1lLnNsaWNlKDEsbyksbi5iYXNlPWUuc2xpY2UoMSxsKSk6KG4ubmFtZT1lLnNsaWNlKHMsbyksbi5iYXNlPWUuc2xpY2UocyxsKSksbi5leHQ9ZS5zbGljZShvLGwpKSxzPjA/bi5kaXI9ZS5zbGljZSgwLHMtMSk6YSYmKG4uZGlyPSIvIiksbn0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH07ci5wb3NpeD1yLGUuZXhwb3J0cz1yfSw0NDc6KGUsdCxuKT0+e3ZhciByO2lmKG4ucih0KSxuLmQodCx7VVJJOigpPT5mLFV0aWxzOigpPT54fSksIm9iamVjdCI9PXR5cGVvZiBwcm9jZXNzKXI9IndpbjMyIj09PXByb2Nlc3MucGxhdGZvcm07ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvcil7dmFyIGk9bmF2aWdhdG9yLnVzZXJBZ2VudDtyPWkuaW5kZXhPZigiV2luZG93cyIpPj0wfXZhciBhLG8scz0oYT1mdW5jdGlvbihlLHQpe3JldHVybihhPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0pKGUsdCl9LGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcodCkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9ZX1hKGUsdCksZS5wcm90b3R5cGU9bnVsbD09PXQ/T2JqZWN0LmNyZWF0ZSh0KToobi5wcm90b3R5cGU9dC5wcm90b3R5cGUsbmV3IG4pfSksbD0vXlx3W1x3XGQrLi1dKiQvLGM9L15cLy8saD0vXlwvXC8vO2Z1bmN0aW9uIGQoZSx0KXtpZighZS5zY2hlbWUmJnQpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBTY2hlbWUgaXMgbWlzc2luZzoge3NjaGVtZTogIiIsIGF1dGhvcml0eTogIicuY29uY2F0KGUuYXV0aG9yaXR5LCciLCBwYXRoOiAiJykuY29uY2F0KGUucGF0aCwnIiwgcXVlcnk6ICInKS5jb25jYXQoZS5xdWVyeSwnIiwgZnJhZ21lbnQ6ICInKS5jb25jYXQoZS5mcmFnbWVudCwnIn0nKSk7aWYoZS5zY2hlbWUmJiFsLnRlc3QoZS5zY2hlbWUpKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogU2NoZW1lIGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVycy4iKTtpZihlLnBhdGgpaWYoZS5hdXRob3JpdHkpe2lmKCFjLnRlc3QoZS5wYXRoKSl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IElmIGEgVVJJIGNvbnRhaW5zIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY29tcG9uZW50IG11c3QgZWl0aGVyIGJlIGVtcHR5IG9yIGJlZ2luIHdpdGggYSBzbGFzaCAoIi8iKSBjaGFyYWN0ZXInKX1lbHNlIGlmKGgudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfXZhciB1PSIiLHA9Ii8iLG09L14oKFteOi8/I10rPyk6KT8oXC9cLyhbXi8/I10qKSk/KFtePyNdKikoXD8oW14jXSopKT8oIyguKikpPy8sZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4scixpLGEpe3ZhciBvLHM7dm9pZCAwPT09YSYmKGE9ITEpLCJvYmplY3QiPT10eXBlb2YgZT8odGhpcy5zY2hlbWU9ZS5zY2hlbWV8fHUsdGhpcy5hdXRob3JpdHk9ZS5hdXRob3JpdHl8fHUsdGhpcy5wYXRoPWUucGF0aHx8dSx0aGlzLnF1ZXJ5PWUucXVlcnl8fHUsdGhpcy5mcmFnbWVudD1lLmZyYWdtZW50fHx1KToodGhpcy5zY2hlbWU9KHM9YSwobz1lKXx8cz9vOiJmaWxlIiksdGhpcy5hdXRob3JpdHk9dHx8dSx0aGlzLnBhdGg9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSJodHRwcyI6Y2FzZSJodHRwIjpjYXNlImZpbGUiOnQ/dFswXSE9PXAmJih0PXArdCk6dD1wfXJldHVybiB0fSh0aGlzLnNjaGVtZSxufHx1KSx0aGlzLnF1ZXJ5PXJ8fHUsdGhpcy5mcmFnbWVudD1pfHx1LGQodGhpcyxhKSl9cmV0dXJuIGUuaXNVcmk9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBlfHwhIXQmJiJzdHJpbmciPT10eXBlb2YgdC5hdXRob3JpdHkmJiJzdHJpbmciPT10eXBlb2YgdC5mcmFnbWVudCYmInN0cmluZyI9PXR5cGVvZiB0LnBhdGgmJiJzdHJpbmciPT10eXBlb2YgdC5xdWVyeSYmInN0cmluZyI9PXR5cGVvZiB0LnNjaGVtZSYmInN0cmluZyI9PXR5cGVvZiB0LmZzUGF0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHQud2l0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHQudG9TdHJpbmd9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZnNQYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHkodGhpcywhMSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUud2l0aD1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4gdGhpczt2YXIgdD1lLnNjaGVtZSxuPWUuYXV0aG9yaXR5LHI9ZS5wYXRoLGk9ZS5xdWVyeSxhPWUuZnJhZ21lbnQ7cmV0dXJuIHZvaWQgMD09PXQ/dD10aGlzLnNjaGVtZTpudWxsPT09dCYmKHQ9dSksdm9pZCAwPT09bj9uPXRoaXMuYXV0aG9yaXR5Om51bGw9PT1uJiYobj11KSx2b2lkIDA9PT1yP3I9dGhpcy5wYXRoOm51bGw9PT1yJiYocj11KSx2b2lkIDA9PT1pP2k9dGhpcy5xdWVyeTpudWxsPT09aSYmKGk9dSksdm9pZCAwPT09YT9hPXRoaXMuZnJhZ21lbnQ6bnVsbD09PWEmJihhPXUpLHQ9PT10aGlzLnNjaGVtZSYmbj09PXRoaXMuYXV0aG9yaXR5JiZyPT09dGhpcy5wYXRoJiZpPT09dGhpcy5xdWVyeSYmYT09PXRoaXMuZnJhZ21lbnQ/dGhpczpuZXcgYih0LG4scixpLGEpfSxlLnBhcnNlPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBuPW0uZXhlYyhlKTtyZXR1cm4gbj9uZXcgYihuWzJdfHx1LEMobls0XXx8dSksQyhuWzVdfHx1KSxDKG5bN118fHUpLEMobls5XXx8dSksdCk6bmV3IGIodSx1LHUsdSx1KX0sZS5maWxlPWZ1bmN0aW9uKGUpe3ZhciB0PXU7aWYociYmKGU9ZS5yZXBsYWNlKC9cXC9nLHApKSxlWzBdPT09cCYmZVsxXT09PXApe3ZhciBuPWUuaW5kZXhPZihwLDIpOy0xPT09bj8odD1lLnN1YnN0cmluZygyKSxlPXApOih0PWUuc3Vic3RyaW5nKDIsbiksZT1lLnN1YnN0cmluZyhuKXx8cCl9cmV0dXJuIG5ldyBiKCJmaWxlIix0LGUsdSx1KX0sZS5mcm9tPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBiKGUuc2NoZW1lLGUuYXV0aG9yaXR5LGUucGF0aCxlLnF1ZXJ5LGUuZnJhZ21lbnQpO3JldHVybiBkKHQsITApLHR9LGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksVCh0aGlzLGUpfSxlLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZS5yZXZpdmU9ZnVuY3Rpb24odCl7aWYodCl7aWYodCBpbnN0YW5jZW9mIGUpcmV0dXJuIHQ7dmFyIG49bmV3IGIodCk7cmV0dXJuIG4uX2Zvcm1hdHRlZD10LmV4dGVybmFsLG4uX2ZzUGF0aD10Ll9zZXA9PT1nP3QuZnNQYXRoOm51bGwsbn1yZXR1cm4gdH0sZX0oKSxnPXI/MTp2b2lkIDAsYj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIHQ9bnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiB0Ll9mb3JtYXR0ZWQ9bnVsbCx0Ll9mc1BhdGg9bnVsbCx0fXJldHVybiBzKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJmc1BhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZnNQYXRofHwodGhpcy5fZnNQYXRoPXkodGhpcywhMSkpLHRoaXMuX2ZzUGF0aH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLGU/VCh0aGlzLCEwKToodGhpcy5fZm9ybWF0dGVkfHwodGhpcy5fZm9ybWF0dGVkPVQodGhpcywhMSkpLHRoaXMuX2Zvcm1hdHRlZCl9LHQucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBlPXskbWlkOjF9O3JldHVybiB0aGlzLl9mc1BhdGgmJihlLmZzUGF0aD10aGlzLl9mc1BhdGgsZS5fc2VwPWcpLHRoaXMuX2Zvcm1hdHRlZCYmKGUuZXh0ZXJuYWw9dGhpcy5fZm9ybWF0dGVkKSx0aGlzLnBhdGgmJihlLnBhdGg9dGhpcy5wYXRoKSx0aGlzLnNjaGVtZSYmKGUuc2NoZW1lPXRoaXMuc2NoZW1lKSx0aGlzLmF1dGhvcml0eSYmKGUuYXV0aG9yaXR5PXRoaXMuYXV0aG9yaXR5KSx0aGlzLnF1ZXJ5JiYoZS5xdWVyeT10aGlzLnF1ZXJ5KSx0aGlzLmZyYWdtZW50JiYoZS5mcmFnbWVudD10aGlzLmZyYWdtZW50KSxlfSx0fShmKSx3PSgobz17fSlbNThdPSIlM0EiLG9bNDddPSIlMkYiLG9bNjNdPSIlM0YiLG9bMzVdPSIlMjMiLG9bOTFdPSIlNUIiLG9bOTNdPSIlNUQiLG9bNjRdPSIlNDAiLG9bMzNdPSIlMjEiLG9bMzZdPSIlMjQiLG9bMzhdPSIlMjYiLG9bMzldPSIlMjciLG9bNDBdPSIlMjgiLG9bNDFdPSIlMjkiLG9bNDJdPSIlMkEiLG9bNDNdPSIlMkIiLG9bNDRdPSIlMkMiLG9bNTldPSIlM0IiLG9bNjFdPSIlM0QiLG9bMzJdPSIlMjAiLG8pO2Z1bmN0aW9uIF8oZSx0KXtmb3IodmFyIG49dm9pZCAwLHI9LTEsaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgYT1lLmNoYXJDb2RlQXQoaSk7aWYoYT49OTcmJmE8PTEyMnx8YT49NjUmJmE8PTkwfHxhPj00OCYmYTw9NTd8fDQ1PT09YXx8NDY9PT1hfHw5NT09PWF8fDEyNj09PWF8fHQmJjQ3PT09YSktMSE9PXImJihuKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocixpKSkscj0tMSksdm9pZCAwIT09biYmKG4rPWUuY2hhckF0KGkpKTtlbHNle3ZvaWQgMD09PW4mJihuPWUuc3Vic3RyKDAsaSkpO3ZhciBvPXdbYV07dm9pZCAwIT09bz8oLTEhPT1yJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKHIsaSkpLHI9LTEpLG4rPW8pOi0xPT09ciYmKHI9aSl9fXJldHVybi0xIT09ciYmKG4rPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhyKSkpLHZvaWQgMCE9PW4/bjplfWZ1bmN0aW9uIHYoZSl7Zm9yKHZhciB0PXZvaWQgMCxuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWUuY2hhckNvZGVBdChuKTszNT09PXJ8fDYzPT09cj8odm9pZCAwPT09dCYmKHQ9ZS5zdWJzdHIoMCxuKSksdCs9d1tyXSk6dm9pZCAwIT09dCYmKHQrPWVbbl0pfXJldHVybiB2b2lkIDAhPT10P3Q6ZX1mdW5jdGlvbiB5KGUsdCl7dmFyIG47cmV0dXJuIG49ZS5hdXRob3JpdHkmJmUucGF0aC5sZW5ndGg+MSYmImZpbGUiPT09ZS5zY2hlbWU/Ii8vIi5jb25jYXQoZS5hdXRob3JpdHkpLmNvbmNhdChlLnBhdGgpOjQ3PT09ZS5wYXRoLmNoYXJDb2RlQXQoMCkmJihlLnBhdGguY2hhckNvZGVBdCgxKT49NjUmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD05MHx8ZS5wYXRoLmNoYXJDb2RlQXQoMSk+PTk3JiZlLnBhdGguY2hhckNvZGVBdCgxKTw9MTIyKSYmNTg9PT1lLnBhdGguY2hhckNvZGVBdCgyKT90P2UucGF0aC5zdWJzdHIoMSk6ZS5wYXRoWzFdLnRvTG93ZXJDYXNlKCkrZS5wYXRoLnN1YnN0cigyKTplLnBhdGgsciYmKG49bi5yZXBsYWNlKC9cLy9nLCJcXCIpKSxufWZ1bmN0aW9uIFQoZSx0KXt2YXIgbj10P3Y6XyxyPSIiLGk9ZS5zY2hlbWUsYT1lLmF1dGhvcml0eSxvPWUucGF0aCxzPWUucXVlcnksbD1lLmZyYWdtZW50O2lmKGkmJihyKz1pLHIrPSI6IiksKGF8fCJmaWxlIj09PWkpJiYocis9cCxyKz1wKSxhKXt2YXIgYz1hLmluZGV4T2YoIkAiKTtpZigtMSE9PWMpe3ZhciBoPWEuc3Vic3RyKDAsYyk7YT1hLnN1YnN0cihjKzEpLC0xPT09KGM9aC5pbmRleE9mKCI6IikpP3IrPW4oaCwhMSk6KHIrPW4oaC5zdWJzdHIoMCxjKSwhMSkscis9IjoiLHIrPW4oaC5zdWJzdHIoYysxKSwhMSkpLHIrPSJAIn0tMT09PShjPShhPWEudG9Mb3dlckNhc2UoKSkuaW5kZXhPZigiOiIpKT9yKz1uKGEsITEpOihyKz1uKGEuc3Vic3RyKDAsYyksITEpLHIrPWEuc3Vic3RyKGMpKX1pZihvKXtpZihvLmxlbmd0aD49MyYmNDc9PT1vLmNoYXJDb2RlQXQoMCkmJjU4PT09by5jaGFyQ29kZUF0KDIpKShkPW8uY2hhckNvZGVBdCgxKSk+PTY1JiZkPD05MCYmKG89Ii8iLmNvbmNhdChTdHJpbmcuZnJvbUNoYXJDb2RlKGQrMzIpLCI6IikuY29uY2F0KG8uc3Vic3RyKDMpKSk7ZWxzZSBpZihvLmxlbmd0aD49MiYmNTg9PT1vLmNoYXJDb2RlQXQoMSkpe3ZhciBkOyhkPW8uY2hhckNvZGVBdCgwKSk+PTY1JiZkPD05MCYmKG89IiIuY29uY2F0KFN0cmluZy5mcm9tQ2hhckNvZGUoZCszMiksIjoiKS5jb25jYXQoby5zdWJzdHIoMikpKX1yKz1uKG8sITApfXJldHVybiBzJiYocis9Ij8iLHIrPW4ocywhMSkpLGwmJihyKz0iIyIscis9dD9sOl8obCwhMSkpLHJ9ZnVuY3Rpb24gayhlKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlKX1jYXRjaCh0KXtyZXR1cm4gZS5sZW5ndGg+Mz9lLnN1YnN0cigwLDMpK2soZS5zdWJzdHIoMykpOmV9fXZhciBTPS8oJVswLTlBLVphLXpdWzAtOUEtWmEtel0pKy9nO2Z1bmN0aW9uIEMoZSl7cmV0dXJuIGUubWF0Y2goUyk/ZS5yZXBsYWNlKFMsKGZ1bmN0aW9uKGUpe3JldHVybiBrKGUpfSkpOmV9dmFyIHgsTCxFPW4oNDcwKSxBPWZ1bmN0aW9uKGUsdCxuKXtpZihufHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIHIsaT0wLGE9dC5sZW5ndGg7aTxhO2krKykhciYmaSBpbiB0fHwocnx8KHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwwLGkpKSxyW2ldPXRbaV0pO3JldHVybiBlLmNvbmNhdChyfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSl9LE09RS5wb3NpeHx8RTsoTD14fHwoeD17fSkpLmpvaW5QYXRoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3JldHVybiBlLndpdGgoe3BhdGg6TS5qb2luLmFwcGx5KE0sQShbZS5wYXRoXSx0LCExKSl9KX0sTC5yZXNvbHZlUGF0aD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTt2YXIgcj1lLnBhdGh8fCIvIjtyZXR1cm4gZS53aXRoKHtwYXRoOk0ucmVzb2x2ZS5hcHBseShNLEEoW3JdLHQsITEpKX0pfSxMLmRpcm5hbWU9ZnVuY3Rpb24oZSl7dmFyIHQ9TS5kaXJuYW1lKGUucGF0aCk7cmV0dXJuIDE9PT10Lmxlbmd0aCYmNDY9PT10LmNoYXJDb2RlQXQoMCk/ZTplLndpdGgoe3BhdGg6dH0pfSxMLmJhc2VuYW1lPWZ1bmN0aW9uKGUpe3JldHVybiBNLmJhc2VuYW1lKGUucGF0aCl9LEwuZXh0bmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gTS5leHRuYW1lKGUucGF0aCl9fX0sdD17fTtmdW5jdGlvbiBuKHIpe2lmKHRbcl0pcmV0dXJuIHRbcl0uZXhwb3J0czt2YXIgaT10W3JdPXtleHBvcnRzOnt9fTtyZXR1cm4gZVtyXShpLGkuZXhwb3J0cyxuKSxpLmV4cG9ydHN9cmV0dXJuIG4uZD0oZSx0KT0+e2Zvcih2YXIgciBpbiB0KW4ubyh0LHIpJiYhbi5vKGUscikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0sbi5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSxuLnI9ZT0+eyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LG4oNDQ3KX0pKCk7dmFye1VSSTplcyxVdGlsczp0c309am87ZnVuY3Rpb24gbnMoZSl7dmFyIHQ9ZVswXTtyZXR1cm4gdCE9PWVbZS5sZW5ndGgtMV18fCInIiE9PXQmJiciJyE9PXR8fChlPWUuc3Vic3RyKDEsZS5sZW5ndGgtMikpLGV9ZnVuY3Rpb24gcnMoZSx0LG4scixpLGEpe3ZhciBvPW5zKG4pO2lmKHM9byxsPWUubGFuZ3VhZ2VJZCxzLmxlbmd0aCYmKCJoYW5kbGViYXJzIiE9PWx8fCEve3t8fX0vLnRlc3QocykpJiYvXGIod1tcd1xkKy4tXSo6XC9cLyk/W15ccygpPD5dKyg/OlwoW1x3XGRdK1wpfChbXls6cHVuY3Q6XVxzXXxcLz8pKS8udGVzdChzKSl7dmFyIHMsbDtvLmxlbmd0aDxuLmxlbmd0aCYmKHIrKyxpLS0pO3ZhciBjPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCEvXlxzKmphdmFzY3JpcHRcOi9pLnRlc3QodCkmJiEvW1xuXHJdLy50ZXN0KHQpKXJldHVybiB0PXQucmVwbGFjZSgvXlxzKi9nLCIiKSwvXmh0dHBzPzpcL1wvL2kudGVzdCh0KXx8L15maWxlOlwvXC8vaS50ZXN0KHQpP3Q6L15cIy9pLnRlc3QodCk/ZSt0Oi9eXC9cLy9pLnRlc3QodCk/KG1vKGUsImh0dHBzOi8vIik/Imh0dHBzIjoiaHR0cCIpKyI6Iit0LnJlcGxhY2UoL15ccyovZywiIik6bj9uLnJlc29sdmVSZWZlcmVuY2UodCxyfHxlKTp0fShlLnVyaSxvLHQsYSk7aWYoYyYmZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBlcy5wYXJzZShlKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KGMpKXJldHVybntyYW5nZTpXci5jcmVhdGUoZS5wb3NpdGlvbkF0KHIpLGUucG9zaXRpb25BdChpKSksdGFyZ2V0OmN9fX1mdW5jdGlvbiBpcyhlLHQpe2Zvcih2YXIgbj1bXSxyPW9vKGUuZ2V0VGV4dCgpLDApLGk9ci5zY2FuKCksYT12b2lkIDAsbz0hMSxzPXZvaWQgMCxsPXt9O2khPT1OYS5FT1M7KXtzd2l0Y2goaSl7Y2FzZSBOYS5TdGFydFRhZzppZighcylvPSJiYXNlIj09PXIuZ2V0VG9rZW5UZXh0KCkudG9Mb3dlckNhc2UoKTticmVhaztjYXNlIE5hLkF0dHJpYnV0ZU5hbWU6YT1yLmdldFRva2VuVGV4dCgpLnRvTG93ZXJDYXNlKCk7YnJlYWs7Y2FzZSBOYS5BdHRyaWJ1dGVWYWx1ZTppZigic3JjIj09PWF8fCJocmVmIj09PWEpe3ZhciBjPXIuZ2V0VG9rZW5UZXh0KCk7aWYoIW8pKHU9cnMoZSx0LGMsci5nZXRUb2tlbk9mZnNldCgpLHIuZ2V0VG9rZW5FbmQoKSxzKSkmJm4ucHVzaCh1KTtvJiZ2b2lkIDA9PT1zJiYocz1ucyhjKSkmJnQmJihzPXQucmVzb2x2ZVJlZmVyZW5jZShzLGUudXJpKSksbz0hMSxhPXZvaWQgMH1lbHNlIGlmKCJpZCI9PT1hKXtsW25zKHIuZ2V0VG9rZW5UZXh0KCkpXT1yLmdldFRva2VuT2Zmc2V0KCl9fWk9ci5zY2FuKCl9Zm9yKHZhciBoPTAsZD1uO2g8ZC5sZW5ndGg7aCsrKXt2YXIgdT1kW2hdLHA9ZS51cmkrIiMiO2lmKHUudGFyZ2V0JiZtbyh1LnRhcmdldCxwKSl7dmFyIG09bFt1LnRhcmdldC5zdWJzdHIocC5sZW5ndGgpXTtpZih2b2lkIDAhPT1tKXt2YXIgZj1lLnBvc2l0aW9uQXQobSk7dS50YXJnZXQ9IiIrcCsoZi5saW5lKzEpKyIsIisoZi5jaGFyYWN0ZXIrMSl9fX1yZXR1cm4gbn1mdW5jdGlvbiBhcyhlLHQsbil7dmFyIHI9ZS5vZmZzZXRBdCh0KSxpPW4uZmluZE5vZGVBdChyKTtpZighaS50YWcpcmV0dXJuW107dmFyIGE9W10sbz1scyhOYS5TdGFydFRhZyxlLGkuc3RhcnQpLHM9Im51bWJlciI9PXR5cGVvZiBpLmVuZFRhZ1N0YXJ0JiZscyhOYS5FbmRUYWcsZSxpLmVuZFRhZ1N0YXJ0KTtyZXR1cm4obyYmc3Mobyx0KXx8cyYmc3Mocyx0KSkmJihvJiZhLnB1c2goe2tpbmQ6ZWEuUmVhZCxyYW5nZTpvfSkscyYmYS5wdXNoKHtraW5kOmVhLlJlYWQscmFuZ2U6c30pKSxhfWZ1bmN0aW9uIG9zKGUsdCl7cmV0dXJuIGUubGluZTx0LmxpbmV8fGUubGluZT09PXQubGluZSYmZS5jaGFyYWN0ZXI8PXQuY2hhcmFjdGVyfWZ1bmN0aW9uIHNzKGUsdCl7cmV0dXJuIG9zKGUuc3RhcnQsdCkmJm9zKHQsZS5lbmQpfWZ1bmN0aW9uIGxzKGUsdCxuKXtmb3IodmFyIHI9b28odC5nZXRUZXh0KCksbiksaT1yLnNjYW4oKTtpIT09TmEuRU9TJiZpIT09ZTspaT1yLnNjYW4oKTtyZXR1cm4gaSE9PU5hLkVPUz97c3RhcnQ6dC5wb3NpdGlvbkF0KHIuZ2V0VG9rZW5PZmZzZXQoKSksZW5kOnQucG9zaXRpb25BdChyLmdldFRva2VuRW5kKCkpfTpudWxsfWZ1bmN0aW9uIGNzKGUsdCl7dmFyIG49W107cmV0dXJuIHQucm9vdHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7aHMoZSx0LCIiLG4pfSkpLG59ZnVuY3Rpb24gaHMoZSx0LG4scil7dmFyIGk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YWc7aWYoZS5hdHRyaWJ1dGVzKXt2YXIgbj1lLmF0dHJpYnV0ZXMuaWQscj1lLmF0dHJpYnV0ZXMuY2xhc3M7biYmKHQrPSIjIituLnJlcGxhY2UoL1tcIlwnXS9nLCIiKSksciYmKHQrPXIucmVwbGFjZSgvW1wiXCddL2csIiIpLnNwbGl0KC9ccysvKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiIuIitlfSkpLmpvaW4oIiIpKX1yZXR1cm4gdHx8Ij8ifSh0KSxhPVByLmNyZWF0ZShlLnVyaSxXci5jcmVhdGUoZS5wb3NpdGlvbkF0KHQuc3RhcnQpLGUucG9zaXRpb25BdCh0LmVuZCkpKSxvPXtuYW1lOmksbG9jYXRpb246YSxjb250YWluZXJOYW1lOm4sa2luZDpyYS5GaWVsZH07ci5wdXNoKG8pLHQuY2hpbGRyZW4uZm9yRWFjaCgoZnVuY3Rpb24odCl7aHMoZSx0LGkscil9KSl9ZnVuY3Rpb24gZHMoZSx0LG4scil7dmFyIGksYT1lLm9mZnNldEF0KHQpLG89ci5maW5kTm9kZUF0KGEpO2lmKCFvLnRhZylyZXR1cm4gbnVsbDtpZighZnVuY3Rpb24oZSx0LG4pe2lmKGUuZW5kVGFnU3RhcnQmJmUuZW5kVGFnU3RhcnQrIjwvIi5sZW5ndGg8PXQmJnQ8PWUuZW5kVGFnU3RhcnQrIjwvIi5sZW5ndGgrbi5sZW5ndGgpcmV0dXJuITA7cmV0dXJuIGUuc3RhcnQrIjwiLmxlbmd0aDw9dCYmdDw9ZS5zdGFydCsiPCIubGVuZ3RoK24ubGVuZ3RofShvLGEsby50YWcpKXJldHVybiBudWxsO3ZhciBzPVtdLGw9e3N0YXJ0OmUucG9zaXRpb25BdChvLnN0YXJ0KyI8Ii5sZW5ndGgpLGVuZDplLnBvc2l0aW9uQXQoby5zdGFydCsiPCIubGVuZ3RoK28udGFnLmxlbmd0aCl9O2lmKHMucHVzaCh7cmFuZ2U6bCxuZXdUZXh0Om59KSxvLmVuZFRhZ1N0YXJ0KXt2YXIgYz17c3RhcnQ6ZS5wb3NpdGlvbkF0KG8uZW5kVGFnU3RhcnQrIjwvIi5sZW5ndGgpLGVuZDplLnBvc2l0aW9uQXQoby5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCtvLnRhZy5sZW5ndGgpfTtzLnB1c2goe3JhbmdlOmMsbmV3VGV4dDpufSl9cmV0dXJue2NoYW5nZXM6KChpPXt9KVtlLnVyaS50b1N0cmluZygpXT1zLGkpfX1mdW5jdGlvbiB1cyhlLHQsbil7dmFyIHI9ZS5vZmZzZXRBdCh0KSxpPW4uZmluZE5vZGVBdChyKTtpZighaS50YWcpcmV0dXJuIG51bGw7aWYoIWkuZW5kVGFnU3RhcnQpcmV0dXJuIG51bGw7aWYoaS5zdGFydCsiPCIubGVuZ3RoPD1yJiZyPD1pLnN0YXJ0KyI8Ii5sZW5ndGgraS50YWcubGVuZ3RoKXt2YXIgYT1yLSI8Ii5sZW5ndGgtaS5zdGFydCtpLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoO3JldHVybiBlLnBvc2l0aW9uQXQoYSl9aWYoaS5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aDw9ciYmcjw9aS5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCtpLnRhZy5sZW5ndGgpe2E9ci0iPC8iLmxlbmd0aC1pLmVuZFRhZ1N0YXJ0K2kuc3RhcnQrIjwiLmxlbmd0aDtyZXR1cm4gZS5wb3NpdGlvbkF0KGEpfXJldHVybiBudWxsfWZ1bmN0aW9uIHBzKGUsdCxuKXt2YXIgcj1lLm9mZnNldEF0KHQpLGk9bi5maW5kTm9kZUF0KHIpLGE9aS50YWc/aS50YWcubGVuZ3RoOjA7cmV0dXJuIGkuZW5kVGFnU3RhcnQmJihpLnN0YXJ0KyI8Ii5sZW5ndGg8PXImJnI8PWkuc3RhcnQrIjwiLmxlbmd0aCthfHxpLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoPD1yJiZyPD1pLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoK2EpP1tXci5jcmVhdGUoZS5wb3NpdGlvbkF0KGkuc3RhcnQrIjwiLmxlbmd0aCksZS5wb3NpdGlvbkF0KGkuc3RhcnQrIjwiLmxlbmd0aCthKSksV3IuY3JlYXRlKGUucG9zaXRpb25BdChpLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoKSxlLnBvc2l0aW9uQXQoaS5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCthKSldOm51bGx9ZnVuY3Rpb24gbXMoZSx0KXt2YXIgbj1vbyhlLmdldFRleHQoKSkscj1uLnNjYW4oKSxpPVtdLGE9W10sbz1udWxsLHM9LTE7ZnVuY3Rpb24gbChlKXtpLnB1c2goZSkscz1lLnN0YXJ0TGluZX1mb3IoO3IhPT1OYS5FT1M7KXtzd2l0Y2gocil7Y2FzZSBOYS5TdGFydFRhZzp2YXIgYz1uLmdldFRva2VuVGV4dCgpLGg9ZS5wb3NpdGlvbkF0KG4uZ2V0VG9rZW5PZmZzZXQoKSkubGluZTthLnB1c2goe3N0YXJ0TGluZTpoLHRhZ05hbWU6Y30pLG89YzticmVhaztjYXNlIE5hLkVuZFRhZzpvPW4uZ2V0VG9rZW5UZXh0KCk7YnJlYWs7Y2FzZSBOYS5TdGFydFRhZ0Nsb3NlOmlmKCFvfHwhY28obykpYnJlYWs7Y2FzZSBOYS5FbmRUYWdDbG9zZTpjYXNlIE5hLlN0YXJ0VGFnU2VsZkNsb3NlOmZvcih2YXIgZD1hLmxlbmd0aC0xO2Q+PTAmJmFbZF0udGFnTmFtZSE9PW87KWQtLTtpZihkPj0wKXt2YXIgdT1hW2RdO2EubGVuZ3RoPWQsKG09ZS5wb3NpdGlvbkF0KG4uZ2V0VG9rZW5PZmZzZXQoKSkubGluZS0xKT4oaD11LnN0YXJ0TGluZSkmJnMhPT1oJiZsKHtzdGFydExpbmU6aCxlbmRMaW5lOm19KX1icmVhaztjYXNlIE5hLkNvbW1lbnQ6aD1lLnBvc2l0aW9uQXQobi5nZXRUb2tlbk9mZnNldCgpKS5saW5lO3ZhciBwPW4uZ2V0VG9rZW5UZXh0KCkubWF0Y2goL15ccyojKHJlZ2lvblxiKXwoZW5kcmVnaW9uXGIpLyk7aWYocClpZihwWzFdKWEucHVzaCh7c3RhcnRMaW5lOmgsdGFnTmFtZToiIn0pO2Vsc2V7Zm9yKGQ9YS5sZW5ndGgtMTtkPj0wJiZhW2RdLnRhZ05hbWUubGVuZ3RoOylkLS07aWYoZD49MCl7dmFyIG07dT1hW2RdO2EubGVuZ3RoPWQsKG09aCk+KGg9dS5zdGFydExpbmUpJiZzIT09aCYmbCh7c3RhcnRMaW5lOmgsZW5kTGluZTptLGtpbmQ6WHIuUmVnaW9ufSl9fWVsc2UgaDwobT1lLnBvc2l0aW9uQXQobi5nZXRUb2tlbk9mZnNldCgpK24uZ2V0VG9rZW5MZW5ndGgoKSkubGluZSkmJmwoe3N0YXJ0TGluZTpoLGVuZExpbmU6bSxraW5kOlhyLkNvbW1lbnR9KX1yPW4uc2NhbigpfXZhciBmPXQmJnQucmFuZ2VMaW1pdHx8TnVtYmVyLk1BWF9WQUxVRTtyZXR1cm4gaS5sZW5ndGg+Zj9mdW5jdGlvbihlLHQpe2U9ZS5zb3J0KChmdW5jdGlvbihlLHQpe3ZhciBuPWUuc3RhcnRMaW5lLXQuc3RhcnRMaW5lO3JldHVybiAwPT09biYmKG49ZS5lbmRMaW5lLXQuZW5kTGluZSksbn0pKTtmb3IodmFyIG49dm9pZCAwLHI9W10saT1bXSxhPVtdLG89ZnVuY3Rpb24oZSx0KXtpW2VdPXQsdDwzMCYmKGFbdF09KGFbdF18fDApKzEpfSxzPTA7czxlLmxlbmd0aDtzKyspe3ZhciBsPWVbc107aWYobil7aWYobC5zdGFydExpbmU+bi5zdGFydExpbmUpaWYobC5lbmRMaW5lPD1uLmVuZExpbmUpci5wdXNoKG4pLG49bCxvKHMsci5sZW5ndGgpO2Vsc2UgaWYobC5zdGFydExpbmU+bi5lbmRMaW5lKXtkb3tuPXIucG9wKCl9d2hpbGUobiYmbC5zdGFydExpbmU+bi5lbmRMaW5lKTtuJiZyLnB1c2gobiksbj1sLG8ocyxyLmxlbmd0aCl9fWVsc2Ugbj1sLG8ocywwKX12YXIgYz0wLGg9MDtmb3Iocz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgZD1hW3NdO2lmKGQpe2lmKGQrYz50KXtoPXM7YnJlYWt9Yys9ZH19dmFyIHU9W107Zm9yKHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIHA9aVtzXTsibnVtYmVyIj09dHlwZW9mIHAmJihwPGh8fHA9PT1oJiZjKys8dCkmJnUucHVzaChlW3NdKX1yZXR1cm4gdX0oaSxmKTppfWZ1bmN0aW9uIGZzKGUsdCl7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtmb3IodmFyIG49ZnVuY3Rpb24oZSx0KXt2YXIgbj11byhlLmdldFRleHQoKSkscj1lLm9mZnNldEF0KHQpLGk9bi5maW5kTm9kZUF0KHIpLGE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSxuPWZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0VGFnRW5kJiZlLmVuZFRhZ1N0YXJ0JiZlLnN0YXJ0VGFnRW5kPGUuZW5kVGFnU3RhcnQ/W1tlLnN0YXJ0VGFnRW5kLGUuZW5kVGFnU3RhcnRdLFtlLnN0YXJ0LGUuZW5kXV06W1tlLnN0YXJ0LGUuZW5kXV19LHI9W107Zm9yKDt0LnBhcmVudDspbih0PXQucGFyZW50KS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gci5wdXNoKGUpfSkpO3JldHVybiByfShpKTtpZihpLnN0YXJ0VGFnRW5kJiYhaS5lbmRUYWdTdGFydCl7aWYoaS5zdGFydFRhZ0VuZCE9PWkuZW5kKXJldHVybltbaS5zdGFydCxpLmVuZF1dO3ZhciBvPVdyLmNyZWF0ZShlLnBvc2l0aW9uQXQoaS5zdGFydFRhZ0VuZC0yKSxlLnBvc2l0aW9uQXQoaS5zdGFydFRhZ0VuZCkpO3JldHVybiIvPiI9PT1lLmdldFRleHQobyk/YS51bnNoaWZ0KFtpLnN0YXJ0KzEsaS5zdGFydFRhZ0VuZC0yXSk6YS51bnNoaWZ0KFtpLnN0YXJ0KzEsaS5zdGFydFRhZ0VuZC0xXSksYT1ncyhlLGkscikuY29uY2F0KGEpfWlmKCFpLnN0YXJ0VGFnRW5kfHwhaS5lbmRUYWdTdGFydClyZXR1cm4gYTtyZXR1cm4gYS51bnNoaWZ0KFtpLnN0YXJ0LGkuZW5kXSksaS5zdGFydDxyJiZyPGkuc3RhcnRUYWdFbmQ/KGEudW5zaGlmdChbaS5zdGFydCsxLGkuc3RhcnRUYWdFbmQtMV0pLGE9Z3MoZSxpLHIpLmNvbmNhdChhKSk6aS5zdGFydFRhZ0VuZDw9ciYmcjw9aS5lbmRUYWdTdGFydD8oYS51bnNoaWZ0KFtpLnN0YXJ0VGFnRW5kLGkuZW5kVGFnU3RhcnRdKSxhKToocj49aS5lbmRUYWdTdGFydCsyJiZhLnVuc2hpZnQoW2kuZW5kVGFnU3RhcnQrMixpLmVuZC0xXSksYSl9KGUsdCkscj12b2lkIDAsaT12b2lkIDAsYT1uLmxlbmd0aC0xO2E+PTA7YS0tKXt2YXIgbz1uW2FdO3ImJm9bMF09PT1yWzBdJiZvWzFdPT09clsxXXx8KGk9eWEuY3JlYXRlKFdyLmNyZWF0ZShlLnBvc2l0aW9uQXQoblthXVswXSksZS5wb3NpdGlvbkF0KG5bYV1bMV0pKSxpKSkscj1vfXJldHVybiBpfHwoaT15YS5jcmVhdGUoV3IuY3JlYXRlKHQsdCkpKSxpfSkpfWZ1bmN0aW9uIGdzKGUsdCxuKXtmb3IodmFyIHI9V3IuY3JlYXRlKGUucG9zaXRpb25BdCh0LnN0YXJ0KSxlLnBvc2l0aW9uQXQodC5lbmQpKSxpPWUuZ2V0VGV4dChyKSxhPW4tdC5zdGFydCxvPW9vKGkpLHM9by5zY2FuKCksbD10LnN0YXJ0LGM9W10saD0hMSxkPS0xO3MhPT1OYS5FT1M7KXtzd2l0Y2gocyl7Y2FzZSBOYS5BdHRyaWJ1dGVOYW1lOmlmKGE8by5nZXRUb2tlbk9mZnNldCgpKXtoPSExO2JyZWFrfWE8PW8uZ2V0VG9rZW5FbmQoKSYmYy51bnNoaWZ0KFtvLmdldFRva2VuT2Zmc2V0KCksby5nZXRUb2tlbkVuZCgpXSksaD0hMCxkPW8uZ2V0VG9rZW5PZmZzZXQoKTticmVhaztjYXNlIE5hLkF0dHJpYnV0ZVZhbHVlOmlmKCFoKWJyZWFrO3ZhciB1PW8uZ2V0VG9rZW5UZXh0KCk7aWYoYTxvLmdldFRva2VuT2Zmc2V0KCkpe2MucHVzaChbZCxvLmdldFRva2VuRW5kKCldKTticmVha31hPj1vLmdldFRva2VuT2Zmc2V0KCkmJmE8PW8uZ2V0VG9rZW5FbmQoKSYmKGMudW5zaGlmdChbby5nZXRUb2tlbk9mZnNldCgpLG8uZ2V0VG9rZW5FbmQoKV0pLCgnIic9PT11WzBdJiYnIic9PT11W3UubGVuZ3RoLTFdfHwiJyI9PT11WzBdJiYiJyI9PT11W3UubGVuZ3RoLTFdKSYmYT49by5nZXRUb2tlbk9mZnNldCgpKzEmJmE8PW8uZ2V0VG9rZW5FbmQoKS0xJiZjLnVuc2hpZnQoW28uZ2V0VG9rZW5PZmZzZXQoKSsxLG8uZ2V0VG9rZW5FbmQoKS0xXSksYy5wdXNoKFtkLG8uZ2V0VG9rZW5FbmQoKV0pKX1zPW8uc2NhbigpfXJldHVybiBjLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuW2VbMF0rbCxlWzFdK2xdfSkpfXZhciBicz17dmVyc2lvbjoxLjEsdGFnczpbe25hbWU6Imh0bWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBodG1sIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgcm9vdCBvZiBhbiBIVE1MIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJtYW5pZmVzdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiU3BlY2lmaWVzIHRoZSBVUkkgb2YgYSByZXNvdXJjZSBtYW5pZmVzdCBpbmRpY2F0aW5nIHJlc291cmNlcyB0aGF0IHNob3VsZCBiZSBjYWNoZWQgbG9jYWxseS4gU2VlIFtVc2luZyB0aGUgYXBwbGljYXRpb24gY2FjaGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvVXNpbmdfdGhlX2FwcGxpY2F0aW9uX2NhY2hlKSBmb3IgZGV0YWlscy4ifX0se25hbWU6InZlcnNpb24iLGRlc2NyaXB0aW9uOidTcGVjaWZpZXMgdGhlIHZlcnNpb24gb2YgdGhlIEhUTUwgW0RvY3VtZW50IFR5cGUgRGVmaW5pdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9EVEQgIkRvY3VtZW50IFR5cGUgRGVmaW5pdGlvbjogSW4gSFRNTCwgdGhlIGRvY3R5cGUgaXMgdGhlIHJlcXVpcmVkICI8IURPQ1RZUEUgaHRtbD4iIHByZWFtYmxlIGZvdW5kIGF0IHRoZSB0b3Agb2YgYWxsIGRvY3VtZW50cy4gSXRzIHNvbGUgcHVycG9zZSBpcyB0byBwcmV2ZW50IGEgYnJvd3NlciBmcm9tIHN3aXRjaGluZyBpbnRvIHNvLWNhbGxlZCDigJxxdWlya3MgbW9kZeKAnSB3aGVuIHJlbmRlcmluZyBhIGRvY3VtZW50OyB0aGF0IGlzLCB0aGUgIjwhRE9DVFlQRSBodG1sPiIgZG9jdHlwZSBlbnN1cmVzIHRoYXQgdGhlIGJyb3dzZXIgbWFrZXMgYSBiZXN0LWVmZm9ydCBhdHRlbXB0IGF0IGZvbGxvd2luZyB0aGUgcmVsZXZhbnQgc3BlY2lmaWNhdGlvbnMsIHJhdGhlciB0aGFuIHVzaW5nIGEgZGlmZmVyZW50IHJlbmRlcmluZyBtb2RlIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggc29tZSBzcGVjaWZpY2F0aW9ucy4iKSB0aGF0IGdvdmVybnMgdGhlIGN1cnJlbnQgZG9jdW1lbnQuIFRoaXMgYXR0cmlidXRlIGlzIG5vdCBuZWVkZWQsIGJlY2F1c2UgaXQgaXMgcmVkdW5kYW50IHdpdGggdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gaW4gdGhlIGRvY3VtZW50IHR5cGUgZGVjbGFyYXRpb24uJ30se25hbWU6InhtbG5zIixkZXNjcmlwdGlvbjonU3BlY2lmaWVzIHRoZSBYTUwgTmFtZXNwYWNlIG9mIHRoZSBkb2N1bWVudC4gRGVmYXVsdCB2YWx1ZSBpcyBgImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiYC4gVGhpcyBpcyByZXF1aXJlZCBpbiBkb2N1bWVudHMgcGFyc2VkIHdpdGggWE1MIHBhcnNlcnMsIGFuZCBvcHRpb25hbCBpbiB0ZXh0L2h0bWwgZG9jdW1lbnRzLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaHRtbCJ9XX0se25hbWU6ImhlYWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoZWFkIGVsZW1lbnQgcmVwcmVzZW50cyBhIGNvbGxlY3Rpb24gb2YgbWV0YWRhdGEgZm9yIHRoZSBEb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToicHJvZmlsZSIsZGVzY3JpcHRpb246IlRoZSBVUklzIG9mIG9uZSBvciBtb3JlIG1ldGFkYXRhIHByb2ZpbGVzLCBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9oZWFkIn1dfSx7bmFtZToidGl0bGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0aXRsZSBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGRvY3VtZW50J3MgdGl0bGUgb3IgbmFtZS4gQXV0aG9ycyBzaG91bGQgdXNlIHRpdGxlcyB0aGF0IGlkZW50aWZ5IHRoZWlyIGRvY3VtZW50cyBldmVuIHdoZW4gdGhleSBhcmUgdXNlZCBvdXQgb2YgY29udGV4dCwgZm9yIGV4YW1wbGUgaW4gYSB1c2VyJ3MgaGlzdG9yeSBvciBib29rbWFya3MsIG9yIGluIHNlYXJjaCByZXN1bHRzLiBUaGUgZG9jdW1lbnQncyB0aXRsZSBpcyBvZnRlbiBkaWZmZXJlbnQgZnJvbSBpdHMgZmlyc3QgaGVhZGluZywgc2luY2UgdGhlIGZpcnN0IGhlYWRpbmcgZG9lcyBub3QgaGF2ZSB0byBzdGFuZCBhbG9uZSB3aGVuIHRha2VuIG91dCBvZiBjb250ZXh0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RpdGxlIn1dfSx7bmFtZToiYmFzZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJhc2UgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBzcGVjaWZ5IHRoZSBkb2N1bWVudCBiYXNlIFVSTCBmb3IgdGhlIHB1cnBvc2VzIG9mIHJlc29sdmluZyByZWxhdGl2ZSBVUkxzLCBhbmQgdGhlIG5hbWUgb2YgdGhlIGRlZmF1bHQgYnJvd3NpbmcgY29udGV4dCBmb3IgdGhlIHB1cnBvc2VzIG9mIGZvbGxvd2luZyBoeXBlcmxpbmtzLiBUaGUgZWxlbWVudCBkb2VzIG5vdCByZXByZXNlbnQgYW55IGNvbnRlbnQgYmV5b25kIHRoaXMgaW5mb3JtYXRpb24uIn0sYXR0cmlidXRlczpbe25hbWU6ImhyZWYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiYXNlIFVSTCB0byBiZSB1c2VkIHRocm91Z2hvdXQgdGhlIGRvY3VtZW50IGZvciByZWxhdGl2ZSBVUkwgYWRkcmVzc2VzLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIHRoaXMgZWxlbWVudCBtdXN0IGNvbWUgYmVmb3JlIGFueSBvdGhlciBlbGVtZW50cyB3aXRoIGF0dHJpYnV0ZXMgd2hvc2UgdmFsdWVzIGFyZSBVUkxzLiBBYnNvbHV0ZSBhbmQgcmVsYXRpdmUgVVJMcyBhcmUgYWxsb3dlZC4ifX0se25hbWU6InRhcmdldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBuYW1lIG9yIGtleXdvcmQgaW5kaWNhdGluZyB0aGUgZGVmYXVsdCBsb2NhdGlvbiB0byBkaXNwbGF5IHRoZSByZXN1bHQgd2hlbiBoeXBlcmxpbmtzIG9yIGZvcm1zIGNhdXNlIG5hdmlnYXRpb24sIGZvciBlbGVtZW50cyB0aGF0IGRvIG5vdCBoYXZlIGFuIGV4cGxpY2l0IHRhcmdldCByZWZlcmVuY2UuIEl0IGlzIGEgbmFtZSBvZiwgb3Iga2V5d29yZCBmb3IsIGEgX2Jyb3dzaW5nIGNvbnRleHRfIChmb3IgZXhhbXBsZTogdGFiLCB3aW5kb3csIG9yIGlubGluZSBmcmFtZSkuIFRoZSBmb2xsb3dpbmcga2V5d29yZHMgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzOlxuXG4qICAgYF9zZWxmYDogTG9hZCB0aGUgcmVzdWx0IGludG8gdGhlIHNhbWUgYnJvd3NpbmcgY29udGV4dCBhcyB0aGUgY3VycmVudCBvbmUuIFRoaXMgdmFsdWUgaXMgdGhlIGRlZmF1bHQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLlxuKiAgIGBfYmxhbmtgOiBMb2FkIHRoZSByZXN1bHQgaW50byBhIG5ldyB1bm5hbWVkIGJyb3dzaW5nIGNvbnRleHQuXG4qICAgYF9wYXJlbnRgOiBMb2FkIHRoZSByZXN1bHQgaW50byB0aGUgcGFyZW50IGJyb3dzaW5nIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgb25lLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgb3B0aW9uIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG4qICAgYF90b3BgOiBMb2FkIHRoZSByZXN1bHQgaW50byB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQgKHRoYXQgaXMsIHRoZSBicm93c2luZyBjb250ZXh0IHRoYXQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGN1cnJlbnQgb25lLCBhbmQgaGFzIG5vIHBhcmVudCkuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLCB0aGlzIGVsZW1lbnQgbXVzdCBjb21lIGJlZm9yZSBhbnkgb3RoZXIgZWxlbWVudHMgd2l0aCBhdHRyaWJ1dGVzIHdob3NlIHZhbHVlcyBhcmUgVVJMcy4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iYXNlIn1dfSx7bmFtZToibGluayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxpbmsgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBsaW5rIHRoZWlyIGRvY3VtZW50IHRvIG90aGVyIHJlc291cmNlcy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiaHJlZiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBbVVJMXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1VSTCAiVVJMOiBVbmlmb3JtIFJlc291cmNlIExvY2F0b3IgKFVSTCkgaXMgYSB0ZXh0IHN0cmluZyBzcGVjaWZ5aW5nIHdoZXJlIGEgcmVzb3VyY2UgY2FuIGJlIGZvdW5kIG9uIHRoZSBJbnRlcm5ldC4iKSBvZiB0aGUgbGlua2VkIHJlc291cmNlLiBBIFVSTCBjYW4gYmUgYWJzb2x1dGUgb3IgcmVsYXRpdmUuJ319LHtuYW1lOiJjcm9zc29yaWdpbiIsdmFsdWVTZXQ6InhvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIFtDT1JTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0NPUlMgIkNPUlM6IENPUlMgKENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nKSBpcyBhIHN5c3RlbSwgY29uc2lzdGluZyBvZiB0cmFuc21pdHRpbmcgSFRUUCBoZWFkZXJzLCB0aGF0IGRldGVybWluZXMgd2hldGhlciBicm93c2VycyBibG9jayBmcm9udGVuZCBKYXZhU2NyaXB0IGNvZGUgZnJvbSBhY2Nlc3NpbmcgcmVzcG9uc2VzIGZvciBjcm9zcy1vcmlnaW4gcmVxdWVzdHMuIikgbXVzdCBiZSB1c2VkIHdoZW4gZmV0Y2hpbmcgdGhlIHJlc291cmNlLiBbQ09SUy1lbmFibGVkIGltYWdlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9DT1JTX0VuYWJsZWRfSW1hZ2UpIGNhbiBiZSByZXVzZWQgaW4gdGhlIFtgPGNhbnZhcz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FudmFzICJVc2UgdGhlIEhUTUwgPGNhbnZhcz4gZWxlbWVudCB3aXRoIGVpdGhlciB0aGUgY2FudmFzIHNjcmlwdGluZyBBUEkgb3IgdGhlIFdlYkdMIEFQSSB0byBkcmF3IGdyYXBoaWNzIGFuZCBhbmltYXRpb25zLiIpIGVsZW1lbnQgd2l0aG91dCBiZWluZyBfdGFpbnRlZF8uIFRoZSBhbGxvd2VkIHZhbHVlcyBhcmU6XG5cbmBhbm9ueW1vdXNgXG5cbkEgY3Jvc3Mtb3JpZ2luIHJlcXVlc3QgKGkuZS4gd2l0aCBhbiBbYE9yaWdpbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9PcmlnaW4gIlRoZSBPcmlnaW4gcmVxdWVzdCBoZWFkZXIgaW5kaWNhdGVzIHdoZXJlIGEgZmV0Y2ggb3JpZ2luYXRlcyBmcm9tLiBJdCBkb2VzblwndCBpbmNsdWRlIGFueSBwYXRoIGluZm9ybWF0aW9uLCBidXQgb25seSB0aGUgc2VydmVyIG5hbWUuIEl0IGlzIHNlbnQgd2l0aCBDT1JTIHJlcXVlc3RzLCBhcyB3ZWxsIGFzIHdpdGggUE9TVCByZXF1ZXN0cy4gSXQgaXMgc2ltaWxhciB0byB0aGUgUmVmZXJlciBoZWFkZXIsIGJ1dCwgdW5saWtlIHRoaXMgaGVhZGVyLCBpdCBkb2VzblwndCBkaXNjbG9zZSB0aGUgd2hvbGUgcGF0aC4iKSBIVFRQIGhlYWRlcikgaXMgcGVyZm9ybWVkLCBidXQgbm8gY3JlZGVudGlhbCBpcyBzZW50IChpLmUuIG5vIGNvb2tpZSwgWC41MDkgY2VydGlmaWNhdGUsIG9yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24pLiBJZiB0aGUgc2VydmVyIGRvZXMgbm90IGdpdmUgY3JlZGVudGlhbHMgdG8gdGhlIG9yaWdpbiBzaXRlIChieSBub3Qgc2V0dGluZyB0aGUgW2BBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luICJUaGUgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIHJlc3BvbnNlIGhlYWRlciBpbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVzcG9uc2UgY2FuIGJlIHNoYXJlZCB3aXRoIHJlcXVlc3RpbmcgY29kZSBmcm9tIHRoZSBnaXZlbiBvcmlnaW4uIikgSFRUUCBoZWFkZXIpIHRoZSBpbWFnZSB3aWxsIGJlIHRhaW50ZWQgYW5kIGl0cyB1c2FnZSByZXN0cmljdGVkLlxuXG5gdXNlLWNyZWRlbnRpYWxzYFxuXG5BIGNyb3NzLW9yaWdpbiByZXF1ZXN0IChpLmUuIHdpdGggYW4gYE9yaWdpbmAgSFRUUCBoZWFkZXIpIGlzIHBlcmZvcm1lZCBhbG9uZyB3aXRoIGEgY3JlZGVudGlhbCBzZW50IChpLmUuIGEgY29va2llLCBjZXJ0aWZpY2F0ZSwgYW5kL29yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24gaXMgcGVyZm9ybWVkKS4gSWYgdGhlIHNlcnZlciBkb2VzIG5vdCBnaXZlIGNyZWRlbnRpYWxzIHRvIHRoZSBvcmlnaW4gc2l0ZSAodGhyb3VnaCBbYEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0FjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzICJUaGUgQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMgcmVzcG9uc2UgaGVhZGVyIHRlbGxzIGJyb3dzZXJzIHdoZXRoZXIgdG8gZXhwb3NlIHRoZSByZXNwb25zZSB0byBmcm9udGVuZCBKYXZhU2NyaXB0IGNvZGUgd2hlbiB0aGUgcmVxdWVzdFwncyBjcmVkZW50aWFscyBtb2RlIChSZXF1ZXN0LmNyZWRlbnRpYWxzKSBpcyAiaW5jbHVkZSIuIikgSFRUUCBoZWFkZXIpLCB0aGUgcmVzb3VyY2Ugd2lsbCBiZSBfdGFpbnRlZF8gYW5kIGl0cyB1c2FnZSByZXN0cmljdGVkLlxuXG5JZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50LCB0aGUgcmVzb3VyY2UgaXMgZmV0Y2hlZCB3aXRob3V0IGEgW0NPUlNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQ09SUyAiQ09SUzogQ09SUyAoQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcpIGlzIGEgc3lzdGVtLCBjb25zaXN0aW5nIG9mIHRyYW5zbWl0dGluZyBIVFRQIGhlYWRlcnMsIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIGJyb3dzZXJzIGJsb2NrIGZyb250ZW5kIEphdmFTY3JpcHQgY29kZSBmcm9tIGFjY2Vzc2luZyByZXNwb25zZXMgZm9yIGNyb3NzLW9yaWdpbiByZXF1ZXN0cy4iKSByZXF1ZXN0IChpLmUuIHdpdGhvdXQgc2VuZGluZyB0aGUgYE9yaWdpbmAgSFRUUCBoZWFkZXIpLCBwcmV2ZW50aW5nIGl0cyBub24tdGFpbnRlZCB1c2FnZS4gSWYgaW52YWxpZCwgaXQgaXMgaGFuZGxlZCBhcyBpZiB0aGUgZW51bWVyYXRlZCBrZXl3b3JkICoqYW5vbnltb3VzKiogd2FzIHVzZWQuIFNlZSBbQ09SUyBzZXR0aW5ncyBhdHRyaWJ1dGVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0NPUlNfc2V0dGluZ3NfYXR0cmlidXRlcykgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uJ319LHtuYW1lOiJyZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIG5hbWVzIGEgcmVsYXRpb25zaGlwIG9mIHRoZSBsaW5rZWQgZG9jdW1lbnQgdG8gdGhlIGN1cnJlbnQgZG9jdW1lbnQuIFRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBbbGluayB0eXBlcyB2YWx1ZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvTGlua190eXBlcykuIn19LHtuYW1lOiJtZWRpYSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBtZWRpYSB0aGF0IHRoZSBsaW5rZWQgcmVzb3VyY2UgYXBwbGllcyB0by4gSXRzIHZhbHVlIG11c3QgYmUgYSBtZWRpYSB0eXBlIC8gW21lZGlhIHF1ZXJ5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvTWVkaWFfcXVlcmllcykuIFRoaXMgYXR0cmlidXRlIGlzIG1haW5seSB1c2VmdWwgd2hlbiBsaW5raW5nIHRvIGV4dGVybmFsIHN0eWxlc2hlZXRzIOKAlCBpdCBhbGxvd3MgdGhlIHVzZXIgYWdlbnQgdG8gcGljayB0aGUgYmVzdCBhZGFwdGVkIG9uZSBmb3IgdGhlIGRldmljZSBpdCBydW5zIG9uLlxuXG4qKk5vdGVzOioqXG5cbiogICBJbiBIVE1MIDQsIHRoaXMgY2FuIG9ubHkgYmUgYSBzaW1wbGUgd2hpdGUtc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgbWVkaWEgZGVzY3JpcHRpb24gbGl0ZXJhbHMsIGkuZS4sIFttZWRpYSB0eXBlcyBhbmQgZ3JvdXBzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQG1lZGlhKSwgd2hlcmUgZGVmaW5lZCBhbmQgYWxsb3dlZCBhcyB2YWx1ZXMgZm9yIHRoaXMgYXR0cmlidXRlLCBzdWNoIGFzIGBwcmludGAsIGBzY3JlZW5gLCBgYXVyYWxgLCBgYnJhaWxsZWAuIEhUTUw1IGV4dGVuZGVkIHRoaXMgdG8gYW55IGtpbmQgb2YgW21lZGlhIHF1ZXJpZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9NZWRpYV9xdWVyaWVzKSwgd2hpY2ggYXJlIGEgc3VwZXJzZXQgb2YgdGhlIGFsbG93ZWQgdmFsdWVzIG9mIEhUTUwgNC5cbiogICBCcm93c2VycyBub3Qgc3VwcG9ydGluZyBbQ1NTMyBNZWRpYSBRdWVyaWVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvTWVkaWFfcXVlcmllcykgd29uJ3QgbmVjZXNzYXJpbHkgcmVjb2duaXplIHRoZSBhZGVxdWF0ZSBsaW5rOyBkbyBub3QgZm9yZ2V0IHRvIHNldCBmYWxsYmFjayBsaW5rcywgdGhlIHJlc3RyaWN0ZWQgc2V0IG9mIG1lZGlhIHF1ZXJpZXMgZGVmaW5lZCBpbiBIVE1MIDQuIn19LHtuYW1lOiJocmVmbGFuZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSBsYW5ndWFnZSBvZiB0aGUgbGlua2VkIHJlc291cmNlLiBJdCBpcyBwdXJlbHkgYWR2aXNvcnkuIEFsbG93ZWQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IFtCQ1A0N10oaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL2JjcC9iY3A0Ny50eHQpLiBVc2UgdGhpcyBhdHRyaWJ1dGUgb25seSBpZiB0aGUgW2BocmVmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2EjYXR0ci1ocmVmKSBhdHRyaWJ1dGUgaXMgcHJlc2VudC4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGlzIHVzZWQgdG8gZGVmaW5lIHRoZSB0eXBlIG9mIHRoZSBjb250ZW50IGxpbmtlZCB0by4gVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgc2hvdWxkIGJlIGEgTUlNRSB0eXBlIHN1Y2ggYXMgKip0ZXh0L2h0bWwqKiwgKip0ZXh0L2NzcyoqLCBhbmQgc28gb24uIFRoZSBjb21tb24gdXNlIG9mIHRoaXMgYXR0cmlidXRlIGlzIHRvIGRlZmluZSB0aGUgdHlwZSBvZiBzdHlsZXNoZWV0IGJlaW5nIHJlZmVyZW5jZWQgKHN1Y2ggYXMgKip0ZXh0L2NzcyoqKSwgYnV0IGdpdmVuIHRoYXQgQ1NTIGlzIHRoZSBvbmx5IHN0eWxlc2hlZXQgbGFuZ3VhZ2UgdXNlZCBvbiB0aGUgd2ViLCBub3Qgb25seSBpcyBpdCBwb3NzaWJsZSB0byBvbWl0IHRoZSBgdHlwZWAgYXR0cmlidXRlLCBidXQgaXMgYWN0dWFsbHkgbm93IHJlY29tbWVuZGVkIHByYWN0aWNlLiBJdCBpcyBhbHNvIHVzZWQgb24gYHJlbD0icHJlbG9hZCJgIGxpbmsgdHlwZXMsIHRvIG1ha2Ugc3VyZSB0aGUgYnJvd3NlciBvbmx5IGRvd25sb2FkcyBmaWxlIHR5cGVzIHRoYXQgaXQgc3VwcG9ydHMuJ319LHtuYW1lOiJzaXplcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgc2l6ZXMgb2YgdGhlIGljb25zIGZvciB2aXN1YWwgbWVkaWEgY29udGFpbmVkIGluIHRoZSByZXNvdXJjZS4gSXQgbXVzdCBiZSBwcmVzZW50IG9ubHkgaWYgdGhlIFtgcmVsYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xpbmsjYXR0ci1yZWwpIGNvbnRhaW5zIGEgdmFsdWUgb2YgYGljb25gIG9yIGEgbm9uLXN0YW5kYXJkIHR5cGUgc3VjaCBhcyBBcHBsZSdzIGBhcHBsZS10b3VjaC1pY29uYC4gSXQgbWF5IGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgYW55YCwgbWVhbmluZyB0aGF0IHRoZSBpY29uIGNhbiBiZSBzY2FsZWQgdG8gYW55IHNpemUgYXMgaXQgaXMgaW4gYSB2ZWN0b3IgZm9ybWF0LCBsaWtlIGBpbWFnZS9zdmcreG1sYC5cbiogICBhIHdoaXRlLXNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIHNpemVzLCBlYWNoIGluIHRoZSBmb3JtYXQgYF88d2lkdGggaW4gcGl4ZWxzPl94XzxoZWlnaHQgaW4gcGl4ZWxzPl9gIG9yIGBfPHdpZHRoIGluIHBpeGVscz5fWF88aGVpZ2h0IGluIHBpeGVscz5fYC4gRWFjaCBvZiB0aGVzZSBzaXplcyBtdXN0IGJlIGNvbnRhaW5lZCBpbiB0aGUgcmVzb3VyY2UuXG5cbioqTm90ZToqKiBNb3N0IGljb24gZm9ybWF0cyBhcmUgb25seSBhYmxlIHRvIHN0b3JlIG9uZSBzaW5nbGUgaWNvbjsgdGhlcmVmb3JlIG1vc3Qgb2YgdGhlIHRpbWUgdGhlIFtgc2l6ZXNgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzI2F0dHItc2l6ZXMpIGNvbnRhaW5zIG9ubHkgb25lIGVudHJ5LiBNUydzIElDTyBmb3JtYXQgZG9lcywgYXMgd2VsbCBhcyBBcHBsZSdzIElDTlMuIElDTyBpcyBtb3JlIHViaXF1aXRvdXM7IHlvdSBzaG91bGQgZGVmaW5pdGVseSB1c2UgaXQuIn19LHtuYW1lOiJhcyIsZGVzY3JpcHRpb246J1RoaXMgYXR0cmlidXRlIGlzIG9ubHkgdXNlZCB3aGVuIGByZWw9InByZWxvYWQiYCBvciBgcmVsPSJwcmVmZXRjaCJgIGhhcyBiZWVuIHNldCBvbiB0aGUgYDxsaW5rPmAgZWxlbWVudC4gSXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGNvbnRlbnQgYmVpbmcgbG9hZGVkIGJ5IHRoZSBgPGxpbms+YCwgd2hpY2ggaXMgbmVjZXNzYXJ5IGZvciBjb250ZW50IHByaW9yaXRpemF0aW9uLCByZXF1ZXN0IG1hdGNoaW5nLCBhcHBsaWNhdGlvbiBvZiBjb3JyZWN0IFtjb250ZW50IHNlY3VyaXR5IHBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9DU1ApLCBhbmQgc2V0dGluZyBvZiBjb3JyZWN0IFtgQWNjZXB0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0FjY2VwdCAiVGhlIEFjY2VwdCByZXF1ZXN0IEhUVFAgaGVhZGVyIGFkdmVydGlzZXMgd2hpY2ggY29udGVudCB0eXBlcywgZXhwcmVzc2VkIGFzIE1JTUUgdHlwZXMsIHRoZSBjbGllbnQgaXMgYWJsZSB0byB1bmRlcnN0YW5kLiBVc2luZyBjb250ZW50IG5lZ290aWF0aW9uLCB0aGUgc2VydmVyIHRoZW4gc2VsZWN0cyBvbmUgb2YgdGhlIHByb3Bvc2FscywgdXNlcyBpdCBhbmQgaW5mb3JtcyB0aGUgY2xpZW50IG9mIGl0cyBjaG9pY2Ugd2l0aCB0aGUgQ29udGVudC1UeXBlIHJlc3BvbnNlIGhlYWRlci4gQnJvd3NlcnMgc2V0IGFkZXF1YXRlIHZhbHVlcyBmb3IgdGhpcyBoZWFkZXIgZGVwZW5kaW5nIG9uwqB0aGUgY29udGV4dCB3aGVyZSB0aGUgcmVxdWVzdCBpcyBkb25lOiB3aGVuIGZldGNoaW5nIGEgQ1NTIHN0eWxlc2hlZXQgYSBkaWZmZXJlbnQgdmFsdWUgaXMgc2V0IGZvciB0aGUgcmVxdWVzdCB0aGFuIHdoZW4gZmV0Y2hpbmcgYW4gaW1hZ2UswqB2aWRlbyBvciBhIHNjcmlwdC4iKSByZXF1ZXN0IGhlYWRlci4nfSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgcmVsYXRpdmUgaW1wb3J0YW5jZSBvZiB0aGUgcmVzb3VyY2UuIFByaW9yaXR5IGhpbnRzIGFyZSBkZWxlZ2F0ZWQgdXNpbmcgdGhlIHZhbHVlczoifSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246JyoqYGF1dG9gKio6IEluZGljYXRlc8KgKipub8KgcHJlZmVyZW5jZSoqLiBUaGUgYnJvd3NlciBtYXkgdXNlIGl0cyBvd24gaGV1cmlzdGljcyB0byBkZWNpZGUgdGhlIHByaW9yaXR5IG9mIHRoZSByZXNvdXJjZS5cblxuKipgaGlnaGAqKjogSW5kaWNhdGVzIHRvIHRoZcKgYnJvd3NlcsKgdGhhdCB0aGUgcmVzb3VyY2UgaXMgb2bCoCoqaGlnaCoqIHByaW9yaXR5LlxuXG4qKmBsb3dgKio6wqBJbmRpY2F0ZXMgdG8gdGhlwqBicm93c2VywqB0aGF0IHRoZSByZXNvdXJjZSBpcyBvZsKgKipsb3cqKiBwcmlvcml0eS5cblxuKipOb3RlOioqIFRoZSBgaW1wb3J0YW5jZWAgYXR0cmlidXRlIG1heSBvbmx5IGJlIHVzZWQgZm9yIHRoZSBgPGxpbms+YCBlbGVtZW50IGlmIGByZWw9InByZWxvYWQiYCBvciBgcmVsPSJwcmVmZXRjaCJgIGlzIHByZXNlbnQuJ30se25hbWU6ImludGVncml0eSIsZGVzY3JpcHRpb246IkNvbnRhaW5zIGlubGluZSBtZXRhZGF0YSDigJQgYSBiYXNlNjQtZW5jb2RlZCBjcnlwdG9ncmFwaGljIGhhc2ggb2YgdGhlIHJlc291cmNlIChmaWxlKSB5b3XigJlyZSB0ZWxsaW5nIHRoZSBicm93c2VyIHRvIGZldGNoLiBUaGUgYnJvd3NlciBjYW4gdXNlIHRoaXMgdG8gdmVyaWZ5IHRoYXQgdGhlIGZldGNoZWQgcmVzb3VyY2UgaGFzIGJlZW4gZGVsaXZlcmVkIGZyZWUgb2YgdW5leHBlY3RlZCBtYW5pcHVsYXRpb24uIFNlZSBbU3VicmVzb3VyY2UgSW50ZWdyaXR5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TdWJyZXNvdXJjZV9JbnRlZ3JpdHkpLiJ9LHtuYW1lOiJyZWZlcnJlcnBvbGljeSIsZGVzY3JpcHRpb246J0Egc3RyaW5nIGluZGljYXRpbmcgd2hpY2ggcmVmZXJyZXIgdG8gdXNlIHdoZW4gZmV0Y2hpbmcgdGhlIHJlc291cmNlOlxuXG4qICAgYG5vLXJlZmVycmVyYCBtZWFucyB0aGF0IHRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudC5cbiogICBgbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVgIG1lYW5zIHRoYXQgbm8gW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgYmUgc2VudCB3aGVuIG5hdmlnYXRpbmcgdG8gYW4gb3JpZ2luIHdpdGhvdXQgVExTIChIVFRQUykuIFRoaXMgaXMgYSB1c2VyIGFnZW504oCZcyBkZWZhdWx0IGJlaGF2aW9yLCBpZiBubyBwb2xpY3kgaXMgb3RoZXJ3aXNlIHNwZWNpZmllZC5cbiogICBgb3JpZ2luYCBtZWFucyB0aGF0IHRoZSByZWZlcnJlciB3aWxsIGJlIHRoZSBvcmlnaW4gb2YgdGhlIHBhZ2UsIHdoaWNoIGlzIHJvdWdobHkgdGhlIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydC5cbiogICBgb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYCBtZWFucyB0aGF0IG5hdmlnYXRpbmcgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydCwgd2hpbGUgbmF2aWdhdGluZyBvbiB0aGUgc2FtZSBvcmlnaW4gd2lsbCBpbmNsdWRlIHRoZSByZWZlcnJlclwncyBwYXRoLlxuKiAgIGB1bnNhZmUtdXJsYCBtZWFucyB0aGF0IHRoZSByZWZlcnJlciB3aWxsIGluY2x1ZGUgdGhlIG9yaWdpbiBhbmQgdGhlIHBhdGggKGJ1dCBub3QgdGhlIGZyYWdtZW50LCBwYXNzd29yZCwgb3IgdXNlcm5hbWUpLiBUaGlzIGNhc2UgaXMgdW5zYWZlIGJlY2F1c2UgaXQgY2FuIGxlYWsgb3JpZ2lucyBhbmQgcGF0aHMgZnJvbSBUTFMtcHJvdGVjdGVkIHJlc291cmNlcyB0byBpbnNlY3VyZSBvcmlnaW5zLid9LHtuYW1lOiJ0aXRsZSIsZGVzY3JpcHRpb246J1RoZSBgdGl0bGVgIGF0dHJpYnV0ZSBoYXMgc3BlY2lhbCBzZW1hbnRpY3Mgb24gdGhlIGA8bGluaz5gIGVsZW1lbnQuIFdoZW4gdXNlZCBvbiBhIGA8bGluayByZWw9InN0eWxlc2hlZXQiPmAgaXQgZGVmaW5lcyBhIFtwcmVmZXJyZWQgb3IgYW4gYWx0ZXJuYXRlIHN0eWxlc2hlZXRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9BbHRlcm5hdGl2ZV9zdHlsZV9zaGVldHMpLiBJbmNvcnJlY3RseSB1c2luZyBpdCBtYXkgW2NhdXNlIHRoZSBzdHlsZXNoZWV0IHRvIGJlIGlnbm9yZWRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ29ycmVjdGx5X1VzaW5nX1RpdGxlc19XaXRoX0V4dGVybmFsX1N0eWxlc2hlZXRzKS4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xpbmsifV19LHtuYW1lOiJtZXRhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWV0YSBlbGVtZW50IHJlcHJlc2VudHMgdmFyaW91cyBraW5kcyBvZiBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSBleHByZXNzZWQgdXNpbmcgdGhlIHRpdGxlLCBiYXNlLCBsaW5rLCBzdHlsZSwgYW5kIHNjcmlwdCBlbGVtZW50cy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgbmFtZSBvZiBhIHBpZWNlIG9mIGRvY3VtZW50LWxldmVsIG1ldGFkYXRhLiBJdCBzaG91bGQgbm90IGJlIHNldCBpZiBvbmUgb2YgdGhlIGF0dHJpYnV0ZXMgW2BpdGVtcHJvcGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMjYXR0ci1pdGVtcHJvcCksIFtgaHR0cC1lcXVpdmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItaHR0cC1lcXVpdikgb3IgW2BjaGFyc2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jaGFyc2V0KSBpcyBhbHNvIHNldC5cblxuVGhpcyBtZXRhZGF0YSBuYW1lIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmFsdWUgY29udGFpbmVkIGJ5IHRoZSBbYGNvbnRlbnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNvbnRlbnQpIGF0dHJpYnV0ZS4gVGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgdGhlIG5hbWUgYXR0cmlidXRlIGFyZTpcblxuKiAgIGBhcHBsaWNhdGlvbi1uYW1lYCB3aGljaCBkZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvbiBydW5uaW5nIGluIHRoZSB3ZWIgcGFnZS5cbiAgICBcbiAgICAqKk5vdGU6KipcbiAgICBcbiAgICAqICAgQnJvd3NlcnMgbWF5IHVzZSB0aGlzIHRvIGlkZW50aWZ5IHRoZSBhcHBsaWNhdGlvbi4gSXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIFtgPHRpdGxlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aXRsZSAiVGhlIEhUTUwgVGl0bGUgZWxlbWVudCAoPHRpdGxlPikgZGVmaW5lcyB0aGUgZG9jdW1lbnRcJ3MgdGl0bGUgdGhhdCBpcyBzaG93biBpbiBhIGJyb3dzZXJcJ3MgdGl0bGUgYmFyIG9yIGEgcGFnZVwncyB0YWIuIikgZWxlbWVudCwgd2hpY2ggdXN1YWxseSBjb250YWluIHRoZSBhcHBsaWNhdGlvbiBuYW1lLCBidXQgbWF5IGFsc28gY29udGFpbiBpbmZvcm1hdGlvbiBsaWtlIHRoZSBkb2N1bWVudCBuYW1lIG9yIGEgc3RhdHVzLlxuICAgICogICBTaW1wbGUgd2ViIHBhZ2VzIHNob3VsZG5cJ3QgZGVmaW5lIGFuIGFwcGxpY2F0aW9uLW5hbWUuXG4gICAgXG4qICAgYGF1dGhvcmAgd2hpY2ggZGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgZG9jdW1lbnRcJ3MgYXV0aG9yLlxuKiAgIGBkZXNjcmlwdGlvbmAgd2hpY2ggY29udGFpbnMgYSBzaG9ydCBhbmQgYWNjdXJhdGUgc3VtbWFyeSBvZiB0aGUgY29udGVudCBvZiB0aGUgcGFnZS4gU2V2ZXJhbCBicm93c2VycywgbGlrZSBGaXJlZm94IGFuZCBPcGVyYSwgdXNlIHRoaXMgYXMgdGhlIGRlZmF1bHQgZGVzY3JpcHRpb24gb2YgYm9va21hcmtlZCBwYWdlcy5cbiogICBgZ2VuZXJhdG9yYCB3aGljaCBjb250YWlucyB0aGUgaWRlbnRpZmllciBvZiB0aGUgc29mdHdhcmUgdGhhdCBnZW5lcmF0ZWQgdGhlIHBhZ2UuXG4qICAgYGtleXdvcmRzYCB3aGljaCBjb250YWlucyB3b3JkcyByZWxldmFudCB0byB0aGUgcGFnZVwncyBjb250ZW50IHNlcGFyYXRlZCBieSBjb21tYXMuXG4qICAgYHJlZmVycmVyYCB3aGljaCBjb250cm9scyB0aGUgW2BSZWZlcmVyYCBIVFRQIGhlYWRlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIpIGF0dGFjaGVkIHRvIHJlcXVlc3RzIHNlbnQgZnJvbSB0aGUgZG9jdW1lbnQ6XG4gICAgXG4gICAgVmFsdWVzIGZvciB0aGUgYGNvbnRlbnRgIGF0dHJpYnV0ZSBvZiBgPG1ldGEgbmFtZT0icmVmZXJyZXIiPmBcbiAgICBcbiAgICBgbm8tcmVmZXJyZXJgXG4gICAgXG4gICAgRG8gbm90IHNlbmQgYSBIVFRQIGBSZWZlcnJlcmAgaGVhZGVyLlxuICAgIFxuICAgIGBvcmlnaW5gXG4gICAgXG4gICAgU2VuZCB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9PcmlnaW4pIG9mIHRoZSBkb2N1bWVudC5cbiAgICBcbiAgICBgbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVgXG4gICAgXG4gICAgU2VuZCB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9PcmlnaW4pIGFzIGEgcmVmZXJyZXIgdG8gVVJMcyBhcyBzZWN1cmUgYXMgdGhlIGN1cnJlbnQgcGFnZSwgKGh0dHBz4oaSaHR0cHMpLCBidXQgZG9lcyBub3Qgc2VuZCBhIHJlZmVycmVyIHRvIGxlc3Mgc2VjdXJlIFVSTHMgKGh0dHBz4oaSaHR0cCkuIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLlxuICAgIFxuICAgIGBvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gXG4gICAgXG4gICAgU2VuZCB0aGUgZnVsbCBVUkwgKHN0cmlwcGVkIG9mIHBhcmFtZXRlcnMpIGZvciBzYW1lLW9yaWdpbiByZXF1ZXN0cywgYnV0IG9ubHkgc2VuZCB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9PcmlnaW4pIGZvciBvdGhlciBjYXNlcy5cbiAgICBcbiAgICBgc2FtZS1vcmlnaW5gXG4gICAgXG4gICAgQSByZWZlcnJlciB3aWxsIGJlIHNlbnQgZm9yIFtzYW1lLXNpdGUgb3JpZ2luc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvU2FtZS1vcmlnaW5fcG9saWN5KSwgYnV0IGNyb3NzLW9yaWdpbiByZXF1ZXN0cyB3aWxsIGNvbnRhaW4gbm8gcmVmZXJyZXIgaW5mb3JtYXRpb24uXG4gICAgXG4gICAgYHN0cmljdC1vcmlnaW5gXG4gICAgXG4gICAgT25seSBzZW5kIHRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGFzIHRoZSByZWZlcnJlciB0byBhLXByaW9yaSBhcy1tdWNoLXNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFMtPkhUVFBTKSwgYnV0IGRvblwndCBzZW5kIGl0IHRvIGEgbGVzcyBzZWN1cmUgZGVzdGluYXRpb24gKEhUVFBTLT5IVFRQKS5cbiAgICBcbiAgICBgc3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmBcbiAgICBcbiAgICBTZW5kIGEgZnVsbCBVUkwgd2hlbiBwZXJmb3JtaW5nIGEgc2FtZS1vcmlnaW4gcmVxdWVzdCwgb25seSBzZW5kIHRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IHRvIGEtcHJpb3JpIGFzLW11Y2gtc2VjdXJlIGRlc3RpbmF0aW9uIChIVFRQUy0+SFRUUFMpLCBhbmQgc2VuZCBubyBoZWFkZXIgdG8gYSBsZXNzIHNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFMtPkhUVFApLlxuICAgIFxuICAgIGB1bnNhZmUtVVJMYFxuICAgIFxuICAgIFNlbmQgdGhlIGZ1bGwgVVJMIChzdHJpcHBlZCBvZiBwYXJhbWV0ZXJzKSBmb3Igc2FtZS1vcmlnaW4gb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzLlxuICAgIFxuICAgICoqTm90ZXM6KipcbiAgICBcbiAgICAqICAgU29tZSBicm93c2VycyBzdXBwb3J0IHRoZSBkZXByZWNhdGVkIHZhbHVlcyBvZiBgYWx3YXlzYCwgYGRlZmF1bHRgLCBhbmQgYG5ldmVyYCBmb3IgcmVmZXJyZXIuXG4gICAgKiAgIER5bmFtaWNhbGx5IGluc2VydGluZyBgPG1ldGEgbmFtZT0icmVmZXJyZXIiPmAgKHdpdGggW2Bkb2N1bWVudC53cml0ZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Eb2N1bWVudC93cml0ZSkgb3IgW2BhcHBlbmRDaGlsZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Ob2RlL2FwcGVuZENoaWxkKSkgbWFrZXMgdGhlIHJlZmVycmVyIGJlaGF2aW91ciB1bnByZWRpY3RhYmxlLlxuICAgICogICBXaGVuIHNldmVyYWwgY29uZmxpY3RpbmcgcG9saWNpZXMgYXJlIGRlZmluZWQsIHRoZSBuby1yZWZlcnJlciBwb2xpY3kgaXMgYXBwbGllZC5cbiAgICBcblxuVGhpcyBhdHRyaWJ1dGUgbWF5IGFsc28gaGF2ZSBhIHZhbHVlIHRha2VuIGZyb20gdGhlIGV4dGVuZGVkIGxpc3QgZGVmaW5lZCBvbiBbV0hBVFdHIFdpa2kgTWV0YUV4dGVuc2lvbnMgcGFnZV0oaHR0cHM6Ly93aWtpLndoYXR3Zy5vcmcvd2lraS9NZXRhRXh0ZW5zaW9ucykuIEFsdGhvdWdoIG5vbmUgaGF2ZSBiZWVuIGZvcm1hbGx5IGFjY2VwdGVkIHlldCwgYSBmZXcgY29tbW9ubHkgdXNlZCBuYW1lcyBhcmU6XG5cbiogICBgY3JlYXRvcmAgd2hpY2ggZGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgY3JlYXRvciBvZiB0aGUgZG9jdW1lbnQsIHN1Y2ggYXMgYW4gb3JnYW5pemF0aW9uIG9yIGluc3RpdHV0aW9uLiBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSwgc2V2ZXJhbCBbYDxtZXRhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhICJUaGUgSFRNTCA8bWV0YT4gZWxlbWVudCByZXByZXNlbnRzIG1ldGFkYXRhIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IG90aGVyIEhUTUwgbWV0YS1yZWxhdGVkIGVsZW1lbnRzLCBsaWtlIDxiYXNlPiwgPGxpbms+LCA8c2NyaXB0PiwgPHN0eWxlPiBvciA8dGl0bGU+LiIpIGVsZW1lbnRzIHNob3VsZCBiZSB1c2VkLlxuKiAgIGBnb29nbGVib3RgLCBhIHN5bm9ueW0gb2YgYHJvYm90c2AsIGlzIG9ubHkgZm9sbG93ZWQgYnkgR29vZ2xlYm90ICh0aGUgaW5kZXhpbmcgY3Jhd2xlciBmb3IgR29vZ2xlKS5cbiogICBgcHVibGlzaGVyYCB3aGljaCBkZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBkb2N1bWVudFwncyBwdWJsaXNoZXIuXG4qICAgYHJvYm90c2Agd2hpY2ggZGVmaW5lcyB0aGUgYmVoYXZpb3VyIHRoYXQgY29vcGVyYXRpdmUgY3Jhd2xlcnMsIG9yICJyb2JvdHMiLCBzaG91bGQgdXNlIHdpdGggdGhlIHBhZ2UuIEl0IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIHZhbHVlcyBiZWxvdzpcbiAgICBcbiAgICBWYWx1ZXMgZm9yIHRoZSBjb250ZW50IG9mIGA8bWV0YSBuYW1lPSJyb2JvdHMiPmBcbiAgICBcbiAgICBWYWx1ZVxuICAgIFxuICAgIERlc2NyaXB0aW9uXG4gICAgXG4gICAgVXNlZCBieVxuICAgIFxuICAgIGBpbmRleGBcbiAgICBcbiAgICBBbGxvd3MgdGhlIHJvYm90IHRvIGluZGV4IHRoZSBwYWdlIChkZWZhdWx0KS5cbiAgICBcbiAgICBBbGxcbiAgICBcbiAgICBgbm9pbmRleGBcbiAgICBcbiAgICBSZXF1ZXN0cyB0aGUgcm9ib3QgdG8gbm90IGluZGV4IHRoZSBwYWdlLlxuICAgIFxuICAgIEFsbFxuICAgIFxuICAgIGBmb2xsb3dgXG4gICAgXG4gICAgQWxsb3dzIHRoZSByb2JvdCB0byBmb2xsb3cgdGhlIGxpbmtzIG9uIHRoZSBwYWdlIChkZWZhdWx0KS5cbiAgICBcbiAgICBBbGxcbiAgICBcbiAgICBgbm9mb2xsb3dgXG4gICAgXG4gICAgUmVxdWVzdHMgdGhlIHJvYm90IHRvIG5vdCBmb2xsb3cgdGhlIGxpbmtzIG9uIHRoZSBwYWdlLlxuICAgIFxuICAgIEFsbFxuICAgIFxuICAgIGBub25lYFxuICAgIFxuICAgIEVxdWl2YWxlbnQgdG8gYG5vaW5kZXgsIG5vZm9sbG93YFxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL3dlYm1hc3RlcnMvYW5zd2VyLzc5ODEyKVxuICAgIFxuICAgIGBub29kcGBcbiAgICBcbiAgICBQcmV2ZW50cyB1c2luZyB0aGUgW09wZW4gRGlyZWN0b3J5IFByb2plY3RdKGh0dHBzOi8vd3d3LmRtb3oub3JnLykgZGVzY3JpcHRpb24sIGlmIGFueSwgYXMgdGhlIHBhZ2UgZGVzY3JpcHRpb24gaW4gc2VhcmNoIGVuZ2luZSByZXN1bHRzLlxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL3dlYm1hc3RlcnMvYW5zd2VyLzM1NjI0I25vZG1veiksIFtZYWhvb10oaHR0cHM6Ly9oZWxwLnlhaG9vLmNvbS9rYi9zZWFyY2gtZm9yLWRlc2t0b3AvbWV0YS10YWdzLXJvYm90c3R4dC15YWhvby1zZWFyY2gtc2xuMjIxMy5odG1sI2NvbnQ1KSwgW0JpbmddKGh0dHBzOi8vd3d3LmJpbmcuY29tL3dlYm1hc3Rlci9oZWxwL3doaWNoLXJvYm90cy1tZXRhdGFncy1kb2VzLWJpbmctc3VwcG9ydC01MTk4ZDI0MClcbiAgICBcbiAgICBgbm9hcmNoaXZlYFxuICAgIFxuICAgIFJlcXVlc3RzIHRoZSBzZWFyY2ggZW5naW5lIG5vdCB0byBjYWNoZSB0aGUgcGFnZSBjb250ZW50LlxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3dlYm1hc3RlcnMvY29udHJvbC1jcmF3bC1pbmRleC9kb2NzL3JvYm90c19tZXRhX3RhZyN2YWxpZC1pbmRleGluZy0tc2VydmluZy1kaXJlY3RpdmVzKSwgW1lhaG9vXShodHRwczovL2hlbHAueWFob28uY29tL2tiL3NlYXJjaC1mb3ItZGVza3RvcC9TTE4yMjEzLmh0bWwpLCBbQmluZ10oaHR0cHM6Ly93d3cuYmluZy5jb20vd2VibWFzdGVyL2hlbHAvd2hpY2gtcm9ib3RzLW1ldGF0YWdzLWRvZXMtYmluZy1zdXBwb3J0LTUxOThkMjQwKVxuICAgIFxuICAgIGBub3NuaXBwZXRgXG4gICAgXG4gICAgUHJldmVudHMgZGlzcGxheWluZyBhbnkgZGVzY3JpcHRpb24gb2YgdGhlIHBhZ2UgaW4gc2VhcmNoIGVuZ2luZSByZXN1bHRzLlxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3dlYm1hc3RlcnMvY29udHJvbC1jcmF3bC1pbmRleC9kb2NzL3JvYm90c19tZXRhX3RhZyN2YWxpZC1pbmRleGluZy0tc2VydmluZy1kaXJlY3RpdmVzKSwgW0JpbmddKGh0dHBzOi8vd3d3LmJpbmcuY29tL3dlYm1hc3Rlci9oZWxwL3doaWNoLXJvYm90cy1tZXRhdGFncy1kb2VzLWJpbmctc3VwcG9ydC01MTk4ZDI0MClcbiAgICBcbiAgICBgbm9pbWFnZWluZGV4YFxuICAgIFxuICAgIFJlcXVlc3RzIHRoaXMgcGFnZSBub3QgdG8gYXBwZWFyIGFzIHRoZSByZWZlcnJpbmcgcGFnZSBvZiBhbiBpbmRleGVkIGltYWdlLlxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3dlYm1hc3RlcnMvY29udHJvbC1jcmF3bC1pbmRleC9kb2NzL3JvYm90c19tZXRhX3RhZyN2YWxpZC1pbmRleGluZy0tc2VydmluZy1kaXJlY3RpdmVzKVxuICAgIFxuICAgIGBub2NhY2hlYFxuICAgIFxuICAgIFN5bm9ueW0gb2YgYG5vYXJjaGl2ZWAuXG4gICAgXG4gICAgW0JpbmddKGh0dHBzOi8vd3d3LmJpbmcuY29tL3dlYm1hc3Rlci9oZWxwL3doaWNoLXJvYm90cy1tZXRhdGFncy1kb2VzLWJpbmctc3VwcG9ydC01MTk4ZDI0MClcbiAgICBcbiAgICAqKk5vdGVzOioqXG4gICAgXG4gICAgKiAgIE9ubHkgY29vcGVyYXRpdmUgcm9ib3RzIGZvbGxvdyB0aGVzZSBydWxlcy4gRG8gbm90IGV4cGVjdCB0byBwcmV2ZW50IGUtbWFpbCBoYXJ2ZXN0ZXJzIHdpdGggdGhlbS5cbiAgICAqICAgVGhlIHJvYm90IHN0aWxsIG5lZWRzIHRvIGFjY2VzcyB0aGUgcGFnZSBpbiBvcmRlciB0byByZWFkIHRoZXNlIHJ1bGVzLiBUbyBwcmV2ZW50IGJhbmR3aWR0aCBjb25zdW1wdGlvbiwgdXNlIGEgX1tyb2JvdHMudHh0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3JvYm90cy50eHQgInJvYm90cy50eHQ6IFJvYm90cy50eHQgaXMgYSBmaWxlIHdoaWNoIGlzIHVzdWFsbHkgcGxhY2VkIGluIHRoZSByb290IG9mIGFueSB3ZWJzaXRlLiBJdCBkZWNpZGVzIHdoZXRoZXLCoGNyYXdsZXJzIGFyZSBwZXJtaXR0ZWQgb3IgZm9yYmlkZGVuIGFjY2VzcyB0byB0aGUgd2ViIHNpdGUuIilfIGZpbGUuXG4gICAgKiAgIElmIHlvdSB3YW50IHRvIHJlbW92ZSBhIHBhZ2UsIGBub2luZGV4YCB3aWxsIHdvcmssIGJ1dCBvbmx5IGFmdGVyIHRoZSByb2JvdCB2aXNpdHMgdGhlIHBhZ2UgYWdhaW4uIEVuc3VyZSB0aGF0IHRoZSBgcm9ib3RzLnR4dGAgZmlsZSBpcyBub3QgcHJldmVudGluZyByZXZpc2l0cy5cbiAgICAqICAgU29tZSB2YWx1ZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSwgbGlrZSBgaW5kZXhgIGFuZCBgbm9pbmRleGAsIG9yIGBmb2xsb3dgIGFuZCBgbm9mb2xsb3dgLiBJbiB0aGVzZSBjYXNlcyB0aGUgcm9ib3RcJ3MgYmVoYXZpb3VyIGlzIHVuZGVmaW5lZCBhbmQgbWF5IHZhcnkgYmV0d2VlbiB0aGVtLlxuICAgICogICBTb21lIGNyYXdsZXIgcm9ib3RzLCBsaWtlIEdvb2dsZSwgWWFob28gYW5kIEJpbmcsIHN1cHBvcnQgdGhlIHNhbWUgdmFsdWVzIGZvciB0aGUgSFRUUCBoZWFkZXIgYFgtUm9ib3RzLVRhZ2A7IHRoaXMgYWxsb3dzIG5vbi1IVE1MIGRvY3VtZW50cyBsaWtlIGltYWdlcyB0byB1c2UgdGhlc2UgcnVsZXMuXG4gICAgXG4qICAgYHNsdXJwYCwgaXMgYSBzeW5vbnltIG9mIGByb2JvdHNgLCBidXQgb25seSBmb3IgU2x1cnAgLSB0aGUgY3Jhd2xlciBmb3IgWWFob28gU2VhcmNoLlxuKiAgIGB2aWV3cG9ydGAsIHdoaWNoIGdpdmVzIGhpbnRzIGFib3V0IHRoZSBzaXplIG9mIHRoZSBpbml0aWFsIHNpemUgb2YgdGhlIFt2aWV3cG9ydF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS92aWV3cG9ydCAidmlld3BvcnQ6IEEgdmlld3BvcnQgcmVwcmVzZW50cyBhIHBvbHlnb25hbCAobm9ybWFsbHkgcmVjdGFuZ3VsYXIpIGFyZWEgaW4gY29tcHV0ZXIgZ3JhcGhpY3MgdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgdmlld2VkLiBJbiB3ZWIgYnJvd3NlciB0ZXJtcywgaXQgcmVmZXJzIHRvIHRoZSBwYXJ0IG9mIHRoZSBkb2N1bWVudCB5b3VcJ3JlIHZpZXdpbmcgd2hpY2ggaXMgY3VycmVudGx5IHZpc2libGUgaW4gaXRzIHdpbmRvdyAob3IgdGhlIHNjcmVlbiwgaWYgdGhlIGRvY3VtZW50IGlzIGJlaW5nIHZpZXdlZCBpbiBmdWxsIHNjcmVlbiBtb2RlKS4gQ29udGVudCBvdXRzaWRlIHRoZSB2aWV3cG9ydCBpcyBub3QgdmlzaWJsZSBvbnNjcmVlbiB1bnRpbCBzY3JvbGxlZCBpbnRvIHZpZXcuIikuIFVzZWQgYnkgbW9iaWxlIGRldmljZXMgb25seS5cbiAgICBcbiAgICBWYWx1ZXMgZm9yIHRoZSBjb250ZW50IG9mIGA8bWV0YSBuYW1lPSJ2aWV3cG9ydCI+YFxuICAgIFxuICAgIFZhbHVlXG4gICAgXG4gICAgUG9zc2libGUgc3VidmFsdWVzXG4gICAgXG4gICAgRGVzY3JpcHRpb25cbiAgICBcbiAgICBgd2lkdGhgXG4gICAgXG4gICAgQSBwb3NpdGl2ZSBpbnRlZ2VyIG51bWJlciwgb3IgdGhlIHRleHQgYGRldmljZS13aWR0aGBcbiAgICBcbiAgICBEZWZpbmVzIHRoZSBwaXhlbCB3aWR0aCBvZiB0aGUgdmlld3BvcnQgdGhhdCB5b3Ugd2FudCB0aGUgd2ViIHNpdGUgdG8gYmUgcmVuZGVyZWQgYXQuXG4gICAgXG4gICAgYGhlaWdodGBcbiAgICBcbiAgICBBIHBvc2l0aXZlIGludGVnZXIsIG9yIHRoZSB0ZXh0IGBkZXZpY2UtaGVpZ2h0YFxuICAgIFxuICAgIERlZmluZXMgdGhlIGhlaWdodCBvZiB0aGUgdmlld3BvcnQuIE5vdCB1c2VkIGJ5IGFueSBicm93c2VyLlxuICAgIFxuICAgIGBpbml0aWFsLXNjYWxlYFxuICAgIFxuICAgIEEgcG9zaXRpdmUgbnVtYmVyIGJldHdlZW4gYDAuMGAgYW5kIGAxMC4wYFxuICAgIFxuICAgIERlZmluZXMgdGhlIHJhdGlvIGJldHdlZW4gdGhlIGRldmljZSB3aWR0aCAoYGRldmljZS13aWR0aGAgaW4gcG9ydHJhaXQgbW9kZSBvciBgZGV2aWNlLWhlaWdodGAgaW4gbGFuZHNjYXBlIG1vZGUpIGFuZCB0aGUgdmlld3BvcnQgc2l6ZS5cbiAgICBcbiAgICBgbWF4aW11bS1zY2FsZWBcbiAgICBcbiAgICBBIHBvc2l0aXZlIG51bWJlciBiZXR3ZWVuIGAwLjBgIGFuZCBgMTAuMGBcbiAgICBcbiAgICBEZWZpbmVzIHRoZSBtYXhpbXVtIGFtb3VudCB0byB6b29tIGluLiBJdCBtdXN0IGJlIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIGBtaW5pbXVtLXNjYWxlYCBvciB0aGUgYmVoYXZpb3VyIGlzIHVuZGVmaW5lZC4gQnJvd3NlciBzZXR0aW5ncyBjYW4gaWdub3JlIHRoaXMgcnVsZSBhbmQgaU9TMTArIGlnbm9yZXMgaXQgYnkgZGVmYXVsdC5cbiAgICBcbiAgICBgbWluaW11bS1zY2FsZWBcbiAgICBcbiAgICBBIHBvc2l0aXZlIG51bWJlciBiZXR3ZWVuIGAwLjBgIGFuZCBgMTAuMGBcbiAgICBcbiAgICBEZWZpbmVzIHRoZSBtaW5pbXVtIHpvb20gbGV2ZWwuIEl0IG11c3QgYmUgc21hbGxlciBvciBlcXVhbCB0byB0aGUgYG1heGltdW0tc2NhbGVgIG9yIHRoZSBiZWhhdmlvdXIgaXMgdW5kZWZpbmVkLiBCcm93c2VyIHNldHRpbmdzIGNhbiBpZ25vcmUgdGhpcyBydWxlIGFuZCBpT1MxMCsgaWdub3JlcyBpdCBieSBkZWZhdWx0LlxuICAgIFxuICAgIGB1c2VyLXNjYWxhYmxlYFxuICAgIFxuICAgIGB5ZXNgIG9yIGBub2BcbiAgICBcbiAgICBJZiBzZXQgdG8gYG5vYCwgdGhlIHVzZXIgaXMgbm90IGFibGUgdG8gem9vbSBpbiB0aGUgd2VicGFnZS4gVGhlIGRlZmF1bHQgaXMgYHllc2AuIEJyb3dzZXIgc2V0dGluZ3MgY2FuIGlnbm9yZSB0aGlzIHJ1bGUsIGFuZCBpT1MxMCsgaWdub3JlcyBpdCBieSBkZWZhdWx0LlxuICAgIFxuICAgIFNwZWNpZmljYXRpb25cbiAgICBcbiAgICBTdGF0dXNcbiAgICBcbiAgICBDb21tZW50XG4gICAgXG4gICAgW0NTUyBEZXZpY2UgQWRhcHRhdGlvbiAgXG4gICAgVGhlIGRlZmluaXRpb24gb2YgXCc8bWV0YSBuYW1lPSJ2aWV3cG9ydCI+XCcgaW4gdGhhdCBzcGVjaWZpY2F0aW9uLl0oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1kZXZpY2UtYWRhcHQvI3ZpZXdwb3J0LW1ldGEpXG4gICAgXG4gICAgV29ya2luZyBEcmFmdFxuICAgIFxuICAgIE5vbi1ub3JtYXRpdmVseSBkZXNjcmliZXMgdGhlIFZpZXdwb3J0IE1FVEEgZWxlbWVudFxuICAgIFxuICAgIFNlZSBhbHNvOiBbYEB2aWV3cG9ydGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Admlld3BvcnQgIlRoZSBAdmlld3BvcnQgQ1NTIGF0LXJ1bGUgbGV0cyB5b3UgY29uZmlndXJlIHRoZSB2aWV3cG9ydCB0aHJvdWdoIHdoaWNoIHRoZSBkb2N1bWVudCBpcyB2aWV3ZWQuIEl0XCdzIHByaW1hcmlseSB1c2VkIGZvciBtb2JpbGUgZGV2aWNlcywgYnV0IGlzIGFsc28gdXNlZCBieSBkZXNrdG9wIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCBmZWF0dXJlcyBsaWtlICJzbmFwIHRvIGVkZ2UiIChzdWNoIGFzIE1pY3Jvc29mdCBFZGdlKS4iKVxuICAgIFxuICAgICoqTm90ZXM6KipcbiAgICBcbiAgICAqICAgVGhvdWdoIHVuc3RhbmRhcmRpemVkLCB0aGlzIGRlY2xhcmF0aW9uIGlzIHJlc3BlY3RlZCBieSBtb3N0IG1vYmlsZSBicm93c2VycyBkdWUgdG8gZGUtZmFjdG8gZG9taW5hbmNlLlxuICAgICogICBUaGUgZGVmYXVsdCB2YWx1ZXMgbWF5IHZhcnkgYmV0d2VlbiBkZXZpY2VzIGFuZCBicm93c2Vycy5cbiAgICAqICAgVG8gbGVhcm4gYWJvdXQgdGhpcyBkZWNsYXJhdGlvbiBpbiBGaXJlZm94IGZvciBNb2JpbGUsIHNlZSBbdGhpcyBhcnRpY2xlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vYmlsZS9WaWV3cG9ydF9tZXRhX3RhZyAiTW9iaWxlL1ZpZXdwb3J0IG1ldGEgdGFnIikuJ319LHtuYW1lOiJodHRwLWVxdWl2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidEZWZpbmVzIGEgcHJhZ21hIGRpcmVjdGl2ZS4gVGhlIGF0dHJpYnV0ZSBpcyBuYW1lZCBgKipodHRwLWVxdWl2KiooYWxlbnQpYCBiZWNhdXNlIGFsbCB0aGUgYWxsb3dlZCB2YWx1ZXMgYXJlIG5hbWVzIG9mIHBhcnRpY3VsYXIgSFRUUCBoZWFkZXJzOlxuXG4qICAgYCJjb250ZW50LWxhbmd1YWdlImAgIFxuICAgIERlZmluZXMgdGhlIGRlZmF1bHQgbGFuZ3VhZ2Ugb2YgdGhlIHBhZ2UuIEl0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBbbGFuZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9sYW5nKSBhdHRyaWJ1dGUgb24gYW55IGVsZW1lbnQuXG4gICAgXG4gICAgKipXYXJuaW5nOioqIERvIG5vdCB1c2UgdGhpcyB2YWx1ZSwgYXMgaXQgaXMgb2Jzb2xldGUuIFByZWZlciB0aGUgYGxhbmdgIGF0dHJpYnV0ZSBvbiB0aGUgW2A8aHRtbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaHRtbCAiVGhlIEhUTUwgPGh0bWw+IGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgcm9vdCAodG9wLWxldmVsIGVsZW1lbnQpIG9mIGFuIEhUTUwgZG9jdW1lbnQsIHNvIGl0IGlzIGFsc28gcmVmZXJyZWQgdG8gYXMgdGhlIHJvb3QgZWxlbWVudC4gQWxsIG90aGVyIGVsZW1lbnRzIG11c3QgYmUgZGVzY2VuZGFudHMgb2YgdGhpcyBlbGVtZW50LiIpIGVsZW1lbnQuXG4gICAgXG4qICAgYCJjb250ZW50LXNlY3VyaXR5LXBvbGljeSJgICBcbiAgICBBbGxvd3MgcGFnZSBhdXRob3JzIHRvIGRlZmluZSBhIFtjb250ZW50IHBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvQ1NQL0NTUF9wb2xpY3lfZGlyZWN0aXZlcykgZm9yIHRoZSBjdXJyZW50IHBhZ2UuIENvbnRlbnQgcG9saWNpZXMgbW9zdGx5IHNwZWNpZnkgYWxsb3dlZCBzZXJ2ZXIgb3JpZ2lucyBhbmQgc2NyaXB0IGVuZHBvaW50cyB3aGljaCBoZWxwIGd1YXJkIGFnYWluc3QgY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcgYXR0YWNrcy5cbiogICBgImNvbnRlbnQtdHlwZSJgICBcbiAgICBEZWZpbmVzIHRoZSBbTUlNRSB0eXBlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L01JTUVfdHlwZSkgb2YgdGhlIGRvY3VtZW50LCBmb2xsb3dlZCBieSBpdHMgY2hhcmFjdGVyIGVuY29kaW5nLiBJdCBmb2xsb3dzIHRoZSBzYW1lIHN5bnRheCBhcyB0aGUgSFRUUCBgY29udGVudC10eXBlYCBlbnRpdHktaGVhZGVyIGZpZWxkLCBidXQgYXMgaXQgaXMgaW5zaWRlIGEgSFRNTCBwYWdlLCBtb3N0IHZhbHVlcyBvdGhlciB0aGFuIGB0ZXh0L2h0bWxgIGFyZSBpbXBvc3NpYmxlLiBUaGVyZWZvcmUgdGhlIHZhbGlkIHN5bnRheCBmb3IgaXRzIGBjb250ZW50YCBpcyB0aGUgc3RyaW5nIFwnYHRleHQvaHRtbGBcJyBmb2xsb3dlZCBieSBhIGNoYXJhY3RlciBzZXQgd2l0aCB0aGUgZm9sbG93aW5nIHN5bnRheDogXCdgOyBjaGFyc2V0PV9JQU5BY2hhcnNldF9gXCcsIHdoZXJlIGBJQU5BY2hhcnNldGAgaXMgdGhlIF9wcmVmZXJyZWQgTUlNRSBuYW1lXyBmb3IgYSBjaGFyYWN0ZXIgc2V0IGFzIFtkZWZpbmVkIGJ5IHRoZSBJQU5BLl0oaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvY2hhcmFjdGVyLXNldHMpXG4gICAgXG4gICAgKipXYXJuaW5nOioqIERvIG5vdCB1c2UgdGhpcyB2YWx1ZSwgYXMgaXQgaXMgb2Jzb2xldGUuIFVzZSB0aGUgW2BjaGFyc2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jaGFyc2V0KSBhdHRyaWJ1dGUgb24gdGhlIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgZWxlbWVudC5cbiAgICBcbiAgICAqKk5vdGU6KiogQXMgW2A8bWV0YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSAiVGhlIEhUTUwgPG1ldGE+IGVsZW1lbnQgcmVwcmVzZW50cyBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBvdGhlciBIVE1MIG1ldGEtcmVsYXRlZCBlbGVtZW50cywgbGlrZSA8YmFzZT4sIDxsaW5rPiwgPHNjcmlwdD4sIDxzdHlsZT4gb3IgPHRpdGxlPi4iKSBjYW5cJ3QgY2hhbmdlIGRvY3VtZW50c1wnIHR5cGVzIGluIFhIVE1MIG9yIEhUTUw1XCdzIFhIVE1MIHNlcmlhbGl6YXRpb24sIG5ldmVyIHNldCB0aGUgTUlNRSB0eXBlIHRvIGFuIFhIVE1MIE1JTUUgdHlwZSB3aXRoIGA8bWV0YT5gLlxuICAgIFxuKiAgIGAicmVmcmVzaCJgICBcbiAgICBUaGlzIGluc3RydWN0aW9uIHNwZWNpZmllczpcbiAgICAqICAgVGhlIG51bWJlciBvZiBzZWNvbmRzIHVudGlsIHRoZSBwYWdlIHNob3VsZCBiZSByZWxvYWRlZCAtIG9ubHkgaWYgdGhlIFtgY29udGVudGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItY29udGVudCkgYXR0cmlidXRlIGNvbnRhaW5zIGEgcG9zaXRpdmUgaW50ZWdlci5cbiAgICAqICAgVGhlIG51bWJlciBvZiBzZWNvbmRzIHVudGlsIHRoZSBwYWdlIHNob3VsZCByZWRpcmVjdCB0byBhbm90aGVyIC0gb25seSBpZiB0aGUgW2Bjb250ZW50YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jb250ZW50KSBhdHRyaWJ1dGUgY29udGFpbnMgYSBwb3NpdGl2ZSBpbnRlZ2VyIGZvbGxvd2VkIGJ5IHRoZSBzdHJpbmcgXCdgO3VybD1gXCcsIGFuZCBhIHZhbGlkIFVSTC5cbiogICBgInNldC1jb29raWUiYCAgXG4gICAgRGVmaW5lcyBhIFtjb29raWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvY29va2llKSBmb3IgdGhlIHBhZ2UuIEl0cyBjb250ZW50IG11c3QgZm9sbG93IHRoZSBzeW50YXggZGVmaW5lZCBpbiB0aGUgW0lFVEYgSFRUUCBDb29raWUgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHR0cHN0YXRlLWNvb2tpZS0xNCkuXG4gICAgXG4gICAgKipXYXJuaW5nOioqIERvIG5vdCB1c2UgdGhpcyBpbnN0cnVjdGlvbiwgYXMgaXQgaXMgb2Jzb2xldGUuIFVzZSB0aGUgSFRUUCBoZWFkZXIgW2BTZXQtQ29va2llYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1NldC1Db29raWUpIGluc3RlYWQuJ319LHtuYW1lOiJjb250ZW50IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyB0aGUgdmFsdWUgZm9yIHRoZSBbYGh0dHAtZXF1aXZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWh0dHAtZXF1aXYpIG9yIFtgbmFtZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItbmFtZSkgYXR0cmlidXRlLCBkZXBlbmRpbmcgb24gd2hpY2ggaXMgdXNlZC4ifX0se25hbWU6ImNoYXJzZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGRlY2xhcmVzIHRoZSBwYWdlXCdzIGNoYXJhY3RlciBlbmNvZGluZy4gSXQgbXVzdCBjb250YWluIGEgW3N0YW5kYXJkIElBTkEgTUlNRSBuYW1lIGZvciBjaGFyYWN0ZXIgZW5jb2RpbmdzXShodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyYWN0ZXItc2V0cykuIEFsdGhvdWdoIHRoZSBzdGFuZGFyZCBkb2VzblwndCByZXF1ZXN0IGEgc3BlY2lmaWMgZW5jb2RpbmcsIGl0IHN1Z2dlc3RzOlxuXG4qICAgQXV0aG9ycyBhcmUgZW5jb3VyYWdlZCB0byB1c2UgW2BVVEYtOGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvVVRGLTgpLlxuKiAgIEF1dGhvcnMgc2hvdWxkIG5vdCB1c2UgQVNDSUktaW5jb21wYXRpYmxlIGVuY29kaW5ncyB0byBhdm9pZCBzZWN1cml0eSByaXNrOiBicm93c2VycyBub3Qgc3VwcG9ydGluZyB0aGVtIG1heSBpbnRlcnByZXQgaGFybWZ1bCBjb250ZW50IGFzIEhUTUwuIFRoaXMgaGFwcGVucyB3aXRoIHRoZSBgSklTX0M2MjI2LTE5ODNgLCBgSklTX1gwMjEyLTE5OTBgLCBgSFotR0ItMjMxMmAsIGBKT0hBQmAsIHRoZSBJU08tMjAyMiBmYW1pbHkgYW5kIHRoZSBFQkNESUMgZmFtaWx5LlxuXG4qKk5vdGU6KiogQVNDSUktaW5jb21wYXRpYmxlIGVuY29kaW5ncyBhcmUgdGhvc2UgdGhhdCBkb25cJ3QgbWFwIHRoZSA4LWJpdCBjb2RlIHBvaW50cyBgMHgyMGAgdG8gYDB4N0VgIHRvIHRoZSBgMHgwMDIwYCB0byBgMHgwMDdFYCBVbmljb2RlIGNvZGUgcG9pbnRzKVxuXG4qICAgQXV0aG9ycyAqKm11c3Qgbm90KiogdXNlIGBDRVNVLThgLCBgVVRGLTdgLCBgQk9DVS0xYCBhbmQvb3IgYFNDU1VgIGFzIFtjcm9zcy1zaXRlIHNjcmlwdGluZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9Dcm9zcy1zaXRlX3NjcmlwdGluZykgYXR0YWNrcyB3aXRoIHRoZXNlIGVuY29kaW5ncyBoYXZlIGJlZW4gZGVtb25zdHJhdGVkLlxuKiAgIEF1dGhvcnMgc2hvdWxkIG5vdCB1c2UgYFVURi0zMmAgYmVjYXVzZSBub3QgYWxsIEhUTUw1IGVuY29kaW5nIGFsZ29yaXRobXMgY2FuIGRpc3Rpbmd1aXNoIGl0IGZyb20gYFVURi0xNmAuXG5cbioqTm90ZXM6KipcblxuKiAgIFRoZSBkZWNsYXJlZCBjaGFyYWN0ZXIgZW5jb2RpbmcgbXVzdCBtYXRjaCB0aGUgb25lIHRoZSBwYWdlIHdhcyBzYXZlZCB3aXRoIHRvIGF2b2lkIGdhcmJsZWQgY2hhcmFjdGVycyBhbmQgc2VjdXJpdHkgaG9sZXMuXG4qICAgVGhlIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgZWxlbWVudCBkZWNsYXJpbmcgdGhlIGVuY29kaW5nIG11c3QgYmUgaW5zaWRlIHRoZSBbYDxoZWFkPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9oZWFkICJUaGUgSFRNTCA8aGVhZD4gZWxlbWVudCBwcm92aWRlcyBnZW5lcmFsIGluZm9ybWF0aW9uIChtZXRhZGF0YSkgYWJvdXQgdGhlIGRvY3VtZW50LCBpbmNsdWRpbmcgaXRzIHRpdGxlIGFuZCBsaW5rcyB0byBpdHPCoHNjcmlwdHMgYW5kIHN0eWxlIHNoZWV0cy4iKSBlbGVtZW50IGFuZCAqKndpdGhpbiB0aGUgZmlyc3QgMTAyNCBieXRlcyoqIG9mIHRoZSBIVE1MIGFzIHNvbWUgYnJvd3NlcnMgb25seSBsb29rIGF0IHRob3NlIGJ5dGVzIGJlZm9yZSBjaG9vc2luZyBhbiBlbmNvZGluZy5cbiogICBUaGlzIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgZWxlbWVudCBpcyBvbmx5IG9uZSBwYXJ0IG9mIHRoZSBbYWxnb3JpdGhtIHRvIGRldGVybWluZSBhIHBhZ2VcJ3MgY2hhcmFjdGVyIHNldF0oaHR0cHM6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNlbmNvZGluZy1zbmlmZmluZy1hbGdvcml0aG0gIkFsZ29yaXRobSBjaGFyc2V0IHBhZ2UiKS4gVGhlIFtgQ29udGVudC1UeXBlYCBoZWFkZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9Db250ZW50LVR5cGUpIGFuZCBhbnkgW0J5dGUtT3JkZXIgTWFya3NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQnl0ZS1PcmRlcl9NYXJrICJUaGUgZGVmaW5pdGlvbiBvZiB0aGF0IHRlcm0gKEJ5dGUtT3JkZXIgTWFya3MpIGhhcyBub3QgYmVlbiB3cml0dGVuIHlldDsgcGxlYXNlIGNvbnNpZGVyIGNvbnRyaWJ1dGluZyBpdCEiKSBvdmVycmlkZSB0aGlzIGVsZW1lbnQuXG4qICAgSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gZGVmaW5lIHRoZSBjaGFyYWN0ZXIgZW5jb2RpbmcuIElmIGEgcGFnZVwncyBlbmNvZGluZyBpcyB1bmRlZmluZWQsIGNyb3NzLXNjcmlwdGluZyB0ZWNobmlxdWVzIGFyZSBwb3NzaWJsZSwgc3VjaCBhcyB0aGUgW2BVVEYtN2AgZmFsbGJhY2sgY3Jvc3Mtc2NyaXB0aW5nIHRlY2huaXF1ZV0oaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9kb2N0eXBlLW1pcnJvci93aWtpL0FydGljbGVVdGY3KS5cbiogICBUaGUgW2A8bWV0YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSAiVGhlIEhUTUwgPG1ldGE+IGVsZW1lbnQgcmVwcmVzZW50cyBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBvdGhlciBIVE1MIG1ldGEtcmVsYXRlZCBlbGVtZW50cywgbGlrZSA8YmFzZT4sIDxsaW5rPiwgPHNjcmlwdD4sIDxzdHlsZT4gb3IgPHRpdGxlPi4iKSBlbGVtZW50IHdpdGggYSBgY2hhcnNldGAgYXR0cmlidXRlIGlzIGEgc3lub255bSBmb3IgdGhlIHByZS1IVE1MNSBgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9X0lBTkFjaGFyc2V0XyI+YCwgd2hlcmUgX2BJQU5BY2hhcnNldGBfIGNvbnRhaW5zIHRoZSB2YWx1ZSBvZiB0aGUgZXF1aXZhbGVudCBbYGNoYXJzZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNoYXJzZXQpIGF0dHJpYnV0ZS4gVGhpcyBzeW50YXggaXMgc3RpbGwgYWxsb3dlZCwgYWx0aG91Z2ggbm8gbG9uZ2VyIHJlY29tbWVuZGVkLid9fSx7bmFtZToic2NoZW1lIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgc2NoZW1lIGluIHdoaWNoIG1ldGFkYXRhIGlzIGRlc2NyaWJlZC4gQSBzY2hlbWUgaXMgYSBjb250ZXh0IGxlYWRpbmcgdG8gdGhlIGNvcnJlY3QgaW50ZXJwcmV0YXRpb25zIG9mIHRoZSBbYGNvbnRlbnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNvbnRlbnQpIHZhbHVlLCBsaWtlIGEgZm9ybWF0LlxuXG4qKldhcm5pbmc6KiogRG8gbm90IHVzZSB0aGlzIHZhbHVlLCBhcyBpdCBpcyBvYnNvbGV0ZS4gVGhlcmUgaXMgbm8gcmVwbGFjZW1lbnQgYXMgdGhlcmUgd2FzIG5vIHJlYWwgdXNhZ2UgZm9yIGl0LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSJ9XX0se25hbWU6InN0eWxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc3R5bGUgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBlbWJlZCBzdHlsZSBpbmZvcm1hdGlvbiBpbiB0aGVpciBkb2N1bWVudHMuIFRoZSBzdHlsZSBlbGVtZW50IGlzIG9uZSBvZiBzZXZlcmFsIGlucHV0cyB0byB0aGUgc3R5bGluZyBwcm9jZXNzaW5nIG1vZGVsLiBUaGUgZWxlbWVudCBkb2VzIG5vdCByZXByZXNlbnQgY29udGVudCBmb3IgdGhlIHVzZXIuIn0sYXR0cmlidXRlczpbe25hbWU6Im1lZGlhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHdoaWNoIG1lZGlhIHRoZSBzdHlsZSBzaG91bGQgYmUgYXBwbGllZCB0by4gSXRzIHZhbHVlIGlzIGEgW21lZGlhIHF1ZXJ5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9HdWlkZS9DU1MvTWVkaWFfcXVlcmllcyksIHdoaWNoIGRlZmF1bHRzIHRvIGBhbGxgIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbWlzc2luZy4ifX0se25hbWU6Im5vbmNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGNyeXB0b2dyYXBoaWMgbm9uY2UgKG51bWJlciB1c2VkIG9uY2UpIHVzZWQgdG8gd2hpdGVsaXN0IGlubGluZSBzdHlsZXMgaW4gYSBbc3R5bGUtc3JjIENvbnRlbnQtU2VjdXJpdHktUG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQ29udGVudC1TZWN1cml0eS1Qb2xpY3kvc3R5bGUtc3JjKS4gVGhlIHNlcnZlciBtdXN0IGdlbmVyYXRlIGEgdW5pcXVlIG5vbmNlIHZhbHVlIGVhY2ggdGltZSBpdCB0cmFuc21pdHMgYSBwb2xpY3kuIEl0IGlzIGNyaXRpY2FsIHRvIHByb3ZpZGUgYSBub25jZSB0aGF0IGNhbm5vdCBiZSBndWVzc2VkIGFzIGJ5cGFzc2luZyBhIHJlc291cmNl4oCZcyBwb2xpY3kgaXMgb3RoZXJ3aXNlIHRyaXZpYWwuIn19LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBzdHlsaW5nIGxhbmd1YWdlIGFzIGEgTUlNRSB0eXBlIChjaGFyc2V0IHNob3VsZCBub3QgYmUgc3BlY2lmaWVkKS4gVGhpcyBhdHRyaWJ1dGUgaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIGB0ZXh0L2Nzc2AgaWYgaXQgaXMgbm90IHNwZWNpZmllZCDigJQgdGhlcmUgaXMgdmVyeSBsaXR0bGUgcmVhc29uIHRvIGluY2x1ZGUgdGhpcyBpbiBtb2Rlcm4gd2ViIGRvY3VtZW50cy4ifX0se25hbWU6InNjb3BlZCIsdmFsdWVTZXQ6InYifSx7bmFtZToidGl0bGUiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgW2FsdGVybmF0aXZlIHN0eWxlIHNoZWV0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQWx0ZXJuYXRpdmVfc3R5bGVfc2hlZXRzKSBzZXRzLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3R5bGUifV19LHtuYW1lOiJib2R5IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYm9keSBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGNvbnRlbnQgb2YgdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJvbmFmdGVycHJpbnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgYWZ0ZXIgdGhlIHVzZXIgaGFzIHByaW50ZWQgdGhlIGRvY3VtZW50LiJ9fSx7bmFtZToib25iZWZvcmVwcmludCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB1c2VyIHJlcXVlc3RzIHByaW50aW5nIG9mIHRoZSBkb2N1bWVudC4ifX0se25hbWU6Im9uYmVmb3JldW5sb2FkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGlzIGFib3V0IHRvIGJlIHVubG9hZGVkLiJ9fSx7bmFtZToib25oYXNoY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGZyYWdtZW50IGlkZW50aWZpZXIgcGFydCAoc3RhcnRpbmcgd2l0aCB0aGUgaGFzaCAoYCcjJ2ApIGNoYXJhY3Rlcikgb2YgdGhlIGRvY3VtZW50J3MgY3VycmVudCBhZGRyZXNzIGhhcyBjaGFuZ2VkLiJ9fSx7bmFtZToib25sYW5ndWFnZWNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBwcmVmZXJyZWQgbGFuZ3VhZ2VzIGNoYW5nZWQuIn19LHtuYW1lOiJvbm1lc3NhZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgaGFzIHJlY2VpdmVkIGEgbWVzc2FnZS4ifX0se25hbWU6Im9ub2ZmbGluZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIG5ldHdvcmsgY29tbXVuaWNhdGlvbiBoYXMgZmFpbGVkLiJ9fSx7bmFtZToib25vbmxpbmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBuZXR3b3JrIGNvbW11bmljYXRpb24gaGFzIGJlZW4gcmVzdG9yZWQuIn19LHtuYW1lOiJvbnBhZ2VoaWRlIn0se25hbWU6Im9ucGFnZXNob3cifSx7bmFtZToib25wb3BzdGF0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB1c2VyIGhhcyBuYXZpZ2F0ZWQgc2Vzc2lvbiBoaXN0b3J5LiJ9fSx7bmFtZToib25zdG9yYWdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHN0b3JhZ2UgYXJlYSBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9udW5sb2FkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGlzIGdvaW5nIGF3YXkuIn19LHtuYW1lOiJhbGluayIsZGVzY3JpcHRpb246J0NvbG9yIG9mIHRleHQgZm9yIGh5cGVybGlua3Mgd2hlbiBzZWxlY3RlZC4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sb3IgIlRoZSBjb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgZm9yZWdyb3VuZCBjb2xvciB2YWx1ZSBvZiBhbiBlbGVtZW50XCdzIHRleHQgYW5kIHRleHQgZGVjb3JhdGlvbnMsIGFuZCBzZXRzIHRoZSBjdXJyZW50Y29sb3IgdmFsdWUuIikgcHJvcGVydHkgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgW2A6YWN0aXZlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTLzphY3RpdmUgIlRoZSA6YWN0aXZlIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBhbiBlbGVtZW50IChzdWNoIGFzIGEgYnV0dG9uKSB0aGF0IGlzIGJlaW5nIGFjdGl2YXRlZCBieSB0aGUgdXNlci4iKSBwc2V1ZG8tY2xhc3MgaW5zdGVhZC5fJ30se25hbWU6ImJhY2tncm91bmQiLGRlc2NyaXB0aW9uOidVUkkgb2YgYSBpbWFnZSB0byB1c2UgYXMgYSBiYWNrZ3JvdW5kLiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BiYWNrZ3JvdW5kYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQgIlRoZSBiYWNrZ3JvdW5kIHNob3J0aGFuZCBDU1MgcHJvcGVydHkgc2V0cyBhbGwgYmFja2dyb3VuZCBzdHlsZSBwcm9wZXJ0aWVzIGF0IG9uY2UsIHN1Y2ggYXMgY29sb3IsIGltYWdlLCBvcmlnaW4gYW5kIHNpemUsIG9yIHJlcGVhdCBtZXRob2QuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6ImJnY29sb3IiLGRlc2NyaXB0aW9uOidCYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgZG9jdW1lbnQuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYGJhY2tncm91bmQtY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1jb2xvciAiVGhlIGJhY2tncm91bmQtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgYW4gZWxlbWVudC4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToiYm90dG9tbWFyZ2luIixkZXNjcmlwdGlvbjonVGhlIG1hcmdpbiBvZiB0aGUgYm90dG9tIG9mIHRoZSBib2R5LiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BtYXJnaW4tYm90dG9tYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbi1ib3R0b20gIlRoZSBtYXJnaW4tYm90dG9tIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiB0aGUgYm90dG9tIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6ImxlZnRtYXJnaW4iLGRlc2NyaXB0aW9uOidUaGUgbWFyZ2luIG9mIHRoZSBsZWZ0IG9mIHRoZSBib2R5LiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BtYXJnaW4tbGVmdGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tbGVmdCAiVGhlIG1hcmdpbi1sZWZ0IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiB0aGUgbGVmdCBzaWRlIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6ImxpbmsiLGRlc2NyaXB0aW9uOidDb2xvciBvZiB0ZXh0IGZvciB1bnZpc2l0ZWQgaHlwZXJ0ZXh0IGxpbmtzLiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2Bjb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9jb2xvciAiVGhlIGNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHZhbHVlIG9mIGFuIGVsZW1lbnRcJ3MgdGV4dCBhbmQgdGV4dCBkZWNvcmF0aW9ucywgYW5kIHNldHMgdGhlIGN1cnJlbnRjb2xvciB2YWx1ZS4iKSBwcm9wZXJ0eSBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBbYDpsaW5rYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTLzpsaW5rICJUaGUgOmxpbmsgQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBoYXMgbm90IHlldCBiZWVuIHZpc2l0ZWQuIEl0IG1hdGNoZXMgZXZlcnkgdW52aXNpdGVkIDxhPiwgPGFyZWE+LCBvciA8bGluaz4gZWxlbWVudCB0aGF0IGhhcyBhbiBocmVmIGF0dHJpYnV0ZS4iKSBwc2V1ZG8tY2xhc3MgaW5zdGVhZC5fJ30se25hbWU6Im9uYmx1ciIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgbG9zZXMgZm9jdXMuIn0se25hbWU6Im9uZXJyb3IiLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGZhaWxzIHRvIGxvYWQgcHJvcGVybHkuIn0se25hbWU6Im9uZm9jdXMiLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IHJlY2VpdmVzIGZvY3VzLiJ9LHtuYW1lOiJvbmxvYWQiLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGhhcyBmaW5pc2hlZCBsb2FkaW5nLiJ9LHtuYW1lOiJvbnJlZG8iLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHVzZXIgaGFzIG1vdmVkIGZvcndhcmQgaW4gdW5kbyB0cmFuc2FjdGlvbiBoaXN0b3J5LiJ9LHtuYW1lOiJvbnJlc2l6ZSIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgaGFzIGJlZW4gcmVzaXplZC4ifSx7bmFtZToib251bmRvIixkZXNjcmlwdGlvbjoiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB1c2VyIGhhcyBtb3ZlZCBiYWNrd2FyZCBpbiB1bmRvIHRyYW5zYWN0aW9uIGhpc3RvcnkuIn0se25hbWU6InJpZ2h0bWFyZ2luIixkZXNjcmlwdGlvbjonVGhlIG1hcmdpbiBvZiB0aGUgcmlnaHQgb2YgdGhlIGJvZHkuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYG1hcmdpbi1yaWdodGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tcmlnaHQgIlRoZSBtYXJnaW4tcmlnaHQgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSByaWdodCBzaWRlIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6InRleHQiLGRlc2NyaXB0aW9uOidGb3JlZ3JvdW5kIGNvbG9yIG9mIHRleHQuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYGNvbG9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NvbG9yICJUaGUgY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGZvcmVncm91bmQgY29sb3IgdmFsdWUgb2YgYW4gZWxlbWVudFwncyB0ZXh0IGFuZCB0ZXh0IGRlY29yYXRpb25zLCBhbmQgc2V0cyB0aGUgY3VycmVudGNvbG9yIHZhbHVlLiIpIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGluc3RlYWQuXyd9LHtuYW1lOiJ0b3BtYXJnaW4iLGRlc2NyaXB0aW9uOidUaGUgbWFyZ2luIG9mIHRoZSB0b3Agb2YgdGhlIGJvZHkuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYG1hcmdpbi10b3BgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luLXRvcCAiVGhlIG1hcmdpbi10b3AgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSB0b3Agb2YgYW4gZWxlbWVudC4gQSBwb3NpdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgZmFydGhlciBmcm9tIGl0cyBuZWlnaGJvcnMsIHdoaWxlIGEgbmVnYXRpdmUgdmFsdWUgcGxhY2VzIGl0IGNsb3Nlci4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToidmxpbmsiLGRlc2NyaXB0aW9uOidDb2xvciBvZiB0ZXh0IGZvciB2aXNpdGVkIGh5cGVydGV4dCBsaW5rcy4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sb3IgIlRoZSBjb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgZm9yZWdyb3VuZCBjb2xvciB2YWx1ZSBvZiBhbiBlbGVtZW50XCdzIHRleHQgYW5kIHRleHQgZGVjb3JhdGlvbnMsIGFuZCBzZXRzIHRoZSBjdXJyZW50Y29sb3IgdmFsdWUuIikgcHJvcGVydHkgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgW2A6dmlzaXRlZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy86dmlzaXRlZCAiVGhlIDp2aXNpdGVkIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBsaW5rcyB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHZpc2l0ZWQuIEZvciBwcml2YWN5IHJlYXNvbnMsIHRoZSBzdHlsZXMgdGhhdCBjYW4gYmUgbW9kaWZpZWQgdXNpbmcgdGhpcyBzZWxlY3RvciBhcmUgdmVyeSBsaW1pdGVkLiIpIHBzZXVkby1jbGFzcyBpbnN0ZWFkLl8nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2JvZHkifV19LHtuYW1lOiJhcnRpY2xlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYXJ0aWNsZSBlbGVtZW50IHJlcHJlc2VudHMgYSBjb21wbGV0ZSwgb3Igc2VsZi1jb250YWluZWQsIGNvbXBvc2l0aW9uIGluIGEgZG9jdW1lbnQsIHBhZ2UsIGFwcGxpY2F0aW9uLCBvciBzaXRlIGFuZCB0aGF0IGlzLCBpbiBwcmluY2lwbGUsIGluZGVwZW5kZW50bHkgZGlzdHJpYnV0YWJsZSBvciByZXVzYWJsZSwgZS5nLiBpbiBzeW5kaWNhdGlvbi4gVGhpcyBjb3VsZCBiZSBhIGZvcnVtIHBvc3QsIGEgbWFnYXppbmUgb3IgbmV3c3BhcGVyIGFydGljbGUsIGEgYmxvZyBlbnRyeSwgYSB1c2VyLXN1Ym1pdHRlZCBjb21tZW50LCBhbiBpbnRlcmFjdGl2ZSB3aWRnZXQgb3IgZ2FkZ2V0LCBvciBhbnkgb3RoZXIgaW5kZXBlbmRlbnQgaXRlbSBvZiBjb250ZW50LiBFYWNoIGFydGljbGUgc2hvdWxkIGJlIGlkZW50aWZpZWQsIHR5cGljYWxseSBieSBpbmNsdWRpbmcgYSBoZWFkaW5nIChoMeKAk2g2IGVsZW1lbnQpIGFzIGEgY2hpbGQgb2YgdGhlIGFydGljbGUgZWxlbWVudC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hcnRpY2xlIn1dfSx7bmFtZToic2VjdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNlY3Rpb24gZWxlbWVudCByZXByZXNlbnRzIGEgZ2VuZXJpYyBzZWN0aW9uIG9mIGEgZG9jdW1lbnQgb3IgYXBwbGljYXRpb24uIEEgc2VjdGlvbiwgaW4gdGhpcyBjb250ZXh0LCBpcyBhIHRoZW1hdGljIGdyb3VwaW5nIG9mIGNvbnRlbnQuIEVhY2ggc2VjdGlvbiBzaG91bGQgYmUgaWRlbnRpZmllZCwgdHlwaWNhbGx5IGJ5IGluY2x1ZGluZyBhIGhlYWRpbmcgKCBoMS0gaDYgZWxlbWVudCkgYXMgYSBjaGlsZCBvZiB0aGUgc2VjdGlvbiBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NlY3Rpb24ifV19LHtuYW1lOiJuYXYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYXYgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBvZiBhIHBhZ2UgdGhhdCBsaW5rcyB0byBvdGhlciBwYWdlcyBvciB0byBwYXJ0cyB3aXRoaW4gdGhlIHBhZ2U6IGEgc2VjdGlvbiB3aXRoIG5hdmlnYXRpb24gbGlua3MuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbmF2In1dfSx7bmFtZToiYXNpZGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBhc2lkZSBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIG9mIGEgcGFnZSB0aGF0IGNvbnNpc3RzIG9mIGNvbnRlbnQgdGhhdCBpcyB0YW5nZW50aWFsbHkgcmVsYXRlZCB0byB0aGUgY29udGVudCBhcm91bmQgdGhlIGFzaWRlIGVsZW1lbnQsIGFuZCB3aGljaCBjb3VsZCBiZSBjb25zaWRlcmVkIHNlcGFyYXRlIGZyb20gdGhhdCBjb250ZW50LiBTdWNoIHNlY3Rpb25zIGFyZSBvZnRlbiByZXByZXNlbnRlZCBhcyBzaWRlYmFycyBpbiBwcmludGVkIHR5cG9ncmFwaHkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXNpZGUifV19LHtuYW1lOiJoMSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGgxIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gaGVhZGluZy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9IZWFkaW5nX0VsZW1lbnRzIn1dfSx7bmFtZToiaDIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoMiBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIGhlYWRpbmcuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvSGVhZGluZ19FbGVtZW50cyJ9XX0se25hbWU6ImgzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaDMgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBoZWFkaW5nLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L0hlYWRpbmdfRWxlbWVudHMifV19LHtuYW1lOiJoNCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGg0IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gaGVhZGluZy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9IZWFkaW5nX0VsZW1lbnRzIn1dfSx7bmFtZToiaDUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoNSBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIGhlYWRpbmcuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvSGVhZGluZ19FbGVtZW50cyJ9XX0se25hbWU6Img2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaDYgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBoZWFkaW5nLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L0hlYWRpbmdfRWxlbWVudHMifV19LHtuYW1lOiJoZWFkZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoZWFkZXIgZWxlbWVudCByZXByZXNlbnRzIGludHJvZHVjdG9yeSBjb250ZW50IGZvciBpdHMgbmVhcmVzdCBhbmNlc3RvciBzZWN0aW9uaW5nIGNvbnRlbnQgb3Igc2VjdGlvbmluZyByb290IGVsZW1lbnQuIEEgaGVhZGVyIHR5cGljYWxseSBjb250YWlucyBhIGdyb3VwIG9mIGludHJvZHVjdG9yeSBvciBuYXZpZ2F0aW9uYWwgYWlkcy4gV2hlbiB0aGUgbmVhcmVzdCBhbmNlc3RvciBzZWN0aW9uaW5nIGNvbnRlbnQgb3Igc2VjdGlvbmluZyByb290IGVsZW1lbnQgaXMgdGhlIGJvZHkgZWxlbWVudCwgdGhlbiBpdCBhcHBsaWVzIHRvIHRoZSB3aG9sZSBwYWdlLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2hlYWRlciJ9XX0se25hbWU6ImZvb3RlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGZvb3RlciBlbGVtZW50IHJlcHJlc2VudHMgYSBmb290ZXIgZm9yIGl0cyBuZWFyZXN0IGFuY2VzdG9yIHNlY3Rpb25pbmcgY29udGVudCBvciBzZWN0aW9uaW5nIHJvb3QgZWxlbWVudC4gQSBmb290ZXIgdHlwaWNhbGx5IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGl0cyBzZWN0aW9uIHN1Y2ggYXMgd2hvIHdyb3RlIGl0LCBsaW5rcyB0byByZWxhdGVkIGRvY3VtZW50cywgY29weXJpZ2h0IGRhdGEsIGFuZCB0aGUgbGlrZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb290ZXIifV19LHtuYW1lOiJhZGRyZXNzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYWRkcmVzcyBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGNvbnRhY3QgaW5mb3JtYXRpb24gZm9yIGl0cyBuZWFyZXN0IGFydGljbGUgb3IgYm9keSBlbGVtZW50IGFuY2VzdG9yLiBJZiB0aGF0IGlzIHRoZSBib2R5IGVsZW1lbnQsIHRoZW4gdGhlIGNvbnRhY3QgaW5mb3JtYXRpb24gYXBwbGllcyB0byB0aGUgZG9jdW1lbnQgYXMgYSB3aG9sZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hZGRyZXNzIn1dfSx7bmFtZToicCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHAgZWxlbWVudCByZXByZXNlbnRzIGEgcGFyYWdyYXBoLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3AifV19LHtuYW1lOiJociIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhyIGVsZW1lbnQgcmVwcmVzZW50cyBhIHBhcmFncmFwaC1sZXZlbCB0aGVtYXRpYyBicmVhaywgZS5nLiBhIHNjZW5lIGNoYW5nZSBpbiBhIHN0b3J5LCBvciBhIHRyYW5zaXRpb24gdG8gYW5vdGhlciB0b3BpYyB3aXRoaW4gYSBzZWN0aW9uIG9mIGEgcmVmZXJlbmNlIGJvb2suIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjoiU2V0cyB0aGUgYWxpZ25tZW50IG9mIHRoZSBydWxlIG9uIHRoZSBwYWdlLiBJZiBubyB2YWx1ZSBpcyBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGBsZWZ0YC4ifSx7bmFtZToiY29sb3IiLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBjb2xvciBvZiB0aGUgcnVsZSB0aHJvdWdoIGNvbG9yIG5hbWUgb3IgaGV4YWRlY2ltYWwgdmFsdWUuIn0se25hbWU6Im5vc2hhZGUiLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBydWxlIHRvIGhhdmUgbm8gc2hhZGluZy4ifSx7bmFtZToic2l6ZSIsZGVzY3JpcHRpb246IlNldHMgdGhlIGhlaWdodCwgaW4gcGl4ZWxzLCBvZiB0aGUgcnVsZS4ifSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBsZW5ndGggb2YgdGhlIHJ1bGUgb24gdGhlIHBhZ2UgdGhyb3VnaCBhIHBpeGVsIG9yIHBlcmNlbnRhZ2UgdmFsdWUuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ociJ9XX0se25hbWU6InByZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHByZSBlbGVtZW50IHJlcHJlc2VudHMgYSBibG9jayBvZiBwcmVmb3JtYXR0ZWQgdGV4dCwgaW4gd2hpY2ggc3RydWN0dXJlIGlzIHJlcHJlc2VudGVkIGJ5IHR5cG9ncmFwaGljIGNvbnZlbnRpb25zIHJhdGhlciB0aGFuIGJ5IGVsZW1lbnRzLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjb2xzIixkZXNjcmlwdGlvbjonQ29udGFpbnMgdGhlIF9wcmVmZXJyZWRfIGNvdW50IG9mIGNoYXJhY3RlcnMgdGhhdCBhIGxpbmUgc2hvdWxkIGhhdmUuIEl0IHdhcyBhIG5vbi1zdGFuZGFyZCBzeW5vbnltIG9mIFtgd2lkdGhgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcHJlI2F0dHItd2lkdGgpLiBUbyBhY2hpZXZlIHN1Y2ggYW4gZWZmZWN0LCB1c2UgQ1NTIFtgd2lkdGhgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1Mvd2lkdGggIlRoZSB3aWR0aCBDU1MgcHJvcGVydHkgc2V0cyBhbiBlbGVtZW50XCdzIHdpZHRoLiBCeSBkZWZhdWx0IGl0IHNldHMgdGhlIHdpZHRoIG9mIHRoZSBjb250ZW50IGFyZWEsIGJ1dCBpZiBib3gtc2l6aW5nIGlzIHNldCB0byBib3JkZXItYm94LCBpdCBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyIGFyZWEuIikgaW5zdGVhZC4nfSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOidDb250YWlucyB0aGUgX3ByZWZlcnJlZF8gY291bnQgb2YgY2hhcmFjdGVycyB0aGF0IGEgbGluZSBzaG91bGQgaGF2ZS4gVGhvdWdoIHRlY2huaWNhbGx5IHN0aWxsIGltcGxlbWVudGVkLCB0aGlzIGF0dHJpYnV0ZSBoYXMgbm8gdmlzdWFsIGVmZmVjdDsgdG8gYWNoaWV2ZSBzdWNoIGFuIGVmZmVjdCwgdXNlIENTUyBbYHdpZHRoYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3dpZHRoICJUaGUgd2lkdGggQ1NTIHByb3BlcnR5IHNldHMgYW4gZWxlbWVudFwncyB3aWR0aC4gQnkgZGVmYXVsdCBpdCBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgY29udGVudCBhcmVhLCBidXQgaWYgYm94LXNpemluZyBpcyBzZXQgdG8gYm9yZGVyLWJveCwgaXQgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGJvcmRlciBhcmVhLiIpIGluc3RlYWQuJ30se25hbWU6IndyYXAiLGRlc2NyaXB0aW9uOidJcyBhIF9oaW50XyBpbmRpY2F0aW5nIGhvdyB0aGUgb3ZlcmZsb3cgbXVzdCBoYXBwZW4uIEluIG1vZGVybiBicm93c2VyIHRoaXMgaGludCBpcyBpZ25vcmVkIGFuZCBubyB2aXN1YWwgZWZmZWN0IHJlc3VsdHMgaW4gaXRzIHByZXNlbnQ7IHRvIGFjaGlldmUgc3VjaCBhbiBlZmZlY3QsIHVzZSBDU1MgW2B3aGl0ZS1zcGFjZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy93aGl0ZS1zcGFjZSAiVGhlIHdoaXRlLXNwYWNlIENTUyBwcm9wZXJ0eSBzZXRzIGhvdyB3aGl0ZSBzcGFjZSBpbnNpZGUgYW4gZWxlbWVudCBpcyBoYW5kbGVkLiIpIGluc3RlYWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9wcmUifV19LHtuYW1lOiJibG9ja3F1b3RlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYmxvY2txdW90ZSBlbGVtZW50IHJlcHJlc2VudHMgY29udGVudCB0aGF0IGlzIHF1b3RlZCBmcm9tIGFub3RoZXIgc291cmNlLCBvcHRpb25hbGx5IHdpdGggYSBjaXRhdGlvbiB3aGljaCBtdXN0IGJlIHdpdGhpbiBhIGZvb3RlciBvciBjaXRlIGVsZW1lbnQsIGFuZCBvcHRpb25hbGx5IHdpdGggaW4tbGluZSBjaGFuZ2VzIHN1Y2ggYXMgYW5ub3RhdGlvbnMgYW5kIGFiYnJldmlhdGlvbnMuIn0sYXR0cmlidXRlczpbe25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgVVJMIHRoYXQgZGVzaWduYXRlcyBhIHNvdXJjZSBkb2N1bWVudCBvciBtZXNzYWdlIGZvciB0aGUgaW5mb3JtYXRpb24gcXVvdGVkLiBUaGlzIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCB0byBwb2ludCB0byBpbmZvcm1hdGlvbiBleHBsYWluaW5nIHRoZSBjb250ZXh0IG9yIHRoZSByZWZlcmVuY2UgZm9yIHRoZSBxdW90ZS4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ibG9ja3F1b3RlIn1dfSx7bmFtZToib2wiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBvbCBlbGVtZW50IHJlcHJlc2VudHMgYSBsaXN0IG9mIGl0ZW1zLCB3aGVyZSB0aGUgaXRlbXMgaGF2ZSBiZWVuIGludGVudGlvbmFsbHkgb3JkZXJlZCwgc3VjaCB0aGF0IGNoYW5naW5nIHRoZSBvcmRlciB3b3VsZCBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJyZXZlcnNlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoYXQgdGhlIGl0ZW1zIG9mIHRoZSBsaXN0IGFyZSBzcGVjaWZpZWQgaW4gcmV2ZXJzZWQgb3JkZXIuIn19LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBpbnRlZ2VyIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIHN0YXJ0IHZhbHVlIGZvciBudW1iZXJpbmcgdGhlIGluZGl2aWR1YWwgbGlzdCBpdGVtcy4gQWx0aG91Z2ggdGhlIG9yZGVyaW5nIHR5cGUgb2YgbGlzdCBlbGVtZW50cyBtaWdodCBiZSBSb21hbiBudW1lcmFscywgc3VjaCBhcyBYWFhJLCBvciBsZXR0ZXJzLCB0aGUgdmFsdWUgb2Ygc3RhcnQgaXMgYWx3YXlzIHJlcHJlc2VudGVkIGFzIGEgbnVtYmVyLiBUbyBzdGFydCBudW1iZXJpbmcgZWxlbWVudHMgZnJvbSB0aGUgbGV0dGVyICJDIiwgdXNlIGA8b2wgc3RhcnQ9IjMiPmAuXG5cbioqTm90ZSoqOiBUaGlzIGF0dHJpYnV0ZSB3YXMgZGVwcmVjYXRlZCBpbiBIVE1MNCwgYnV0IHJlaW50cm9kdWNlZCBpbiBIVE1MNS4nfX0se25hbWU6InR5cGUiLHZhbHVlU2V0OiJsdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBudW1iZXJpbmcgdHlwZTpcblxuKiAgIGAnYSdgIGluZGljYXRlcyBsb3dlcmNhc2UgbGV0dGVycyxcbiogICBgJ0EnYCBpbmRpY2F0ZXMgdXBwZXJjYXNlIGxldHRlcnMsXG4qICAgYCdpJ2AgaW5kaWNhdGVzIGxvd2VyY2FzZSBSb21hbiBudW1lcmFscyxcbiogICBgJ0knYCBpbmRpY2F0ZXMgdXBwZXJjYXNlIFJvbWFuIG51bWVyYWxzLFxuKiAgIGFuZCBgJzEnYCBpbmRpY2F0ZXMgbnVtYmVycyAoZGVmYXVsdCkuXG5cblRoZSB0eXBlIHNldCBpcyB1c2VkIGZvciB0aGUgZW50aXJlIGxpc3QgdW5sZXNzIGEgZGlmZmVyZW50IFtgdHlwZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9saSNhdHRyLXR5cGUpIGF0dHJpYnV0ZSBpcyB1c2VkIHdpdGhpbiBhbiBlbmNsb3NlZCBbYDxsaT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGkgXCJUaGUgSFRNTCA8bGk+IGVsZW1lbnQgaXMgdXNlZCB0byByZXByZXNlbnQgYW4gaXRlbSBpbiBhIGxpc3QuIEl0IG11c3QgYmUgY29udGFpbmVkIGluIGEgcGFyZW50IGVsZW1lbnQ6IGFuIG9yZGVyZWQgbGlzdCAoPG9sPiksIGFuIHVub3JkZXJlZCBsaXN0ICg8dWw+KSwgb3IgYSBtZW51ICg8bWVudT4pLiBJbiBtZW51cyBhbmQgdW5vcmRlcmVkIGxpc3RzLCBsaXN0IGl0ZW1zIGFyZSB1c3VhbGx5IGRpc3BsYXllZCB1c2luZyBidWxsZXQgcG9pbnRzLiBJbiBvcmRlcmVkIGxpc3RzLCB0aGV5IGFyZSB1c3VhbGx5IGRpc3BsYXllZCB3aXRoIGFuIGFzY2VuZGluZyBjb3VudGVyIG9uIHRoZSBsZWZ0LCBzdWNoIGFzIGEgbnVtYmVyIG9yIGxldHRlci5cIikgZWxlbWVudC5cblxuKipOb3RlOioqIFRoaXMgYXR0cmlidXRlIHdhcyBkZXByZWNhdGVkIGluIEhUTUw0LCBidXQgcmVpbnRyb2R1Y2VkIGluIEhUTUw1LlxuXG5Vbmxlc3MgdGhlIHZhbHVlIG9mIHRoZSBsaXN0IG51bWJlciBtYXR0ZXJzIChlLmcuIGluIGxlZ2FsIG9yIHRlY2huaWNhbCBkb2N1bWVudHMgd2hlcmUgaXRlbXMgYXJlIHRvIGJlIHJlZmVyZW5jZWQgYnkgdGhlaXIgbnVtYmVyL2xldHRlciksIHRoZSBDU1MgW2BsaXN0LXN0eWxlLXR5cGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbGlzdC1zdHlsZS10eXBlIFwiVGhlIGxpc3Qtc3R5bGUtdHlwZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFya2VyIChzdWNoIGFzIGEgZGlzYywgY2hhcmFjdGVyLCBvciBjdXN0b20gY291bnRlciBzdHlsZSkgb2YgYSBsaXN0IGl0ZW0gZWxlbWVudC5cIikgcHJvcGVydHkgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4ifX0se25hbWU6ImNvbXBhY3QiLGRlc2NyaXB0aW9uOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGhpbnRzIHRoYXQgdGhlIGxpc3Qgc2hvdWxkIGJlIHJlbmRlcmVkIGluIGEgY29tcGFjdCBzdHlsZS4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoaXMgYXR0cmlidXRlIGRlcGVuZHMgb24gdGhlIHVzZXIgYWdlbnQgYW5kIGl0IGRvZXNuXCd0IHdvcmsgaW4gYWxsIGJyb3dzZXJzLlxuXG4qKldhcm5pbmc6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYXMgaXQgaGFzIGJlZW4gZGVwcmVjYXRlZDogdGhlIFtgPG9sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vbCAiVGhlIEhUTUwgPG9sPiBlbGVtZW50IHJlcHJlc2VudHMgYW4gb3JkZXJlZCBsaXN0IG9mIGl0ZW1zLCB0eXBpY2FsbHkgcmVuZGVyZWQgYXMgYSBudW1iZXJlZCBsaXN0LiIpIGVsZW1lbnQgc2hvdWxkIGJlIHN0eWxlZCB1c2luZyBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykuIFRvIGdpdmUgYW4gZWZmZWN0IHNpbWlsYXIgdG8gdGhlIGBjb21wYWN0YCBhdHRyaWJ1dGUsIHRoZSBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykgcHJvcGVydHkgW2BsaW5lLWhlaWdodGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9saW5lLWhlaWdodCAiVGhlIGxpbmUtaGVpZ2h0IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBhbW91bnQgb2Ygc3BhY2UgdXNlZCBmb3IgbGluZXMsIHN1Y2ggYXMgaW4gdGV4dC4gT24gYmxvY2stbGV2ZWwgZWxlbWVudHMsIGl0IHNwZWNpZmllcyB0aGUgbWluaW11bSBoZWlnaHQgb2YgbGluZSBib3hlcyB3aXRoaW4gdGhlIGVsZW1lbnQuIE9uIG5vbi1yZXBsYWNlZCBpbmxpbmUgZWxlbWVudHMsIGl0IHNwZWNpZmllcyB0aGUgaGVpZ2h0IHRoYXQgaXMgdXNlZCB0byBjYWxjdWxhdGUgbGluZSBib3ggaGVpZ2h0LiIpIGNhbiBiZSB1c2VkIHdpdGggYSB2YWx1ZSBvZiBgODAlYC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29sIn1dfSx7bmFtZToidWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1bCBlbGVtZW50IHJlcHJlc2VudHMgYSBsaXN0IG9mIGl0ZW1zLCB3aGVyZSB0aGUgb3JkZXIgb2YgdGhlIGl0ZW1zIGlzIG5vdCBpbXBvcnRhbnQg4oCUIHRoYXQgaXMsIHdoZXJlIGNoYW5naW5nIHRoZSBvcmRlciB3b3VsZCBub3QgbWF0ZXJpYWxseSBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjb21wYWN0IixkZXNjcmlwdGlvbjonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBoaW50cyB0aGF0IHRoZSBsaXN0IHNob3VsZCBiZSByZW5kZXJlZCBpbiBhIGNvbXBhY3Qgc3R5bGUuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIGF0dHJpYnV0ZSBkZXBlbmRzIG9uIHRoZSB1c2VyIGFnZW50IGFuZCBpdCBkb2VzblwndCB3b3JrIGluIGFsbCBicm93c2Vycy5cblxuKipVc2FnZSBub3RlOsKgKipEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlLCBhcyBpdCBoYXMgYmVlbiBkZXByZWNhdGVkOiB0aGUgW2A8dWw+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3VsICJUaGUgSFRNTCA8dWw+IGVsZW1lbnQgcmVwcmVzZW50cyBhbiB1bm9yZGVyZWQgbGlzdCBvZiBpdGVtcywgdHlwaWNhbGx5IHJlbmRlcmVkIGFzIGEgYnVsbGV0ZWQgbGlzdC4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpLiBUbyBnaXZlIGEgc2ltaWxhciBlZmZlY3QgYXMgdGhlIGBjb21wYWN0YCBhdHRyaWJ1dGUsIHRoZSBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykgcHJvcGVydHkgW2xpbmUtaGVpZ2h0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9saW5lLWhlaWdodCkgY2FuIGJlIHVzZWQgd2l0aCBhIHZhbHVlIG9mIGA4MCVgLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdWwifV19LHtuYW1lOiJsaSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxpIGVsZW1lbnQgcmVwcmVzZW50cyBhIGxpc3QgaXRlbS4gSWYgaXRzIHBhcmVudCBlbGVtZW50IGlzIGFuIG9sLCB1bCwgb3IgbWVudSBlbGVtZW50LCB0aGVuIHRoZSBlbGVtZW50IGlzIGFuIGl0ZW0gb2YgdGhlIHBhcmVudCBlbGVtZW50J3MgbGlzdCwgYXMgZGVmaW5lZCBmb3IgdGhvc2UgZWxlbWVudHMuIE90aGVyd2lzZSwgdGhlIGxpc3QgaXRlbSBoYXMgbm8gZGVmaW5lZCBsaXN0LXJlbGF0ZWQgcmVsYXRpb25zaGlwIHRvIGFueSBvdGhlciBsaSBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJ2YWx1ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBpbnRlZ2VyIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgb3JkaW5hbCB2YWx1ZSBvZiB0aGUgbGlzdCBpdGVtIGFzIGRlZmluZWQgYnkgdGhlIFtgPG9sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vbCAiVGhlIEhUTUwgPG9sPiBlbGVtZW50IHJlcHJlc2VudHMgYW4gb3JkZXJlZCBsaXN0IG9mIGl0ZW1zLCB0eXBpY2FsbHkgcmVuZGVyZWQgYXMgYSBudW1iZXJlZCBsaXN0LiIpIGVsZW1lbnQuIFRoZSBvbmx5IGFsbG93ZWQgdmFsdWUgZm9yIHRoaXMgYXR0cmlidXRlIGlzIGEgbnVtYmVyLCBldmVuIGlmIHRoZSBsaXN0IGlzIGRpc3BsYXllZCB3aXRoIFJvbWFuIG51bWVyYWxzIG9yIGxldHRlcnMuIExpc3QgaXRlbXMgdGhhdCBmb2xsb3cgdGhpcyBvbmUgY29udGludWUgbnVtYmVyaW5nIGZyb20gdGhlIHZhbHVlIHNldC4gVGhlICoqdmFsdWUqKiBhdHRyaWJ1dGUgaGFzIG5vIG1lYW5pbmcgZm9yIHVub3JkZXJlZCBsaXN0cyAoW2A8dWw+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3VsICJUaGUgSFRNTCA8dWw+IGVsZW1lbnQgcmVwcmVzZW50cyBhbiB1bm9yZGVyZWQgbGlzdCBvZiBpdGVtcywgdHlwaWNhbGx5IHJlbmRlcmVkIGFzIGEgYnVsbGV0ZWQgbGlzdC4iKSkgb3IgZm9yIG1lbnVzIChbYDxtZW51PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZW51ICJUaGUgSFRNTCA8bWVudT4gZWxlbWVudCByZXByZXNlbnRzIGEgZ3JvdXAgb2YgY29tbWFuZHMgdGhhdCBhIHVzZXIgY2FuIHBlcmZvcm0gb3IgYWN0aXZhdGUuIFRoaXMgaW5jbHVkZXMgYm90aCBsaXN0IG1lbnVzLCB3aGljaCBtaWdodCBhcHBlYXIgYWNyb3NzIHRoZSB0b3Agb2YgYSBzY3JlZW4sIGFzIHdlbGwgYXMgY29udGV4dCBtZW51cywgc3VjaCBhcyB0aG9zZSB0aGF0IG1pZ2h0IGFwcGVhciB1bmRlcm5lYXRoIGEgYnV0dG9uIGFmdGVyIGl0IGhhcyBiZWVuIGNsaWNrZWQuIikpLlxuXG4qKk5vdGUqKjogVGhpcyBhdHRyaWJ1dGUgd2FzIGRlcHJlY2F0ZWQgaW4gSFRNTDQsIGJ1dCByZWludHJvZHVjZWQgaW4gSFRNTDUuXG5cbioqTm90ZToqKiBQcmlvciB0byBHZWNrb8KgOS4wLCBuZWdhdGl2ZSB2YWx1ZXMgd2VyZSBpbmNvcnJlY3RseSBjb252ZXJ0ZWQgdG8gMC4gU3RhcnRpbmcgaW4gR2Vja2/CoDkuMCBhbGwgaW50ZWdlciB2YWx1ZXMgYXJlIGNvcnJlY3RseSBwYXJzZWQuJ319LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjonVGhpcyBjaGFyYWN0ZXIgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgbnVtYmVyaW5nIHR5cGU6XG5cbiogICBgYWA6IGxvd2VyY2FzZSBsZXR0ZXJzXG4qICAgYEFgOiB1cHBlcmNhc2UgbGV0dGVyc1xuKiAgIGBpYDogbG93ZXJjYXNlIFJvbWFuIG51bWVyYWxzXG4qICAgYElgOiB1cHBlcmNhc2UgUm9tYW4gbnVtZXJhbHNcbiogICBgMWA6IG51bWJlcnNcblxuVGhpcyB0eXBlIG92ZXJyaWRlcyB0aGUgb25lIHVzZWQgYnkgaXRzIHBhcmVudCBbYDxvbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb2wgIlRoZSBIVE1MIDxvbD4gZWxlbWVudCByZXByZXNlbnRzIGFuIG9yZGVyZWQgbGlzdCBvZiBpdGVtcywgdHlwaWNhbGx5IHJlbmRlcmVkIGFzIGEgbnVtYmVyZWQgbGlzdC4iKSBlbGVtZW50LCBpZiBhbnkuXG5cbioqVXNhZ2Ugbm90ZToqKiBUaGlzIGF0dHJpYnV0ZSBoYXMgYmVlbiBkZXByZWNhdGVkOiB1c2UgdGhlIENTUyBbYGxpc3Qtc3R5bGUtdHlwZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9saXN0LXN0eWxlLXR5cGUgIlRoZSBsaXN0LXN0eWxlLXR5cGUgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmtlciAoc3VjaCBhcyBhIGRpc2MsIGNoYXJhY3Rlciwgb3IgY3VzdG9tIGNvdW50ZXIgc3R5bGUpIG9mIGEgbGlzdCBpdGVtIGVsZW1lbnQuIikgcHJvcGVydHkgaW5zdGVhZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xpIn1dfSx7bmFtZToiZGwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkbCBlbGVtZW50IHJlcHJlc2VudHMgYW4gYXNzb2NpYXRpb24gbGlzdCBjb25zaXN0aW5nIG9mIHplcm8gb3IgbW9yZSBuYW1lLXZhbHVlIGdyb3VwcyAoYSBkZXNjcmlwdGlvbiBsaXN0KS4gQSBuYW1lLXZhbHVlIGdyb3VwIGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlIG5hbWVzIChkdCBlbGVtZW50cykgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgdmFsdWVzIChkZCBlbGVtZW50cyksIGlnbm9yaW5nIGFueSBub2RlcyBvdGhlciB0aGFuIGR0IGFuZCBkZCBlbGVtZW50cy4gV2l0aGluIGEgc2luZ2xlIGRsIGVsZW1lbnQsIHRoZXJlIHNob3VsZCBub3QgYmUgbW9yZSB0aGFuIG9uZSBkdCBlbGVtZW50IGZvciBlYWNoIG5hbWUuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGwifV19LHtuYW1lOiJkdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGR0IGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgdGVybSwgb3IgbmFtZSwgcGFydCBvZiBhIHRlcm0tZGVzY3JpcHRpb24gZ3JvdXAgaW4gYSBkZXNjcmlwdGlvbiBsaXN0IChkbCBlbGVtZW50KS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kdCJ9XX0se25hbWU6ImRkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGQgZWxlbWVudCByZXByZXNlbnRzIHRoZSBkZXNjcmlwdGlvbiwgZGVmaW5pdGlvbiwgb3IgdmFsdWUsIHBhcnQgb2YgYSB0ZXJtLWRlc2NyaXB0aW9uIGdyb3VwIGluIGEgZGVzY3JpcHRpb24gbGlzdCAoZGwgZWxlbWVudCkuIn0sYXR0cmlidXRlczpbe25hbWU6Im5vd3JhcCIsZGVzY3JpcHRpb246IklmIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gYHllc2AsIHRoZSBkZWZpbml0aW9uIHRleHQgd2lsbCBub3Qgd3JhcC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYG5vYC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RkIn1dfSx7bmFtZToiZmlndXJlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZmlndXJlIGVsZW1lbnQgcmVwcmVzZW50cyBzb21lIGZsb3cgY29udGVudCwgb3B0aW9uYWxseSB3aXRoIGEgY2FwdGlvbiwgdGhhdCBpcyBzZWxmLWNvbnRhaW5lZCAobGlrZSBhIGNvbXBsZXRlIHNlbnRlbmNlKSBhbmQgaXMgdHlwaWNhbGx5IHJlZmVyZW5jZWQgYXMgYSBzaW5nbGUgdW5pdCBmcm9tIHRoZSBtYWluIGZsb3cgb2YgdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2ZpZ3VyZSJ9XX0se25hbWU6ImZpZ2NhcHRpb24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBmaWdjYXB0aW9uIGVsZW1lbnQgcmVwcmVzZW50cyBhIGNhcHRpb24gb3IgbGVnZW5kIGZvciB0aGUgcmVzdCBvZiB0aGUgY29udGVudHMgb2YgdGhlIGZpZ2NhcHRpb24gZWxlbWVudCdzIHBhcmVudCBmaWd1cmUgZWxlbWVudCwgaWYgYW55LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2ZpZ2NhcHRpb24ifV19LHtuYW1lOiJtYWluIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWFpbiBlbGVtZW50IHJlcHJlc2VudHMgdGhlIG1haW4gY29udGVudCBvZiB0aGUgYm9keSBvZiBhIGRvY3VtZW50IG9yIGFwcGxpY2F0aW9uLiBUaGUgbWFpbiBjb250ZW50IGFyZWEgY29uc2lzdHMgb2YgY29udGVudCB0aGF0IGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gb3IgZXhwYW5kcyB1cG9uIHRoZSBjZW50cmFsIHRvcGljIG9mIGEgZG9jdW1lbnQgb3IgY2VudHJhbCBmdW5jdGlvbmFsaXR5IG9mIGFuIGFwcGxpY2F0aW9uLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21haW4ifV19LHtuYW1lOiJkaXYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkaXYgZWxlbWVudCBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGF0IGFsbC4gSXQgcmVwcmVzZW50cyBpdHMgY2hpbGRyZW4uIEl0IGNhbiBiZSB1c2VkIHdpdGggdGhlIGNsYXNzLCBsYW5nLCBhbmQgdGl0bGUgYXR0cmlidXRlcyB0byBtYXJrIHVwIHNlbWFudGljcyBjb21tb24gdG8gYSBncm91cCBvZiBjb25zZWN1dGl2ZSBlbGVtZW50cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kaXYifV19LHtuYW1lOiJhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGUgYSBlbGVtZW50IGhhcyBhbiBocmVmIGF0dHJpYnV0ZSwgdGhlbiBpdCByZXByZXNlbnRzIGEgaHlwZXJsaW5rIChhIGh5cGVydGV4dCBhbmNob3IpIGxhYmVsZWQgYnkgaXRzIGNvbnRlbnRzLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJocmVmIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJDb250YWlucyBhIFVSTCBvciBhIFVSTCBmcmFnbWVudCB0aGF0IHRoZSBoeXBlcmxpbmsgcG9pbnRzIHRvLiJ9fSx7bmFtZToidGFyZ2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidTcGVjaWZpZXMgd2hlcmUgdG8gZGlzcGxheSB0aGUgbGlua2VkIFVSTC4gSXQgaXMgYSBuYW1lIG9mLCBvciBrZXl3b3JkIGZvciwgYSBfYnJvd3NpbmcgY29udGV4dF86IGEgdGFiLCB3aW5kb3csIG9yIGA8aWZyYW1lPmAuIFRoZSBmb2xsb3dpbmcga2V5d29yZHMgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzOlxuXG4qICAgYF9zZWxmYDogTG9hZCB0aGUgVVJMIGludG8gdGhlIHNhbWUgYnJvd3NpbmcgY29udGV4dCBhcyB0aGUgY3VycmVudCBvbmUuIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuXG4qICAgYF9ibGFua2A6IExvYWQgdGhlIFVSTCBpbnRvIGEgbmV3IGJyb3dzaW5nIGNvbnRleHQuIFRoaXMgaXMgdXN1YWxseSBhIHRhYiwgYnV0IHVzZXJzIGNhbiBjb25maWd1cmUgYnJvd3NlcnMgdG8gdXNlIG5ldyB3aW5kb3dzIGluc3RlYWQuXG4qICAgYF9wYXJlbnRgOiBMb2FkIHRoZSBVUkwgaW50byB0aGUgcGFyZW50IGJyb3dzaW5nIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgb25lLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cbiogICBgX3RvcGA6IExvYWQgdGhlIFVSTCBpbnRvIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dCAodGhhdCBpcywgdGhlICJoaWdoZXN0IiBicm93c2luZyBjb250ZXh0IHRoYXQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGN1cnJlbnQgb25lLCBhbmQgaGFzIG5vIHBhcmVudCkuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuXG4qKk5vdGU6KiogV2hlbiB1c2luZyBgdGFyZ2V0YCwgY29uc2lkZXIgYWRkaW5nIGByZWw9Im5vcmVmZXJyZXIiYCB0byBhdm9pZCBleHBsb2l0YXRpb24gb2YgdGhlIGB3aW5kb3cub3BlbmVyYCBBUEkuXG5cbioqTm90ZToqKiBMaW5raW5nIHRvIGFub3RoZXIgcGFnZSB1c2luZyBgdGFyZ2V0PSJfYmxhbmsiYCB3aWxsIHJ1biB0aGUgbmV3IHBhZ2Ugb24gdGhlIHNhbWUgcHJvY2VzcyBhcyB5b3VyIHBhZ2UuIElmIHRoZSBuZXcgcGFnZSBpcyBleGVjdXRpbmcgZXhwZW5zaXZlIEpTLCB5b3VyIHBhZ2VcJ3MgcGVyZm9ybWFuY2UgbWF5IHN1ZmZlci4gVG8gYXZvaWQgdGhpcyB1c2UgYHJlbD0ibm9vcGVuZXIiYC4nfX0se25hbWU6ImRvd25sb2FkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpbnN0cnVjdHMgYnJvd3NlcnMgdG8gZG93bmxvYWQgYSBVUkwgaW5zdGVhZCBvZiBuYXZpZ2F0aW5nIHRvIGl0LCBzbyB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIHNhdmUgaXQgYXMgYSBsb2NhbCBmaWxlLiBJZiB0aGUgYXR0cmlidXRlIGhhcyBhIHZhbHVlLCBpdCBpcyB1c2VkIGFzIHRoZSBwcmUtZmlsbGVkIGZpbGUgbmFtZSBpbiB0aGUgU2F2ZSBwcm9tcHQgKHRoZSB1c2VyIGNhbiBzdGlsbCBjaGFuZ2UgdGhlIGZpbGUgbmFtZSBpZiB0aGV5IHdhbnQpLiBUaGVyZSBhcmUgbm8gcmVzdHJpY3Rpb25zIG9uIGFsbG93ZWQgdmFsdWVzLCB0aG91Z2ggYC9gIGFuZCBgXFxgIGFyZSBjb252ZXJ0ZWQgdG8gdW5kZXJzY29yZXMuIE1vc3QgZmlsZSBzeXN0ZW1zIGxpbWl0IHNvbWUgcHVuY3R1YXRpb24gaW4gZmlsZSBuYW1lcywgYW5kIGJyb3dzZXJzIHdpbGwgYWRqdXN0IHRoZSBzdWdnZXN0ZWQgbmFtZSBhY2NvcmRpbmdseS5cblxuKipOb3RlczoqKlxuXG4qICAgVGhpcyBhdHRyaWJ1dGUgb25seSB3b3JrcyBmb3IgW3NhbWUtb3JpZ2luIFVSTHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1NhbWUtb3JpZ2luX3BvbGljeSkuXG4qICAgQWx0aG91Z2ggSFRUUChzKSBVUkxzIG5lZWQgdG8gYmUgaW4gdGhlIHNhbWUtb3JpZ2luLCBbYGJsb2I6YCBVUkxzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVVJMLmNyZWF0ZU9iamVjdFVSTCkgYW5kIFtgZGF0YTpgIFVSTHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvQmFzaWNzX29mX0hUVFAvRGF0YV9VUklzKSBhcmUgYWxsb3dlZCBzbyB0aGF0IGNvbnRlbnQgZ2VuZXJhdGVkIGJ5IEphdmFTY3JpcHQsIHN1Y2ggYXMgcGljdHVyZXMgY3JlYXRlZCBpbiBhbiBpbWFnZS1lZGl0b3IgV2ViIGFwcCwgY2FuIGJlIGRvd25sb2FkZWQuXG4qICAgSWYgdGhlIEhUVFAgaGVhZGVyIFtgQ29udGVudC1EaXNwb3NpdGlvbjpgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQ29udGVudC1EaXNwb3NpdGlvbikgZ2l2ZXMgYSBkaWZmZXJlbnQgZmlsZW5hbWUgdGhhbiB0aGlzIGF0dHJpYnV0ZSwgdGhlIEhUVFAgaGVhZGVyIHRha2VzIHByaW9yaXR5IG92ZXIgdGhpcyBhdHRyaWJ1dGUuXG4qICAgSWYgYENvbnRlbnQtRGlzcG9zaXRpb246YCBpcyBzZXQgdG8gYGlubGluZWAsIEZpcmVmb3ggcHJpb3JpdGl6ZXMgYENvbnRlbnQtRGlzcG9zaXRpb25gLCBsaWtlIHRoZSBmaWxlbmFtZSBjYXNlLCB3aGlsZSBDaHJvbWUgcHJpb3JpdGl6ZXMgdGhlIGBkb3dubG9hZGAgYXR0cmlidXRlLiJ9fSx7bmFtZToicGluZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQ29udGFpbnMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBVUkxzIHRvIHdoaWNoLCB3aGVuIHRoZSBoeXBlcmxpbmsgaXMgZm9sbG93ZWQsIFtgUE9TVGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvTWV0aG9kcy9QT1NUICJUaGUgSFRUUCBQT1NUIG1ldGhvZCBzZW5kcyBkYXRhIHRvIHRoZSBzZXJ2ZXIuIFRoZSB0eXBlIG9mIHRoZSBib2R5IG9mIHRoZSByZXF1ZXN0IGlzIGluZGljYXRlZCBieSB0aGUgQ29udGVudC1UeXBlIGhlYWRlci4iKSByZXF1ZXN0cyB3aXRoIHRoZSBib2R5IGBQSU5HYCB3aWxsIGJlIHNlbnQgYnkgdGhlIGJyb3dzZXIgKGluIHRoZSBiYWNrZ3JvdW5kKS4gVHlwaWNhbGx5IHVzZWQgZm9yIHRyYWNraW5nLid9fSx7bmFtZToicmVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJTcGVjaWZpZXMgdGhlIHJlbGF0aW9uc2hpcCBvZiB0aGUgdGFyZ2V0IG9iamVjdCB0byB0aGUgbGluayBvYmplY3QuIFRoZSB2YWx1ZSBpcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIFtsaW5rIHR5cGVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0xpbmtfdHlwZXMpLiJ9fSx7bmFtZToiaHJlZmxhbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgaHVtYW4gbGFuZ3VhZ2Ugb2YgdGhlIGxpbmtlZCByZXNvdXJjZS4gSXQgaXMgcHVyZWx5IGFkdmlzb3J5LCB3aXRoIG5vIGJ1aWx0LWluIGZ1bmN0aW9uYWxpdHkuIEFsbG93ZWQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IFtCQ1A0N10oaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL2JjcC9iY3A0Ny50eHQgIlRhZ3MgZm9yIElkZW50aWZ5aW5nIExhbmd1YWdlcyIpLid9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonU3BlY2lmaWVzIHRoZSBtZWRpYSB0eXBlIGluIHRoZSBmb3JtIG9mIGEgW01JTUUgdHlwZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9NSU1FX3R5cGUgIk1JTUUgdHlwZTogQcKgTUlNRSB0eXBlwqAobm93IHByb3Blcmx5IGNhbGxlZCAibWVkaWEgdHlwZSIsIGJ1dMKgYWxzbyBzb21ldGltZXMgImNvbnRlbnQgdHlwZSIpIGlzIGEgc3RyaW5nIHNlbnQgYWxvbmfCoHdpdGggYSBmaWxlIGluZGljYXRpbmcgdGhlIHR5cGUgb2YgdGhlIGZpbGUgKGRlc2NyaWJpbmcgdGhlIGNvbnRlbnQgZm9ybWF0LCBmb3IgZXhhbXBsZSwgYSBzb3VuZCBmaWxlIG1pZ2h0IGJlIGxhYmVsZWTCoGF1ZGlvL29nZywgb3IgYW4gaW1hZ2UgZmlsZcKgaW1hZ2UvcG5nKS4iKSBmb3IgdGhlIGxpbmtlZCBVUkwuIEl0IGlzIHB1cmVseSBhZHZpc29yeSwgd2l0aCBubyBidWlsdC1pbiBmdW5jdGlvbmFsaXR5Lid9fSx7bmFtZToicmVmZXJyZXJwb2xpY3kiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgd2hpY2ggW3JlZmVycmVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlcikgdG8gc2VuZCB3aGVuIGZldGNoaW5nIHRoZSBVUkw6XG5cbiogICBgJ25vLXJlZmVycmVyJ2AgbWVhbnMgdGhlIGBSZWZlcmVyOmAgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQuXG4qICAgYCduby1yZWZlcnJlci13aGVuLWRvd25ncmFkZSdgIG1lYW5zIG5vIGBSZWZlcmVyOmAgaGVhZGVyIHdpbGwgYmUgc2VudCB3aGVuIG5hdmlnYXRpbmcgdG8gYW4gb3JpZ2luIHdpdGhvdXQgSFRUUFMuIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuXG4qICAgYCdvcmlnaW4nYCBtZWFucyB0aGUgcmVmZXJyZXIgd2lsbCBiZSB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9PcmlnaW4pIG9mIHRoZSBwYWdlLCBub3QgaW5jbHVkaW5nIGluZm9ybWF0aW9uIGFmdGVyIHRoZSBkb21haW4uXG4qICAgYCdvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4nYCBtZWFuaW5nIHRoYXQgbmF2aWdhdGlvbnMgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QgYW5kIHRoZSBwb3J0LCB3aGlsZSBuYXZpZ2F0aW9ucyBvbiB0aGUgc2FtZSBvcmlnaW4gd2lsbCBpbmNsdWRlIHRoZSByZWZlcnJlcidzIHBhdGguXG4qICAgYCdzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luJ2BcbiogICBgJ3Vuc2FmZS11cmwnYCBtZWFucyB0aGUgcmVmZXJyZXIgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW4gYW5kIHBhdGgsIGJ1dCBub3QgdGhlIGZyYWdtZW50LCBwYXNzd29yZCwgb3IgdXNlcm5hbWUuIFRoaXMgaXMgdW5zYWZlIGJlY2F1c2UgaXQgY2FuIGxlYWsgZGF0YSBmcm9tIHNlY3VyZSBVUkxzIHRvIGluc2VjdXJlIG9uZXMuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hIn1dfSx7bmFtZToiZW0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBlbSBlbGVtZW50IHJlcHJlc2VudHMgc3RyZXNzIGVtcGhhc2lzIG9mIGl0cyBjb250ZW50cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9lbSJ9XX0se25hbWU6InN0cm9uZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHN0cm9uZyBlbGVtZW50IHJlcHJlc2VudHMgc3Ryb25nIGltcG9ydGFuY2UsIHNlcmlvdXNuZXNzLCBvciB1cmdlbmN5IGZvciBpdHMgY29udGVudHMuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3Ryb25nIn1dfSx7bmFtZToic21hbGwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzbWFsbCBlbGVtZW50IHJlcHJlc2VudHMgc2lkZSBjb21tZW50cyBzdWNoIGFzIHNtYWxsIHByaW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NtYWxsIn1dfSx7bmFtZToicyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHMgZWxlbWVudCByZXByZXNlbnRzIGNvbnRlbnRzIHRoYXQgYXJlIG5vIGxvbmdlciBhY2N1cmF0ZSBvciBubyBsb25nZXIgcmVsZXZhbnQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcyJ9XX0se25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjaXRlIGVsZW1lbnQgcmVwcmVzZW50cyBhIHJlZmVyZW5jZSB0byBhIGNyZWF0aXZlIHdvcmsuIEl0IG11c3QgaW5jbHVkZSB0aGUgdGl0bGUgb2YgdGhlIHdvcmsgb3IgdGhlIG5hbWUgb2YgdGhlIGF1dGhvcihwZXJzb24sIHBlb3BsZSBvciBvcmdhbml6YXRpb24pIG9yIGFuIFVSTCByZWZlcmVuY2UsIG9yIGEgcmVmZXJlbmNlIGluIGFiYnJldmlhdGVkIGZvcm0gYXMgcGVyIHRoZSBjb252ZW50aW9ucyB1c2VkIGZvciB0aGUgYWRkaXRpb24gb2YgY2l0YXRpb24gbWV0YWRhdGEuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2l0ZSJ9XX0se25hbWU6InEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBxIGVsZW1lbnQgcmVwcmVzZW50cyBzb21lIHBocmFzaW5nIGNvbnRlbnQgcXVvdGVkIGZyb20gYW5vdGhlciBzb3VyY2UuIn0sYXR0cmlidXRlczpbe25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBpcyBhIFVSTCB0aGF0IGRlc2lnbmF0ZXMgYSBzb3VyY2UgZG9jdW1lbnQgb3IgbWVzc2FnZSBmb3IgdGhlIGluZm9ybWF0aW9uIHF1b3RlZC4gVGhpcyBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgdG8gcG9pbnQgdG8gaW5mb3JtYXRpb24gZXhwbGFpbmluZyB0aGUgY29udGV4dCBvciB0aGUgcmVmZXJlbmNlIGZvciB0aGUgcXVvdGUuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcSJ9XX0se25hbWU6ImRmbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRmbiBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGRlZmluaW5nIGluc3RhbmNlIG9mIGEgdGVybS4gVGhlIHBhcmFncmFwaCwgZGVzY3JpcHRpb24gbGlzdCBncm91cCwgb3Igc2VjdGlvbiB0aGF0IGlzIHRoZSBuZWFyZXN0IGFuY2VzdG9yIG9mIHRoZSBkZm4gZWxlbWVudCBtdXN0IGFsc28gY29udGFpbiB0aGUgZGVmaW5pdGlvbihzKSBmb3IgdGhlIHRlcm0gZ2l2ZW4gYnkgdGhlIGRmbiBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RmbiJ9XX0se25hbWU6ImFiYnIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBhYmJyIGVsZW1lbnQgcmVwcmVzZW50cyBhbiBhYmJyZXZpYXRpb24gb3IgYWNyb255bSwgb3B0aW9uYWxseSB3aXRoIGl0cyBleHBhbnNpb24uIFRoZSB0aXRsZSBhdHRyaWJ1dGUgbWF5IGJlIHVzZWQgdG8gcHJvdmlkZSBhbiBleHBhbnNpb24gb2YgdGhlIGFiYnJldmlhdGlvbi4gVGhlIGF0dHJpYnV0ZSwgaWYgc3BlY2lmaWVkLCBtdXN0IGNvbnRhaW4gYW4gZXhwYW5zaW9uIG9mIHRoZSBhYmJyZXZpYXRpb24sIGFuZCBub3RoaW5nIGVsc2UuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYWJiciJ9XX0se25hbWU6InJ1YnkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBydWJ5IGVsZW1lbnQgYWxsb3dzIG9uZSBvciBtb3JlIHNwYW5zIG9mIHBocmFzaW5nIGNvbnRlbnQgdG8gYmUgbWFya2VkIHdpdGggcnVieSBhbm5vdGF0aW9ucy4gUnVieSBhbm5vdGF0aW9ucyBhcmUgc2hvcnQgcnVucyBvZiB0ZXh0IHByZXNlbnRlZCBhbG9uZ3NpZGUgYmFzZSB0ZXh0LCBwcmltYXJpbHkgdXNlZCBpbiBFYXN0IEFzaWFuIHR5cG9ncmFwaHkgYXMgYSBndWlkZSBmb3IgcHJvbnVuY2lhdGlvbiBvciB0byBpbmNsdWRlIG90aGVyIGFubm90YXRpb25zLiBJbiBKYXBhbmVzZSwgdGhpcyBmb3JtIG9mIHR5cG9ncmFwaHkgaXMgYWxzbyBrbm93biBhcyBmdXJpZ2FuYS4gUnVieSB0ZXh0IGNhbiBhcHBlYXIgb24gZWl0aGVyIHNpZGUsIGFuZCBzb21ldGltZXMgYm90aCBzaWRlcywgb2YgdGhlIGJhc2UgdGV4dCwgYW5kIGl0IGlzIHBvc3NpYmxlIHRvIGNvbnRyb2wgaXRzIHBvc2l0aW9uIHVzaW5nIENTUy4gQSBtb3JlIGNvbXBsZXRlIGludHJvZHVjdGlvbiB0byBydWJ5IGNhbiBiZSBmb3VuZCBpbiB0aGUgVXNlIENhc2VzICYgRXhwbG9yYXRvcnkgQXBwcm9hY2hlcyBmb3IgUnVieSBNYXJrdXAgZG9jdW1lbnQgYXMgd2VsbCBhcyBpbiBDU1MgUnVieSBNb2R1bGUgTGV2ZWwgMS4gW1JVQlktVUNdIFtDU1NSVUJZXSJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3J1YnkifV19LHtuYW1lOiJyYiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHJiIGVsZW1lbnQgbWFya3MgdGhlIGJhc2UgdGV4dCBjb21wb25lbnQgb2YgYSBydWJ5IGFubm90YXRpb24uIFdoZW4gaXQgaXMgdGhlIGNoaWxkIG9mIGEgcnVieSBlbGVtZW50LCBpdCBkb2Vzbid0IHJlcHJlc2VudCBhbnl0aGluZyBpdHNlbGYsIGJ1dCBpdHMgcGFyZW50IHJ1YnkgZWxlbWVudCB1c2VzIGl0IGFzIHBhcnQgb2YgZGV0ZXJtaW5pbmcgd2hhdCBpdCByZXByZXNlbnRzLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3JiIn1dfSx7bmFtZToicnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBydCBlbGVtZW50IG1hcmtzIHRoZSBydWJ5IHRleHQgY29tcG9uZW50IG9mIGEgcnVieSBhbm5vdGF0aW9uLiBXaGVuIGl0IGlzIHRoZSBjaGlsZCBvZiBhIHJ1YnkgZWxlbWVudCBvciBvZiBhbiBydGMgZWxlbWVudCB0aGF0IGlzIGl0c2VsZiB0aGUgY2hpbGQgb2YgYSBydWJ5IGVsZW1lbnQsIGl0IGRvZXNuJ3QgcmVwcmVzZW50IGFueXRoaW5nIGl0c2VsZiwgYnV0IGl0cyBhbmNlc3RvciBydWJ5IGVsZW1lbnQgdXNlcyBpdCBhcyBwYXJ0IG9mIGRldGVybWluaW5nIHdoYXQgaXQgcmVwcmVzZW50cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ydCJ9XX0se25hbWU6InJwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcnAgZWxlbWVudCBpcyB1c2VkIHRvIHByb3ZpZGUgZmFsbGJhY2sgdGV4dCB0byBiZSBzaG93biBieSB1c2VyIGFnZW50cyB0aGF0IGRvbid0IHN1cHBvcnQgcnVieSBhbm5vdGF0aW9ucy4gT25lIHdpZGVzcHJlYWQgY29udmVudGlvbiBpcyB0byBwcm92aWRlIHBhcmVudGhlc2VzIGFyb3VuZCB0aGUgcnVieSB0ZXh0IGNvbXBvbmVudCBvZiBhIHJ1YnkgYW5ub3RhdGlvbi4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ycCJ9XX0se25hbWU6InRpbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0aW1lIGVsZW1lbnQgcmVwcmVzZW50cyBpdHMgY29udGVudHMsIGFsb25nIHdpdGggYSBtYWNoaW5lLXJlYWRhYmxlIGZvcm0gb2YgdGhvc2UgY29udGVudHMgaW4gdGhlIGRhdGV0aW1lIGF0dHJpYnV0ZS4gVGhlIGtpbmQgb2YgY29udGVudCBpcyBsaW1pdGVkIHRvIHZhcmlvdXMga2luZHMgb2YgZGF0ZXMsIHRpbWVzLCB0aW1lLXpvbmUgb2Zmc2V0cywgYW5kIGR1cmF0aW9ucywgYXMgZGVzY3JpYmVkIGJlbG93LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkYXRldGltZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSB0aW1lIGFuZC9vciBkYXRlIG9mIHRoZSBlbGVtZW50IGFuZCBtdXN0IGJlIGluIG9uZSBvZiB0aGUgZm9ybWF0cyBkZXNjcmliZWQgYmVsb3cuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGltZSJ9XX0se25hbWU6ImNvZGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjb2RlIGVsZW1lbnQgcmVwcmVzZW50cyBhIGZyYWdtZW50IG9mIGNvbXB1dGVyIGNvZGUuIFRoaXMgY291bGQgYmUgYW4gWE1MIGVsZW1lbnQgbmFtZSwgYSBmaWxlIG5hbWUsIGEgY29tcHV0ZXIgcHJvZ3JhbSwgb3IgYW55IG90aGVyIHN0cmluZyB0aGF0IGEgY29tcHV0ZXIgd291bGQgcmVjb2duaXplLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvZGUifV19LHtuYW1lOiJ2YXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB2YXIgZWxlbWVudCByZXByZXNlbnRzIGEgdmFyaWFibGUuIFRoaXMgY291bGQgYmUgYW4gYWN0dWFsIHZhcmlhYmxlIGluIGEgbWF0aGVtYXRpY2FsIGV4cHJlc3Npb24gb3IgcHJvZ3JhbW1pbmcgY29udGV4dCwgYW4gaWRlbnRpZmllciByZXByZXNlbnRpbmcgYSBjb25zdGFudCwgYSBzeW1ib2wgaWRlbnRpZnlpbmcgYSBwaHlzaWNhbCBxdWFudGl0eSwgYSBmdW5jdGlvbiBwYXJhbWV0ZXIsIG9yIGp1c3QgYmUgYSB0ZXJtIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBpbiBwcm9zZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC92YXIifV19LHtuYW1lOiJzYW1wIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc2FtcCBlbGVtZW50IHJlcHJlc2VudHMgc2FtcGxlIG9yIHF1b3RlZCBvdXRwdXQgZnJvbSBhbm90aGVyIHByb2dyYW0gb3IgY29tcHV0aW5nIHN5c3RlbS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zYW1wIn1dfSx7bmFtZToia2JkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUga2JkIGVsZW1lbnQgcmVwcmVzZW50cyB1c2VyIGlucHV0ICh0eXBpY2FsbHkga2V5Ym9hcmQgaW5wdXQsIGFsdGhvdWdoIGl0IG1heSBhbHNvIGJlIHVzZWQgdG8gcmVwcmVzZW50IG90aGVyIGlucHV0LCBzdWNoIGFzIHZvaWNlIGNvbW1hbmRzKS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9rYmQifV19LHtuYW1lOiJzdWIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzdWIgZWxlbWVudCByZXByZXNlbnRzIGEgc3Vic2NyaXB0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3N1YiJ9XX0se25hbWU6InN1cCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHN1cCBlbGVtZW50IHJlcHJlc2VudHMgYSBzdXBlcnNjcmlwdC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zdXAifV19LHtuYW1lOiJpIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaSBlbGVtZW50IHJlcHJlc2VudHMgYSBzcGFuIG9mIHRleHQgaW4gYW4gYWx0ZXJuYXRlIHZvaWNlIG9yIG1vb2QsIG9yIG90aGVyd2lzZSBvZmZzZXQgZnJvbSB0aGUgbm9ybWFsIHByb3NlIGluIGEgbWFubmVyIGluZGljYXRpbmcgYSBkaWZmZXJlbnQgcXVhbGl0eSBvZiB0ZXh0LCBzdWNoIGFzIGEgdGF4b25vbWljIGRlc2lnbmF0aW9uLCBhIHRlY2huaWNhbCB0ZXJtLCBhbiBpZGlvbWF0aWMgcGhyYXNlIGZyb20gYW5vdGhlciBsYW5ndWFnZSwgdHJhbnNsaXRlcmF0aW9uLCBhIHRob3VnaHQsIG9yIGEgc2hpcCBuYW1lIGluIFdlc3Rlcm4gdGV4dHMuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaSJ9XX0se25hbWU6ImIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNwYW4gb2YgdGV4dCB0byB3aGljaCBhdHRlbnRpb24gaXMgYmVpbmcgZHJhd24gZm9yIHV0aWxpdGFyaWFuIHB1cnBvc2VzIHdpdGhvdXQgY29udmV5aW5nIGFueSBleHRyYSBpbXBvcnRhbmNlIGFuZCB3aXRoIG5vIGltcGxpY2F0aW9uIG9mIGFuIGFsdGVybmF0ZSB2b2ljZSBvciBtb29kLCBzdWNoIGFzIGtleSB3b3JkcyBpbiBhIGRvY3VtZW50IGFic3RyYWN0LCBwcm9kdWN0IG5hbWVzIGluIGEgcmV2aWV3LCBhY3Rpb25hYmxlIHdvcmRzIGluIGludGVyYWN0aXZlIHRleHQtZHJpdmVuIHNvZnR3YXJlLCBvciBhbiBhcnRpY2xlIGxlZGUuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYiJ9XX0se25hbWU6InUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNwYW4gb2YgdGV4dCB3aXRoIGFuIHVuYXJ0aWN1bGF0ZWQsIHRob3VnaCBleHBsaWNpdGx5IHJlbmRlcmVkLCBub24tdGV4dHVhbCBhbm5vdGF0aW9uLCBzdWNoIGFzIGxhYmVsaW5nIHRoZSB0ZXh0IGFzIGJlaW5nIGEgcHJvcGVyIG5hbWUgaW4gQ2hpbmVzZSB0ZXh0IChhIENoaW5lc2UgcHJvcGVyIG5hbWUgbWFyayksIG9yIGxhYmVsaW5nIHRoZSB0ZXh0IGFzIGJlaW5nIG1pc3NwZWx0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3UifV19LHtuYW1lOiJtYXJrIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWFyayBlbGVtZW50IHJlcHJlc2VudHMgYSBydW4gb2YgdGV4dCBpbiBvbmUgZG9jdW1lbnQgbWFya2VkIG9yIGhpZ2hsaWdodGVkIGZvciByZWZlcmVuY2UgcHVycG9zZXMsIGR1ZSB0byBpdHMgcmVsZXZhbmNlIGluIGFub3RoZXIgY29udGV4dC4gV2hlbiB1c2VkIGluIGEgcXVvdGF0aW9uIG9yIG90aGVyIGJsb2NrIG9mIHRleHQgcmVmZXJyZWQgdG8gZnJvbSB0aGUgcHJvc2UsIGl0IGluZGljYXRlcyBhIGhpZ2hsaWdodCB0aGF0IHdhcyBub3Qgb3JpZ2luYWxseSBwcmVzZW50IGJ1dCB3aGljaCBoYXMgYmVlbiBhZGRlZCB0byBicmluZyB0aGUgcmVhZGVyJ3MgYXR0ZW50aW9uIHRvIGEgcGFydCBvZiB0aGUgdGV4dCB0aGF0IG1pZ2h0IG5vdCBoYXZlIGJlZW4gY29uc2lkZXJlZCBpbXBvcnRhbnQgYnkgdGhlIG9yaWdpbmFsIGF1dGhvciB3aGVuIHRoZSBibG9jayB3YXMgb3JpZ2luYWxseSB3cml0dGVuLCBidXQgd2hpY2ggaXMgbm93IHVuZGVyIHByZXZpb3VzbHkgdW5leHBlY3RlZCBzY3J1dGlueS4gV2hlbiB1c2VkIGluIHRoZSBtYWluIHByb3NlIG9mIGEgZG9jdW1lbnQsIGl0IGluZGljYXRlcyBhIHBhcnQgb2YgdGhlIGRvY3VtZW50IHRoYXQgaGFzIGJlZW4gaGlnaGxpZ2h0ZWQgZHVlIHRvIGl0cyBsaWtlbHkgcmVsZXZhbmNlIHRvIHRoZSB1c2VyJ3MgY3VycmVudCBhY3Rpdml0eS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tYXJrIn1dfSx7bmFtZToiYmRpIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYmRpIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNwYW4gb2YgdGV4dCB0aGF0IGlzIHRvIGJlIGlzb2xhdGVkIGZyb20gaXRzIHN1cnJvdW5kaW5ncyBmb3IgdGhlIHB1cnBvc2VzIG9mIGJpZGlyZWN0aW9uYWwgdGV4dCBmb3JtYXR0aW5nLiBbQklESV0ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iZGkifV19LHtuYW1lOiJiZG8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiZG8gZWxlbWVudCByZXByZXNlbnRzIGV4cGxpY2l0IHRleHQgZGlyZWN0aW9uYWxpdHkgZm9ybWF0dGluZyBjb250cm9sIGZvciBpdHMgY2hpbGRyZW4uIEl0IGFsbG93cyBhdXRob3JzIHRvIG92ZXJyaWRlIHRoZSBVbmljb2RlIGJpZGlyZWN0aW9uYWwgYWxnb3JpdGhtIGJ5IGV4cGxpY2l0bHkgc3BlY2lmeWluZyBhIGRpcmVjdGlvbiBvdmVycmlkZS4gW0JJREldIn0sYXR0cmlidXRlczpbe25hbWU6ImRpciIsZGVzY3JpcHRpb246IlRoZSBkaXJlY3Rpb24gaW4gd2hpY2ggdGV4dCBzaG91bGQgYmUgcmVuZGVyZWQgaW4gdGhpcyBlbGVtZW50J3MgY29udGVudHMuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbHRyYDogSW5kaWNhdGVzIHRoYXQgdGhlIHRleHQgc2hvdWxkIGdvIGluIGEgbGVmdC10by1yaWdodCBkaXJlY3Rpb24uXG4qICAgYHJ0bGA6IEluZGljYXRlcyB0aGF0IHRoZSB0ZXh0IHNob3VsZCBnbyBpbiBhIHJpZ2h0LXRvLWxlZnQgZGlyZWN0aW9uLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYmRvIn1dfSx7bmFtZToic3BhbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNwYW4gZWxlbWVudCBkb2Vzbid0IG1lYW4gYW55dGhpbmcgb24gaXRzIG93biwgYnV0IGNhbiBiZSB1c2VmdWwgd2hlbiB1c2VkIHRvZ2V0aGVyIHdpdGggdGhlIGdsb2JhbCBhdHRyaWJ1dGVzLCBlLmcuIGNsYXNzLCBsYW5nLCBvciBkaXIuIEl0IHJlcHJlc2VudHMgaXRzIGNoaWxkcmVuLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NwYW4ifV19LHtuYW1lOiJiciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJyIGVsZW1lbnQgcmVwcmVzZW50cyBhIGxpbmUgYnJlYWsuIn0sYXR0cmlidXRlczpbe25hbWU6ImNsZWFyIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHdoZXJlIHRvIGJlZ2luIHRoZSBuZXh0IGxpbmUgYWZ0ZXIgdGhlIGJyZWFrLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnIifV19LHtuYW1lOiJ3YnIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB3YnIgZWxlbWVudCByZXByZXNlbnRzIGEgbGluZSBicmVhayBvcHBvcnR1bml0eS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC93YnIifV19LHtuYW1lOiJpbnMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbnMgZWxlbWVudCByZXByZXNlbnRzIGFuIGFkZGl0aW9uIHRvIHRoZSBkb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY2l0ZSIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGRlZmluZXMgdGhlIFVSSSBvZiBhIHJlc291cmNlIHRoYXQgZXhwbGFpbnMgdGhlIGNoYW5nZSwgc3VjaCBhcyBhIGxpbmsgdG8gbWVldGluZyBtaW51dGVzIG9yIGEgdGlja2V0IGluIGEgdHJvdWJsZXNob290aW5nIHN5c3RlbS4ifSx7bmFtZToiZGF0ZXRpbWUiLGRlc2NyaXB0aW9uOidUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIHRpbWUgYW5kIGRhdGUgb2YgdGhlIGNoYW5nZSBhbmQgbXVzdCBiZSBhIHZhbGlkIGRhdGUgd2l0aCBhbiBvcHRpb25hbCB0aW1lIHN0cmluZy4gSWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBwYXJzZWQgYXMgYSBkYXRlIHdpdGggYW4gb3B0aW9uYWwgdGltZSBzdHJpbmcsIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYW4gYXNzb2NpYXRlZCB0aW1lIHN0YW1wLiBGb3IgdGhlIGZvcm1hdCBvZiB0aGUgc3RyaW5nIHdpdGhvdXQgYSB0aW1lLCBzZWUgW0Zvcm1hdCBvZiBhIHZhbGlkIGRhdGUgc3RyaW5nXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyNGb3JtYXRfb2ZfYV92YWxpZF9kYXRlX3N0cmluZyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpIGluIFtEYXRlIGFuZCB0aW1lIGZvcm1hdHMgdXNlZCBpbiBIVE1MXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpLiBUaGUgZm9ybWF0IG9mIHRoZSBzdHJpbmcgaWYgaXQgaW5jbHVkZXMgYm90aCBkYXRlIGFuZCB0aW1lIGlzIGNvdmVyZWQgaW4gW0Zvcm1hdCBvZiBhIHZhbGlkIGxvY2FsIGRhdGUgYW5kIHRpbWUgc3RyaW5nXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyNGb3JtYXRfb2ZfYV92YWxpZF9sb2NhbF9kYXRlX2FuZF90aW1lX3N0cmluZyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpIGluIFtEYXRlIGFuZCB0aW1lIGZvcm1hdHMgdXNlZCBpbiBIVE1MXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5zIn1dfSx7bmFtZToiZGVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGVsIGVsZW1lbnQgcmVwcmVzZW50cyBhIHJlbW92YWwgZnJvbSB0aGUgZG9jdW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgVVJJIGZvciBhIHJlc291cmNlIHRoYXQgZXhwbGFpbnMgdGhlIGNoYW5nZSAoZm9yIGV4YW1wbGUsIG1lZXRpbmcgbWludXRlcykuIn19LHtuYW1lOiJkYXRldGltZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSB0aW1lIGFuZCBkYXRlIG9mIHRoZSBjaGFuZ2UgYW5kIG11c3QgYmUgYSB2YWxpZCBkYXRlIHN0cmluZyB3aXRoIGFuIG9wdGlvbmFsIHRpbWUuIElmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgcGFyc2VkIGFzIGEgZGF0ZSB3aXRoIGFuIG9wdGlvbmFsIHRpbWUgc3RyaW5nLCB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgdGltZSBzdGFtcC4gRm9yIHRoZSBmb3JtYXQgb2YgdGhlIHN0cmluZyB3aXRob3V0IGEgdGltZSwgc2VlIFtGb3JtYXQgb2YgYSB2YWxpZCBkYXRlIHN0cmluZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMjRm9ybWF0X29mX2FfdmFsaWRfZGF0ZV9zdHJpbmcgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKSBpbiBbRGF0ZSBhbmQgdGltZSBmb3JtYXRzIHVzZWQgaW4gSFRNTF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKS4gVGhlIGZvcm1hdCBvZiB0aGUgc3RyaW5nIGlmIGl0IGluY2x1ZGVzIGJvdGggZGF0ZSBhbmQgdGltZSBpcyBjb3ZlcmVkIGluIFtGb3JtYXQgb2YgYSB2YWxpZCBsb2NhbCBkYXRlIGFuZCB0aW1lIHN0cmluZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMjRm9ybWF0X29mX2FfdmFsaWRfbG9jYWxfZGF0ZV9hbmRfdGltZV9zdHJpbmcgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKSBpbiBbRGF0ZSBhbmQgdGltZSBmb3JtYXRzIHVzZWQgaW4gSFRNTF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKS4nfX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kZWwifV19LHtuYW1lOiJwaWN0dXJlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcGljdHVyZSBlbGVtZW50IGlzIGEgY29udGFpbmVyIHdoaWNoIHByb3ZpZGVzIG11bHRpcGxlIHNvdXJjZXMgdG8gaXRzIGNvbnRhaW5lZCBpbWcgZWxlbWVudCB0byBhbGxvdyBhdXRob3JzIHRvIGRlY2xhcmF0aXZlbHkgY29udHJvbCBvciBnaXZlIGhpbnRzIHRvIHRoZSB1c2VyIGFnZW50IGFib3V0IHdoaWNoIGltYWdlIHJlc291cmNlIHRvIHVzZSwgYmFzZWQgb24gdGhlIHNjcmVlbiBwaXhlbCBkZW5zaXR5LCB2aWV3cG9ydCBzaXplLCBpbWFnZSBmb3JtYXQsIGFuZCBvdGhlciBmYWN0b3JzLiBJdCByZXByZXNlbnRzIGl0cyBjaGlsZHJlbi4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9waWN0dXJlIn1dfSx7bmFtZToiaW1nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBpbWcgZWxlbWVudCByZXByZXNlbnRzIGFuIGltYWdlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGRlZmluZXMgYW4gYWx0ZXJuYXRpdmUgdGV4dCBkZXNjcmlwdGlvbiBvZiB0aGUgaW1hZ2UuXG5cbioqTm90ZToqKiBCcm93c2VycyBkbyBub3QgYWx3YXlzIGRpc3BsYXkgdGhlIGltYWdlIHJlZmVyZW5jZWQgYnkgdGhlIGVsZW1lbnQuIFRoaXMgaXMgdGhlIGNhc2UgZm9yIG5vbi1ncmFwaGljYWwgYnJvd3NlcnMgKGluY2x1ZGluZyB0aG9zZSB1c2VkIGJ5IHBlb3BsZSB3aXRoIHZpc3VhbCBpbXBhaXJtZW50cyksIGlmIHRoZSB1c2VyIGNob29zZXMgbm90IHRvIGRpc3BsYXkgaW1hZ2VzLCBvciBpZiB0aGUgYnJvd3NlciBjYW5ub3QgZGlzcGxheSB0aGUgaW1hZ2UgYmVjYXVzZSBpdCBpcyBpbnZhbGlkIG9yIGFuIFt1bnN1cHBvcnRlZCB0eXBlXSgjU3VwcG9ydGVkX2ltYWdlX2Zvcm1hdHMpLiBJbiB0aGVzZSBjYXNlcywgdGhlIGJyb3dzZXIgbWF5IHJlcGxhY2UgdGhlIGltYWdlIHdpdGggdGhlIHRleHQgZGVmaW5lZCBpbiB0aGlzIGVsZW1lbnRcJ3MgYGFsdGAgYXR0cmlidXRlLiBZb3Ugc2hvdWxkLCBmb3IgdGhlc2UgcmVhc29ucyBhbmQgb3RoZXJzLCBwcm92aWRlIGEgdXNlZnVsIHZhbHVlIGZvciBgYWx0YCB3aGVuZXZlciBwb3NzaWJsZS5cblxuKipOb3RlOioqIE9taXR0aW5nIHRoaXMgYXR0cmlidXRlIGFsdG9nZXRoZXIgaW5kaWNhdGVzIHRoYXQgdGhlIGltYWdlIGlzIGEga2V5IHBhcnQgb2YgdGhlIGNvbnRlbnQsIGFuZCBubyB0ZXh0dWFsIGVxdWl2YWxlbnQgaXMgYXZhaWxhYmxlLiBTZXR0aW5nIHRoaXMgYXR0cmlidXRlIHRvIGFuIGVtcHR5IHN0cmluZyAoYGFsdD0iImApIGluZGljYXRlcyB0aGF0IHRoaXMgaW1hZ2UgaXMgX25vdF8gYSBrZXkgcGFydCBvZiB0aGUgY29udGVudCAoZGVjb3JhdGl2ZSksIGFuZCB0aGF0IG5vbi12aXN1YWwgYnJvd3NlcnMgbWF5IG9taXQgaXQgZnJvbSByZW5kZXJpbmcuJ319LHtuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbWFnZSBVUkwuIFRoaXMgYXR0cmlidXRlIGlzIG1hbmRhdG9yeSBmb3IgdGhlIGA8aW1nPmAgZWxlbWVudC4gT24gYnJvd3NlcnMgc3VwcG9ydGluZyBgc3Jjc2V0YCwgYHNyY2AgaXMgdHJlYXRlZCBsaWtlIGEgY2FuZGlkYXRlIGltYWdlIHdpdGggYSBwaXhlbCBkZW5zaXR5IGRlc2NyaXB0b3IgYDF4YCB1bmxlc3MgYW4gaW1hZ2Ugd2l0aCB0aGlzIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvciBpcyBhbHJlYWR5IGRlZmluZWQgaW4gYHNyY3NldCxgIG9yIHVubGVzcyBgc3Jjc2V0YCBjb250YWlucyAnYHdgJyBkZXNjcmlwdG9ycy4ifX0se25hbWU6InNyY3NldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBsaXN0IG9mIG9uZSBvciBtb3JlIHN0cmluZ3Mgc2VwYXJhdGVkIGJ5IGNvbW1hcyBpbmRpY2F0aW5nIGEgc2V0IG9mIHBvc3NpYmxlIGltYWdlIHNvdXJjZXMgZm9yIHRoZSB1c2VyIGFnZW50IHRvIHVzZS4gRWFjaCBzdHJpbmcgaXMgY29tcG9zZWQgb2Y6XG5cbjEuICBhIFVSTCB0byBhbiBpbWFnZSxcbjIuICBvcHRpb25hbGx5LCB3aGl0ZXNwYWNlIGZvbGxvd2VkIGJ5IG9uZSBvZjpcbiAgICAqICAgQSB3aWR0aCBkZXNjcmlwdG9yLCBvciBhIHBvc2l0aXZlIGludGVnZXIgZGlyZWN0bHkgZm9sbG93ZWQgYnkgJ2B3YCcuIFRoZSB3aWR0aCBkZXNjcmlwdG9yIGlzIGRpdmlkZWQgYnkgdGhlIHNvdXJjZSBzaXplIGdpdmVuIGluIHRoZSBgc2l6ZXNgIGF0dHJpYnV0ZSB0byBjYWxjdWxhdGUgdGhlIGVmZmVjdGl2ZSBwaXhlbCBkZW5zaXR5LlxuICAgICogICBBIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvciwgd2hpY2ggaXMgYSBwb3NpdGl2ZSBmbG9hdGluZyBwb2ludCBudW1iZXIgZGlyZWN0bHkgZm9sbG93ZWQgYnkgJ2B4YCcuXG5cbklmIG5vIGRlc2NyaXB0b3IgaXMgc3BlY2lmaWVkLCB0aGUgc291cmNlIGlzIGFzc2lnbmVkIHRoZSBkZWZhdWx0IGRlc2NyaXB0b3I6IGAxeGAuXG5cbkl0IGlzIGluY29ycmVjdCB0byBtaXggd2lkdGggZGVzY3JpcHRvcnMgYW5kIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvcnMgaW4gdGhlIHNhbWUgYHNyY3NldGAgYXR0cmlidXRlLiBEdXBsaWNhdGUgZGVzY3JpcHRvcnMgKGZvciBpbnN0YW5jZSwgdHdvIHNvdXJjZXMgaW4gdGhlIHNhbWUgYHNyY3NldGAgd2hpY2ggYXJlIGJvdGggZGVzY3JpYmVkIHdpdGggJ2AyeGAnKSBhcmUgYWxzbyBpbnZhbGlkLlxuXG5UaGUgdXNlciBhZ2VudCBzZWxlY3RzIGFueSBvbmUgb2YgdGhlIGF2YWlsYWJsZSBzb3VyY2VzIGF0IGl0cyBkaXNjcmV0aW9uLiBUaGlzIHByb3ZpZGVzIHRoZW0gd2l0aCBzaWduaWZpY2FudCBsZWV3YXkgdG8gdGFpbG9yIHRoZWlyIHNlbGVjdGlvbiBiYXNlZCBvbiB0aGluZ3MgbGlrZSB1c2VyIHByZWZlcmVuY2VzIG9yIGJhbmR3aWR0aCBjb25kaXRpb25zLiBTZWUgb3VyIFtSZXNwb25zaXZlIGltYWdlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9MZWFybi9IVE1ML011bHRpbWVkaWFfYW5kX2VtYmVkZGluZy9SZXNwb25zaXZlX2ltYWdlcykgdHV0b3JpYWwgZm9yIGFuIGV4YW1wbGUuIn19LHtuYW1lOiJjcm9zc29yaWdpbiIsdmFsdWVTZXQ6InhvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRlcyBpZiB0aGUgZmV0Y2hpbmcgb2YgdGhlIHJlbGF0ZWQgaW1hZ2UgbXVzdCBiZSBkb25lIHVzaW5nIENPUlMgb3Igbm90LiBbQ09SUy1lbmFibGVkIGltYWdlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DT1JTX0VuYWJsZWRfSW1hZ2UpIGNhbiBiZSByZXVzZWQgaW4gdGhlIFtgPGNhbnZhcz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FudmFzICJVc2UgdGhlIEhUTUwgPGNhbnZhcz4gZWxlbWVudCB3aXRoIGVpdGhlciB0aGUgY2FudmFzIHNjcmlwdGluZyBBUEkgb3IgdGhlIFdlYkdMIEFQSSB0byBkcmF3IGdyYXBoaWNzIGFuZCBhbmltYXRpb25zLiIpIGVsZW1lbnQgd2l0aG91dCBiZWluZyAiW3RhaW50ZWRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQ09SU19lbmFibGVkX2ltYWdlI1doYXRfaXNfYV90YWludGVkX2NhbnZhcykuIiBUaGUgYWxsb3dlZCB2YWx1ZXMgYXJlOid9fSx7bmFtZToidXNlbWFwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgcGFydGlhbCBVUkwgKHN0YXJ0aW5nIHdpdGggXCcjXCcpIG9mIGFuIFtpbWFnZSBtYXBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvSFRNTC9FbGVtZW50L21hcCkgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbGVtZW50LlxuXG4qKk5vdGU6KiogWW91IGNhbm5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgaWYgdGhlIGA8aW1nPmAgZWxlbWVudCBpcyBhIGRlc2NlbmRhbnQgb2YgYW4gW2A8YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSAiVGhlIEhUTUwgPGE+IGVsZW1lbnQgKG9yIGFuY2hvciBlbGVtZW50KSBjcmVhdGVzIGEgaHlwZXJsaW5rIHRvIG90aGVyIHdlYiBwYWdlcywgZmlsZXMsIGxvY2F0aW9ucyB3aXRoaW4gdGhlIHNhbWUgcGFnZSwgZW1haWwgYWRkcmVzc2VzLCBvciBhbnkgb3RoZXIgVVJMLiIpIG9yIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBlbGVtZW50Lid9fSx7bmFtZToiaXNtYXAiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBpbWFnZSBpcyBwYXJ0IG9mIGEgc2VydmVyLXNpZGUgbWFwLiBJZiBzbywgdGhlIHByZWNpc2UgY29vcmRpbmF0ZXMgb2YgYSBjbGljayBhcmUgc2VudCB0byB0aGUgc2VydmVyLlxuXG4qKk5vdGU6KiogVGhpcyBhdHRyaWJ1dGUgaXMgYWxsb3dlZCBvbmx5IGlmIHRoZSBgPGltZz5gIGVsZW1lbnQgaXMgYSBkZXNjZW5kYW50IG9mIGFuIFtgPGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2EgIlRoZSBIVE1MIDxhPiBlbGVtZW50IChvciBhbmNob3IgZWxlbWVudCkgY3JlYXRlcyBhIGh5cGVybGluayB0byBvdGhlciB3ZWIgcGFnZXMsIGZpbGVzLCBsb2NhdGlvbnMgd2l0aGluIHRoZSBzYW1lIHBhZ2UsIGVtYWlsIGFkZHJlc3Nlcywgb3IgYW55IG90aGVyIFVSTC4iKSBlbGVtZW50IHdpdGggYSB2YWxpZCBbYGhyZWZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSNhdHRyLWhyZWYpIGF0dHJpYnV0ZS4nfX0se25hbWU6IndpZHRoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaW50cmluc2ljIHdpZHRoIG9mIHRoZSBpbWFnZSBpbiBwaXhlbHMuIn19LHtuYW1lOiJoZWlnaHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbnRyaW5zaWMgaGVpZ2h0IG9mIHRoZSBpbWFnZSBpbiBwaXhlbHMuIn19LHtuYW1lOiJkZWNvZGluZyIsZGVzY3JpcHRpb246IlByb3ZpZGVzIGFuIGltYWdlIGRlY29kaW5nIGhpbnQgdG8gdGhlIGJyb3dzZXIuIFRoZSBhbGxvd2VkIHZhbHVlcyBhcmU6In0se25hbWU6ImRlY29kaW5nIixkZXNjcmlwdGlvbjoiYHN5bmNgXG5cbkRlY29kZSB0aGUgaW1hZ2Ugc3luY2hyb25vdXNseSBmb3IgYXRvbWljIHByZXNlbnRhdGlvbiB3aXRoIG90aGVyIGNvbnRlbnQuXG5cbmBhc3luY2BcblxuRGVjb2RlIHRoZSBpbWFnZSBhc3luY2hyb25vdXNseSB0byByZWR1Y2UgZGVsYXkgaW4gcHJlc2VudGluZyBvdGhlciBjb250ZW50LlxuXG5gYXV0b2BcblxuRGVmYXVsdCBtb2RlLCB3aGljaCBpbmRpY2F0ZXMgbm8gcHJlZmVyZW5jZSBmb3IgdGhlIGRlY29kaW5nIG1vZGUuIFRoZSBicm93c2VyIGRlY2lkZXMgd2hhdCBpcyBiZXN0IGZvciB0aGUgdXNlci4ifSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgcmVsYXRpdmUgaW1wb3J0YW5jZSBvZiB0aGUgcmVzb3VyY2UuIFByaW9yaXR5IGhpbnRzIGFyZSBkZWxlZ2F0ZWQgdXNpbmcgdGhlIHZhbHVlczoifSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246ImBhdXRvYDogSW5kaWNhdGVzwqAqKm5vwqBwcmVmZXJlbmNlKiouIFRoZSBicm93c2VyIG1heSB1c2UgaXRzIG93biBoZXVyaXN0aWNzIHRvIGRlY2lkZSB0aGUgcHJpb3JpdHkgb2YgdGhlIGltYWdlLlxuXG5gaGlnaGA6IEluZGljYXRlcyB0byB0aGXCoGJyb3dzZXLCoHRoYXQgdGhlIGltYWdlIGlzIG9mwqAqKmhpZ2gqKiBwcmlvcml0eS5cblxuYGxvd2A6wqBJbmRpY2F0ZXMgdG8gdGhlwqBicm93c2VywqB0aGF0IHRoZSBpbWFnZSBpcyBvZsKgKipsb3cqKiBwcmlvcml0eS4ifSx7bmFtZToiaW50cmluc2ljc2l6ZSIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIHRlbGxzIHRoZSBicm93c2VyIHRvIGlnbm9yZSB0aGUgYWN0dWFsIGludHJpbnNpYyBzaXplIG9mIHRoZSBpbWFnZSBhbmQgcHJldGVuZCBpdOKAmXMgdGhlIHNpemUgc3BlY2lmaWVkIGluIHRoZSBhdHRyaWJ1dGUuIFNwZWNpZmljYWxseSwgdGhlIGltYWdlIHdvdWxkIHJhc3RlciBhdCB0aGVzZSBkaW1lbnNpb25zIGFuZCBgbmF0dXJhbFdpZHRoYC9gbmF0dXJhbEhlaWdodGAgb24gaW1hZ2VzIHdvdWxkIHJldHVybiB0aGUgdmFsdWVzIHNwZWNpZmllZCBpbiB0aGlzIGF0dHJpYnV0ZS4gW0V4cGxhaW5lcl0oaHR0cHM6Ly9naXRodWIuY29tL29qYW52YWZhaS9pbnRyaW5zaWNzaXplLWF0dHJpYnV0ZSksIFtleGFtcGxlc10oaHR0cHM6Ly9nb29nbGVjaHJvbWUuZ2l0aHViLmlvL3NhbXBsZXMvaW50cmluc2ljLXNpemUvaW5kZXguaHRtbCkifSx7bmFtZToicmVmZXJyZXJwb2xpY3kiLGRlc2NyaXB0aW9uOiJBIHN0cmluZyBpbmRpY2F0aW5nIHdoaWNoIHJlZmVycmVyIHRvIHVzZSB3aGVuIGZldGNoaW5nIHRoZSByZXNvdXJjZTpcblxuKiAgIGBuby1yZWZlcnJlcjpgIFRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciBcIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuXCIpIGhlYWRlciB3aWxsIG5vdCBiZSBzZW50LlxuKiAgIGBuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZTpgIE5vIGBSZWZlcmVyYCBoZWFkZXIgd2lsbCBiZSBzZW50IHdoZW4gbmF2aWdhdGluZyB0byBhbiBvcmlnaW4gd2l0aG91dCBUTFMgKEhUVFBTKS4gVGhpcyBpcyBhIHVzZXIgYWdlbnTigJlzIGRlZmF1bHQgYmVoYXZpb3IgaWYgbm8gcG9saWN5IGlzIG90aGVyd2lzZSBzcGVjaWZpZWQuXG4qICAgYG9yaWdpbjpgIFRoZSBgUmVmZXJlcmAgaGVhZGVyIHdpbGwgaW5jbHVkZSB0aGUgcGFnZSBvZiBvcmlnaW4ncyBzY2hlbWUsIHRoZSBob3N0LCBhbmQgdGhlIHBvcnQuXG4qICAgYG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbjpgIE5hdmlnYXRpbmcgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGxpbWl0IHRoZSBpbmNsdWRlZCByZWZlcnJhbCBkYXRhIHRvIHRoZSBzY2hlbWUsIHRoZSBob3N0IGFuZCB0aGUgcG9ydCwgd2hpbGUgbmF2aWdhdGluZyBmcm9tIHRoZSBzYW1lIG9yaWdpbiB3aWxsIGluY2x1ZGUgdGhlIHJlZmVycmVyJ3MgZnVsbCBwYXRoLlxuKiAgIGB1bnNhZmUtdXJsOmAgVGhlIGBSZWZlcmVyYCBoZWFkZXIgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW4gYW5kIHRoZSBwYXRoLCBidXQgbm90IHRoZSBmcmFnbWVudCwgcGFzc3dvcmQsIG9yIHVzZXJuYW1lLiBUaGlzIGNhc2UgaXMgdW5zYWZlIGJlY2F1c2UgaXQgY2FuIGxlYWsgb3JpZ2lucyBhbmQgcGF0aHMgZnJvbSBUTFMtcHJvdGVjdGVkIHJlc291cmNlcyB0byBpbnNlY3VyZSBvcmlnaW5zLiJ9LHtuYW1lOiJzaXplcyIsZGVzY3JpcHRpb246IkEgbGlzdCBvZiBvbmUgb3IgbW9yZSBzdHJpbmdzIHNlcGFyYXRlZCBieSBjb21tYXMgaW5kaWNhdGluZyBhIHNldCBvZiBzb3VyY2Ugc2l6ZXMuIEVhY2ggc291cmNlIHNpemUgY29uc2lzdHMgb2Y6XG5cbjEuICBhIG1lZGlhIGNvbmRpdGlvbi4gVGhpcyBtdXN0IGJlIG9taXR0ZWQgZm9yIHRoZSBsYXN0IGl0ZW0uXG4yLiAgYSBzb3VyY2Ugc2l6ZSB2YWx1ZS5cblxuU291cmNlIHNpemUgdmFsdWVzIHNwZWNpZnkgdGhlIGludGVuZGVkIGRpc3BsYXkgc2l6ZSBvZiB0aGUgaW1hZ2UuIFVzZXIgYWdlbnRzIHVzZSB0aGUgY3VycmVudCBzb3VyY2Ugc2l6ZSB0byBzZWxlY3Qgb25lIG9mIHRoZSBzb3VyY2VzIHN1cHBsaWVkIGJ5IHRoZSBgc3Jjc2V0YCBhdHRyaWJ1dGUsIHdoZW4gdGhvc2Ugc291cmNlcyBhcmUgZGVzY3JpYmVkIHVzaW5nIHdpZHRoICgnYHdgJykgZGVzY3JpcHRvcnMuIFRoZSBzZWxlY3RlZCBzb3VyY2Ugc2l6ZSBhZmZlY3RzIHRoZSBpbnRyaW5zaWMgc2l6ZSBvZiB0aGUgaW1hZ2UgKHRoZSBpbWFnZeKAmXMgZGlzcGxheSBzaXplIGlmIG5vIENTUyBzdHlsaW5nIGlzIGFwcGxpZWQpLiBJZiB0aGUgYHNyY3NldGAgYXR0cmlidXRlIGlzIGFic2VudCwgb3IgY29udGFpbnMgbm8gdmFsdWVzIHdpdGggYSB3aWR0aCAoYHdgKSBkZXNjcmlwdG9yLCB0aGVuIHRoZSBgc2l6ZXNgIGF0dHJpYnV0ZSBoYXMgbm8gZWZmZWN0LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW1nIn1dfSx7bmFtZToiaWZyYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaWZyYW1lIGVsZW1lbnQgcmVwcmVzZW50cyBhIG5lc3RlZCBicm93c2luZyBjb250ZXh0LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBVUkwgb2YgdGhlIHBhZ2UgdG8gZW1iZWQuIFVzZSBhIHZhbHVlIG9mIGBhYm91dDpibGFua2AgdG8gZW1iZWQgYW4gZW1wdHkgcGFnZSB0aGF0IGNvbmZvcm1zIHRvIHRoZSBbc2FtZS1vcmlnaW4gcG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TYW1lLW9yaWdpbl9wb2xpY3kjSW5oZXJpdGVkX29yaWdpbnMpLiBBbHNvIG5vdGUgdGhhdCBwcm9ncmFtYXRpY2FsbHkgcmVtb3ZpbmcgYW4gYDxpZnJhbWU+YFwncyBzcmMgYXR0cmlidXRlIChlLmcuIHZpYSBbYEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKClgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9yZW1vdmVBdHRyaWJ1dGUgIlRoZSBFbGVtZW50IG1ldGhvZCByZW1vdmVBdHRyaWJ1dGUoKSByZW1vdmVzIHRoZSBhdHRyaWJ1dGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgZnJvbSB0aGUgZWxlbWVudC4iKSkgY2F1c2VzIGBhYm91dDpibGFua2AgdG8gYmUgbG9hZGVkIGluIHRoZSBmcmFtZSBpbiBGaXJlZm94IChmcm9tIHZlcnNpb24gNjUpLCBDaHJvbWl1bS1iYXNlZCBicm93c2VycywgYW5kIFNhZmFyaS9pT1MuJ319LHtuYW1lOiJzcmNkb2MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklubGluZSBIVE1MIHRvIGVtYmVkLCBvdmVycmlkaW5nIHRoZSBgc3JjYCBhdHRyaWJ1dGUuIElmIGEgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBgc3JjZG9jYCBhdHRyaWJ1dGUsIGl0IHdpbGwgZmFsbCBiYWNrIHRvIHRoZSBVUkwgaW4gdGhlIGBzcmNgIGF0dHJpYnV0ZS4ifX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0EgdGFyZ2V0YWJsZSBuYW1lIGZvciB0aGUgZW1iZWRkZWQgYnJvd3NpbmcgY29udGV4dC4gVGhpcyBjYW4gYmUgdXNlZCBpbiB0aGUgYHRhcmdldGAgYXR0cmlidXRlIG9mIHRoZSBbYDxhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hICJUaGUgSFRNTCA8YT4gZWxlbWVudCAob3IgYW5jaG9yIGVsZW1lbnQpIGNyZWF0ZXMgYSBoeXBlcmxpbmsgdG8gb3RoZXIgd2ViIHBhZ2VzLCBmaWxlcywgbG9jYXRpb25zIHdpdGhpbiB0aGUgc2FtZSBwYWdlLCBlbWFpbCBhZGRyZXNzZXMsIG9yIGFueSBvdGhlciBVUkwuIiksIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpLCBvciBbYDxiYXNlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iYXNlICJUaGUgSFRNTCA8YmFzZT4gZWxlbWVudCBzcGVjaWZpZXMgdGhlIGJhc2UgVVJMIHRvIHVzZSBmb3IgYWxsIHJlbGF0aXZlIFVSTHMgY29udGFpbmVkIHdpdGhpbiBhIGRvY3VtZW50LiBUaGVyZSBjYW4gYmUgb25seSBvbmUgPGJhc2U+IGVsZW1lbnQgaW4gYSBkb2N1bWVudC4iKSBlbGVtZW50czsgdGhlIGBmb3JtdGFyZ2V0YCBhdHRyaWJ1dGUgb2YgdGhlIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIG9yIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBlbGVtZW50czsgb3IgdGhlIGB3aW5kb3dOYW1lYCBwYXJhbWV0ZXIgaW4gdGhlIFtgd2luZG93Lm9wZW4oKWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XaW5kb3cvb3BlbiAiVGhlwqBXaW5kb3cgaW50ZXJmYWNlXCdzIG9wZW4oKSBtZXRob2QgbG9hZHMgdGhlIHNwZWNpZmllZCByZXNvdXJjZSBpbnRvIHRoZSBicm93c2luZyBjb250ZXh0ICh3aW5kb3csIDxpZnJhbWU+IG9yIHRhYikgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuIElmIHRoZSBuYW1lIGRvZXNuXCd0IGV4aXN0LCB0aGVuIGEgbmV3IHdpbmRvdyBpcyBvcGVuZWQgYW5kIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2UgaXMgbG9hZGVkIGludG8gaXRzIGJyb3dzaW5nIGNvbnRleHQuIikgbWV0aG9kLid9fSx7bmFtZToic2FuZGJveCIsdmFsdWVTZXQ6InNiIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBcHBsaWVzIGV4dHJhIHJlc3RyaWN0aW9ucyB0byB0aGUgY29udGVudCBpbiB0aGUgZnJhbWUuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIGNhbiBlaXRoZXIgYmUgZW1wdHkgdG8gYXBwbHkgYWxsIHJlc3RyaWN0aW9ucywgb3Igc3BhY2Utc2VwYXJhdGVkIHRva2VucyB0byBsaWZ0IHBhcnRpY3VsYXIgcmVzdHJpY3Rpb25zOlxuXG4qICAgYGFsbG93LWZvcm1zYDogQWxsb3dzIHRoZSByZXNvdXJjZSB0byBzdWJtaXQgZm9ybXMuIElmIHRoaXMga2V5d29yZCBpcyBub3QgdXNlZCwgZm9ybSBzdWJtaXNzaW9uIGlzIGJsb2NrZWQuXG4qICAgYGFsbG93LW1vZGFsc2A6IExldHMgdGhlIHJlc291cmNlIFtvcGVuIG1vZGFsIHdpbmRvd3NdKGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI3NhbmRib3hlZC1tb2RhbHMtZmxhZykuXG4qICAgYGFsbG93LW9yaWVudGF0aW9uLWxvY2tgOiBMZXRzIHRoZSByZXNvdXJjZSBbbG9jayB0aGUgc2NyZWVuIG9yaWVudGF0aW9uXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvU2NyZWVuL2xvY2tPcmllbnRhdGlvbikuXG4qICAgYGFsbG93LXBvaW50ZXItbG9ja2A6IExldHMgdGhlIHJlc291cmNlIHVzZSB0aGUgW1BvaW50ZXIgTG9jayBBUEldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViQVBJL1BvaW50ZXJfTG9jaykuXG4qICAgYGFsbG93LXBvcHVwc2A6IEFsbG93cyBwb3B1cHMgKHN1Y2ggYXMgYHdpbmRvdy5vcGVuKClgLCBgdGFyZ2V0PSJfYmxhbmsiYCwgb3IgYHNob3dNb2RhbERpYWxvZygpYCkuIElmIHRoaXMga2V5d29yZCBpcyBub3QgdXNlZCwgdGhlIHBvcHVwIHdpbGwgc2lsZW50bHkgZmFpbCB0byBvcGVuLlxuKiAgIGBhbGxvdy1wb3B1cHMtdG8tZXNjYXBlLXNhbmRib3hgOiBMZXRzIHRoZSBzYW5kYm94ZWQgZG9jdW1lbnQgb3BlbiBuZXcgd2luZG93cyB3aXRob3V0IHRob3NlIHdpbmRvd3MgaW5oZXJpdGluZyB0aGUgc2FuZGJveGluZy4gRm9yIGV4YW1wbGUsIHRoaXMgY2FuIHNhZmVseSBzYW5kYm94IGFuIGFkdmVydGlzZW1lbnQgd2l0aG91dCBmb3JjaW5nIHRoZSBzYW1lIHJlc3RyaWN0aW9ucyB1cG9uIHRoZSBwYWdlIHRoZSBhZCBsaW5rcyB0by5cbiogICBgYWxsb3ctcHJlc2VudGF0aW9uYDogTGV0cyB0aGUgcmVzb3VyY2Ugc3RhcnQgYSBbcHJlc2VudGF0aW9uIHNlc3Npb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9QcmVzZW50YXRpb25SZXF1ZXN0KS5cbiogICBgYWxsb3ctc2FtZS1vcmlnaW5gOiBJZiB0aGlzIHRva2VuIGlzIG5vdCB1c2VkLCB0aGUgcmVzb3VyY2UgaXMgdHJlYXRlZCBhcyBiZWluZyBmcm9tIGEgc3BlY2lhbCBvcmlnaW4gdGhhdCBhbHdheXMgZmFpbHMgdGhlIFtzYW1lLW9yaWdpbiBwb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3Nhcnkvc2FtZS1vcmlnaW5fcG9saWN5ICJzYW1lLW9yaWdpbiBwb2xpY3k6IFRoZSBzYW1lLW9yaWdpbiBwb2xpY3kgaXMgYSBjcml0aWNhbCBzZWN1cml0eSBtZWNoYW5pc20gdGhhdCByZXN0cmljdHMgaG93IGEgZG9jdW1lbnQgb3Igc2NyaXB0IGxvYWRlZCBmcm9tIG9uZSBvcmlnaW4gY2FuIGludGVyYWN0IHdpdGggYSByZXNvdXJjZSBmcm9tIGFub3RoZXIgb3JpZ2luLiIpLlxuKiAgIGBhbGxvdy1zY3JpcHRzYDogTGV0cyB0aGUgcmVzb3VyY2UgcnVuIHNjcmlwdHMgKGJ1dCBub3QgY3JlYXRlIHBvcHVwIHdpbmRvd3MpLlxuKiAgIGBhbGxvdy1zdG9yYWdlLWFjY2Vzcy1ieS11c2VyLWFjdGl2YXRpb25gIDogTGV0cyB0aGUgcmVzb3VyY2UgcmVxdWVzdCBhY2Nlc3MgdG8gdGhlIHBhcmVudFwncyBzdG9yYWdlIGNhcGFiaWxpdGllcyB3aXRoIHRoZSBbU3RvcmFnZSBBY2Nlc3MgQVBJXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvU3RvcmFnZV9BY2Nlc3NfQVBJKS5cbiogICBgYWxsb3ctdG9wLW5hdmlnYXRpb25gOiBMZXRzIHRoZSByZXNvdXJjZSBuYXZpZ2F0ZSB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQgKHRoZSBvbmUgbmFtZWQgYF90b3BgKS5cbiogICBgYWxsb3ctdG9wLW5hdmlnYXRpb24tYnktdXNlci1hY3RpdmF0aW9uYDogTGV0cyB0aGUgcmVzb3VyY2UgbmF2aWdhdGUgdGhlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0LCBidXQgb25seSBpZiBpbml0aWF0ZWQgYnkgYSB1c2VyIGdlc3R1cmUuXG5cbioqTm90ZXMgYWJvdXQgc2FuZGJveGluZzoqKlxuXG4qICAgV2hlbiB0aGUgZW1iZWRkZWQgZG9jdW1lbnQgaGFzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgZW1iZWRkaW5nIHBhZ2UsIGl0IGlzICoqc3Ryb25nbHkgZGlzY291cmFnZWQqKiB0byB1c2UgYm90aCBgYWxsb3ctc2NyaXB0c2AgYW5kIGBhbGxvdy1zYW1lLW9yaWdpbmAsIGFzIHRoYXQgbGV0cyB0aGUgZW1iZWRkZWQgZG9jdW1lbnQgcmVtb3ZlIHRoZSBgc2FuZGJveGAgYXR0cmlidXRlIOKAlCBtYWtpbmcgaXQgbm8gbW9yZSBzZWN1cmUgdGhhbiBub3QgdXNpbmcgdGhlIGBzYW5kYm94YCBhdHRyaWJ1dGUgYXQgYWxsLlxuKiAgIFNhbmRib3hpbmcgaXMgdXNlbGVzcyBpZiB0aGUgYXR0YWNrZXIgY2FuIGRpc3BsYXkgY29udGVudCBvdXRzaWRlIGEgc2FuZGJveGVkIGBpZnJhbWVgIOKAlCBzdWNoIGFzIGlmIHRoZSB2aWV3ZXIgb3BlbnMgdGhlIGZyYW1lIGluIGEgbmV3IHRhYi4gU3VjaCBjb250ZW50IHNob3VsZCBiZSBhbHNvIHNlcnZlZCBmcm9tIGEgX3NlcGFyYXRlIG9yaWdpbl8gdG8gbGltaXQgcG90ZW50aWFsIGRhbWFnZS5cbiogICBUaGUgYHNhbmRib3hgIGF0dHJpYnV0ZSBpcyB1bnN1cHBvcnRlZCBpbiBJbnRlcm5ldCBFeHBsb3JlciA5IGFuZCBlYXJsaWVyLid9fSx7bmFtZToic2VhbWxlc3MiLHZhbHVlU2V0OiJ2In0se25hbWU6ImFsbG93ZnVsbHNjcmVlbiIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1NldCB0byBgdHJ1ZWAgaWYgdGhlIGA8aWZyYW1lPmAgY2FuIGFjdGl2YXRlIGZ1bGxzY3JlZW4gbW9kZSBieSBjYWxsaW5nIHRoZSBbYHJlcXVlc3RGdWxsc2NyZWVuKClgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9yZXF1ZXN0RnVsbHNjcmVlbiAiVGhlIEVsZW1lbnQucmVxdWVzdEZ1bGxzY3JlZW4oKSBtZXRob2QgaXNzdWVzIGFuIGFzeW5jaHJvbm91cyByZXF1ZXN0IHRvIG1ha2UgdGhlIGVsZW1lbnQgYmUgZGlzcGxheWVkIGluIGZ1bGwtc2NyZWVuIG1vZGUuIikgbWV0aG9kLid9fSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB3aWR0aCBvZiB0aGUgZnJhbWUgaW4gQ1NTIHBpeGVscy4gRGVmYXVsdCBpcyBgMzAwYC4ifX0se25hbWU6ImhlaWdodCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhlaWdodCBvZiB0aGUgZnJhbWUgaW4gQ1NTIHBpeGVscy4gRGVmYXVsdCBpcyBgMTUwYC4ifX0se25hbWU6ImFsbG93IixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgW2ZlYXR1cmUgcG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0ZlYXR1cmVfUG9saWN5KSBmb3IgdGhlIGA8aWZyYW1lPmAuIn0se25hbWU6ImFsbG93cGF5bWVudHJlcXVlc3QiLGRlc2NyaXB0aW9uOiJTZXQgdG8gYHRydWVgIGlmIGEgY3Jvc3Mtb3JpZ2luIGA8aWZyYW1lPmAgc2hvdWxkIGJlIGFsbG93ZWQgdG8gaW52b2tlIHRoZSBbUGF5bWVudCBSZXF1ZXN0IEFQSV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1BheW1lbnRfUmVxdWVzdF9BUEkpLiJ9LHtuYW1lOiJhbGxvd3BheW1lbnRyZXF1ZXN0IixkZXNjcmlwdGlvbjonVGhpcyBhdHRyaWJ1dGUgaXMgY29uc2lkZXJlZCBhIGxlZ2FjeSBhdHRyaWJ1dGUgYW5kIHJlZGVmaW5lZCBhcyBgYWxsb3c9InBheW1lbnQiYC4nfSx7bmFtZToiY3NwIixkZXNjcmlwdGlvbjonQSBbQ29udGVudCBTZWN1cml0eSBQb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvQ1NQKSBlbmZvcmNlZCBmb3IgdGhlIGVtYmVkZGVkIHJlc291cmNlLiBTZWUgW2BIVE1MSUZyYW1lRWxlbWVudC5jc3BgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTElGcmFtZUVsZW1lbnQvY3NwICJUaGUgY3NwIHByb3BlcnR5IG9mIHRoZSBIVE1MSUZyYW1lRWxlbWVudCBpbnRlcmZhY2Ugc3BlY2lmaWVzIHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSB0aGF0IGFuIGVtYmVkZGVkIGRvY3VtZW50IG11c3QgYWdyZWUgdG8gZW5mb3JjZSB1cG9uIGl0c2VsZi4iKSBmb3IgZGV0YWlscy4nfSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246IlRoZSBkb3dubG9hZCBwcmlvcml0eSBvZiB0aGUgcmVzb3VyY2UgaW4gdGhlIGA8aWZyYW1lPmAncyBgc3JjYCBhdHRyaWJ1dGUuIEFsbG93ZWQgdmFsdWVzOlxuXG5gYXV0b2AgKGRlZmF1bHQpXG5cbk5vIHByZWZlcmVuY2UuIFRoZSBicm93c2VyIHVzZXMgaXRzIG93biBoZXVyaXN0aWNzIHRvIGRlY2lkZSB0aGUgcHJpb3JpdHkgb2YgdGhlIHJlc291cmNlLlxuXG5gaGlnaGBcblxuVGhlIHJlc291cmNlIHNob3VsZCBiZSBkb3dubG9hZGVkIGJlZm9yZSBvdGhlciBsb3dlci1wcmlvcml0eSBwYWdlIHJlc291cmNlcy5cblxuYGxvd2BcblxuVGhlIHJlc291cmNlIHNob3VsZCBiZSBkb3dubG9hZGVkIGFmdGVyIG90aGVyIGhpZ2hlci1wcmlvcml0eSBwYWdlIHJlc291cmNlcy4ifSx7bmFtZToicmVmZXJyZXJwb2xpY3kiLGRlc2NyaXB0aW9uOidJbmRpY2F0ZXMgd2hpY2ggW3JlZmVycmVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnQvcmVmZXJyZXIpIHRvIHNlbmQgd2hlbiBmZXRjaGluZyB0aGUgZnJhbWVcJ3MgcmVzb3VyY2U6XG5cbiogICBgbm8tcmVmZXJyZXJgOiBUaGUgW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQuXG4qICAgYG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlYCAoZGVmYXVsdCk6IFRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudCB0byBbb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L29yaWdpbiAib3JpZ2luOiBXZWIgY29udGVudFwncyBvcmlnaW4gaXMgZGVmaW5lZCBieSB0aGUgc2NoZW1lIChwcm90b2NvbCksIGhvc3QgKGRvbWFpbiksIGFuZCBwb3J0IG9mIHRoZSBVUkwgdXNlZCB0byBhY2Nlc3MgaXQuIFR3byBvYmplY3RzIGhhdmUgdGhlIHNhbWUgb3JpZ2luIG9ubHkgd2hlbiB0aGUgc2NoZW1lLCBob3N0LCBhbmQgcG9ydCBhbGwgbWF0Y2guIilzIHdpdGhvdXQgW1RMU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9UTFMgIlRMUzogVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpLCBwcmV2aW91c2x5IGtub3duIGFzIFNlY3VyZSBTb2NrZXRzIExheWVyIChTU0wpLCBpcyBhIHByb3RvY29sIHVzZWQgYnkgYXBwbGljYXRpb25zIHRvIGNvbW11bmljYXRlIHNlY3VyZWx5IGFjcm9zcyBhIG5ldHdvcmssIHByZXZlbnRpbmcgdGFtcGVyaW5nIHdpdGggYW5kIGVhdmVzZHJvcHBpbmcgb24gZW1haWwsIHdlYiBicm93c2luZywgbWVzc2FnaW5nLCBhbmQgb3RoZXIgcHJvdG9jb2xzLiIpIChbSFRUUFNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvSFRUUFMgIkhUVFBTOiBIVFRQUyAoSFRUUCBTZWN1cmUpIGlzIGFuIGVuY3J5cHRlZCB2ZXJzaW9uIG9mIHRoZSBIVFRQIHByb3RvY29sLiBJdCB1c3VhbGx5IHVzZXMgU1NMIG9yIFRMUyB0byBlbmNyeXB0IGFsbCBjb21tdW5pY2F0aW9uIGJldHdlZW4gYSBjbGllbnQgYW5kIGEgc2VydmVyLiBUaGlzIHNlY3VyZSBjb25uZWN0aW9uIGFsbG93cyBjbGllbnRzIHRvIHNhZmVseSBleGNoYW5nZSBzZW5zaXRpdmUgZGF0YSB3aXRoIGEgc2VydmVyLCBmb3IgZXhhbXBsZSBmb3IgYmFua2luZyBhY3Rpdml0aWVzIG9yIG9ubGluZSBzaG9wcGluZy4iKSkuXG4qICAgYG9yaWdpbmA6IFRoZSBzZW50IHJlZmVycmVyIHdpbGwgYmUgbGltaXRlZCB0byB0aGUgb3JpZ2luIG9mIHRoZSByZWZlcnJpbmcgcGFnZTogaXRzIFtzY2hlbWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQXJjaGl2ZS9Nb3ppbGxhL1VSSVNjaGVtZSksIFtob3N0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L2hvc3QgImhvc3Q6IEEgaG9zdCBpcyBhIGRldmljZSBjb25uZWN0ZWQgdG8gdGhlIEludGVybmV0IChvciBhIGxvY2FsIG5ldHdvcmspLiBTb21lIGhvc3RzIGNhbGxlZCBzZXJ2ZXJzIG9mZmVyIGFkZGl0aW9uYWwgc2VydmljZXMgbGlrZSBzZXJ2aW5nIHdlYnBhZ2VzIG9yIHN0b3JpbmcgZmlsZXMgYW5kIGVtYWlscy4iKSwgYW5kIFtwb3J0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3BvcnQgInBvcnQ6IEZvciBhIGNvbXB1dGVyIGNvbm5lY3RlZCB0byBhIG5ldHdvcmsgd2l0aCBhbiBJUCBhZGRyZXNzLCBhIHBvcnQgaXMgYSBjb21tdW5pY2F0aW9uIGVuZHBvaW50LiBQb3J0cyBhcmUgZGVzaWduYXRlZCBieSBudW1iZXJzLCBhbmQgYmVsb3cgMTAyNCBlYWNoIHBvcnQgaXMgYXNzb2NpYXRlZCBieSBkZWZhdWx0IHdpdGggYSBzcGVjaWZpYyBwcm90b2NvbC4iKS5cbiogICBgb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYDogVGhlIHJlZmVycmVyIHNlbnQgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydC4gTmF2aWdhdGlvbnMgb24gdGhlIHNhbWUgb3JpZ2luIHdpbGwgc3RpbGwgaW5jbHVkZSB0aGUgcGF0aC5cbiogICBgc2FtZS1vcmlnaW5gOiBBIHJlZmVycmVyIHdpbGwgYmUgc2VudCBmb3IgW3NhbWUgb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1NhbWUtb3JpZ2luX3BvbGljeSAic2FtZSBvcmlnaW46IFRoZSBzYW1lLW9yaWdpbiBwb2xpY3kgaXMgYSBjcml0aWNhbCBzZWN1cml0eSBtZWNoYW5pc20gdGhhdCByZXN0cmljdHMgaG93IGEgZG9jdW1lbnQgb3Igc2NyaXB0IGxvYWRlZCBmcm9tIG9uZSBvcmlnaW4gY2FuIGludGVyYWN0IHdpdGggYSByZXNvdXJjZSBmcm9tIGFub3RoZXIgb3JpZ2luLiIpLCBidXQgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIHdpbGwgY29udGFpbiBubyByZWZlcnJlciBpbmZvcm1hdGlvbi5cbiogICBgc3RyaWN0LW9yaWdpbmA6IE9ubHkgc2VuZCB0aGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBhcyB0aGUgcmVmZXJyZXIgd2hlbiB0aGUgcHJvdG9jb2wgc2VjdXJpdHkgbGV2ZWwgc3RheXMgdGhlIHNhbWUgKEhUVFBT4oaSSFRUUFMpLCBidXQgZG9uXCd0IHNlbmQgaXQgdG8gYSBsZXNzIHNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFPihpJIVFRQKS5cbiogICBgc3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmA6IFNlbmQgYSBmdWxsIFVSTCB3aGVuIHBlcmZvcm1pbmcgYSBzYW1lLW9yaWdpbiByZXF1ZXN0LCBvbmx5IHNlbmQgdGhlIG9yaWdpbiB3aGVuIHRoZSBwcm90b2NvbCBzZWN1cml0eSBsZXZlbCBzdGF5cyB0aGUgc2FtZSAoSFRUUFPihpJIVFRQUyksIGFuZCBzZW5kIG5vIGhlYWRlciB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChIVFRQU+KGkkhUVFApLlxuKiAgIGB1bnNhZmUtdXJsYDogVGhlIHJlZmVycmVyIHdpbGwgaW5jbHVkZSB0aGUgb3JpZ2luIF9hbmRfIHRoZSBwYXRoIChidXQgbm90IHRoZSBbZnJhZ21lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL2hhc2gpLCBbcGFzc3dvcmRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL3Bhc3N3b3JkKSwgb3IgW3VzZXJuYW1lXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy91c2VybmFtZSkpLiAqKlRoaXMgdmFsdWUgaXMgdW5zYWZlKiosIGJlY2F1c2UgaXQgbGVha3Mgb3JpZ2lucyBhbmQgcGF0aHMgZnJvbSBUTFMtcHJvdGVjdGVkIHJlc291cmNlcyB0byBpbnNlY3VyZSBvcmlnaW5zLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaWZyYW1lIn1dfSx7bmFtZToiZW1iZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBlbWJlZCBlbGVtZW50IHByb3ZpZGVzIGFuIGludGVncmF0aW9uIHBvaW50IGZvciBhbiBleHRlcm5hbCAodHlwaWNhbGx5IG5vbi1IVE1MKSBhcHBsaWNhdGlvbiBvciBpbnRlcmFjdGl2ZSBjb250ZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBVUkzCoG9mIHRoZSByZXNvdXJjZSBiZWluZyBlbWJlZGRlZC4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBNSU1FwqB0eXBlIHRvIHVzZSB0byBzZWxlY3QgdGhlIHBsdWctaW4gdG8gaW5zdGFudGlhdGUuIn19LHtuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRpc3BsYXllZCB3aWR0aCBvZiB0aGUgcmVzb3VyY2UsIGluIFtDU1MgcGl4ZWxzXShodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy8jcHgpLiBUaGlzIG11c3QgYmUgYW4gYWJzb2x1dGUgdmFsdWU7IHBlcmNlbnRhZ2VzIGFyZSBfbm90XyBhbGxvd2VkLiJ9fSx7bmFtZToiaGVpZ2h0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGlzcGxheWVkIGhlaWdodCBvZiB0aGUgcmVzb3VyY2UsIGluIFtDU1MgcGl4ZWxzXShodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy8jcHgpLiBUaGlzIG11c3QgYmUgYW4gYWJzb2x1dGUgdmFsdWU7IHBlcmNlbnRhZ2VzIGFyZSBfbm90XyBhbGxvd2VkLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2VtYmVkIn1dfSx7bmFtZToib2JqZWN0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgb2JqZWN0IGVsZW1lbnQgY2FuIHJlcHJlc2VudCBhbiBleHRlcm5hbCByZXNvdXJjZSwgd2hpY2gsIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0aGUgcmVzb3VyY2UsIHdpbGwgZWl0aGVyIGJlIHRyZWF0ZWQgYXMgYW4gaW1hZ2UsIGFzIGEgbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQsIG9yIGFzIGFuIGV4dGVybmFsIHJlc291cmNlIHRvIGJlIHByb2Nlc3NlZCBieSBhIHBsdWdpbi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZGF0YSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGFkZHJlc3Mgb2YgdGhlIHJlc291cmNlIGFzIGEgdmFsaWQgVVJMLiBBdCBsZWFzdCBvbmUgb2YgKipkYXRhKiogYW5kICoqdHlwZSoqIG11c3QgYmUgZGVmaW5lZC4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBbY29udGVudCB0eXBlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0NvbnRlbnRfdHlwZSkgb2YgdGhlIHJlc291cmNlIHNwZWNpZmllZCBieSAqKmRhdGEqKi4gQXQgbGVhc3Qgb25lIG9mICoqZGF0YSoqIGFuZCAqKnR5cGUqKiBtdXN0IGJlIGRlZmluZWQuIn19LHtuYW1lOiJ0eXBlbXVzdG1hdGNoIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgaWYgdGhlICoqdHlwZSoqIGF0dHJpYnV0ZSBhbmQgdGhlIGFjdHVhbCBbY29udGVudCB0eXBlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0NvbnRlbnRfdHlwZSkgb2YgdGhlIHJlc291cmNlIG11c3QgbWF0Y2ggdG8gYmUgdXNlZC4ifX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYW1lIG9mIHZhbGlkIGJyb3dzaW5nIGNvbnRleHQgKEhUTUw1KSwgb3IgdGhlIG5hbWUgb2YgdGhlIGNvbnRyb2wgKEhUTUwgNCkuIn19LHtuYW1lOiJ1c2VtYXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgaGFzaC1uYW1lIHJlZmVyZW5jZSB0byBhIFtgPG1hcD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWFwIFwiVGhlIEhUTUwgPG1hcD4gZWxlbWVudCBpcyB1c2VkIHdpdGggPGFyZWE+IGVsZW1lbnRzIHRvIGRlZmluZSBhbiBpbWFnZSBtYXAgKGEgY2xpY2thYmxlIGxpbmsgYXJlYSkuXCIpIGVsZW1lbnQ7IHRoYXQgaXMgYSAnIycgZm9sbG93ZWQgYnkgdGhlIHZhbHVlIG9mIGEgW2BuYW1lYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21hcCNhdHRyLW5hbWUpIG9mIGEgbWFwIGVsZW1lbnQuIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgZm9ybSBlbGVtZW50LCBpZiBhbnksIHRoYXQgdGhlIG9iamVjdCBlbGVtZW50IGlzIGFzc29jaWF0ZWQgd2l0aCAoaXRzIF9mb3JtIG93bmVyXykuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIG11c3QgYmUgYW4gSUQgb2YgYSBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50Lid9fSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB3aWR0aCBvZiB0aGUgZGlzcGxheSByZXNvdXJjZSwgaW4gW0NTUyBwaXhlbHNdKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLyNweCkuIC0tIChBYnNvbHV0ZSB2YWx1ZXMgb25seS4gW05PIHBlcmNlbnRhZ2VzXShodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9lbWJlZGRlZC1jb250ZW50Lmh0bWwjZGltZW5zaW9uLWF0dHJpYnV0ZXMpKSJ9fSx7bmFtZToiaGVpZ2h0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaGVpZ2h0IG9mIHRoZSBkaXNwbGF5ZWQgcmVzb3VyY2UsIGluIFtDU1MgcGl4ZWxzXShodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy8jcHgpLiAtLSAoQWJzb2x1dGUgdmFsdWVzIG9ubHkuIFtOTyBwZXJjZW50YWdlc10oaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZW1iZWRkZWQtY29udGVudC5odG1sI2RpbWVuc2lvbi1hdHRyaWJ1dGVzKSkifX0se25hbWU6ImFyY2hpdmUiLGRlc2NyaXB0aW9uOiJBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIFVSSXMgZm9yIGFyY2hpdmVzIG9mIHJlc291cmNlcyBmb3IgdGhlIG9iamVjdC4ifSx7bmFtZToiYm9yZGVyIixkZXNjcmlwdGlvbjoiVGhlIHdpZHRoIG9mIGEgYm9yZGVyIGFyb3VuZCB0aGUgY29udHJvbCwgaW4gcGl4ZWxzLiJ9LHtuYW1lOiJjbGFzc2lkIixkZXNjcmlwdGlvbjoiVGhlIFVSSSBvZiB0aGUgb2JqZWN0J3MgaW1wbGVtZW50YXRpb24uIEl0IGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGgsIG9yIGluIHBsYWNlIG9mLCB0aGUgKipkYXRhKiogYXR0cmlidXRlLiJ9LHtuYW1lOiJjb2RlYmFzZSIsZGVzY3JpcHRpb246IlRoZSBiYXNlIHBhdGggdXNlZCB0byByZXNvbHZlIHJlbGF0aXZlIFVSSXMgc3BlY2lmaWVkIGJ5ICoqY2xhc3NpZCoqLCAqKmRhdGEqKiwgb3IgKiphcmNoaXZlKiouIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGlzIHRoZSBiYXNlIFVSSSBvZiB0aGUgY3VycmVudCBkb2N1bWVudC4ifSx7bmFtZToiY29kZXR5cGUiLGRlc2NyaXB0aW9uOiJUaGUgY29udGVudCB0eXBlIG9mIHRoZSBkYXRhIHNwZWNpZmllZCBieSAqKmNsYXNzaWQqKi4ifSx7bmFtZToiZGVjbGFyZSIsZGVzY3JpcHRpb246IlRoZSBwcmVzZW5jZSBvZiB0aGlzIEJvb2xlYW4gYXR0cmlidXRlIG1ha2VzIHRoaXMgZWxlbWVudCBhIGRlY2xhcmF0aW9uIG9ubHkuIFRoZSBvYmplY3QgbXVzdCBiZSBpbnN0YW50aWF0ZWQgYnkgYSBzdWJzZXF1ZW50IGA8b2JqZWN0PmAgZWxlbWVudC4gSW4gSFRNTDUsIHJlcGVhdCB0aGUgPG9iamVjdD4gZWxlbWVudCBjb21wbGV0ZWx5IGVhY2ggdGhhdCB0aGF0IHRoZSByZXNvdXJjZSBpcyByZXVzZWQuIn0se25hbWU6InN0YW5kYnkiLGRlc2NyaXB0aW9uOiJBIG1lc3NhZ2UgdGhhdCB0aGUgYnJvd3NlciBjYW4gc2hvdyB3aGlsZSBsb2FkaW5nIHRoZSBvYmplY3QncyBpbXBsZW1lbnRhdGlvbiBhbmQgZGF0YS4ifSx7bmFtZToidGFiaW5kZXgiLGRlc2NyaXB0aW9uOiJUaGUgcG9zaXRpb24gb2YgdGhlIGVsZW1lbnQgaW4gdGhlIHRhYmJpbmcgbmF2aWdhdGlvbiBvcmRlciBmb3IgdGhlIGN1cnJlbnQgZG9jdW1lbnQuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vYmplY3QifV19LHtuYW1lOiJwYXJhbSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBhcmFtIGVsZW1lbnQgZGVmaW5lcyBwYXJhbWV0ZXJzIGZvciBwbHVnaW5zIGludm9rZWQgYnkgb2JqZWN0IGVsZW1lbnRzLiBJdCBkb2VzIG5vdCByZXByZXNlbnQgYW55dGhpbmcgb24gaXRzIG93bi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiTmFtZSBvZiB0aGUgcGFyYW1ldGVyLiJ9fSx7bmFtZToidmFsdWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlNwZWNpZmllcyB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOidPbmx5IHVzZWQgaWYgdGhlIGB2YWx1ZXR5cGVgIGlzIHNldCB0byAicmVmIi4gU3BlY2lmaWVzIHRoZSBNSU1FIHR5cGUgb2YgdmFsdWVzIGZvdW5kIGF0IHRoZSBVUkkgc3BlY2lmaWVkIGJ5IHZhbHVlLid9LHtuYW1lOiJ2YWx1ZXR5cGUiLGRlc2NyaXB0aW9uOidTcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGB2YWx1ZWAgYXR0cmlidXRlLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgZGF0YTogRGVmYXVsdCB2YWx1ZS4gVGhlIHZhbHVlIGlzIHBhc3NlZCB0byB0aGUgb2JqZWN0XCdzIGltcGxlbWVudGF0aW9uIGFzIGEgc3RyaW5nLlxuKiAgIHJlZjogVGhlIHZhbHVlIGlzIGEgVVJJIHRvIGEgcmVzb3VyY2Ugd2hlcmUgcnVuLXRpbWUgdmFsdWVzIGFyZSBzdG9yZWQuXG4qICAgb2JqZWN0OiBBbiBJRCBvZiBhbm90aGVyIFtgPG9iamVjdD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb2JqZWN0ICJUaGUgSFRNTCA8b2JqZWN0PiBlbGVtZW50IHJlcHJlc2VudHMgYW4gZXh0ZXJuYWwgcmVzb3VyY2UsIHdoaWNoIGNhbiBiZSB0cmVhdGVkIGFzIGFuIGltYWdlLCBhIG5lc3RlZCBicm93c2luZyBjb250ZXh0LCBvciBhIHJlc291cmNlIHRvIGJlIGhhbmRsZWQgYnkgYSBwbHVnaW4uIikgaW4gdGhlIHNhbWUgZG9jdW1lbnQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9wYXJhbSJ9XX0se25hbWU6InZpZGVvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHZpZGVvIGVsZW1lbnQgaXMgdXNlZCBmb3IgcGxheWluZyB2aWRlb3Mgb3IgbW92aWVzLCBhbmQgYXVkaW8gZmlsZXMgd2l0aCBjYXB0aW9ucy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3JjIn0se25hbWU6ImNyb3Nzb3JpZ2luIix2YWx1ZVNldDoieG8ifSx7bmFtZToicG9zdGVyIn0se25hbWU6InByZWxvYWQiLHZhbHVlU2V0OiJwbCJ9LHtuYW1lOiJhdXRvcGxheSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGU7IGlmIHNwZWNpZmllZCwgdGhlIHZpZGVvIGF1dG9tYXRpY2FsbHkgYmVnaW5zIHRvIHBsYXkgYmFjayBhcyBzb29uIGFzIGl0IGNhbiBkbyBzbyB3aXRob3V0IHN0b3BwaW5nIHRvIGZpbmlzaCBsb2FkaW5nIHRoZSBkYXRhLiJ9fSx7bmFtZToibWVkaWFncm91cCJ9LHtuYW1lOiJsb29wIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJtdXRlZCIsdmFsdWVTZXQ6InYifSx7bmFtZToiY29udHJvbHMiLHZhbHVlU2V0OiJ2In0se25hbWU6IndpZHRoIn0se25hbWU6ImhlaWdodCJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdmlkZW8ifV19LHtuYW1lOiJhdWRpbyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gYXVkaW8gZWxlbWVudCByZXByZXNlbnRzIGEgc291bmQgb3IgYXVkaW8gc3RyZWFtLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBVUkwgb2YgdGhlIGF1ZGlvIHRvIGVtYmVkLiBUaGlzIGlzIHN1YmplY3QgdG8gW0hUVFAgYWNjZXNzIGNvbnRyb2xzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0hUVFBfYWNjZXNzX2NvbnRyb2wpLiBUaGlzIGlzIG9wdGlvbmFsOyB5b3UgbWF5IGluc3RlYWQgdXNlIHRoZSBbYDxzb3VyY2U+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NvdXJjZSAiVGhlIEhUTUwgPHNvdXJjZT4gZWxlbWVudCBzcGVjaWZpZXMgbXVsdGlwbGUgbWVkaWEgcmVzb3VyY2VzIGZvciB0aGUgPHBpY3R1cmU+LCB0aGUgPGF1ZGlvPiBlbGVtZW50LCBvciB0aGUgPHZpZGVvPiBlbGVtZW50LiIpIGVsZW1lbnQgd2l0aGluIHRoZSBhdWRpbyBibG9jayB0byBzcGVjaWZ5IHRoZSBhdWRpbyB0byBlbWJlZC4nfX0se25hbWU6ImNyb3Nzb3JpZ2luIix2YWx1ZVNldDoieG8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGVzIHdoZXRoZXIgdG8gdXNlIENPUlMgdG8gZmV0Y2ggdGhlIHJlbGF0ZWQgaW1hZ2UuIFtDT1JTLWVuYWJsZWQgcmVzb3VyY2VzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NPUlNfRW5hYmxlZF9JbWFnZSkgY2FuIGJlIHJldXNlZCBpbiB0aGUgW2A8Y2FudmFzPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYW52YXMgIlVzZSB0aGUgSFRNTCA8Y2FudmFzPiBlbGVtZW50IHdpdGggZWl0aGVyIHRoZSBjYW52YXMgc2NyaXB0aW5nIEFQSSBvciB0aGUgV2ViR0wgQVBJIHRvIGRyYXcgZ3JhcGhpY3MgYW5kIGFuaW1hdGlvbnMuIikgZWxlbWVudCB3aXRob3V0IGJlaW5nIF90YWludGVkXy4gVGhlIGFsbG93ZWQgdmFsdWVzIGFyZTpcblxuYW5vbnltb3VzXG5cblNlbmRzIGEgY3Jvc3Mtb3JpZ2luIHJlcXVlc3Qgd2l0aG91dCBhIGNyZWRlbnRpYWwuIEluIG90aGVyIHdvcmRzLCBpdCBzZW5kcyB0aGUgYE9yaWdpbjpgIEhUVFAgaGVhZGVyIHdpdGhvdXQgYSBjb29raWUsIFguNTA5IGNlcnRpZmljYXRlLCBvciBwZXJmb3JtaW5nIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24uIElmIHRoZSBzZXJ2ZXIgZG9lcyBub3QgZ2l2ZSBjcmVkZW50aWFscyB0byB0aGUgb3JpZ2luIHNpdGUgKGJ5IG5vdCBzZXR0aW5nIHRoZSBgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOmAgSFRUUCBoZWFkZXIpLCB0aGUgaW1hZ2Ugd2lsbCBiZSBfdGFpbnRlZF8sIGFuZCBpdHMgdXNhZ2UgcmVzdHJpY3RlZC5cblxudXNlLWNyZWRlbnRpYWxzXG5cblNlbmRzIGEgY3Jvc3Mtb3JpZ2luIHJlcXVlc3Qgd2l0aCBhIGNyZWRlbnRpYWwuIEluIG90aGVyIHdvcmRzLCBpdCBzZW5kcyB0aGUgYE9yaWdpbjpgIEhUVFAgaGVhZGVyIHdpdGggYSBjb29raWUsIGEgY2VydGlmaWNhdGUsIG9yIHBlcmZvcm1pbmcgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbi4gSWYgdGhlIHNlcnZlciBkb2VzIG5vdCBnaXZlIGNyZWRlbnRpYWxzIHRvIHRoZSBvcmlnaW4gc2l0ZSAodGhyb3VnaCBgQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHM6YCBIVFRQIGhlYWRlciksIHRoZSBpbWFnZSB3aWxsIGJlIF90YWludGVkXyBhbmQgaXRzIHVzYWdlIHJlc3RyaWN0ZWQuXG5cbldoZW4gbm90IHByZXNlbnQsIHRoZSByZXNvdXJjZSBpcyBmZXRjaGVkIHdpdGhvdXQgYSBDT1JTIHJlcXVlc3QgKGkuZS4gd2l0aG91dCBzZW5kaW5nIHRoZSBgT3JpZ2luOmAgSFRUUCBoZWFkZXIpLCBwcmV2ZW50aW5nIGl0cyBub24tdGFpbnRlZCB1c2VkIGluIFtgPGNhbnZhcz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FudmFzICJVc2UgdGhlIEhUTUwgPGNhbnZhcz4gZWxlbWVudCB3aXRoIGVpdGhlciB0aGUgY2FudmFzIHNjcmlwdGluZyBBUEkgb3IgdGhlIFdlYkdMIEFQSSB0byBkcmF3IGdyYXBoaWNzIGFuZCBhbmltYXRpb25zLiIpIGVsZW1lbnRzLiBJZiBpbnZhbGlkLCBpdCBpcyBoYW5kbGVkIGFzIGlmIHRoZSBlbnVtZXJhdGVkIGtleXdvcmQgKiphbm9ueW1vdXMqKiB3YXMgdXNlZC4gU2VlIFtDT1JTIHNldHRpbmdzIGF0dHJpYnV0ZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvSFRNTC9DT1JTX3NldHRpbmdzX2F0dHJpYnV0ZXMpIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLid9fSx7bmFtZToicHJlbG9hZCIsdmFsdWVTZXQ6InBsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgYSBoaW50IHRvIHRoZSBicm93c2VyIGFib3V0IHdoYXQgdGhlIGF1dGhvciB0aGlua3Mgd2lsbCBsZWFkIHRvIHRoZSBiZXN0IHVzZXIgZXhwZXJpZW5jZS4gSXQgbWF5IGhhdmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYG5vbmVgOiBJbmRpY2F0ZXMgdGhhdCB0aGUgYXVkaW8gc2hvdWxkIG5vdCBiZSBwcmVsb2FkZWQuXG4qICAgYG1ldGFkYXRhYDogSW5kaWNhdGVzIHRoYXQgb25seSBhdWRpbyBtZXRhZGF0YSAoZS5nLiBsZW5ndGgpIGlzIGZldGNoZWQuXG4qICAgYGF1dG9gOiBJbmRpY2F0ZXMgdGhhdCB0aGUgd2hvbGUgYXVkaW8gZmlsZSBjYW4gYmUgZG93bmxvYWRlZCwgZXZlbiBpZiB0aGUgdXNlciBpcyBub3QgZXhwZWN0ZWQgdG8gdXNlIGl0LlxuKiAgIF9lbXB0eSBzdHJpbmdfOiBBIHN5bm9ueW0gb2YgdGhlIGBhdXRvYCB2YWx1ZS5cblxuSWYgbm90IHNldCwgYHByZWxvYWRgJ3MgZGVmYXVsdCB2YWx1ZSBpcyBicm93c2VyLWRlZmluZWQgKGkuZS4gZWFjaCBicm93c2VyIG1heSBoYXZlIGl0cyBvd24gZGVmYXVsdCB2YWx1ZSkuIFRoZSBzcGVjIGFkdmlzZXMgaXQgdG8gYmUgc2V0IHRvIGBtZXRhZGF0YWAuXG5cbioqVXNhZ2Ugbm90ZXM6KipcblxuKiAgIFRoZSBgYXV0b3BsYXlgIGF0dHJpYnV0ZSBoYXMgcHJlY2VkZW5jZSBvdmVywqBgcHJlbG9hZGAuIElmIGBhdXRvcGxheWAgaXMgc3BlY2lmaWVkLCB0aGUgYnJvd3NlciB3b3VsZCBvYnZpb3VzbHkgbmVlZCB0byBzdGFydCBkb3dubG9hZGluZyB0aGUgYXVkaW8gZm9yIHBsYXliYWNrLlxuKiAgIFRoZSBicm93c2VyIGlzIG5vdCBmb3JjZWQgYnkgdGhlIHNwZWNpZmljYXRpb24gdG8gZm9sbG93IHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZTsgaXQgaXMgYSBtZXJlIGhpbnQuIn19LHtuYW1lOiJhdXRvcGxheSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGU6wqBpZiBzcGVjaWZpZWQsIHRoZSBhdWRpbyB3aWxsIGF1dG9tYXRpY2FsbHkgYmVnaW4gcGxheWJhY2sgYXMgc29vbiBhcyBpdCBjYW4gZG8gc28sIHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIGVudGlyZSBhdWRpbyBmaWxlIHRvIGZpbmlzaCBkb3dubG9hZGluZy5cblxuKipOb3RlKio6IFNpdGVzIHRoYXQgYXV0b21hdGljYWxseSBwbGF5IGF1ZGlvIChvciB2aWRlb3Mgd2l0aCBhbiBhdWRpbyB0cmFjaykgY2FuIGJlIGFuIHVucGxlYXNhbnQgZXhwZXJpZW5jZSBmb3IgdXNlcnMsIHNvIHNob3VsZCBiZSBhdm9pZGVkIHdoZW4gcG9zc2libGUuIElmIHlvdSBtdXN0IG9mZmVyIGF1dG9wbGF5IGZ1bmN0aW9uYWxpdHksIHlvdSBzaG91bGQgbWFrZSBpdCBvcHQtaW4gKHJlcXVpcmluZyBhIHVzZXIgdG8gc3BlY2lmaWNhbGx5IGVuYWJsZSBpdCkuIEhvd2V2ZXIsIHRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIGNyZWF0aW5nIG1lZGlhIGVsZW1lbnRzIHdob3NlIHNvdXJjZSB3aWxsIGJlIHNldCBhdCBhIGxhdGVyIHRpbWUsIHVuZGVyIHVzZXIgY29udHJvbC4ifX0se25hbWU6Im1lZGlhZ3JvdXAifSx7bmFtZToibG9vcCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGU6wqBpZiBzcGVjaWZpZWQsIHRoZSBhdWRpbyBwbGF5ZXIgd2lsbMKgYXV0b21hdGljYWxseSBzZWVrIGJhY2sgdG8gdGhlIHN0YXJ0wqB1cG9uIHJlYWNoaW5nIHRoZSBlbmQgb2YgdGhlIGF1ZGlvLiJ9fSx7bmFtZToibXV0ZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGF1ZGlvIHdpbGwgYmUgaW5pdGlhbGx5IHNpbGVuY2VkLiBJdHMgZGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLiJ9fSx7bmFtZToiY29udHJvbHMiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGlzIGF0dHJpYnV0ZSBpcyBwcmVzZW50LCB0aGUgYnJvd3NlciB3aWxsIG9mZmVyIGNvbnRyb2xzIHRvIGFsbG93IHRoZSB1c2VyIHRvIGNvbnRyb2wgYXVkaW8gcGxheWJhY2ssIGluY2x1ZGluZyB2b2x1bWUsIHNlZWtpbmcsIGFuZCBwYXVzZS9yZXN1bWUgcGxheWJhY2suIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXVkaW8ifV19LHtuYW1lOiJzb3VyY2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzb3VyY2UgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBzcGVjaWZ5IG11bHRpcGxlIGFsdGVybmF0aXZlIG1lZGlhIHJlc291cmNlcyBmb3IgbWVkaWEgZWxlbWVudHMuIEl0IGRvZXMgbm90IHJlcHJlc2VudCBhbnl0aGluZyBvbiBpdHMgb3duLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1JlcXVpcmVkIGZvciBbYDxhdWRpbz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXVkaW8gIlRoZSBIVE1MIDxhdWRpbz4gZWxlbWVudCBpcyB1c2VkIHRvIGVtYmVkIHNvdW5kIGNvbnRlbnQgaW4gZG9jdW1lbnRzLiBJdCBtYXkgY29udGFpbiBvbmUgb3IgbW9yZSBhdWRpbyBzb3VyY2VzLCByZXByZXNlbnRlZCB1c2luZyB0aGUgc3JjIGF0dHJpYnV0ZSBvciB0aGUgPHNvdXJjZT4gZWxlbWVudDrCoHRoZSBicm93c2VyIHdpbGwgY2hvb3NlIHRoZSBtb3N0IHN1aXRhYmxlIG9uZS4gSXQgY2FuIGFsc28gYmUgdGhlIGRlc3RpbmF0aW9uIGZvciBzdHJlYW1lZCBtZWRpYSwgdXNpbmcgYSBNZWRpYVN0cmVhbS4iKSBhbmQgW2A8dmlkZW8+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3ZpZGVvICJUaGUgSFRNTCBWaWRlbyBlbGVtZW50ICg8dmlkZW8+KSBlbWJlZHMgYSBtZWRpYSBwbGF5ZXIgd2hpY2ggc3VwcG9ydHMgdmlkZW8gcGxheWJhY2sgaW50byB0aGUgZG9jdW1lbnQuIiksIGFkZHJlc3Mgb2YgdGhlIG1lZGlhIHJlc291cmNlLiBUaGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgaXMgaWdub3JlZCB3aGVuIHRoZSBgPHNvdXJjZT5gIGVsZW1lbnQgaXMgcGxhY2VkIGluc2lkZSBhIFtgPHBpY3R1cmU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3BpY3R1cmUgIlRoZSBIVE1MIDxwaWN0dXJlPiBlbGVtZW50IGNvbnRhaW5zIHplcm8gb3IgbW9yZSA8c291cmNlPiBlbGVtZW50cyBhbmQgb25lIDxpbWc+IGVsZW1lbnQgdG8gcHJvdmlkZSB2ZXJzaW9ucyBvZiBhbiBpbWFnZSBmb3IgZGlmZmVyZW50IGRpc3BsYXkvZGV2aWNlIHNjZW5hcmlvcy4iKSBlbGVtZW50Lid9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIE1JTUUtdHlwZSBvZiB0aGUgcmVzb3VyY2UsIG9wdGlvbmFsbHkgd2l0aCBhIGBjb2RlY3NgIHBhcmFtZXRlci4gU2VlIFtSRkMgNDI4MV0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQyODEpIGZvciBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gc3BlY2lmeSBjb2RlY3MuIn19LHtuYW1lOiJzaXplcyIsZGVzY3JpcHRpb246J0lzIGEgbGlzdCBvZiBzb3VyY2Ugc2l6ZXMgdGhhdCBkZXNjcmliZXMgdGhlIGZpbmFsIHJlbmRlcmVkIHdpZHRoIG9mIHRoZSBpbWFnZSByZXByZXNlbnRlZCBieSB0aGUgc291cmNlLiBFYWNoIHNvdXJjZSBzaXplIGNvbnNpc3RzIG9mIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgbWVkaWEgY29uZGl0aW9uLWxlbmd0aCBwYWlycy4gVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIGJ5IHRoZSBicm93c2VyIHRvIGRldGVybWluZSwgYmVmb3JlIGxheWluZyB0aGUgcGFnZSBvdXQsIHdoaWNoIGltYWdlIGRlZmluZWQgaW4gW2BzcmNzZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc291cmNlI2F0dHItc3Jjc2V0KSB0byB1c2UuICBcblRoZSBgc2l6ZXNgIGF0dHJpYnV0ZSBoYXMgYW4gZWZmZWN0IG9ubHkgd2hlbiB0aGUgW2A8c291cmNlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zb3VyY2UgIlRoZSBIVE1MIDxzb3VyY2U+IGVsZW1lbnQgc3BlY2lmaWVzIG11bHRpcGxlIG1lZGlhIHJlc291cmNlcyBmb3IgdGhlIDxwaWN0dXJlPiwgdGhlIDxhdWRpbz4gZWxlbWVudCwgb3IgdGhlIDx2aWRlbz4gZWxlbWVudC4iKSBlbGVtZW50IGlzIHRoZSBkaXJlY3QgY2hpbGQgb2YgYSBbYDxwaWN0dXJlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9waWN0dXJlICJUaGUgSFRNTCA8cGljdHVyZT4gZWxlbWVudCBjb250YWlucyB6ZXJvIG9yIG1vcmUgPHNvdXJjZT4gZWxlbWVudHMgYW5kIG9uZSA8aW1nPiBlbGVtZW50IHRvIHByb3ZpZGUgdmVyc2lvbnMgb2YgYW4gaW1hZ2UgZm9yIGRpZmZlcmVudCBkaXNwbGF5L2RldmljZSBzY2VuYXJpb3MuIikgZWxlbWVudC4nfSx7bmFtZToic3Jjc2V0IixkZXNjcmlwdGlvbjoiQSBsaXN0IG9mIG9uZSBvciBtb3JlIHN0cmluZ3Mgc2VwYXJhdGVkIGJ5IGNvbW1hcyBpbmRpY2F0aW5nIGEgc2V0IG9mIHBvc3NpYmxlIGltYWdlcyByZXByZXNlbnRlZCBieSB0aGUgc291cmNlIGZvciB0aGUgYnJvd3NlciB0byB1c2UuIEVhY2ggc3RyaW5nIGlzIGNvbXBvc2VkIG9mOlxuXG4xLiAgb25lIFVSTCB0byBhbiBpbWFnZSxcbjIuICBhIHdpZHRoIGRlc2NyaXB0b3IsIHRoYXQgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyIGRpcmVjdGx5IGZvbGxvd2VkIGJ5IGAndydgLiBUaGUgZGVmYXVsdCB2YWx1ZSwgaWYgbWlzc2luZywgaXMgdGhlIGluZmluaXR5LlxuMy4gIGEgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9yLCB0aGF0IGlzIGEgcG9zaXRpdmUgZmxvYXRpbmcgbnVtYmVyIGRpcmVjdGx5IGZvbGxvd2VkIGJ5IGAneCdgLiBUaGUgZGVmYXVsdCB2YWx1ZSwgaWYgbWlzc2luZywgaXMgYDF4YC5cblxuRWFjaCBzdHJpbmcgaW4gdGhlIGxpc3QgbXVzdCBoYXZlIGF0IGxlYXN0IGEgd2lkdGggZGVzY3JpcHRvciBvciBhIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvciB0byBiZSB2YWxpZC4gQW1vbmcgdGhlIGxpc3QsIHRoZXJlIG11c3QgYmUgb25seSBvbmUgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHNhbWUgdHVwbGUgb2Ygd2lkdGggZGVzY3JpcHRvciBhbmQgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9yLiAgXG5UaGUgYnJvd3NlciBjaG9vc2VzIHRoZSBtb3N0IGFkZXF1YXRlIGltYWdlIHRvIGRpc3BsYXkgYXQgYSBnaXZlbiBwb2ludCBvZiB0aW1lLiAgXG5UaGUgYHNyY3NldGAgYXR0cmlidXRlIGhhcyBhbiBlZmZlY3Qgb25seSB3aGVuIHRoZSBbYDxzb3VyY2U+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NvdXJjZSBcIlRoZSBIVE1MIDxzb3VyY2U+IGVsZW1lbnQgc3BlY2lmaWVzIG11bHRpcGxlIG1lZGlhIHJlc291cmNlcyBmb3IgdGhlIDxwaWN0dXJlPiwgdGhlIDxhdWRpbz4gZWxlbWVudCwgb3IgdGhlIDx2aWRlbz4gZWxlbWVudC5cIikgZWxlbWVudCBpcyB0aGUgZGlyZWN0IGNoaWxkIG9mIGEgW2A8cGljdHVyZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcGljdHVyZSBcIlRoZSBIVE1MIDxwaWN0dXJlPiBlbGVtZW50IGNvbnRhaW5zIHplcm8gb3IgbW9yZSA8c291cmNlPiBlbGVtZW50cyBhbmQgb25lIDxpbWc+IGVsZW1lbnQgdG8gcHJvdmlkZSB2ZXJzaW9ucyBvZiBhbiBpbWFnZSBmb3IgZGlmZmVyZW50IGRpc3BsYXkvZGV2aWNlIHNjZW5hcmlvcy5cIikgZWxlbWVudC4ifSx7bmFtZToibWVkaWEiLGRlc2NyaXB0aW9uOidbTWVkaWEgcXVlcnldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTL01lZGlhX3F1ZXJpZXMpIG9mIHRoZSByZXNvdXJjZVwncyBpbnRlbmRlZCBtZWRpYTsgdGhpcyBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGEgW2A8cGljdHVyZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcGljdHVyZSAiVGhlIEhUTUwgPHBpY3R1cmU+IGVsZW1lbnQgY29udGFpbnMgemVybyBvciBtb3JlIDxzb3VyY2U+IGVsZW1lbnRzIGFuZCBvbmUgPGltZz4gZWxlbWVudCB0byBwcm92aWRlIHZlcnNpb25zIG9mIGFuIGltYWdlIGZvciBkaWZmZXJlbnQgZGlzcGxheS9kZXZpY2Ugc2NlbmFyaW9zLiIpIGVsZW1lbnQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zb3VyY2UifV19LHtuYW1lOiJ0cmFjayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRyYWNrIGVsZW1lbnQgYWxsb3dzIGF1dGhvcnMgdG8gc3BlY2lmeSBleHBsaWNpdCBleHRlcm5hbCB0aW1lZCB0ZXh0IHRyYWNrcyBmb3IgbWVkaWEgZWxlbWVudHMuIEl0IGRvZXMgbm90IHJlcHJlc2VudCBhbnl0aGluZyBvbiBpdHMgb3duLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkZWZhdWx0Iix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIHRyYWNrIHNob3VsZCBiZSBlbmFibGVkIHVubGVzcyB0aGUgdXNlcidzIHByZWZlcmVuY2VzIGluZGljYXRlIHRoYXQgYW5vdGhlciB0cmFjayBpcyBtb3JlIGFwcHJvcHJpYXRlLiBUaGlzIG1heSBvbmx5IGJlIHVzZWQgb24gb25lIGB0cmFja2AgZWxlbWVudCBwZXIgbWVkaWEgZWxlbWVudC4ifX0se25hbWU6ImtpbmQiLHZhbHVlU2V0OiJ0ayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSG93IHRoZSB0ZXh0IHRyYWNrIGlzIG1lYW50IHRvIGJlIHVzZWQuIElmIG9taXR0ZWQgdGhlIGRlZmF1bHQga2luZCBpcyBgc3VidGl0bGVzYC4gSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgcHJlc2VudCwgaXQgd2lsbCB1c2UgdGhlIGBzdWJ0aXRsZXNgLiBJZiB0aGUgYXR0cmlidXRlIGNvbnRhaW5zIGFuIGludmFsaWQgdmFsdWUsIGl0IHdpbGwgdXNlIGBtZXRhZGF0YWAuIChWZXJzaW9ucyBvZiBDaHJvbWUgZWFybGllciB0aGFuIDUyIHRyZWF0ZWQgYW4gaW52YWxpZCB2YWx1ZSBhcyBgc3VidGl0bGVzYC4pwqBUaGUgZm9sbG93aW5nIGtleXdvcmRzIGFyZSBhbGxvd2VkOlxuXG4qICAgYHN1YnRpdGxlc2BcbiAgICAqICAgU3VidGl0bGVzIHByb3ZpZGUgdHJhbnNsYXRpb24gb2YgY29udGVudCB0aGF0IGNhbm5vdCBiZSB1bmRlcnN0b29kIGJ5IHRoZSB2aWV3ZXIuIEZvciBleGFtcGxlIGRpYWxvZ3VlIG9yIHRleHQgdGhhdCBpcyBub3QgRW5nbGlzaCBpbiBhbiBFbmdsaXNoIGxhbmd1YWdlIGZpbG0uXG4gICAgKiAgIFN1YnRpdGxlcyBtYXkgY29udGFpbiBhZGRpdGlvbmFsIGNvbnRlbnQsIHVzdWFsbHkgZXh0cmEgYmFja2dyb3VuZCBpbmZvcm1hdGlvbi4gRm9yIGV4YW1wbGUgdGhlIHRleHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgU3RhciBXYXJzIGZpbG1zLCBvciB0aGUgZGF0ZSwgdGltZSwgYW5kIGxvY2F0aW9uIG9mIGEgc2NlbmUuXG4qICAgYGNhcHRpb25zYFxuICAgICogICBDbG9zZWQgY2FwdGlvbnMgcHJvdmlkZSBhIHRyYW5zY3JpcHRpb24gYW5kIHBvc3NpYmx5IGEgdHJhbnNsYXRpb24gb2YgYXVkaW8uXG4gICAgKiAgIEl0IG1heSBpbmNsdWRlIGltcG9ydGFudCBub24tdmVyYmFsIGluZm9ybWF0aW9uIHN1Y2ggYXMgbXVzaWMgY3VlcyBvciBzb3VuZCBlZmZlY3RzLiBJdCBtYXkgaW5kaWNhdGUgdGhlIGN1ZSdzIHNvdXJjZSAoZS5nLiBtdXNpYywgdGV4dCwgY2hhcmFjdGVyKS5cbiAgICAqICAgU3VpdGFibGUgZm9yIHVzZXJzIHdobyBhcmUgZGVhZiBvciB3aGVuIHRoZSBzb3VuZCBpcyBtdXRlZC5cbiogICBgZGVzY3JpcHRpb25zYFxuICAgICogICBUZXh0dWFsIGRlc2NyaXB0aW9uIG9mIHRoZSB2aWRlbyBjb250ZW50LlxuICAgICogICBTdWl0YWJsZSBmb3IgdXNlcnMgd2hvIGFyZSBibGluZCBvciB3aGVyZSB0aGUgdmlkZW8gY2Fubm90IGJlIHNlZW4uXG4qICAgYGNoYXB0ZXJzYFxuICAgICogICBDaGFwdGVyIHRpdGxlcyBhcmUgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aGVuIHRoZSB1c2VyIGlzIG5hdmlnYXRpbmcgdGhlIG1lZGlhIHJlc291cmNlLlxuKiAgIGBtZXRhZGF0YWBcbiAgICAqICAgVHJhY2tzIHVzZWQgYnkgc2NyaXB0cy4gTm90IHZpc2libGUgdG8gdGhlIHVzZXIuIn19LHtuYW1lOiJsYWJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSB1c2VyLXJlYWRhYmxlIHRpdGxlIG9mIHRoZSB0ZXh0IHRyYWNrIHdoaWNoIGlzIHVzZWQgYnkgdGhlIGJyb3dzZXIgd2hlbiBsaXN0aW5nIGF2YWlsYWJsZSB0ZXh0IHRyYWNrcy4ifX0se25hbWU6InNyYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQWRkcmVzcyBvZiB0aGUgdHJhY2sgKGAudnR0YCBmaWxlKS4gTXVzdCBiZSBhIHZhbGlkIFVSTC4gVGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBzcGVjaWZpZWQgYW5kIGl0cyBVUkwgdmFsdWUgbXVzdCBoYXZlIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgZG9jdW1lbnQg4oCUIHVubGVzcyB0aGUgW2A8YXVkaW8+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2F1ZGlvICJUaGUgSFRNTCA8YXVkaW8+IGVsZW1lbnQgaXMgdXNlZCB0byBlbWJlZCBzb3VuZCBjb250ZW50IGluIGRvY3VtZW50cy4gSXQgbWF5IGNvbnRhaW4gb25lIG9yIG1vcmUgYXVkaW8gc291cmNlcywgcmVwcmVzZW50ZWQgdXNpbmcgdGhlIHNyYyBhdHRyaWJ1dGUgb3IgdGhlIDxzb3VyY2U+IGVsZW1lbnQ6wqB0aGUgYnJvd3NlciB3aWxsIGNob29zZSB0aGUgbW9zdCBzdWl0YWJsZSBvbmUuIEl0IGNhbiBhbHNvIGJlIHRoZSBkZXN0aW5hdGlvbiBmb3Igc3RyZWFtZWQgbWVkaWEsIHVzaW5nIGEgTWVkaWFTdHJlYW0uIikgb3IgW2A8dmlkZW8+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3ZpZGVvICJUaGUgSFRNTCBWaWRlbyBlbGVtZW50ICg8dmlkZW8+KSBlbWJlZHMgYSBtZWRpYSBwbGF5ZXIgd2hpY2ggc3VwcG9ydHMgdmlkZW8gcGxheWJhY2sgaW50byB0aGUgZG9jdW1lbnQuIikgcGFyZW50IGVsZW1lbnQgb2YgdGhlIGB0cmFja2AgZWxlbWVudCBoYXMgYSBbYGNyb3Nzb3JpZ2luYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9DT1JTX3NldHRpbmdzX2F0dHJpYnV0ZXMpIGF0dHJpYnV0ZS4nfX0se25hbWU6InNyY2xhbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6Ikxhbmd1YWdlIG9mIHRoZSB0cmFjayB0ZXh0IGRhdGEuIEl0IG11c3QgYmUgYSB2YWxpZCBbQkNQIDQ3XShodHRwczovL3IxMmEuZ2l0aHViLmlvL2FwcC1zdWJ0YWdzLykgbGFuZ3VhZ2UgdGFnLiBJZiB0aGUgYGtpbmRgIGF0dHJpYnV0ZSBpcyBzZXQgdG/CoGBzdWJ0aXRsZXMsYCB0aGVuIGBzcmNsYW5nYCBtdXN0IGJlIGRlZmluZWQuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdHJhY2sifV19LHtuYW1lOiJtYXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtYXAgZWxlbWVudCwgaW4gY29uanVuY3Rpb24gd2l0aCBhbiBpbWcgZWxlbWVudCBhbmQgYW55IGFyZWEgZWxlbWVudCBkZXNjZW5kYW50cywgZGVmaW5lcyBhbiBpbWFnZSBtYXAuIFRoZSBlbGVtZW50IHJlcHJlc2VudHMgaXRzIGNoaWxkcmVuLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBhdHRyaWJ1dGUgZ2l2ZXMgdGhlIG1hcCBhIG5hbWUgc28gdGhhdCBpdCBjYW4gYmUgcmVmZXJlbmNlZC4gVGhlIGF0dHJpYnV0ZSBtdXN0IGJlIHByZXNlbnQgYW5kIG11c3QgaGF2ZSBhIG5vbi1lbXB0eSB2YWx1ZSB3aXRoIG5vIHNwYWNlIGNoYXJhY3RlcnMuIFRoZSB2YWx1ZSBvZiB0aGUgbmFtZSBhdHRyaWJ1dGUgbXVzdCBub3QgYmUgYSBjb21wYXRpYmlsaXR5LWNhc2VsZXNzIG1hdGNoIGZvciB0aGUgdmFsdWUgb2YgdGhlIG5hbWUgYXR0cmlidXRlIG9mIGFub3RoZXIgbWFwIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIElmIHRoZSBpZCBhdHRyaWJ1dGUgaXMgYWxzbyBzcGVjaWZpZWQsIGJvdGggYXR0cmlidXRlcyBtdXN0IGhhdmUgdGhlIHNhbWUgdmFsdWUuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWFwIn1dfSx7bmFtZToiYXJlYSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGFyZWEgZWxlbWVudCByZXByZXNlbnRzIGVpdGhlciBhIGh5cGVybGluayB3aXRoIHNvbWUgdGV4dCBhbmQgYSBjb3JyZXNwb25kaW5nIGFyZWEgb24gYW4gaW1hZ2UgbWFwLCBvciBhIGRlYWQgYXJlYSBvbiBhbiBpbWFnZSBtYXAuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsdCJ9LHtuYW1lOiJjb29yZHMifSx7bmFtZToic2hhcGUiLHZhbHVlU2V0OiJzaCJ9LHtuYW1lOiJocmVmIn0se25hbWU6InRhcmdldCJ9LHtuYW1lOiJkb3dubG9hZCJ9LHtuYW1lOiJwaW5nIn0se25hbWU6InJlbCJ9LHtuYW1lOiJocmVmbGFuZyJ9LHtuYW1lOiJ0eXBlIn0se25hbWU6ImFjY2Vzc2tleSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGtleWJvYXJkIG5hdmlnYXRpb24gYWNjZWxlcmF0b3IgZm9yIHRoZSBlbGVtZW50LiBQcmVzc2luZyBBTFQgb3IgYSBzaW1pbGFyIGtleSBpbiBhc3NvY2lhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIHNlbGVjdHMgdGhlIGZvcm0gY29udHJvbCBjb3JyZWxhdGVkIHdpdGggdGhhdCBrZXkgc2VxdWVuY2UuIFBhZ2UgZGVzaWduZXJzIGFyZSBmb3Jld2FybmVkIHRvIGF2b2lkIGtleSBzZXF1ZW5jZXMgYWxyZWFkeSBib3VuZCB0byBicm93c2Vycy4gVGhpcyBhdHRyaWJ1dGUgaXMgZ2xvYmFsIHNpbmNlIEhUTUw1LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXJlYSJ9XX0se25hbWU6InRhYmxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGFibGUgZWxlbWVudCByZXByZXNlbnRzIGRhdGEgd2l0aCBtb3JlIHRoYW4gb25lIGRpbWVuc2lvbiwgaW4gdGhlIGZvcm0gb2YgYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYm9yZGVyIn0se25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgaG93IHRoZSB0YWJsZSBtdXN0IGJlIGFsaWduZWQgaW5zaWRlIHRoZSBjb250YWluaW5nIGRvY3VtZW50LiBJdCBtYXkgaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGxlZnQ6IHRoZSB0YWJsZSBpcyBkaXNwbGF5ZWQgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZG9jdW1lbnQ7XG4qICAgY2VudGVyOiB0aGUgdGFibGUgaXMgZGlzcGxheWVkIGluIHRoZSBjZW50ZXIgb2YgdGhlIGRvY3VtZW50O1xuKiAgIHJpZ2h0OiB0aGUgdGFibGUgaXMgZGlzcGxheWVkIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkb2N1bWVudC5cblxuKipVc2FnZSBOb3RlKipcblxuKiAgICoqRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSoqLCBhcyBpdCBoYXMgYmVlbiBkZXByZWNhdGVkLiBUaGUgW2A8dGFibGU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RhYmxlICJUaGUgSFRNTCA8dGFibGU+IGVsZW1lbnQgcmVwcmVzZW50cyB0YWJ1bGFyIGRhdGEg4oCUIHRoYXQgaXMsIGluZm9ybWF0aW9uIHByZXNlbnRlZCBpbiBhIHR3by1kaW1lbnNpb25hbCB0YWJsZSBjb21wcmlzZWQgb2Ygcm93cyBhbmQgY29sdW1ucyBvZiBjZWxscyBjb250YWluaW5nIGRhdGEuIikgZWxlbWVudCBzaG91bGQgYmUgc3R5bGVkIHVzaW5nIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKS4gU2V0IFtgbWFyZ2luLWxlZnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luLWxlZnQgIlRoZSBtYXJnaW4tbGVmdCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gdGhlIGxlZnQgc2lkZSBvZiBhbiBlbGVtZW50LiBBIHBvc2l0aXZlIHZhbHVlIHBsYWNlcyBpdCBmYXJ0aGVyIGZyb20gaXRzIG5laWdoYm9ycywgd2hpbGUgYSBuZWdhdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgY2xvc2VyLiIpIGFuZCBbYG1hcmdpbi1yaWdodGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tcmlnaHQgIlRoZSBtYXJnaW4tcmlnaHQgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSByaWdodCBzaWRlIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgdG8gYGF1dG9gIG9yIFtgbWFyZ2luYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbiAiVGhlIG1hcmdpbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gYWxsIGZvdXIgc2lkZXMgb2YgYW4gZWxlbWVudC4gSXQgaXMgYSBzaG9ydGhhbmQgZm9yIG1hcmdpbi10b3AsIG1hcmdpbi1yaWdodCwgbWFyZ2luLWJvdHRvbSwgYW5kIG1hcmdpbi1sZWZ0LiIpIHRvIGAwIGF1dG9gIHRvIGFjaGlldmUgYW4gZWZmZWN0IHRoYXQgaXMgc2ltaWxhciB0byB0aGUgYWxpZ24gYXR0cmlidXRlLlxuKiAgIFByaW9yIHRvIEZpcmVmb3ggNCwgRmlyZWZveCBhbHNvIHN1cHBvcnRlZCB0aGUgYG1pZGRsZWAsIGBhYnNtaWRkbGVgLCBhbmQgYGFic2NlbnRlcmAgdmFsdWVzIGFzIHN5bm9ueW1zIG9mIGBjZW50ZXJgLCBpbiBxdWlya3MgbW9kZSBvbmx5Lid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGFibGUifV19LHtuYW1lOiJjYXB0aW9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY2FwdGlvbiBlbGVtZW50IHJlcHJlc2VudHMgdGhlIHRpdGxlIG9mIHRoZSB0YWJsZSB0aGF0IGlzIGl0cyBwYXJlbnQsIGlmIGl0IGhhcyBhIHBhcmVudCBhbmQgdGhhdCBpcyBhIHRhYmxlIGVsZW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgaG93IHRoZSBjYXB0aW9uIG11c3QgYmUgYWxpZ25lZCB3aXRoIHJlc3BlY3QgdG8gdGhlIHRhYmxlLiBJdCBtYXkgaGF2ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbmBsZWZ0YFxuXG5UaGUgY2FwdGlvbiBpcyBkaXNwbGF5ZWQgdG8gdGhlIGxlZnQgb2YgdGhlIHRhYmxlLlxuXG5gdG9wYFxuXG5UaGUgY2FwdGlvbiBpcyBkaXNwbGF5ZWQgYWJvdmUgdGhlIHRhYmxlLlxuXG5gcmlnaHRgXG5cblRoZSBjYXB0aW9uIGlzIGRpc3BsYXllZCB0byB0aGUgcmlnaHQgb2YgdGhlIHRhYmxlLlxuXG5gYm90dG9tYFxuXG5UaGUgY2FwdGlvbiBpcyBkaXNwbGF5ZWQgYmVsb3cgdGhlIHRhYmxlLlxuXG4qKlVzYWdlIG5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYXMgaXQgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVGhlIFtgPGNhcHRpb24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhcHRpb24gIlRoZSBIVE1MIFRhYmxlIENhcHRpb24gZWxlbWVudCAoPGNhcHRpb24+KSBzcGVjaWZpZXMgdGhlIGNhcHRpb24gKG9yIHRpdGxlKSBvZiBhIHRhYmxlLCBhbmQgaWYgdXNlZCBpcyBhbHdheXMgdGhlIGZpcnN0IGNoaWxkIG9mIGEgPHRhYmxlPi4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgdGhlIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKSBwcm9wZXJ0aWVzIFtgY2FwdGlvbi1zaWRlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NhcHRpb24tc2lkZSAiVGhlIGNhcHRpb24tc2lkZSBDU1MgcHJvcGVydHkgcHV0cyB0aGUgY29udGVudCBvZiBhIHRhYmxlXCdzIDxjYXB0aW9uPiBvbiB0aGUgc3BlY2lmaWVkIHNpZGUuIFRoZSB2YWx1ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSB3cml0aW5nLW1vZGUgb2YgdGhlIHRhYmxlLiIpIGFuZCBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYXB0aW9uIn1dfSx7bmFtZToiY29sZ3JvdXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjb2xncm91cCBlbGVtZW50IHJlcHJlc2VudHMgYSBncm91cCBvZiBvbmUgb3IgbW9yZSBjb2x1bW5zIGluIHRoZSB0YWJsZSB0aGF0IGlzIGl0cyBwYXJlbnQsIGlmIGl0IGhhcyBhIHBhcmVudCBhbmQgdGhhdCBpcyBhIHRhYmxlIGVsZW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6InNwYW4ifSx7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgZWFjaCBjb2x1bW4gY2VsbCBjb250ZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGxcbiogICBgY2VudGVyYCwgY2VudGVyaW5nIHRoZSBjb250ZW50IGluIHRoZSBjZWxsXG4qICAgYHJpZ2h0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsXG4qICAgYGp1c3RpZnlgLCBpbnNlcnRpbmcgc3BhY2VzIGludG8gdGhlIHRleHR1YWwgY29udGVudCBzbyB0aGF0IHRoZSBjb250ZW50IGlzIGp1c3RpZmllZCBpbiB0aGUgY2VsbFxuKiAgIGBjaGFyYCwgYWxpZ25pbmcgdGhlIHRleHR1YWwgY29udGVudCBvbiBhIHNwZWNpYWwgY2hhcmFjdGVyIHdpdGggYSBtaW5pbWFsIG9mZnNldCwgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItY2hhcm9mZikgYXR0cmlidXRlcyBVbmltcGxlbWVudGVkIChzZWUgW2J1Z8KgMjIxMl0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMiAiY2hhcmFjdGVyIGFsaWdubWVudCBub3QgaW1wbGVtZW50ZWQgKGFsaWduPWNoYXIsIGNoYXJvZmY9LCB0ZXh0LWFsaWduOjxzdHJpbmc+KSIpKS5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGBsZWZ0YCB2YWx1ZSBpcyBhc3N1bWVkLiBUaGUgZGVzY2VuZGFudCBbYDxjb2w+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCAiVGhlIEhUTUwgPGNvbD4gZWxlbWVudCBkZWZpbmVzIGEgY29sdW1uIHdpdGhpbiBhIHRhYmxlIGFuZCBpcyB1c2VkIGZvciBkZWZpbmluZyBjb21tb24gc2VtYW50aWNzIG9uIGFsbCBjb21tb24gY2VsbHMuIEl0IGlzIGdlbmVyYWxseSBmb3VuZCB3aXRoaW4gYSA8Y29sZ3JvdXA+IGVsZW1lbnQuIikgZWxlbWVudHMgbWF5IG92ZXJyaWRlIHRoaXMgdmFsdWUgdXNpbmcgdGhlaXIgb3duIFtgYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItYWxpZ24pIGF0dHJpYnV0ZS5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgKG5vdCBzdXBwb3J0ZWQpIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzOlxuICAgICogICBEbyBub3QgdHJ5IHRvIHNldCB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IG9uIGEgc2VsZWN0b3IgZ2l2aW5nIGEgW2A8Y29sZ3JvdXA+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbGdyb3VwICJUaGUgSFRNTCA8Y29sZ3JvdXA+IGVsZW1lbnQgZGVmaW5lcyBhIGdyb3VwIG9mIGNvbHVtbnMgd2l0aGluIGEgdGFibGUuIikgZWxlbWVudC4gQmVjYXVzZSBbYDx0ZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQgIlRoZSBIVE1MIDx0ZD4gZWxlbWVudCBkZWZpbmVzIGEgY2VsbCBvZiBhIHRhYmxlIHRoYXQgY29udGFpbnMgZGF0YS4gSXQgcGFydGljaXBhdGVzIGluIHRoZSB0YWJsZSBtb2RlbC4iKSBlbGVtZW50cyBhcmUgbm90IGRlc2NlbmRhbnQgb2YgdGhlIFtgPGNvbGdyb3VwPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCAiVGhlIEhUTUwgPGNvbGdyb3VwPiBlbGVtZW50IGRlZmluZXMgYSBncm91cCBvZiBjb2x1bW5zIHdpdGhpbiBhIHRhYmxlLiIpIGVsZW1lbnQsIHRoZXkgd29uXCd0IGluaGVyaXQgaXQuXG4gICAgKiAgIElmIHRoZSB0YWJsZSBkb2VzblwndCB1c2UgYSBbYGNvbHNwYW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jb2xzcGFuKSBhdHRyaWJ1dGUsIHVzZSBvbmUgYHRkOm50aC1jaGlsZChhbitiKWAgQ1NTIHNlbGVjdG9yIHBlciBjb2x1bW4sIHdoZXJlIGEgaXMgdGhlIHRvdGFsIG51bWJlciBvZiB0aGUgY29sdW1ucyBpbiB0aGUgdGFibGUgYW5kIGIgaXMgdGhlIG9yZGluYWwgcG9zaXRpb24gb2YgdGhpcyBjb2x1bW4gaW4gdGhlIHRhYmxlLiBPbmx5IGFmdGVyIHRoaXMgc2VsZWN0b3IgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBjYW4gYmUgdXNlZC5cbiAgICAqICAgSWYgdGhlIHRhYmxlIGRvZXMgdXNlIGEgW2Bjb2xzcGFuYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY29sc3BhbikgYXR0cmlidXRlLCB0aGUgZWZmZWN0IGNhbiBiZSBhY2hpZXZlZCBieSBjb21iaW5pbmcgYWRlcXVhdGUgQ1NTIGF0dHJpYnV0ZSBzZWxlY3RvcnMgbGlrZSBgW2NvbHNwYW49bl1gLCB0aG91Z2ggdGhpcyBpcyBub3QgdHJpdmlhbC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBpbiBDU1MzLCB5b3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCNhdHRyLWNoYXIpIGFzIHRoZSB2YWx1ZSBvZiB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IFVuaW1wbGVtZW50ZWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCJ9XX0se25hbWU6ImNvbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgYSBjb2wgZWxlbWVudCBoYXMgYSBwYXJlbnQgYW5kIHRoYXQgaXMgYSBjb2xncm91cCBlbGVtZW50IHRoYXQgaXRzZWxmIGhhcyBhIHBhcmVudCB0aGF0IGlzIGEgdGFibGUgZWxlbWVudCwgdGhlbiB0aGUgY29sIGVsZW1lbnQgcmVwcmVzZW50cyBvbmUgb3IgbW9yZSBjb2x1bW5zIGluIHRoZSBjb2x1bW4gZ3JvdXAgcmVwcmVzZW50ZWQgYnkgdGhhdCBjb2xncm91cC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3BhbiJ9LHtuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyBob3Jpem9udGFsIGFsaWdubWVudCBvZiBlYWNoIGNvbHVtbiBjZWxsIGNvbnRlbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbFxuKiAgIGBjZW50ZXJgLCBjZW50ZXJpbmcgdGhlIGNvbnRlbnQgaW4gdGhlIGNlbGxcbiogICBgcmlnaHRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGxcbiogICBganVzdGlmeWAsIGluc2VydGluZyBzcGFjZXMgaW50byB0aGUgdGV4dHVhbCBjb250ZW50IHNvIHRoYXQgdGhlIGNvbnRlbnQgaXMganVzdGlmaWVkIGluIHRoZSBjZWxsXG4qICAgYGNoYXJgLCBhbGlnbmluZyB0aGUgdGV4dHVhbCBjb250ZW50IG9uIGEgc3BlY2lhbCBjaGFyYWN0ZXIgd2l0aCBhIG1pbmltYWwgb2Zmc2V0LCBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzIFVuaW1wbGVtZW50ZWQgKHNlZSBbYnVnwqAyMjEyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyICJjaGFyYWN0ZXIgYWxpZ25tZW50IG5vdCBpbXBsZW1lbnRlZCAoYWxpZ249Y2hhciwgY2hhcm9mZj0sIHRleHQtYWxpZ246PHN0cmluZz4pIikpLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCBpdHMgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIFtgYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sZ3JvdXAjYXR0ci1hbGlnbikgb2YgdGhlIFtgPGNvbGdyb3VwPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCAiVGhlIEhUTUwgPGNvbGdyb3VwPiBlbGVtZW50IGRlZmluZXMgYSBncm91cCBvZiBjb2x1bW5zIHdpdGhpbiBhIHRhYmxlLiIpIGVsZW1lbnQgdGhpcyBgPGNvbD5gIGVsZW1lbnQgYmVsb25ncyB0b28uIElmIHRoZXJlIGFyZSBub25lLCB0aGUgYGxlZnRgIHZhbHVlIGlzIGFzc3VtZWQuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIChub3Qgc3VwcG9ydGVkKSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlczpcbiAgICAqICAgRG8gbm90IHRyeSB0byBzZXQgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBvbiBhIHNlbGVjdG9yIGdpdmluZyBhIFtgPGNvbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sICJUaGUgSFRNTCA8Y29sPiBlbGVtZW50IGRlZmluZXMgYSBjb2x1bW4gd2l0aGluIGEgdGFibGUgYW5kIGlzIHVzZWQgZm9yIGRlZmluaW5nIGNvbW1vbiBzZW1hbnRpY3Mgb24gYWxsIGNvbW1vbiBjZWxscy4gSXQgaXMgZ2VuZXJhbGx5IGZvdW5kIHdpdGhpbiBhIDxjb2xncm91cD4gZWxlbWVudC4iKSBlbGVtZW50LiBCZWNhdXNlIFtgPHRkPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCAiVGhlIEhUTUwgPHRkPiBlbGVtZW50IGRlZmluZXMgYSBjZWxsIG9mIGEgdGFibGUgdGhhdCBjb250YWlucyBkYXRhLiBJdCBwYXJ0aWNpcGF0ZXMgaW4gdGhlIHRhYmxlIG1vZGVsLiIpIGVsZW1lbnRzIGFyZSBub3QgZGVzY2VuZGFudCBvZiB0aGUgW2A8Y29sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wgIlRoZSBIVE1MIDxjb2w+IGVsZW1lbnQgZGVmaW5lcyBhIGNvbHVtbiB3aXRoaW4gYSB0YWJsZSBhbmQgaXMgdXNlZCBmb3IgZGVmaW5pbmcgY29tbW9uIHNlbWFudGljcyBvbiBhbGwgY29tbW9uIGNlbGxzLiBJdCBpcyBnZW5lcmFsbHkgZm91bmQgd2l0aGluIGEgPGNvbGdyb3VwPiBlbGVtZW50LiIpIGVsZW1lbnQsIHRoZXkgd29uXCd0IGluaGVyaXQgaXQuXG4gICAgKiAgIElmIHRoZSB0YWJsZSBkb2VzblwndCB1c2UgYSBbYGNvbHNwYW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jb2xzcGFuKSBhdHRyaWJ1dGUsIHVzZSB0aGUgYHRkOm50aC1jaGlsZChhbitiKWAgQ1NTIHNlbGVjdG9yLiBTZXQgYGFgIHRvIHplcm8gYW5kIGBiYCB0byB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbiBpbiB0aGUgdGFibGUsIGUuZy4gYHRkOm50aC1jaGlsZCgyKSB7IHRleHQtYWxpZ246IHJpZ2h0OyB9YCB0byByaWdodC1hbGlnbiB0aGUgc2Vjb25kIGNvbHVtbi5cbiAgICAqICAgSWYgdGhlIHRhYmxlIGRvZXMgdXNlIGEgW2Bjb2xzcGFuYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY29sc3BhbikgYXR0cmlidXRlLCB0aGUgZWZmZWN0IGNhbiBiZSBhY2hpZXZlZCBieSBjb21iaW5pbmcgYWRlcXVhdGUgQ1NTIGF0dHJpYnV0ZSBzZWxlY3RvcnMgbGlrZSBgW2NvbHNwYW49bl1gLCB0aG91Z2ggdGhpcyBpcyBub3QgdHJpdmlhbC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBpbiBDU1MzLCB5b3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wjYXR0ci1jaGFyKSBhcyB0aGUgdmFsdWUgb2YgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBVbmltcGxlbWVudGVkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sIn1dfSx7bmFtZToidGJvZHkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0Ym9keSBlbGVtZW50IHJlcHJlc2VudHMgYSBibG9jayBvZiByb3dzIHRoYXQgY29uc2lzdCBvZiBhIGJvZHkgb2YgZGF0YSBmb3IgdGhlIHBhcmVudCB0YWJsZSBlbGVtZW50LCBpZiB0aGUgdGJvZHkgZWxlbWVudCBoYXMgYSBwYXJlbnQgYW5kIGl0IGlzIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IGhvcml6b250YWwgYWxpZ25tZW50IG9mIGVhY2ggY2VsbCBjb250ZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGxcbiogICBgY2VudGVyYCwgY2VudGVyaW5nIHRoZSBjb250ZW50IGluIHRoZSBjZWxsXG4qICAgYHJpZ2h0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsXG4qICAgYGp1c3RpZnlgLCBpbnNlcnRpbmcgc3BhY2VzIGludG8gdGhlIHRleHR1YWwgY29udGVudCBzbyB0aGF0IHRoZSBjb250ZW50IGlzIGp1c3RpZmllZCBpbiB0aGUgY2VsbFxuKiAgIGBjaGFyYCwgYWxpZ25pbmcgdGhlIHRleHR1YWwgY29udGVudCBvbiBhIHNwZWNpYWwgY2hhcmFjdGVyIHdpdGggYSBtaW5pbWFsIG9mZnNldCwgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rib2R5I2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Ym9keSNhdHRyLWNoYXJvZmYpIGF0dHJpYnV0ZXMuXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQsIHRoZSBgbGVmdGAgdmFsdWUgaXMgYXNzdW1lZC5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgKG5vdCBzdXBwb3J0ZWQpIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzLCB1c2UgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgb24gaXQuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgaW4gQ1NTMywgeW91IGNhbiB1c2UgdGhlIHZhbHVlIG9mIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkjYXR0ci1jaGFyKSBhcyB0aGUgdmFsdWUgb2YgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBVbmltcGxlbWVudGVkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkifV19LHtuYW1lOiJ0aGVhZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRoZWFkIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgYmxvY2sgb2Ygcm93cyB0aGF0IGNvbnNpc3Qgb2YgdGhlIGNvbHVtbiBsYWJlbHMgKGhlYWRlcnMpIGZvciB0aGUgcGFyZW50IHRhYmxlIGVsZW1lbnQsIGlmIHRoZSB0aGVhZCBlbGVtZW50IGhhcyBhIHBhcmVudCBhbmQgaXQgaXMgYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgZWFjaCBjZWxsIGNvbnRlbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbFxuKiAgIGBjZW50ZXJgLCBjZW50ZXJpbmcgdGhlIGNvbnRlbnQgaW4gdGhlIGNlbGxcbiogICBgcmlnaHRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGxcbiogICBganVzdGlmeWAsIGluc2VydGluZyBzcGFjZXMgaW50byB0aGUgdGV4dHVhbCBjb250ZW50IHNvIHRoYXQgdGhlIGNvbnRlbnQgaXMganVzdGlmaWVkIGluIHRoZSBjZWxsXG4qICAgYGNoYXJgLCBhbGlnbmluZyB0aGUgdGV4dHVhbCBjb250ZW50IG9uIGEgc3BlY2lhbCBjaGFyYWN0ZXIgd2l0aCBhIG1pbmltYWwgb2Zmc2V0LCBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGhlYWQjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoZWFkI2F0dHItY2hhcm9mZikgYXR0cmlidXRlcyBVbmltcGxlbWVudGVkIChzZWUgW2J1Z8KgMjIxMl0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMiAiY2hhcmFjdGVyIGFsaWdubWVudCBub3QgaW1wbGVtZW50ZWQgKGFsaWduPWNoYXIsIGNoYXJvZmY9LCB0ZXh0LWFsaWduOjxzdHJpbmc+KSIpKS5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGBsZWZ0YCB2YWx1ZSBpcyBhc3N1bWVkLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSAobm90IHN1cHBvcnRlZCkgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXMsIHVzZSB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBvbiBpdC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBpbiBDU1MzLCB5b3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aGVhZCNhdHRyLWNoYXIpIGFzIHRoZSB2YWx1ZSBvZiB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IFVuaW1wbGVtZW50ZWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aGVhZCJ9XX0se25hbWU6InRmb290IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGZvb3QgZWxlbWVudCByZXByZXNlbnRzIHRoZSBibG9jayBvZiByb3dzIHRoYXQgY29uc2lzdCBvZiB0aGUgY29sdW1uIHN1bW1hcmllcyAoZm9vdGVycykgZm9yIHRoZSBwYXJlbnQgdGFibGUgZWxlbWVudCwgaWYgdGhlIHRmb290IGVsZW1lbnQgaGFzIGEgcGFyZW50IGFuZCBpdCBpcyBhIHRhYmxlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyBob3Jpem9udGFsIGFsaWdubWVudCBvZiBlYWNoIGNlbGwgY29udGVudCB3aWxsIGJlIGhhbmRsZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbGVmdGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsXG4qICAgYGNlbnRlcmAsIGNlbnRlcmluZyB0aGUgY29udGVudCBpbiB0aGUgY2VsbFxuKiAgIGByaWdodGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbFxuKiAgIGBqdXN0aWZ5YCwgaW5zZXJ0aW5nIHNwYWNlcyBpbnRvIHRoZSB0ZXh0dWFsIGNvbnRlbnQgc28gdGhhdCB0aGUgY29udGVudCBpcyBqdXN0aWZpZWQgaW4gdGhlIGNlbGxcbiogICBgY2hhcmAsIGFsaWduaW5nIHRoZSB0ZXh0dWFsIGNvbnRlbnQgb24gYSBzcGVjaWFsIGNoYXJhY3RlciB3aXRoIGEgbWluaW1hbCBvZmZzZXQsIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Ym9keSNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzIFVuaW1wbGVtZW50ZWQgKHNlZSBbYnVnwqAyMjEyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyICJjaGFyYWN0ZXIgYWxpZ25tZW50IG5vdCBpbXBsZW1lbnRlZCAoYWxpZ249Y2hhciwgY2hhcm9mZj0sIHRleHQtYWxpZ246PHN0cmluZz4pIikpLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCB0aGUgYGxlZnRgIHZhbHVlIGlzIGFzc3VtZWQuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIChub3Qgc3VwcG9ydGVkKSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlcywgdXNlIHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IG9uIGl0LlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGluIENTUzMsIHlvdSBjYW4gdXNlIHRoZSB2YWx1ZSBvZiB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rmb290I2F0dHItY2hhcikgYXMgdGhlIHZhbHVlIG9mIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgVW5pbXBsZW1lbnRlZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rmb290In1dfSx7bmFtZToidHIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0ciBlbGVtZW50IHJlcHJlc2VudHMgYSByb3cgb2YgY2VsbHMgaW4gYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidBIFtgRE9NU3RyaW5nYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RPTVN0cmluZyAiRE9NU3RyaW5nIGlzIGEgVVRGLTE2IFN0cmluZy4gQXMgSmF2YVNjcmlwdCBhbHJlYWR5IHVzZXMgc3VjaCBzdHJpbmdzLCBET01TdHJpbmcgaXMgbWFwcGVkIGRpcmVjdGx5IHRvIGEgU3RyaW5nLiIpIHdoaWNoIHNwZWNpZmllcyBob3cgdGhlIGNlbGxcJ3MgY29udGV4dCBzaG91bGQgYmUgYWxpZ25lZCBob3Jpem9udGFsbHkgd2l0aGluIHRoZSBjZWxscyBpbiB0aGUgcm93OyB0aGlzIGlzIHNob3J0aGFuZCBmb3IgdXNpbmcgYGFsaWduYCBvbiBldmVyeSBjZWxsIGluIHRoZSByb3cgaW5kaXZpZHVhbGx5LiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG5gbGVmdGBcblxuQWxpZ24gdGhlIGNvbnRlbnQgb2YgZWFjaCBjZWxsIGF0IGl0cyBsZWZ0IGVkZ2UuXG5cbmBjZW50ZXJgXG5cbkNlbnRlciB0aGUgY29udGVudHMgb2YgZWFjaCBjZWxsIGJldHdlZW4gdGhlaXIgbGVmdCBhbmQgcmlnaHQgZWRnZXMuXG5cbmByaWdodGBcblxuQWxpZ24gdGhlIGNvbnRlbnQgb2YgZWFjaCBjZWxsIGF0IGl0cyByaWdodCBlZGdlLlxuXG5ganVzdGlmeWBcblxuV2lkZW4gd2hpdGVzcGFjZXMgd2l0aGluIHRoZSB0ZXh0IG9mIGVhY2ggY2VsbCBzbyB0aGF0IHRoZSB0ZXh0IGZpbGxzIHRoZSBmdWxsIHdpZHRoIG9mIGVhY2ggY2VsbCAoZnVsbCBqdXN0aWZpY2F0aW9uKS5cblxuYGNoYXJgXG5cbkFsaWduIGVhY2ggY2VsbCBpbiB0aGUgcm93IG9uIGEgc3BlY2lmaWMgY2hhcmFjdGVyIChzdWNoIHRoYXQgZWFjaCByb3cgaW4gdGhlIGNvbHVtbiB0aGF0IGlzIGNvbmZpZ3VyZWQgdGhpcyB3YXkgd2lsbCBob3Jpem9udGFsbHkgYWxpZ24gaXRzIGNlbGxzIG9uIHRoYXQgY2hhcmFjdGVyKS4gVGhpcyB1c2VzIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdHIjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RyI2F0dHItY2hhcm9mZikgdG8gZXN0YWJsaXNoIHRoZSBhbGlnbm1lbnQgY2hhcmFjdGVyICh0eXBpY2FsbHkgIi4iIG9yICIsIiB3aGVuIGFsaWduaW5nIG51bWVyaWNhbCBkYXRhKSBhbmQgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgc2hvdWxkIGZvbGxvdyB0aGUgYWxpZ25tZW50IGNoYXJhY3Rlci4gVGhpcyBhbGlnbm1lbnQgdHlwZSB3YXMgbmV2ZXIgd2lkZWx5IHN1cHBvcnRlZC5cblxuSWYgbm8gdmFsdWUgaXMgZXhwcmVzc2x5IHNldCBmb3IgYGFsaWduYCwgdGhlIHBhcmVudCBub2RlXCdzIHZhbHVlIGlzIGluaGVyaXRlZC5cblxuSW5zdGVhZCBvZiB1c2luZyB0aGUgb2Jzb2xldGUgYGFsaWduYCBhdHRyaWJ1dGUsIHlvdSBzaG91bGQgaW5zdGVhZCB1c2UgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgdG8gZXN0YWJsaXNoIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAsIG9yIGBqdXN0aWZ5YCBhbGlnbm1lbnQgZm9yIHRoZSByb3dcJ3MgY2VsbHMuIFRvIGFwcGx5IGNoYXJhY3Rlci1iYXNlZCBhbGlnbm1lbnQsIHNldCB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSB0byB0aGUgYWxpZ25tZW50IGNoYXJhY3RlciAoc3VjaCBhcyBgIi4iYCBvciBgIiwiYCkuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ciJ9XX0se25hbWU6InRkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGQgZWxlbWVudCByZXByZXNlbnRzIGEgZGF0YSBjZWxsIGluIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImNvbHNwYW4ifSx7bmFtZToicm93c3BhbiJ9LHtuYW1lOiJoZWFkZXJzIn0se25hbWU6ImFiYnIiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBhIHNob3J0IGFiYnJldmlhdGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBjZWxsJ3MgY29udGVudC4gU29tZSB1c2VyLWFnZW50cywgc3VjaCBhcyBzcGVlY2ggcmVhZGVycywgbWF5IHByZXNlbnQgdGhpcyBkZXNjcmlwdGlvbiBiZWZvcmUgdGhlIGNvbnRlbnQgaXRzZWxmLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHB1dCB0aGUgYWJicmV2aWF0ZWQgZGVzY3JpcHRpb24gaW5zaWRlIHRoZSBjZWxsIGFuZCBwbGFjZSB0aGUgbG9uZyBjb250ZW50IGluIHRoZSAqKnRpdGxlKiogYXR0cmlidXRlLiJ9LHtuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyB0aGUgY2VsbCBjb250ZW50XCdzIGhvcml6b250YWwgYWxpZ25tZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YDogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbC5cbiogICBgY2VudGVyYDogVGhlIGNvbnRlbnQgaXMgY2VudGVyZWQgaW4gdGhlIGNlbGwuXG4qICAgYHJpZ2h0YDogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGwuXG4qICAgYGp1c3RpZnlgICh3aXRoIHRleHQgb25seSk6IFRoZSBjb250ZW50IGlzIHN0cmV0Y2hlZCBvdXQgaW5zaWRlIHRoZSBjZWxsIHNvIHRoYXQgaXQgY292ZXJzIGl0cyBlbnRpcmUgd2lkdGguXG4qICAgYGNoYXJgICh3aXRoIHRleHQgb25seSk6IFRoZSBjb250ZW50IGlzIGFsaWduZWQgdG8gYSBjaGFyYWN0ZXIgaW5zaWRlIHRoZSBgPHRoPmAgZWxlbWVudCB3aXRoIG1pbmltYWwgb2Zmc2V0LiBUaGlzIGNoYXJhY3RlciBpcyBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY2hhcm9mZikgYXR0cmlidXRlcyBVbmltcGxlbWVudGVkIChzZWUgW2J1Z8KgMjIxMl0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMiAiY2hhcmFjdGVyIGFsaWdubWVudCBub3QgaW1wbGVtZW50ZWQgKGFsaWduPWNoYXIsIGNoYXJvZmY9LCB0ZXh0LWFsaWduOjxzdHJpbmc+KSIpKS5cblxuVGhlIGRlZmF1bHQgdmFsdWUgd2hlbiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkIGlzIGBsZWZ0YC5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXMsIGFwcGx5IHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IHRvIHRoZSBlbGVtZW50LlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGdpdmUgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSB0aGUgc2FtZSB2YWx1ZSB5b3Ugd291bGQgdXNlIGZvciB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY2hhcikuIFVuaW1wbGVtZW50ZWQgaW4gQ1NTMy4nfSx7bmFtZToiYXhpcyIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGEgbGlzdCBvZiBzcGFjZS1zZXBhcmF0ZWQgc3RyaW5ncy4gRWFjaCBzdHJpbmcgaXMgdGhlIGBpZGAgb2YgYSBncm91cCBvZiBjZWxscyB0aGF0IHRoaXMgaGVhZGVyIGFwcGxpZXMgdG8uXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuIn0se25hbWU6ImJnY29sb3IiLGRlc2NyaXB0aW9uOidUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGVhY2ggY2VsbCBpbiBhIGNvbHVtbi4gSXQgY29uc2lzdHMgb2YgYSA2LWRpZ2l0IGhleGFkZWNpbWFsIGNvZGUgYXMgZGVmaW5lZCBpbiBbc1JHQl0oaHR0cHM6Ly93d3cudzMub3JnL0dyYXBoaWNzL0NvbG9yL3NSR0IpIGFuZCBpcyBwcmVmaXhlZCBieSBcJyNcJy4gVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHVzZWQgd2l0aCBvbmUgb2Ygc2l4dGVlbiBwcmVkZWZpbmVkIGNvbG9yIHN0cmluZ3M6XG5cbsKgXG5cbmBibGFja2AgPSAiIzAwMDAwMCJcblxuwqBcblxuYGdyZWVuYCA9ICIjMDA4MDAwIlxuXG7CoFxuXG5gc2lsdmVyYCA9ICIjQzBDMEMwIlxuXG7CoFxuXG5gbGltZWAgPSAiIzAwRkYwMCJcblxuwqBcblxuYGdyYXlgID0gIiM4MDgwODAiXG5cbsKgXG5cbmBvbGl2ZWAgPSAiIzgwODAwMCJcblxuwqBcblxuYHdoaXRlYCA9ICIjRkZGRkZGIlxuXG7CoFxuXG5geWVsbG93YCA9ICIjRkZGRjAwIlxuXG7CoFxuXG5gbWFyb29uYCA9ICIjODAwMDAwIlxuXG7CoFxuXG5gbmF2eWAgPSAiIzAwMDA4MCJcblxuwqBcblxuYHJlZGAgPSAiI0ZGMDAwMCJcblxuwqBcblxuYGJsdWVgID0gIiMwMDAwRkYiXG5cbsKgXG5cbmBwdXJwbGVgID0gIiM4MDAwODAiXG5cbsKgXG5cbmB0ZWFsYCA9ICIjMDA4MDgwIlxuXG7CoFxuXG5gZnVjaHNpYWAgPSAiI0ZGMDBGRiJcblxuwqBcblxuYGFxdWFgID0gIiMwMEZGRkYiXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlLCBhcyBpdCBpcyBub24tc3RhbmRhcmQgYW5kIG9ubHkgaW1wbGVtZW50ZWQgaW4gc29tZSB2ZXJzaW9ucyBvZiBNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXI6IFRoZSBbYDx0ZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQgIlRoZSBIVE1MIDx0ZD4gZWxlbWVudCBkZWZpbmVzIGEgY2VsbCBvZiBhIHRhYmxlIHRoYXQgY29udGFpbnMgZGF0YS4gSXQgcGFydGljaXBhdGVzIGluIHRoZSB0YWJsZSBtb2RlbC4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpLiBUbyBjcmVhdGUgYSBzaW1pbGFyIGVmZmVjdCB1c2UgdGhlIFtgYmFja2dyb3VuZC1jb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWNvbG9yICJUaGUgYmFja2dyb3VuZC1jb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBhbiBlbGVtZW50LiIpIHByb3BlcnR5IGluIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKSBpbnN0ZWFkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQifV19LHtuYW1lOiJ0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRoIGVsZW1lbnQgcmVwcmVzZW50cyBhIGhlYWRlciBjZWxsIGluIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImNvbHNwYW4ifSx7bmFtZToicm93c3BhbiJ9LHtuYW1lOiJoZWFkZXJzIn0se25hbWU6InNjb3BlIix2YWx1ZVNldDoicyJ9LHtuYW1lOiJzb3J0ZWQifSx7bmFtZToiYWJiciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYSBzaG9ydCBhYmJyZXZpYXRlZCBkZXNjcmlwdGlvbiBvZiB0aGUgY2VsbCdzIGNvbnRlbnQuIFNvbWUgdXNlci1hZ2VudHMsIHN1Y2ggYXMgc3BlZWNoIHJlYWRlcnMsIG1heSBwcmVzZW50IHRoaXMgZGVzY3JpcHRpb24gYmVmb3JlIHRoZSBjb250ZW50IGl0c2VsZi4ifX0se25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IHRoZSBjZWxsIGNvbnRlbnRcJ3MgaG9yaXpvbnRhbCBhbGlnbm1lbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgOiBUaGUgY29udGVudCBpcyBhbGlnbmVkIHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsLlxuKiAgIGBjZW50ZXJgOiBUaGUgY29udGVudCBpcyBjZW50ZXJlZCBpbiB0aGUgY2VsbC5cbiogICBgcmlnaHRgOiBUaGUgY29udGVudCBpcyBhbGlnbmVkIHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbC5cbiogICBganVzdGlmeWAgKHdpdGggdGV4dCBvbmx5KTogVGhlIGNvbnRlbnQgaXMgc3RyZXRjaGVkIG91dCBpbnNpZGUgdGhlIGNlbGwgc28gdGhhdCBpdCBjb3ZlcnMgaXRzIGVudGlyZSB3aWR0aC5cbiogICBgY2hhcmAgKHdpdGggdGV4dCBvbmx5KTogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byBhIGNoYXJhY3RlciBpbnNpZGUgdGhlIGA8dGg+YCBlbGVtZW50IHdpdGggbWluaW1hbCBvZmZzZXQuIFRoaXMgY2hhcmFjdGVyIGlzIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aCNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGgjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzLlxuXG5UaGUgZGVmYXVsdCB2YWx1ZSB3aGVuIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQgaXMgYGxlZnRgLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlcywgYXBwbHkgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgdG8gdGhlIGVsZW1lbnQuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgZ2l2ZSB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IHRoZSBzYW1lIHZhbHVlIHlvdSB3b3VsZCB1c2UgZm9yIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGgjYXR0ci1jaGFyKS4gVW5pbXBsZW1lbnRlZCBpbiBDU1MzLid9LHtuYW1lOiJheGlzIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYSBsaXN0IG9mIHNwYWNlLXNlcGFyYXRlZCBzdHJpbmdzLiBFYWNoIHN0cmluZyBpcyB0aGUgYGlkYCBvZiBhIGdyb3VwIG9mIGNlbGxzIHRoYXQgdGhpcyBoZWFkZXIgYXBwbGllcyB0by5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZDogdXNlIHRoZSBbYHNjb3BlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoI2F0dHItc2NvcGUpIGF0dHJpYnV0ZSBpbnN0ZWFkLiJ9LHtuYW1lOiJiZ2NvbG9yIixkZXNjcmlwdGlvbjonVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBlYWNoIGNlbGwgaW4gYSBjb2x1bW4uIEl0IGNvbnNpc3RzIG9mIGEgNi1kaWdpdCBoZXhhZGVjaW1hbCBjb2RlIGFzIGRlZmluZWQgaW4gW3NSR0JdKGh0dHBzOi8vd3d3LnczLm9yZy9HcmFwaGljcy9Db2xvci9zUkdCKSBhbmQgaXMgcHJlZml4ZWQgYnkgXCcjXCcuIFRoaXMgYXR0cmlidXRlIG1heSBiZSB1c2VkIHdpdGggb25lIG9mIHNpeHRlZW4gcHJlZGVmaW5lZCBjb2xvciBzdHJpbmdzOlxuXG7CoFxuXG5gYmxhY2tgID0gIiMwMDAwMDAiXG5cbsKgXG5cbmBncmVlbmAgPSAiIzAwODAwMCJcblxuwqBcblxuYHNpbHZlcmAgPSAiI0MwQzBDMCJcblxuwqBcblxuYGxpbWVgID0gIiMwMEZGMDAiXG5cbsKgXG5cbmBncmF5YCA9ICIjODA4MDgwIlxuXG7CoFxuXG5gb2xpdmVgID0gIiM4MDgwMDAiXG5cbsKgXG5cbmB3aGl0ZWAgPSAiI0ZGRkZGRiJcblxuwqBcblxuYHllbGxvd2AgPSAiI0ZGRkYwMCJcblxuwqBcblxuYG1hcm9vbmAgPSAiIzgwMDAwMCJcblxuwqBcblxuYG5hdnlgID0gIiMwMDAwODAiXG5cbsKgXG5cbmByZWRgID0gIiNGRjAwMDAiXG5cbsKgXG5cbmBibHVlYCA9ICIjMDAwMEZGIlxuXG7CoFxuXG5gcHVycGxlYCA9ICIjODAwMDgwIlxuXG7CoFxuXG5gdGVhbGAgPSAiIzAwODA4MCJcblxuwqBcblxuYGZ1Y2hzaWFgID0gIiNGRjAwRkYiXG5cbsKgXG5cbmBhcXVhYCA9ICIjMDBGRkZGIlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYXMgaXQgaXMgbm9uLXN0YW5kYXJkIGFuZCBvbmx5IGltcGxlbWVudGVkIGluIHNvbWUgdmVyc2lvbnMgb2YgTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyOiBUaGUgW2A8dGg+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoICJUaGUgSFRNTCA8dGg+IGVsZW1lbnQgZGVmaW5lcyBhIGNlbGwgYXMgaGVhZGVyIG9mIGEgZ3JvdXAgb2YgdGFibGUgY2VsbHMuIFRoZSBleGFjdCBuYXR1cmUgb2YgdGhpcyBncm91cCBpcyBkZWZpbmVkIGJ5IHRoZSBzY29wZSBhbmQgaGVhZGVycyBhdHRyaWJ1dGVzLiIpIGVsZW1lbnQgc2hvdWxkIGJlIHN0eWxlZCB1c2luZyBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MpLiBUbyBjcmVhdGUgYSBzaW1pbGFyIGVmZmVjdCB1c2UgdGhlIFtgYmFja2dyb3VuZC1jb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWNvbG9yICJUaGUgYmFja2dyb3VuZC1jb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBhbiBlbGVtZW50LiIpIHByb3BlcnR5IGluIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUykgaW5zdGVhZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoIn1dfSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGZvcm0gZWxlbWVudCByZXByZXNlbnRzIGEgY29sbGVjdGlvbiBvZiBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMsIHNvbWUgb2Ygd2hpY2ggY2FuIHJlcHJlc2VudCBlZGl0YWJsZSB2YWx1ZXMgdGhhdCBjYW4gYmUgc3VibWl0dGVkIHRvIGEgc2VydmVyIGZvciBwcm9jZXNzaW5nLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhY2NlcHQtY2hhcnNldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBzcGFjZS0gb3IgY29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgY2hhcmFjdGVyIGVuY29kaW5ncyB0aGF0IHRoZSBzZXJ2ZXIgYWNjZXB0cy4gVGhlIGJyb3dzZXIgdXNlcyB0aGVtIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZSBsaXN0ZWQuIFRoZSBkZWZhdWx0IHZhbHVlLCB0aGUgcmVzZXJ2ZWQgc3RyaW5nIGAiVU5LTk9XTiJgLCBpbmRpY2F0ZXMgdGhlIHNhbWUgZW5jb2RpbmcgYXMgdGhhdCBvZiB0aGUgZG9jdW1lbnQgY29udGFpbmluZyB0aGUgZm9ybSBlbGVtZW50LiAgXG5JbiBwcmV2aW91cyB2ZXJzaW9ucyBvZiBIVE1MLCB0aGUgZGlmZmVyZW50IGNoYXJhY3RlciBlbmNvZGluZ3MgY291bGQgYmUgZGVsaW1pdGVkIGJ5IHNwYWNlcyBvciBjb21tYXMuIEluIEhUTUw1LCBvbmx5IHNwYWNlcyBhcmUgYWxsb3dlZCBhcyBkZWxpbWl0ZXJzLid9fSx7bmFtZToiYWN0aW9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgVVJJIG9mIGEgcHJvZ3JhbSB0aGF0IHByb2Nlc3NlcyB0aGUgZm9ybSBpbmZvcm1hdGlvbi4gVGhpcyB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIFtgZm9ybWFjdGlvbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24jYXR0ci1mb3JtYWN0aW9uKSBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgb3IgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudC4nfX0se25hbWU6ImF1dG9jb21wbGV0ZSIsdmFsdWVTZXQ6Im8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIGlucHV0IGVsZW1lbnRzIGNhbiBieSBkZWZhdWx0IGhhdmUgdGhlaXIgdmFsdWVzIGF1dG9tYXRpY2FsbHkgY29tcGxldGVkIGJ5IHRoZSBicm93c2VyLiBUaGlzIHNldHRpbmcgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYW4gYGF1dG9jb21wbGV0ZWAgYXR0cmlidXRlIG9uIGFuIGVsZW1lbnQgYmVsb25naW5nIHRvIHRoZSBmb3JtLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYG9mZmA6IFRoZSB1c2VyIG11c3QgZXhwbGljaXRseSBlbnRlciBhIHZhbHVlIGludG8gZWFjaCBmaWVsZCBmb3IgZXZlcnkgdXNlLCBvciB0aGUgZG9jdW1lbnQgcHJvdmlkZXMgaXRzIG93biBhdXRvLWNvbXBsZXRpb24gbWV0aG9kOyB0aGUgYnJvd3NlciBkb2VzIG5vdCBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlIGVudHJpZXMuXG4qICAgYG9uYDogVGhlIGJyb3dzZXIgY2FuIGF1dG9tYXRpY2FsbHkgY29tcGxldGUgdmFsdWVzIGJhc2VkIG9uIHZhbHVlcyB0aGF0IHRoZSB1c2VyIGhhcyBwcmV2aW91c2x5IGVudGVyZWQgaW4gdGhlIGZvcm0uXG5cbkZvciBtb3N0IG1vZGVybiBicm93c2VycyAoaW5jbHVkaW5nIEZpcmVmb3ggMzgrLCBHb29nbGUgQ2hyb21lIDM0KywgSUUgMTErKSBzZXR0aW5nIHRoZSBhdXRvY29tcGxldGUgYXR0cmlidXRlIHdpbGwgbm90IHByZXZlbnQgYSBicm93c2VyJ3MgcGFzc3dvcmQgbWFuYWdlciBmcm9tIGFza2luZyB0aGUgdXNlciBpZiB0aGV5IHdhbnQgdG8gc3RvcmUgbG9naW4gZmllbGRzICh1c2VybmFtZSBhbmQgcGFzc3dvcmQpLCBpZiB0aGUgdXNlciBwZXJtaXRzIHRoZSBzdG9yYWdlIHRoZSBicm93c2VyIHdpbGwgYXV0b2ZpbGwgdGhlIGxvZ2luIHRoZSBuZXh0IHRpbWUgdGhlIHVzZXIgdmlzaXRzIHRoZSBwYWdlLiBTZWUgW1RoZSBhdXRvY29tcGxldGUgYXR0cmlidXRlIGFuZCBsb2dpbiBmaWVsZHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1NlY3VyaW5nX3lvdXJfc2l0ZS9UdXJuaW5nX29mZl9mb3JtX2F1dG9jb21wbGV0aW9uI1RoZV9hdXRvY29tcGxldGVfYXR0cmlidXRlX2FuZF9sb2dpbl9maWVsZHMpLiJ9fSx7bmFtZToiZW5jdHlwZSIsdmFsdWVTZXQ6ImV0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidXaGVuIHRoZSB2YWx1ZSBvZiB0aGUgYG1ldGhvZGAgYXR0cmlidXRlIGlzIGBwb3N0YCwgZW5jdHlwZSBpcyB0aGUgW01JTUUgdHlwZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWltZV90eXBlKSBvZiBjb250ZW50IHRoYXQgaXMgdXNlZCB0byBzdWJtaXQgdGhlIGZvcm0gdG8gdGhlIHNlcnZlci4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgOiBUaGUgZGVmYXVsdCB2YWx1ZSBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQuXG4qICAgYG11bHRpcGFydC9mb3JtLWRhdGFgOiBUaGUgdmFsdWUgdXNlZCBmb3IgYW4gW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudCB3aXRoIHRoZSBgdHlwZWAgYXR0cmlidXRlIHNldCB0byAiZmlsZSIuXG4qICAgYHRleHQvcGxhaW5gOiAoSFRNTDUpXG5cblRoaXMgdmFsdWUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBbYGZvcm1lbmN0eXBlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiNhdHRyLWZvcm1lbmN0eXBlKSBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgb3IgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudC4nfX0se25hbWU6Im1ldGhvZCIsdmFsdWVTZXQ6Im0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBbSFRUUF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUCkgbWV0aG9kIHRoYXQgdGhlIGJyb3dzZXIgdXNlcyB0byBzdWJtaXQgdGhlIGZvcm0uIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgcG9zdGA6IENvcnJlc3BvbmRzIHRvIHRoZSBIVFRQIFtQT1NUIG1ldGhvZF0oaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjOS5odG1sI3NlYzkuNSkgOyBmb3JtIGRhdGEgYXJlIGluY2x1ZGVkIGluIHRoZSBib2R5IG9mIHRoZSBmb3JtIGFuZCBzZW50IHRvIHRoZSBzZXJ2ZXIuXG4qICAgYGdldGA6IENvcnJlc3BvbmRzIHRvIHRoZSBIVFRQIFtHRVQgbWV0aG9kXShodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM5Lmh0bWwjc2VjOS4zKTsgZm9ybSBkYXRhIGFyZSBhcHBlbmRlZCB0byB0aGUgYGFjdGlvbmAgYXR0cmlidXRlIFVSSSB3aXRoIGEgXCc/XCcgYXMgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdGluZyBVUkkgaXMgc2VudCB0byB0aGUgc2VydmVyLiBVc2UgdGhpcyBtZXRob2Qgd2hlbiB0aGUgZm9ybSBoYXMgbm8gc2lkZS1lZmZlY3RzIGFuZCBjb250YWlucyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuXG4qICAgYGRpYWxvZ2A6IFVzZSB3aGVuIHRoZSBmb3JtIGlzIGluc2lkZSBhwqBbYDxkaWFsb2c+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RpYWxvZyAiVGhlIEhUTUwgPGRpYWxvZz4gZWxlbWVudCByZXByZXNlbnRzIGEgZGlhbG9nIGJveCBvciBvdGhlciBpbnRlcmFjdGl2ZSBjb21wb25lbnQsIHN1Y2ggYXMgYW4gaW5zcGVjdG9yIG9yIHdpbmRvdy4iKSBlbGVtZW50IHRvIGNsb3NlIHRoZSBkaWFsb2cgd2hlbiBzdWJtaXR0ZWQuXG5cblRoaXMgdmFsdWUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBbYGZvcm1tZXRob2RgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItZm9ybW1ldGhvZCkgYXR0cmlidXRlIG9uIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIG9yIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQuJ319LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBvZiB0aGUgZm9ybS4gSW4gSFRNTCA0LCBpdHMgdXNlIGlzIGRlcHJlY2F0ZWQgKGBpZGAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCkuIEl0IG11c3QgYmUgdW5pcXVlIGFtb25nIHRoZSBmb3JtcyBpbiBhIGRvY3VtZW50IGFuZCBub3QganVzdCBhbiBlbXB0eSBzdHJpbmcgaW4gSFRNTCA1LiJ9fSx7bmFtZToibm92YWxpZGF0ZSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIGZvcm0gaXMgbm90IHRvIGJlIHZhbGlkYXRlZCB3aGVuIHN1Ym1pdHRlZC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCAoYW5kIHRoZXJlZm9yZSB0aGUgZm9ybSBpcyB2YWxpZGF0ZWQpLCB0aGlzIGRlZmF1bHQgc2V0dGluZyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIFtgZm9ybW5vdmFsaWRhdGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItZm9ybW5vdmFsaWRhdGUpIGF0dHJpYnV0ZSBvbiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBvciBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50IGJlbG9uZ2luZyB0byB0aGUgZm9ybS4nfX0se25hbWU6InRhcmdldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBuYW1lIG9yIGtleXdvcmQgaW5kaWNhdGluZyB3aGVyZSB0byBkaXNwbGF5IHRoZSByZXNwb25zZSB0aGF0IGlzIHJlY2VpdmVkIGFmdGVyIHN1Ym1pdHRpbmcgdGhlIGZvcm0uIEluIEhUTUwgNCwgdGhpcyBpcyB0aGUgbmFtZS9rZXl3b3JkIGZvciBhIGZyYW1lLiBJbiBIVE1MNSwgaXQgaXMgYSBuYW1lL2tleXdvcmQgZm9yIGEgX2Jyb3dzaW5nIGNvbnRleHRfIChmb3IgZXhhbXBsZSwgdGFiLCB3aW5kb3csIG9yIGlubGluZSBmcmFtZSkuIFRoZSBmb2xsb3dpbmcga2V5d29yZHMgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzOlxuXG4qICAgYF9zZWxmYDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgc2FtZSBIVE1MIDQgZnJhbWUgKG9yIEhUTUw1IGJyb3dzaW5nIGNvbnRleHQpIGFzIHRoZSBjdXJyZW50IG9uZS4gVGhpcyB2YWx1ZSBpcyB0aGUgZGVmYXVsdCBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQuXG4qICAgYF9ibGFua2A6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gYSBuZXcgdW5uYW1lZCBIVE1MIDQgd2luZG93IG9yIEhUTUw1IGJyb3dzaW5nIGNvbnRleHQuXG4qICAgYF9wYXJlbnRgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIHRoZSBIVE1MIDQgZnJhbWVzZXQgcGFyZW50IG9mIHRoZSBjdXJyZW50IGZyYW1lLCBvciBIVE1MNSBwYXJlbnQgYnJvd3NpbmcgY29udGV4dCBvZiB0aGUgY3VycmVudCBvbmUuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cbiogICBgX3RvcGA6IEhUTUwgNDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgZnVsbCBvcmlnaW5hbCB3aW5kb3csIGFuZCBjYW5jZWwgYWxsIG90aGVyIGZyYW1lcy4gSFRNTDU6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0IChpLmUuLCB0aGUgYnJvd3NpbmcgY29udGV4dCB0aGF0IGlzIGFuIGFuY2VzdG9yIG9mIHRoZSBjdXJyZW50IG9uZSwgYW5kIGhhcyBubyBwYXJlbnQpLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgb3B0aW9uIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG4qICAgX2lmcmFtZW5hbWVfOiBUaGUgcmVzcG9uc2UgaXMgZGlzcGxheWVkIGluIGEgbmFtZWQgW2A8aWZyYW1lPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pZnJhbWUgIlRoZSBIVE1MIElubGluZSBGcmFtZSBlbGVtZW50ICg8aWZyYW1lPikgcmVwcmVzZW50cyBhIG5lc3RlZCBicm93c2luZyBjb250ZXh0LCBlbWJlZGRpbmcgYW5vdGhlciBIVE1MIHBhZ2UgaW50byB0aGUgY3VycmVudCBvbmUuIikuXG5cbkhUTUw1OiBUaGlzIHZhbHVlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgW2Bmb3JtdGFyZ2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiNhdHRyLWZvcm10YXJnZXQpIGF0dHJpYnV0ZSBvbiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBvciBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50Lid9fSx7bmFtZToiYWNjZXB0IixkZXNjcmlwdGlvbjonQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb250ZW50IHR5cGVzIHRoYXQgdGhlIHNlcnZlciBhY2NlcHRzLlxuXG4qKlVzYWdlIG5vdGU6KiogVGhpcyBhdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZCBpbiBIVE1MNSBhbmQgc2hvdWxkIG5vIGxvbmdlciBiZSB1c2VkLiBJbnN0ZWFkLCB1c2UgdGhlIFtgYWNjZXB0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0I2F0dHItYWNjZXB0KSBhdHRyaWJ1dGUgb2YgdGhlIHNwZWNpZmljIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQuJ30se25hbWU6ImF1dG9jYXBpdGFsaXplIixkZXNjcmlwdGlvbjoiVGhpcyBpcyBhIG5vbnN0YW5kYXJkIGF0dHJpYnV0ZSB1c2VkIGJ5IGlPUyBTYWZhcmkgTW9iaWxlIHdoaWNoIGNvbnRyb2xzIHdoZXRoZXIgYW5kIGhvdyB0aGUgdGV4dCB2YWx1ZSBmb3IgdGV4dHVhbCBmb3JtIGNvbnRyb2wgZGVzY2VuZGFudHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZWQgYXMgaXQgaXMgZW50ZXJlZC9lZGl0ZWQgYnkgdGhlIHVzZXIuIElmIHRoZSBgYXV0b2NhcGl0YWxpemVgIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQgb24gYW4gaW5kaXZpZHVhbCBmb3JtIGNvbnRyb2wgZGVzY2VuZGFudCwgaXQgdHJ1bXBzIHRoZSBmb3JtLXdpZGUgYGF1dG9jYXBpdGFsaXplYCBzZXR0aW5nLiBUaGUgbm9uLWRlcHJlY2F0ZWQgdmFsdWVzIGFyZSBhdmFpbGFibGUgaW4gaU9TIDUgYW5kIGxhdGVyLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgc2VudGVuY2VzYC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBub25lYDogQ29tcGxldGVseSBkaXNhYmxlcyBhdXRvbWF0aWMgY2FwaXRhbGl6YXRpb25cbiogICBgc2VudGVuY2VzYDogQXV0b21hdGljYWxseSBjYXBpdGFsaXplIHRoZSBmaXJzdCBsZXR0ZXIgb2Ygc2VudGVuY2VzLlxuKiAgIGB3b3Jkc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSB0aGUgZmlyc3QgbGV0dGVyIG9mIHdvcmRzLlxuKiAgIGBjaGFyYWN0ZXJzYDogQXV0b21hdGljYWxseSBjYXBpdGFsaXplIGFsbCBjaGFyYWN0ZXJzLlxuKiAgIGBvbmA6IERlcHJlY2F0ZWQgc2luY2UgaU9TIDUuXG4qICAgYG9mZmA6IERlcHJlY2F0ZWQgc2luY2UgaU9TIDUuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtIn1dfSx7bmFtZToibGFiZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsYWJlbCBlbGVtZW50IHJlcHJlc2VudHMgYSBjYXB0aW9uIGluIGEgdXNlciBpbnRlcmZhY2UuIFRoZSBjYXB0aW9uIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBmb3JtIGNvbnRyb2wsIGtub3duIGFzIHRoZSBsYWJlbCBlbGVtZW50J3MgbGFiZWxlZCBjb250cm9sLCBlaXRoZXIgdXNpbmcgdGhlIGZvciBhdHRyaWJ1dGUsIG9yIGJ5IHB1dHRpbmcgdGhlIGZvcm0gY29udHJvbCBpbnNpZGUgdGhlIGxhYmVsIGVsZW1lbnQgaXRzZWxmLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCB3aXRoIHdoaWNoIHRoZSBsYWJlbCBpcyBhc3NvY2lhdGVkIChpdHMgX2Zvcm0gb3duZXJfKS4gSWYgc3BlY2lmaWVkLCB0aGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBpcyB0aGUgYGlkYCBvZiBhIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIFRoaXMgbGV0cyB5b3UgcGxhY2UgbGFiZWwgZWxlbWVudHMgYW55d2hlcmUgd2l0aGluIGEgZG9jdW1lbnQsIG5vdCBqdXN0IGFzIGRlc2NlbmRhbnRzIG9mIHRoZWlyIGZvcm0gZWxlbWVudHMuJ319LHtuYW1lOiJmb3IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBbYGlkYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLWlkKSBvZiBhIFtsYWJlbGFibGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0d1aWRlL0hUTUwvQ29udGVudF9jYXRlZ29yaWVzI0Zvcm1fbGFiZWxhYmxlKSBmb3JtLXJlbGF0ZWQgZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudCBhcyB0aGUgYDxsYWJlbD5gIGVsZW1lbnQuIFRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBkb2N1bWVudCB3aXRoIGFuIGBpZGAgbWF0Y2hpbmcgdGhlIHZhbHVlIG9mIHRoZSBgZm9yYCBhdHRyaWJ1dGUgaXMgdGhlIF9sYWJlbGVkIGNvbnRyb2xfIGZvciB0aGlzIGxhYmVsIGVsZW1lbnQsIGlmIGl0IGlzIGEgbGFiZWxhYmxlIGVsZW1lbnQuIElmIGl0IGlzwqBub3QgbGFiZWxhYmxlIHRoZW4gdGhlIGBmb3JgIGF0dHJpYnV0ZSBoYXMgbm8gZWZmZWN0LiBJZiB0aGVyZSBhcmUgb3RoZXIgZWxlbWVudHMgd2hpY2ggYWxzbyBtYXRjaCB0aGUgYGlkYCB2YWx1ZSwgbGF0ZXIgaW4gdGhlIGRvY3VtZW50LCB0aGV5IGFyZSBub3QgY29uc2lkZXJlZC5cblxuKipOb3RlKio6IEEgYDxsYWJlbD5gIGVsZW1lbnQgY2FuIGhhdmUgYm90aCBhIGBmb3JgIGF0dHJpYnV0ZSBhbmQgYSBjb250YWluZWQgY29udHJvbCBlbGVtZW50LCBhcyBsb25nIGFzIHRoZSBgZm9yYCBhdHRyaWJ1dGUgcG9pbnRzIHRvIHRoZSBjb250YWluZWQgY29udHJvbCBlbGVtZW50LiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xhYmVsIn1dfSx7bmFtZToiaW5wdXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbnB1dCBlbGVtZW50IHJlcHJlc2VudHMgYSB0eXBlZCBkYXRhIGZpZWxkLCB1c3VhbGx5IHdpdGggYSBmb3JtIGNvbnRyb2wgdG8gYWxsb3cgdGhlIHVzZXIgdG8gZWRpdCB0aGUgZGF0YS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWNjZXB0In0se25hbWU6ImFsdCJ9LHtuYW1lOiJhdXRvY29tcGxldGUiLHZhbHVlU2V0OiJpbnB1dGF1dG9jb21wbGV0ZSJ9LHtuYW1lOiJhdXRvZm9jdXMiLHZhbHVlU2V0OiJ2In0se25hbWU6ImNoZWNrZWQiLHZhbHVlU2V0OiJ2In0se25hbWU6ImRpcm5hbWUifSx7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2In0se25hbWU6ImZvcm0ifSx7bmFtZToiZm9ybWFjdGlvbiJ9LHtuYW1lOiJmb3JtZW5jdHlwZSIsdmFsdWVTZXQ6ImV0In0se25hbWU6ImZvcm1tZXRob2QiLHZhbHVlU2V0OiJmbSJ9LHtuYW1lOiJmb3Jtbm92YWxpZGF0ZSIsdmFsdWVTZXQ6InYifSx7bmFtZToiZm9ybXRhcmdldCJ9LHtuYW1lOiJoZWlnaHQifSx7bmFtZToiaW5wdXRtb2RlIix2YWx1ZVNldDoiaW0ifSx7bmFtZToibGlzdCJ9LHtuYW1lOiJtYXgifSx7bmFtZToibWF4bGVuZ3RoIn0se25hbWU6Im1pbiJ9LHtuYW1lOiJtaW5sZW5ndGgifSx7bmFtZToibXVsdGlwbGUiLHZhbHVlU2V0OiJ2In0se25hbWU6Im5hbWUifSx7bmFtZToicGF0dGVybiJ9LHtuYW1lOiJwbGFjZWhvbGRlciJ9LHtuYW1lOiJyZWFkb25seSIsdmFsdWVTZXQ6InYifSx7bmFtZToicmVxdWlyZWQiLHZhbHVlU2V0OiJ2In0se25hbWU6InNpemUifSx7bmFtZToic3JjIn0se25hbWU6InN0ZXAifSx7bmFtZToidHlwZSIsdmFsdWVTZXQ6InQifSx7bmFtZToidmFsdWUifSx7bmFtZToid2lkdGgifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0In1dfSx7bmFtZToiYnV0dG9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYnV0dG9uIGVsZW1lbnQgcmVwcmVzZW50cyBhIGJ1dHRvbiBsYWJlbGVkIGJ5IGl0cyBjb250ZW50cy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYXV0b2ZvY3VzIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBsZXRzIHlvdSBzcGVjaWZ5IHRoYXQgdGhlIGJ1dHRvbiBzaG91bGQgaGF2ZSBpbnB1dCBmb2N1cyB3aGVuIHRoZSBwYWdlIGxvYWRzLCB1bmxlc3MgdGhlIHVzZXIgb3ZlcnJpZGVzIGl0LCBmb3IgZXhhbXBsZSBieSB0eXBpbmcgaW4gYSBkaWZmZXJlbnQgY29udHJvbC4gT25seSBvbmUgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQgaW4gYSBkb2N1bWVudCBjYW4gaGF2ZSB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZWQuIn19LHtuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgY2Fubm90IGludGVyYWN0IHdpdGggdGhlIGJ1dHRvbi4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGJ1dHRvbiBpbmhlcml0cyBpdHMgc2V0dGluZyBmcm9tIHRoZSBjb250YWluaW5nIGVsZW1lbnQsIGZvciBleGFtcGxlIFtgPGZpZWxkc2V0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9maWVsZHNldCAiVGhlIEhUTUwgPGZpZWxkc2V0PiBlbGVtZW50IGlzIHVzZWQgdG8gZ3JvdXAgc2V2ZXJhbCBjb250cm9scyBhcyB3ZWxsIGFzIGxhYmVscyAoPGxhYmVsPikgd2l0aGluIGEgd2ViIGZvcm0uIik7IGlmIHRoZXJlIGlzIG5vIGNvbnRhaW5pbmcgZWxlbWVudCB3aXRoIHRoZSAqKmRpc2FibGVkKiogYXR0cmlidXRlIHNldCwgdGhlbiB0aGUgYnV0dG9uIGlzIGVuYWJsZWQuXG5cbkZpcmVmb3ggd2lsbCwgdW5saWtlIG90aGVyIGJyb3dzZXJzLCBieSBkZWZhdWx0LCBbcGVyc2lzdCB0aGUgZHluYW1pYyBkaXNhYmxlZCBzdGF0ZV0oaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTk4NTgzOS9idWctd2l0aC1maXJlZm94LWRpc2FibGVkLWF0dHJpYnV0ZS1vZi1pbnB1dC1ub3QtcmVzZXR0aW5nLXdoZW4tcmVmcmVzaGluZykgb2YgYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgYWNyb3NzIHBhZ2UgbG9hZHMuIFVzZSB0aGUgW2BhdXRvY29tcGxldGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItYXV0b2NvbXBsZXRlKSBhdHRyaWJ1dGUgdG8gY29udHJvbCB0aGlzIGZlYXR1cmUuJ319LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgZm9ybSBlbGVtZW50IHRoYXQgdGhlIGJ1dHRvbiBpcyBhc3NvY2lhdGVkIHdpdGggKGl0cyBfZm9ybSBvd25lcl8pLiBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBtdXN0IGJlIHRoZSAqKmlkKiogYXR0cmlidXRlIG9mIGEgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGA8YnV0dG9uPmAgZWxlbWVudCB3aWxsIGJlIGFzc29jaWF0ZWQgdG8gYW4gYW5jZXN0b3IgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCwgaWYgb25lIGV4aXN0cy4gVGhpcyBhdHRyaWJ1dGUgZW5hYmxlcyB5b3UgdG8gYXNzb2NpYXRlIGA8YnV0dG9uPmAgZWxlbWVudHMgdG8gW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudHMgYW55d2hlcmUgd2l0aGluIGEgZG9jdW1lbnQsIG5vdCBqdXN0IGFzIGRlc2NlbmRhbnRzIG9mIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnRzLid9fSx7bmFtZToiZm9ybWFjdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIFVSSSBvZiBhIHByb2dyYW0gdGhhdCBwcm9jZXNzZXMgdGhlIGluZm9ybWF0aW9uIHN1Ym1pdHRlZCBieSB0aGUgYnV0dG9uLiBJZiBzcGVjaWZpZWQsIGl0IG92ZXJyaWRlcyB0aGUgW2BhY3Rpb25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLWFjdGlvbikgYXR0cmlidXRlIG9mIHRoZSBidXR0b24ncyBmb3JtIG93bmVyLiJ9fSx7bmFtZToiZm9ybWVuY3R5cGUiLHZhbHVlU2V0OiJldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonSWYgdGhlIGJ1dHRvbiBpcyBhIHN1Ym1pdCBidXR0b24sIHRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgdHlwZSBvZiBjb250ZW50IHRoYXQgaXMgdXNlZCB0byBzdWJtaXQgdGhlIGZvcm0gdG8gdGhlIHNlcnZlci4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgOiBUaGUgZGVmYXVsdCB2YWx1ZSBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQuXG4qICAgYG11bHRpcGFydC9mb3JtLWRhdGFgOiBVc2UgdGhpcyB2YWx1ZSBpZiB5b3UgYXJlIHVzaW5nIGFuIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQgd2l0aCB0aGUgW2B0eXBlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0I2F0dHItdHlwZSkgYXR0cmlidXRlIHNldCB0byBgZmlsZWAuXG4qICAgYHRleHQvcGxhaW5gXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgaXQgb3ZlcnJpZGVzIHRoZSBbYGVuY3R5cGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLWVuY3R5cGUpIGF0dHJpYnV0ZSBvZiB0aGUgYnV0dG9uXCdzIGZvcm0gb3duZXIuJ319LHtuYW1lOiJmb3JtbWV0aG9kIix2YWx1ZVNldDoiZm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBidXR0b24gaXMgYSBzdWJtaXQgYnV0dG9uLCB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIEhUVFAgbWV0aG9kIHRoYXQgdGhlIGJyb3dzZXIgdXNlcyB0byBzdWJtaXQgdGhlIGZvcm0uIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgcG9zdGA6IFRoZSBkYXRhIGZyb20gdGhlIGZvcm0gYXJlIGluY2x1ZGVkIGluIHRoZSBib2R5IG9mIHRoZSBmb3JtIGFuZCBzZW50IHRvIHRoZSBzZXJ2ZXIuXG4qICAgYGdldGA6IFRoZSBkYXRhIGZyb20gdGhlIGZvcm0gYXJlIGFwcGVuZGVkIHRvIHRoZSAqKmZvcm0qKiBhdHRyaWJ1dGUgVVJJLCB3aXRoIGEgJz8nIGFzIGEgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdGluZyBVUkkgaXMgc2VudCB0byB0aGUgc2VydmVyLiBVc2UgdGhpcyBtZXRob2Qgd2hlbiB0aGUgZm9ybSBoYXMgbm8gc2lkZS1lZmZlY3RzIGFuZCBjb250YWlucyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuXG5cbklmIHNwZWNpZmllZCwgdGhpcyBhdHRyaWJ1dGUgb3ZlcnJpZGVzIHRoZSBbYG1ldGhvZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtI2F0dHItbWV0aG9kKSBhdHRyaWJ1dGUgb2YgdGhlIGJ1dHRvbidzIGZvcm0gb3duZXIuIn19LHtuYW1lOiJmb3Jtbm92YWxpZGF0ZSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBidXR0b24gaXMgYSBzdWJtaXQgYnV0dG9uLCB0aGlzIEJvb2xlYW4gYXR0cmlidXRlIHNwZWNpZmllcyB0aGF0IHRoZSBmb3JtIGlzIG5vdCB0byBiZSB2YWxpZGF0ZWQgd2hlbiBpdCBpcyBzdWJtaXR0ZWQuIElmIHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgaXQgb3ZlcnJpZGVzIHRoZSBbYG5vdmFsaWRhdGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLW5vdmFsaWRhdGUpIGF0dHJpYnV0ZSBvZiB0aGUgYnV0dG9uJ3MgZm9ybSBvd25lci4ifX0se25hbWU6ImZvcm10YXJnZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBidXR0b24gaXMgYSBzdWJtaXQgYnV0dG9uLCB0aGlzIGF0dHJpYnV0ZSBpcyBhIG5hbWUgb3Iga2V5d29yZCBpbmRpY2F0aW5nIHdoZXJlIHRvIGRpc3BsYXkgdGhlIHJlc3BvbnNlIHRoYXQgaXMgcmVjZWl2ZWQgYWZ0ZXIgc3VibWl0dGluZyB0aGUgZm9ybS4gVGhpcyBpcyBhIG5hbWUgb2YsIG9yIGtleXdvcmQgZm9yLCBhIF9icm93c2luZyBjb250ZXh0XyAoZm9yIGV4YW1wbGUsIHRhYiwgd2luZG93LCBvciBpbmxpbmUgZnJhbWUpLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIGl0IG92ZXJyaWRlcyB0aGUgW2B0YXJnZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLXRhcmdldCkgYXR0cmlidXRlIG9mIHRoZSBidXR0b24ncyBmb3JtIG93bmVyLiBUaGUgZm9sbG93aW5nIGtleXdvcmRzIGhhdmUgc3BlY2lhbCBtZWFuaW5nczpcblxuKiAgIGBfc2VsZmA6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIHNhbWUgYnJvd3NpbmcgY29udGV4dCBhcyB0aGUgY3VycmVudCBvbmUuIFRoaXMgdmFsdWUgaXMgdGhlIGRlZmF1bHQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLlxuKiAgIGBfYmxhbmtgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIGEgbmV3IHVubmFtZWQgYnJvd3NpbmcgY29udGV4dC5cbiogICBgX3BhcmVudGA6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIHBhcmVudCBicm93c2luZyBjb250ZXh0IG9mIHRoZSBjdXJyZW50IG9uZS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIG9wdGlvbiBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuKiAgIGBfdG9wYDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQgKHRoYXQgaXMsIHRoZSBicm93c2luZyBjb250ZXh0IHRoYXQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGN1cnJlbnQgb25lLCBhbmQgaGFzIG5vIHBhcmVudCkuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC4ifX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYW1lIG9mIHRoZSBidXR0b24sIHdoaWNoIGlzIHN1Ym1pdHRlZCB3aXRoIHRoZSBmb3JtIGRhdGEuIn19LHtuYW1lOiJ0eXBlIix2YWx1ZVNldDoiYnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0eXBlIG9mIHRoZSBidXR0b24uIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgc3VibWl0YDogVGhlIGJ1dHRvbiBzdWJtaXRzIHRoZSBmb3JtIGRhdGEgdG8gdGhlIHNlcnZlci4gVGhpcyBpcyB0aGUgZGVmYXVsdCBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIG9yIGlmIHRoZSBhdHRyaWJ1dGUgaXMgZHluYW1pY2FsbHkgY2hhbmdlZCB0byBhbiBlbXB0eSBvciBpbnZhbGlkIHZhbHVlLlxuKiAgIGByZXNldGA6IFRoZSBidXR0b24gcmVzZXRzIGFsbCB0aGUgY29udHJvbHMgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMuXG4qICAgYGJ1dHRvbmA6IFRoZSBidXR0b24gaGFzIG5vIGRlZmF1bHQgYmVoYXZpb3IuIEl0IGNhbiBoYXZlIGNsaWVudC1zaWRlIHNjcmlwdHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbGVtZW50J3MgZXZlbnRzLCB3aGljaCBhcmUgdHJpZ2dlcmVkIHdoZW4gdGhlIGV2ZW50cyBvY2N1ci4ifX0se25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgYnV0dG9uLiBJdCBkZWZpbmVzIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGJ1dHRvbiB3aGljaCBpcyBzdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybSBkYXRhLiBUaGlzIHZhbHVlIGlzIHBhc3NlZCB0byB0aGUgc2VydmVyIGluIHBhcmFtcyB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZC4ifX0se25hbWU6ImF1dG9jb21wbGV0ZSIsZGVzY3JpcHRpb246J1RoZSB1c2Ugb2YgdGhpcyBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgaXMgbm9uc3RhbmRhcmQgYW5kIEZpcmVmb3gtc3BlY2lmaWMuIEJ5IGRlZmF1bHQsIHVubGlrZSBvdGhlciBicm93c2VycywgW0ZpcmVmb3ggcGVyc2lzdHMgdGhlIGR5bmFtaWMgZGlzYWJsZWQgc3RhdGVdKGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU5ODU4MzkvYnVnLXdpdGgtZmlyZWZveC1kaXNhYmxlZC1hdHRyaWJ1dGUtb2YtaW5wdXQtbm90LXJlc2V0dGluZy13aGVuLXJlZnJlc2hpbmcpIG9mIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIGFjcm9zcyBwYWdlIGxvYWRzLiBTZXR0aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSB0byBgb2ZmYCAoaS5lLiBgYXV0b2NvbXBsZXRlPSJvZmYiYCkgZGlzYWJsZXMgdGhpcyBmZWF0dXJlLiBTZWUgW2J1Z8KgNjU0MDcyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02NTQwNzIgImlmIGRpc2FibGVkIHN0YXRlIGlzIGNoYW5nZWQgd2l0aCBqYXZhc2NyaXB0LCB0aGUgbm9ybWFsIHN0YXRlIGRvZXNuXCd0IHJldHVybiBhZnRlciByZWZyZXNoaW5nIHRoZSBwYWdlIikuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24ifV19LHtuYW1lOiJzZWxlY3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzZWxlY3QgZWxlbWVudCByZXByZXNlbnRzIGEgY29udHJvbCBmb3Igc2VsZWN0aW5nIGFtb25nc3QgYSBzZXQgb2Ygb3B0aW9ucy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYXV0b2NvbXBsZXRlIix2YWx1ZVNldDoiaW5wdXRhdXRvY29tcGxldGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0EgW2BET01TdHJpbmdgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRE9NU3RyaW5nICJET01TdHJpbmcgaXMgYSBVVEYtMTYgU3RyaW5nLiBBcyBKYXZhU2NyaXB0IGFscmVhZHkgdXNlcyBzdWNoIHN0cmluZ3MsIERPTVN0cmluZyBpcyBtYXBwZWQgZGlyZWN0bHkgdG8gYSBTdHJpbmcuIikgcHJvdmlkaW5nIGEgaGludCBmb3IgYSBbdXNlciBhZ2VudFwnc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS91c2VyX2FnZW50ICJ1c2VyIGFnZW50XCdzOiBBIHVzZXIgYWdlbnQgaXMgYSBjb21wdXRlciBwcm9ncmFtIHJlcHJlc2VudGluZyBhIHBlcnNvbiwgZm9yIGV4YW1wbGUsIGEgYnJvd3NlciBpbiBhIFdlYiBjb250ZXh0LiIpIGF1dG9jb21wbGV0ZSBmZWF0dXJlLiBTZWUgW1RoZSBIVE1MIGF1dG9jb21wbGV0ZSBhdHRyaWJ1dGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQXR0cmlidXRlcy9hdXRvY29tcGxldGUpIGZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgdmFsdWVzIGFuZCBkZXRhaWxzIG9uIGhvdyB0byB1c2UgYXV0b2NvbXBsZXRlLid9fSx7bmFtZToiYXV0b2ZvY3VzIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBsZXRzIHlvdSBzcGVjaWZ5IHRoYXQgYSBmb3JtIGNvbnRyb2wgc2hvdWxkIGhhdmUgaW5wdXQgZm9jdXMgd2hlbiB0aGUgcGFnZSBsb2Fkcy4gT25seSBvbmUgZm9ybSBlbGVtZW50IGluIGEgZG9jdW1lbnQgY2FuIGhhdmUgdGhlIGBhdXRvZm9jdXNgIGF0dHJpYnV0ZS4ifX0se25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBjYW5ub3QgaW50ZXJhY3Qgd2l0aCB0aGUgY29udHJvbC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGNvbnRyb2wgaW5oZXJpdHMgaXRzIHNldHRpbmcgZnJvbSB0aGUgY29udGFpbmluZyBlbGVtZW50LCBmb3IgZXhhbXBsZSBgZmllbGRzZXRgOyBpZiB0aGVyZSBpcyBubyBjb250YWluaW5nIGVsZW1lbnQgd2l0aCB0aGUgYGRpc2FibGVkYCBhdHRyaWJ1dGUgc2V0LCB0aGVuIHRoZSBjb250cm9sIGlzIGVuYWJsZWQuIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBsZXRzIHlvdSBzcGVjaWZ5IHRoZSBmb3JtIGVsZW1lbnQgdG/CoHdoaWNowqB0aGUgc2VsZWN0IGVsZW1lbnQgaXMgYXNzb2NpYXRlZMKgKHRoYXQgaXMsIGl0cyAiZm9ybSBvd25lciIpLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIGl0cyB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBgaWRgIG9mIGEgZm9ybSBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50LiBUaGlzIGVuYWJsZXMgeW91IHRvIHBsYWNlIHNlbGVjdCBlbGVtZW50cyBhbnl3aGVyZSB3aXRoaW4gYSBkb2N1bWVudCwgbm90IGp1c3QgYXMgZGVzY2VuZGFudHMgb2YgdGhlaXIgZm9ybSBlbGVtZW50cy4nfX0se25hbWU6Im11bHRpcGxlIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCBtdWx0aXBsZSBvcHRpb25zIGNhbiBiZSBzZWxlY3RlZCBpbiB0aGUgbGlzdC4gSWYgaXQgaXMgbm90IHNwZWNpZmllZCwgdGhlbiBvbmx5IG9uZSBvcHRpb24gY2FuIGJlIHNlbGVjdGVkIGF0IGEgdGltZS4gV2hlbiBgbXVsdGlwbGVgIGlzIHNwZWNpZmllZCwgbW9zdCBicm93c2VycyB3aWxsIHNob3cgYSBzY3JvbGxpbmcgbGlzdCBib3ggaW5zdGVhZCBvZiBhIHNpbmdsZSBsaW5lIGRyb3Bkb3duLiJ9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBjb250cm9sLiJ9fSx7bmFtZToicmVxdWlyZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRpbmcgdGhhdCBhbiBvcHRpb24gd2l0aCBhIG5vbi1lbXB0eSBzdHJpbmcgdmFsdWUgbXVzdCBiZSBzZWxlY3RlZC4ifX0se25hbWU6InNpemUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBjb250cm9sIGlzIHByZXNlbnRlZCBhcyBhIHNjcm9sbGluZyBsaXN0IGJveCAoZS5nLiB3aGVuIGBtdWx0aXBsZWAgaXMgc3BlY2lmaWVkKSwgdGhpcyBhdHRyaWJ1dGUgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHJvd3MgaW4gdGhlIGxpc3QgdGhhdCBzaG91bGQgYmUgdmlzaWJsZSBhdCBvbmUgdGltZS4gQnJvd3NlcnMgYXJlIG5vdCByZXF1aXJlZCB0byBwcmVzZW50IGEgc2VsZWN0IGVsZW1lbnQgYXMgYSBzY3JvbGxlZCBsaXN0IGJveC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMC5cblxuKipOb3RlOioqIEFjY29yZGluZyB0byB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiwgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHNpemUgc2hvdWxkIGJlIDE7IGhvd2V2ZXIsIGluIHByYWN0aWNlLCB0aGlzIGhhcyBiZWVuIGZvdW5kIHRvIGJyZWFrIHNvbWUgd2ViIHNpdGVzLCBhbmQgbm8gb3RoZXIgYnJvd3NlciBjdXJyZW50bHkgZG9lcyB0aGF0LCBzbyBNb3ppbGxhIGhhcyBvcHRlZCB0byBjb250aW51ZSB0byByZXR1cm4gMCBmb3IgdGhlIHRpbWUgYmVpbmcgd2l0aCBGaXJlZm94LiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NlbGVjdCJ9XX0se25hbWU6ImRhdGFsaXN0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGF0YWxpc3QgZWxlbWVudCByZXByZXNlbnRzIGEgc2V0IG9mIG9wdGlvbiBlbGVtZW50cyB0aGF0IHJlcHJlc2VudCBwcmVkZWZpbmVkIG9wdGlvbnMgZm9yIG90aGVyIGNvbnRyb2xzLiBJbiB0aGUgcmVuZGVyaW5nLCB0aGUgZGF0YWxpc3QgZWxlbWVudCByZXByZXNlbnRzIG5vdGhpbmcgYW5kIGl0LCBhbG9uZyB3aXRoIGl0cyBjaGlsZHJlbiwgc2hvdWxkIGJlIGhpZGRlbi4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kYXRhbGlzdCJ9XX0se25hbWU6Im9wdGdyb3VwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgb3B0Z3JvdXAgZWxlbWVudCByZXByZXNlbnRzIGEgZ3JvdXAgb2Ygb3B0aW9uIGVsZW1lbnRzIHdpdGggYSBjb21tb24gbGFiZWwuIn0sYXR0cmlidXRlczpbe25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpcyBzZXQsIG5vbmUgb2YgdGhlIGl0ZW1zIGluIHRoaXMgb3B0aW9uIGdyb3VwIGlzIHNlbGVjdGFibGUuIE9mdGVuIGJyb3dzZXJzIGdyZXkgb3V0IHN1Y2ggY29udHJvbCBhbmQgaXQgd29uJ3QgcmVjZWl2ZSBhbnkgYnJvd3NpbmcgZXZlbnRzLCBsaWtlIG1vdXNlIGNsaWNrcyBvciBmb2N1cy1yZWxhdGVkIG9uZXMuIn19LHtuYW1lOiJsYWJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5hbWUgb2YgdGhlIGdyb3VwIG9mIG9wdGlvbnMsIHdoaWNoIHRoZSBicm93c2VyIGNhbiB1c2Ugd2hlbiBsYWJlbGluZyB0aGUgb3B0aW9ucyBpbiB0aGUgdXNlciBpbnRlcmZhY2UuIFRoaXMgYXR0cmlidXRlIGlzIG1hbmRhdG9yeSBpZiB0aGlzIGVsZW1lbnQgaXMgdXNlZC4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vcHRncm91cCJ9XX0se25hbWU6Im9wdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG9wdGlvbiBlbGVtZW50IHJlcHJlc2VudHMgYW4gb3B0aW9uIGluIGEgc2VsZWN0IGVsZW1lbnQgb3IgYXMgcGFydCBvZiBhIGxpc3Qgb2Ygc3VnZ2VzdGlvbnMgaW4gYSBkYXRhbGlzdCBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0lmIHRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaXMgc2V0LCB0aGlzIG9wdGlvbiBpcyBub3QgY2hlY2thYmxlLiBPZnRlbiBicm93c2VycyBncmV5IG91dCBzdWNoIGNvbnRyb2wgYW5kIGl0IHdvblwndCByZWNlaXZlIGFueSBicm93c2luZyBldmVudCwgbGlrZSBtb3VzZSBjbGlja3Mgb3IgZm9jdXMtcmVsYXRlZCBvbmVzLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCB0aGUgZWxlbWVudCBjYW4gc3RpbGwgYmUgZGlzYWJsZWQgaWYgb25lIG9mIGl0cyBhbmNlc3RvcnMgaXMgYSBkaXNhYmxlZCBbYDxvcHRncm91cD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb3B0Z3JvdXAgIlRoZSBIVE1MIDxvcHRncm91cD4gZWxlbWVudCBjcmVhdGVzIGEgZ3JvdXBpbmcgb2Ygb3B0aW9ucyB3aXRoaW4gYSA8c2VsZWN0PiBlbGVtZW50LiIpIGVsZW1lbnQuJ319LHtuYW1lOiJsYWJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaXMgdGV4dCBmb3IgdGhlIGxhYmVsIGluZGljYXRpbmcgdGhlIG1lYW5pbmcgb2YgdGhlIG9wdGlvbi4gSWYgdGhlIGBsYWJlbGAgYXR0cmlidXRlIGlzbid0IGRlZmluZWQsIGl0cyB2YWx1ZSBpcyB0aGF0IG9mIHRoZSBlbGVtZW50IHRleHQgY29udGVudC4ifX0se25hbWU6InNlbGVjdGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonSWYgcHJlc2VudCwgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgb3B0aW9uIGlzIGluaXRpYWxseSBzZWxlY3RlZC4gSWYgdGhlIGA8b3B0aW9uPmAgZWxlbWVudCBpcyB0aGUgZGVzY2VuZGFudCBvZiBhIFtgPHNlbGVjdD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2VsZWN0ICJUaGUgSFRNTCA8c2VsZWN0PiBlbGVtZW50IHJlcHJlc2VudHMgYSBjb250cm9sIHRoYXQgcHJvdmlkZXMgYSBtZW51IG9mIG9wdGlvbnMiKSBlbGVtZW50IHdob3NlIFtgbXVsdGlwbGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2VsZWN0I2F0dHItbXVsdGlwbGUpIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCBvbmx5IG9uZSBzaW5nbGUgYDxvcHRpb24+YCBvZiB0aGlzIFtgPHNlbGVjdD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2VsZWN0ICJUaGUgSFRNTCA8c2VsZWN0PiBlbGVtZW50IHJlcHJlc2VudHMgYSBjb250cm9sIHRoYXQgcHJvdmlkZXMgYSBtZW51IG9mIG9wdGlvbnMiKSBlbGVtZW50IG1heSBoYXZlIHRoZSBgc2VsZWN0ZWRgIGF0dHJpYnV0ZS4nfX0se25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY29udGVudCBvZiB0aGlzIGF0dHJpYnV0ZSByZXByZXNlbnRzIHRoZSB2YWx1ZSB0byBiZSBzdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybSwgc2hvdWxkIHRoaXMgb3B0aW9uIGJlIHNlbGVjdGVkLsKgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgb21pdHRlZCwgdGhlIHZhbHVlIGlzIHRha2VuIGZyb20gdGhlIHRleHQgY29udGVudCBvZiB0aGUgb3B0aW9uIGVsZW1lbnQuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb3B0aW9uIn1dfSx7bmFtZToidGV4dGFyZWEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0ZXh0YXJlYSBlbGVtZW50IHJlcHJlc2VudHMgYSBtdWx0aWxpbmUgcGxhaW4gdGV4dCBlZGl0IGNvbnRyb2wgZm9yIHRoZSBlbGVtZW50J3MgcmF3IHZhbHVlLiBUaGUgY29udGVudHMgb2YgdGhlIGNvbnRyb2wgcmVwcmVzZW50IHRoZSBjb250cm9sJ3MgZGVmYXVsdCB2YWx1ZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYXV0b2NvbXBsZXRlIix2YWx1ZVNldDoiaW5wdXRhdXRvY29tcGxldGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbCBjYW4gYmUgYXV0b21hdGljYWxseSBjb21wbGV0ZWQgYnkgdGhlIGJyb3dzZXIuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgb2ZmYDogVGhlIHVzZXIgbXVzdCBleHBsaWNpdGx5IGVudGVyIGEgdmFsdWUgaW50byB0aGlzIGZpZWxkIGZvciBldmVyeSB1c2UsIG9yIHRoZSBkb2N1bWVudCBwcm92aWRlcyBpdHMgb3duIGF1dG8tY29tcGxldGlvbiBtZXRob2Q7IHRoZSBicm93c2VyIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgY29tcGxldGUgdGhlIGVudHJ5LlxuKiAgIGBvbmA6IFRoZSBicm93c2VyIGNhbiBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlIHRoZSB2YWx1ZSBiYXNlZCBvbiB2YWx1ZXMgdGhhdCB0aGUgdXNlciBoYXMgZW50ZXJlZCBkdXJpbmcgcHJldmlvdXMgdXNlcy5cblxuSWYgdGhlIGBhdXRvY29tcGxldGVgIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkIG9uIGEgYDx0ZXh0YXJlYT5gIGVsZW1lbnQsIHRoZW4gdGhlIGJyb3dzZXIgdXNlcyB0aGUgYGF1dG9jb21wbGV0ZWAgYXR0cmlidXRlIHZhbHVlIG9mIHRoZSBgPHRleHRhcmVhPmAgZWxlbWVudFwncyBmb3JtIG93bmVyLiBUaGUgZm9ybSBvd25lciBpcyBlaXRoZXIgdGhlIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgdGhhdCB0aGlzIGA8dGV4dGFyZWE+YCBlbGVtZW50IGlzIGEgZGVzY2VuZGFudCBvZiBvciB0aGUgZm9ybSBlbGVtZW50IHdob3NlIGBpZGAgaXMgc3BlY2lmaWVkIGJ5IHRoZSBgZm9ybWAgYXR0cmlidXRlIG9mIHRoZSBpbnB1dCBlbGVtZW50LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBbYGF1dG9jb21wbGV0ZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtI2F0dHItYXV0b2NvbXBsZXRlKSBhdHRyaWJ1dGUgaW4gW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikuJ319LHtuYW1lOiJhdXRvZm9jdXMiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGxldHMgeW91IHNwZWNpZnkgdGhhdCBhIGZvcm0gY29udHJvbCBzaG91bGQgaGF2ZSBpbnB1dCBmb2N1cyB3aGVuIHRoZSBwYWdlIGxvYWRzLiBPbmx5IG9uZSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudCBpbiBhIGRvY3VtZW50IGNhbiBoYXZlIHRoaXMgYXR0cmlidXRlIHNwZWNpZmllZC4ifX0se25hbWU6ImNvbHMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB2aXNpYmxlIHdpZHRoIG9mIHRoZSB0ZXh0IGNvbnRyb2wsIGluIGF2ZXJhZ2UgY2hhcmFjdGVyIHdpZHRocy4gSWYgaXQgaXMgc3BlY2lmaWVkLCBpdCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlci4gSWYgaXQgaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYDIwYC4ifX0se25hbWU6ImRpcm5hbWUifSx7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBpbnRlcmFjdCB3aXRoIHRoZSBjb250cm9sLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgY29udHJvbCBpbmhlcml0cyBpdHMgc2V0dGluZyBmcm9tIHRoZSBjb250YWluaW5nIGVsZW1lbnQsIGZvciBleGFtcGxlIFtgPGZpZWxkc2V0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9maWVsZHNldCAiVGhlIEhUTUwgPGZpZWxkc2V0PiBlbGVtZW50IGlzIHVzZWQgdG8gZ3JvdXAgc2V2ZXJhbCBjb250cm9scyBhcyB3ZWxsIGFzIGxhYmVscyAoPGxhYmVsPikgd2l0aGluIGEgd2ViIGZvcm0uIik7IGlmIHRoZXJlIGlzIG5vIGNvbnRhaW5pbmcgZWxlbWVudCB3aGVuIHRoZSBgZGlzYWJsZWRgIGF0dHJpYnV0ZSBpcyBzZXQsIHRoZSBjb250cm9sIGlzIGVuYWJsZWQuJ319LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgZm9ybSBlbGVtZW50IHRoYXQgdGhlIGA8dGV4dGFyZWE+YCBlbGVtZW50IGlzIGFzc29jaWF0ZWQgd2l0aCAoaXRzICJmb3JtIG93bmVyIikuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIG11c3QgYmUgdGhlIGBpZGAgb2YgYSBmb3JtIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBgPHRleHRhcmVhPmAgZWxlbWVudCBtdXN0IGJlIGEgZGVzY2VuZGFudCBvZiBhIGZvcm0gZWxlbWVudC4gVGhpcyBhdHRyaWJ1dGUgZW5hYmxlcyB5b3UgdG8gcGxhY2UgYDx0ZXh0YXJlYT5gIGVsZW1lbnRzIGFueXdoZXJlIHdpdGhpbiBhIGRvY3VtZW50LCBub3QganVzdCBhcyBkZXNjZW5kYW50cyBvZiBmb3JtIGVsZW1lbnRzLid9fSx7bmFtZToiaW5wdXRtb2RlIix2YWx1ZVNldDoiaW0ifSx7bmFtZToibWF4bGVuZ3RoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyAodW5pY29kZSBjb2RlIHBvaW50cykgdGhhdCB0aGUgdXNlciBjYW4gZW50ZXIuIElmIHRoaXMgdmFsdWUgaXNuJ3Qgc3BlY2lmaWVkLCB0aGUgdXNlciBjYW4gZW50ZXIgYW4gdW5saW1pdGVkIG51bWJlciBvZiBjaGFyYWN0ZXJzLiJ9fSx7bmFtZToibWlubGVuZ3RoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWluaW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyAodW5pY29kZSBjb2RlIHBvaW50cykgcmVxdWlyZWQgdGhhdCB0aGUgdXNlciBzaG91bGQgZW50ZXIuIn19LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBvZiB0aGUgY29udHJvbC4ifX0se25hbWU6InBsYWNlaG9sZGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBIGhpbnQgdG8gdGhlIHVzZXIgb2Ygd2hhdCBjYW4gYmUgZW50ZXJlZCBpbiB0aGUgY29udHJvbC4gQ2FycmlhZ2UgcmV0dXJucyBvciBsaW5lLWZlZWRzIHdpdGhpbiB0aGUgcGxhY2Vob2xkZXIgdGV4dCBtdXN0IGJlIHRyZWF0ZWQgYXMgbGluZSBicmVha3Mgd2hlbiByZW5kZXJpbmcgdGhlIGhpbnQuXG5cbioqTm90ZToqKiBQbGFjZWhvbGRlcnMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBzaG93IGFuIGV4YW1wbGUgb2YgdGhlIHR5cGUgb2YgZGF0YSB0aGF0IHNob3VsZCBiZSBlbnRlcmVkIGludG8gYSBmb3JtOyB0aGV5IGFyZSBfbm90XyBhIHN1YnN0aXR1dGUgZm9yIGEgcHJvcGVyIFtgPGxhYmVsPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9sYWJlbCAiVGhlIEhUTUwgPGxhYmVsPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjYXB0aW9uIGZvciBhbiBpdGVtIGluIGEgdXNlciBpbnRlcmZhY2UuIikgZWxlbWVudCB0aWVkIHRvIHRoZSBpbnB1dC4gU2VlIFtMYWJlbHMgYW5kIHBsYWNlaG9sZGVyc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0I0xhYmVsc19hbmRfcGxhY2Vob2xkZXJzICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgaW4gWzxpbnB1dD46IFRoZSBJbnB1dCAoRm9ybSBJbnB1dCkgZWxlbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZm9yIGEgZnVsbCBleHBsYW5hdGlvbi4nfX0se25hbWU6InJlYWRvbmx5Iix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBjYW5ub3QgbW9kaWZ5IHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbC4gVW5saWtlIHRoZSBgZGlzYWJsZWRgIGF0dHJpYnV0ZSwgdGhlIGByZWFkb25seWAgYXR0cmlidXRlIGRvZXMgbm90IHByZXZlbnQgdGhlIHVzZXIgZnJvbSBjbGlja2luZyBvciBzZWxlY3RpbmcgaW4gdGhlIGNvbnRyb2wuIFRoZSB2YWx1ZSBvZiBhIHJlYWQtb25seSBjb250cm9sIGlzIHN0aWxsIHN1Ym1pdHRlZCB3aXRoIHRoZSBmb3JtLiJ9fSx7bmFtZToicmVxdWlyZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhhdCB0aGUgdXNlciBtdXN0IGZpbGwgaW4gYSB2YWx1ZSBiZWZvcmUgc3VibWl0dGluZyBhIGZvcm0uIn19LHtuYW1lOiJyb3dzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbnVtYmVyIG9mIHZpc2libGUgdGV4dCBsaW5lcyBmb3IgdGhlIGNvbnRyb2wuIn19LHtuYW1lOiJ3cmFwIix2YWx1ZVNldDoidyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIGhvdyB0aGUgY29udHJvbCB3cmFwcyB0ZXh0LiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGhhcmRgOiBUaGUgYnJvd3NlciBhdXRvbWF0aWNhbGx5IGluc2VydHMgbGluZSBicmVha3MgKENSK0xGKSBzbyB0aGF0IGVhY2ggbGluZSBoYXMgbm8gbW9yZSB0aGFuIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbDsgdGhlIGBjb2xzYCBhdHRyaWJ1dGUgbXVzdCBhbHNvIGJlIHNwZWNpZmllZCBmb3IgdGhpcyB0byB0YWtlIGVmZmVjdC5cbiogICBgc29mdGA6IFRoZSBicm93c2VyIGVuc3VyZXMgdGhhdCBhbGwgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlIGNvbnNpc3Qgb2YgYSBDUitMRiBwYWlyLCBidXQgZG9lcyBub3QgaW5zZXJ0IGFueSBhZGRpdGlvbmFsIGxpbmUgYnJlYWtzLlxuKiAgIGBvZmZgIDogTGlrZSBgc29mdGAgYnV0IGNoYW5nZXMgYXBwZWFyYW5jZSB0byBgd2hpdGUtc3BhY2U6IHByZWAgc28gbGluZSBzZWdtZW50cyBleGNlZWRpbmcgYGNvbHNgIGFyZSBub3Qgd3JhcHBlZCBhbmQgdGhlIGA8dGV4dGFyZWE+YCBiZWNvbWVzIGhvcml6b250YWxseSBzY3JvbGxhYmxlLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCBgc29mdGAgaXMgaXRzIGRlZmF1bHQgdmFsdWUuIn19LHtuYW1lOiJhdXRvY2FwaXRhbGl6ZSIsZGVzY3JpcHRpb246IlRoaXMgaXMgYSBub24tc3RhbmRhcmQgYXR0cmlidXRlIHN1cHBvcnRlZCBieSBXZWJLaXQgb24gaU9TICh0aGVyZWZvcmUgbmVhcmx5IGFsbCBicm93c2VycyBydW5uaW5nIG9uIGlPUywgaW5jbHVkaW5nIFNhZmFyaSwgRmlyZWZveCwgYW5kIENocm9tZSksIHdoaWNoIGNvbnRyb2xzIHdoZXRoZXIgYW5kIGhvdyB0aGUgdGV4dCB2YWx1ZSBzaG91bGQgYmUgYXV0b21hdGljYWxseSBjYXBpdGFsaXplZCBhcyBpdCBpcyBlbnRlcmVkL2VkaXRlZCBieSB0aGUgdXNlci4gVGhlIG5vbi1kZXByZWNhdGVkIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGluIGlPUyA1IGFuZCBsYXRlci4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBub25lYDogQ29tcGxldGVseSBkaXNhYmxlcyBhdXRvbWF0aWMgY2FwaXRhbGl6YXRpb24uXG4qICAgYHNlbnRlbmNlc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSB0aGUgZmlyc3QgbGV0dGVyIG9mIHNlbnRlbmNlcy5cbiogICBgd29yZHNgOiBBdXRvbWF0aWNhbGx5IGNhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiB3b3Jkcy5cbiogICBgY2hhcmFjdGVyc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSBhbGwgY2hhcmFjdGVycy5cbiogICBgb25gOiBEZXByZWNhdGVkIHNpbmNlIGlPUyA1LlxuKiAgIGBvZmZgOiBEZXByZWNhdGVkIHNpbmNlIGlPUyA1LiJ9LHtuYW1lOiJzcGVsbGNoZWNrIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGA8dGV4dGFyZWE+YCBpcyBzdWJqZWN0IHRvIHNwZWxsIGNoZWNraW5nIGJ5IHRoZSB1bmRlcmx5aW5nIGJyb3dzZXIvT1MuIHRoZSB2YWx1ZSBjYW4gYmU6XG5cbiogICBgdHJ1ZWA6IEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IG5lZWRzIHRvIGhhdmUgaXRzIHNwZWxsaW5nIGFuZCBncmFtbWFyIGNoZWNrZWQuXG4qICAgYGRlZmF1bHRgIDogSW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgaXMgdG8gYWN0IGFjY29yZGluZyB0byBhIGRlZmF1bHQgYmVoYXZpb3IsIHBvc3NpYmx5IGJhc2VkIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzIG93biBgc3BlbGxjaGVja2AgdmFsdWUuXG4qICAgYGZhbHNlYCA6IEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBub3QgYmUgc3BlbGwgY2hlY2tlZC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RleHRhcmVhIn1dfSx7bmFtZToib3V0cHV0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgb3V0cHV0IGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgcmVzdWx0IG9mIGEgY2FsY3VsYXRpb24gcGVyZm9ybWVkIGJ5IHRoZSBhcHBsaWNhdGlvbiwgb3IgdGhlIHJlc3VsdCBvZiBhIHVzZXIgYWN0aW9uLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJmb3IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2Ygb3RoZXIgZWxlbWVudHPigJkgW2BpZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaWQpcywgaW5kaWNhdGluZyB0aGF0IHRob3NlIGVsZW1lbnRzIGNvbnRyaWJ1dGVkIGlucHV0IHZhbHVlcyB0byAob3Igb3RoZXJ3aXNlIGFmZmVjdGVkKSB0aGUgY2FsY3VsYXRpb24uIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgW2Zvcm0gZWxlbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0pIHRoYXQgdGhpcyBlbGVtZW50IGlzIGFzc29jaWF0ZWQgd2l0aCAoaXRzICJmb3JtIG93bmVyIikuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIG11c3QgYmUgYW4gYGlkYCBvZiBhIGZvcm0gZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIG91dHB1dCBlbGVtZW50IG11c3QgYmUgYSBkZXNjZW5kYW50IG9mIGEgZm9ybSBlbGVtZW50LiBUaGlzIGF0dHJpYnV0ZSBlbmFibGVzIHlvdSB0byBwbGFjZSBvdXRwdXQgZWxlbWVudHMgYW55d2hlcmUgd2l0aGluIGEgZG9jdW1lbnQsIG5vdCBqdXN0IGFzIGRlc2NlbmRhbnRzIG9mIHRoZWlyIGZvcm0gZWxlbWVudHMuJ319LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgbmFtZSBvZiB0aGUgZWxlbWVudCwgZXhwb3NlZCBpbiB0aGUgW2BIVE1MRm9ybUVsZW1lbnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEZvcm1FbGVtZW50ICJUaGUgSFRNTEZvcm1FbGVtZW50IGludGVyZmFjZSByZXByZXNlbnRzIGEgPGZvcm0+IGVsZW1lbnQgaW4gdGhlIERPTTsgaXQgYWxsb3dzIGFjY2VzcyB0byBhbmQgaW4gc29tZSBjYXNlcyBtb2RpZmljYXRpb24gb2YgYXNwZWN0cyBvZiB0aGUgZm9ybSwgYXMgd2VsbCBhcyBhY2Nlc3MgdG8gaXRzIGNvbXBvbmVudCBlbGVtZW50cy4iKSBBUEkuJ319XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb3V0cHV0In1dfSx7bmFtZToicHJvZ3Jlc3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwcm9ncmVzcyBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGNvbXBsZXRpb24gcHJvZ3Jlc3Mgb2YgYSB0YXNrLiBUaGUgcHJvZ3Jlc3MgaXMgZWl0aGVyIGluZGV0ZXJtaW5hdGUsIGluZGljYXRpbmcgdGhhdCBwcm9ncmVzcyBpcyBiZWluZyBtYWRlIGJ1dCB0aGF0IGl0IGlzIG5vdCBjbGVhciBob3cgbXVjaCBtb3JlIHdvcmsgcmVtYWlucyB0byBiZSBkb25lIGJlZm9yZSB0aGUgdGFzayBpcyBjb21wbGV0ZSAoZS5nLiBiZWNhdXNlIHRoZSB0YXNrIGlzIHdhaXRpbmcgZm9yIGEgcmVtb3RlIGhvc3QgdG8gcmVzcG9uZCksIG9yIHRoZSBwcm9ncmVzcyBpcyBhIG51bWJlciBpbiB0aGUgcmFuZ2UgemVybyB0byBhIG1heGltdW0sIGdpdmluZyB0aGUgZnJhY3Rpb24gb2Ygd29yayB0aGF0IGhhcyBzbyBmYXIgYmVlbiBjb21wbGV0ZWQuIn0sYXR0cmlidXRlczpbe25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IG11Y2ggb2YgdGhlIHRhc2sgdGhhdCBoYXMgYmVlbiBjb21wbGV0ZWQuIEl0IG11c3QgYmUgYSB2YWxpZCBmbG9hdGluZyBwb2ludCBudW1iZXIgYmV0d2VlbiAwIGFuZCBgbWF4YCwgb3IgYmV0d2VlbiAwIGFuZCAxIGlmIGBtYXhgIGlzIG9taXR0ZWQuIElmIHRoZXJlIGlzIG5vIGB2YWx1ZWAgYXR0cmlidXRlLCB0aGUgcHJvZ3Jlc3MgYmFyIGlzIGluZGV0ZXJtaW5hdGU7IHRoaXMgaW5kaWNhdGVzIHRoYXQgYW4gYWN0aXZpdHkgaXMgb25nb2luZyB3aXRoIG5vIGluZGljYXRpb24gb2YgaG93IGxvbmcgaXQgaXMgZXhwZWN0ZWQgdG8gdGFrZS4ifX0se25hbWU6Im1heCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgZGVzY3JpYmVzIGhvdyBtdWNoIHdvcmsgdGhlIHRhc2sgaW5kaWNhdGVkIGJ5IHRoZSBgcHJvZ3Jlc3NgIGVsZW1lbnQgcmVxdWlyZXMuIFRoZSBgbWF4YCBhdHRyaWJ1dGUsIGlmIHByZXNlbnQsIG11c3QgaGF2ZSBhIHZhbHVlIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBiZSBhIHZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlci4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMS4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9wcm9ncmVzcyJ9XX0se25hbWU6Im1ldGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWV0ZXIgZWxlbWVudCByZXByZXNlbnRzIGEgc2NhbGFyIG1lYXN1cmVtZW50IHdpdGhpbiBhIGtub3duIHJhbmdlLCBvciBhIGZyYWN0aW9uYWwgdmFsdWU7IGZvciBleGFtcGxlIGRpc2sgdXNhZ2UsIHRoZSByZWxldmFuY2Ugb2YgYSBxdWVyeSByZXN1bHQsIG9yIHRoZSBmcmFjdGlvbiBvZiBhIHZvdGluZyBwb3B1bGF0aW9uIHRvIGhhdmUgc2VsZWN0ZWQgYSBwYXJ0aWN1bGFyIGNhbmRpZGF0ZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToidmFsdWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjdXJyZW50IG51bWVyaWMgdmFsdWUuIFRoaXMgbXVzdCBiZSBiZXR3ZWVuIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyAoYG1pbmAgYXR0cmlidXRlIGFuZCBgbWF4YCBhdHRyaWJ1dGUpIGlmIHRoZXkgYXJlIHNwZWNpZmllZC4gSWYgdW5zcGVjaWZpZWQgb3IgbWFsZm9ybWVkLCB0aGUgdmFsdWUgaXMgMC4gSWYgc3BlY2lmaWVkLCBidXQgbm90IHdpdGhpbiB0aGUgcmFuZ2UgZ2l2ZW4gYnkgdGhlIGBtaW5gIGF0dHJpYnV0ZSBhbmQgYG1heGAgYXR0cmlidXRlLCB0aGUgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIG5lYXJlc3QgZW5kIG9mIHRoZSByYW5nZS5cblxuKipVc2FnZSBub3RlOioqIFVubGVzcyB0aGUgYHZhbHVlYCBhdHRyaWJ1dGUgaXMgYmV0d2VlbiBgMGAgYW5kIGAxYCAoaW5jbHVzaXZlKSwgdGhlIGBtaW5gIGFuZCBgbWF4YCBhdHRyaWJ1dGVzIHNob3VsZCBkZWZpbmUgdGhlIHJhbmdlIHNvIHRoYXQgdGhlIGB2YWx1ZWAgYXR0cmlidXRlJ3MgdmFsdWUgaXMgd2l0aGluIGl0LiJ9fSx7bmFtZToibWluIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbG93ZXIgbnVtZXJpYyBib3VuZCBvZiB0aGUgbWVhc3VyZWQgcmFuZ2UuIFRoaXMgbXVzdCBiZSBsZXNzIHRoYW4gdGhlIG1heGltdW0gdmFsdWUgKGBtYXhgIGF0dHJpYnV0ZSksIGlmIHNwZWNpZmllZC4gSWYgdW5zcGVjaWZpZWQsIHRoZSBtaW5pbXVtIHZhbHVlIGlzIDAuIn19LHtuYW1lOiJtYXgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1cHBlciBudW1lcmljIGJvdW5kIG9mIHRoZSBtZWFzdXJlZCByYW5nZS4gVGhpcyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbWluaW11bSB2YWx1ZSAoYG1pbmAgYXR0cmlidXRlKSwgaWYgc3BlY2lmaWVkLiBJZiB1bnNwZWNpZmllZCwgdGhlIG1heGltdW0gdmFsdWUgaXMgMS4ifX0se25hbWU6ImxvdyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVwcGVyIG51bWVyaWMgYm91bmQgb2YgdGhlIGxvdyBlbmQgb2YgdGhlIG1lYXN1cmVkIHJhbmdlLiBUaGlzIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBtaW5pbXVtIHZhbHVlIChgbWluYCBhdHRyaWJ1dGUpLCBhbmQgaXQgYWxzbyBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgaGlnaCB2YWx1ZSBhbmQgbWF4aW11bSB2YWx1ZSAoYGhpZ2hgIGF0dHJpYnV0ZSBhbmQgYG1heGAgYXR0cmlidXRlLCByZXNwZWN0aXZlbHkpLCBpZiBhbnkgYXJlIHNwZWNpZmllZC4gSWYgdW5zcGVjaWZpZWQsIG9yIGlmIGxlc3MgdGhhbiB0aGUgbWluaW11bSB2YWx1ZSwgdGhlIGBsb3dgIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBtaW5pbXVtIHZhbHVlLiJ9fSx7bmFtZToiaGlnaCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxvd2VyIG51bWVyaWMgYm91bmQgb2YgdGhlIGhpZ2ggZW5kIG9mIHRoZSBtZWFzdXJlZCByYW5nZS4gVGhpcyBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgbWF4aW11bSB2YWx1ZSAoYG1heGAgYXR0cmlidXRlKSwgYW5kIGl0IGFsc28gbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIGxvdyB2YWx1ZSBhbmQgbWluaW11bSB2YWx1ZSAoYGxvd2AgYXR0cmlidXRlIGFuZCAqKm1pbioqIGF0dHJpYnV0ZSwgcmVzcGVjdGl2ZWx5KSwgaWYgYW55IGFyZSBzcGVjaWZpZWQuIElmIHVuc3BlY2lmaWVkLCBvciBpZiBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gdmFsdWUsIHRoZSBgaGlnaGAgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIG1heGltdW0gdmFsdWUuIn19LHtuYW1lOiJvcHRpbXVtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIG9wdGltYWwgbnVtZXJpYyB2YWx1ZS4gSXQgbXVzdCBiZSB3aXRoaW4gdGhlIHJhbmdlIChhcyBkZWZpbmVkIGJ5IHRoZSBgbWluYCBhdHRyaWJ1dGUgYW5kIGBtYXhgIGF0dHJpYnV0ZSkuIFdoZW4gdXNlZCB3aXRoIHRoZSBgbG93YCBhdHRyaWJ1dGUgYW5kIGBoaWdoYCBhdHRyaWJ1dGUsIGl0IGdpdmVzIGFuIGluZGljYXRpb24gd2hlcmUgYWxvbmcgdGhlIHJhbmdlIGlzIGNvbnNpZGVyZWQgcHJlZmVyYWJsZS4gRm9yIGV4YW1wbGUsIGlmIGl0IGlzIGJldHdlZW4gdGhlIGBtaW5gIGF0dHJpYnV0ZSBhbmQgdGhlIGBsb3dgIGF0dHJpYnV0ZSwgdGhlbiB0aGUgbG93ZXIgcmFuZ2UgaXMgY29uc2lkZXJlZCBwcmVmZXJyZWQuIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgYXNzb2NpYXRlcyB0aGUgZWxlbWVudCB3aXRoIGEgYGZvcm1gIGVsZW1lbnQgdGhhdCBoYXMgb3duZXJzaGlwIG9mIHRoZSBgbWV0ZXJgIGVsZW1lbnQuIEZvciBleGFtcGxlLCBhIGBtZXRlcmAgbWlnaHQgYmUgZGlzcGxheWluZyBhIHJhbmdlIGNvcnJlc3BvbmRpbmcgdG8gYW4gYGlucHV0YCBlbGVtZW50IG9mIGB0eXBlYCBfbnVtYmVyXy4gVGhpcyBhdHRyaWJ1dGUgaXMgb25seSB1c2VkIGlmIHRoZSBgbWV0ZXJgIGVsZW1lbnQgaXMgYmVpbmcgdXNlZCBhcyBhIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50OyBldmVuIHRoZW4sIGl0IG1heSBiZSBvbWl0dGVkIGlmIHRoZSBlbGVtZW50IGFwcGVhcnMgYXMgYSBkZXNjZW5kYW50IG9mIGEgYGZvcm1gIGVsZW1lbnQuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRlciJ9XX0se25hbWU6ImZpZWxkc2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZmllbGRzZXQgZWxlbWVudCByZXByZXNlbnRzIGEgc2V0IG9mIGZvcm0gY29udHJvbHMgb3B0aW9uYWxseSBncm91cGVkIHVuZGVyIGEgY29tbW9uIG5hbWUuIn0sYXR0cmlidXRlczpbe25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpcyBzZXQsIGFsbCBmb3JtIGNvbnRyb2xzIHRoYXQgYXJlIGRlc2NlbmRhbnRzIG9mIHRoZSBgPGZpZWxkc2V0PmAsIGFyZSBkaXNhYmxlZCwgbWVhbmluZyB0aGV5IGFyZSBub3QgZWRpdGFibGUgYW5kIHdvbid0IGJlIHN1Ym1pdHRlZCBhbG9uZyB3aXRoIHRoZSBgPGZvcm0+YC4gVGhleSB3b24ndCByZWNlaXZlIGFueSBicm93c2luZyBldmVudHMsIGxpa2UgbW91c2UgY2xpY2tzIG9yIGZvY3VzLXJlbGF0ZWQgZXZlbnRzLiBCeSBkZWZhdWx0IGJyb3dzZXJzIGRpc3BsYXkgc3VjaCBjb250cm9scyBncmF5ZWQgb3V0LiBOb3RlIHRoYXQgZm9ybSBlbGVtZW50cyBpbnNpZGUgdGhlIFtgPGxlZ2VuZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGVnZW5kIFwiVGhlIEhUTUwgPGxlZ2VuZD4gZWxlbWVudCByZXByZXNlbnRzIGEgY2FwdGlvbiBmb3IgdGhlIGNvbnRlbnQgb2YgaXRzIHBhcmVudCA8ZmllbGRzZXQ+LlwiKSBlbGVtZW50IHdvbid0IGJlIGRpc2FibGVkLiJ9fSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgdGFrZXMgdGhlIHZhbHVlIG9mIHRoZSBgaWRgIGF0dHJpYnV0ZSBvZiBhIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgeW91IHdhbnQgdGhlIGA8ZmllbGRzZXQ+YCB0byBiZSBwYXJ0IG9mLCBldmVuIGlmIGl0IGlzIG5vdCBpbnNpZGUgdGhlIGZvcm0uJ319LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdyb3VwLlxuXG4qKk5vdGUqKjogVGhlIGNhcHRpb24gZm9yIHRoZSBmaWVsZHNldCBpcyBnaXZlbiBieSB0aGUgZmlyc3QgW2A8bGVnZW5kPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9sZWdlbmQgIlRoZSBIVE1MIDxsZWdlbmQ+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNhcHRpb24gZm9yIHRoZSBjb250ZW50IG9mIGl0cyBwYXJlbnQgPGZpZWxkc2V0Pi4iKSBlbGVtZW50IG5lc3RlZCBpbnNpZGUgaXQuJ319XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZmllbGRzZXQifV19LHtuYW1lOiJsZWdlbmQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsZWdlbmQgZWxlbWVudCByZXByZXNlbnRzIGEgY2FwdGlvbiBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBsZWdlbmQgZWxlbWVudCdzIHBhcmVudCBmaWVsZHNldCBlbGVtZW50LCBpZiBhbnkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGVnZW5kIn1dfSx7bmFtZToiZGV0YWlscyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRldGFpbHMgZWxlbWVudCByZXByZXNlbnRzIGEgZGlzY2xvc3VyZSB3aWRnZXQgZnJvbSB3aGljaCB0aGUgdXNlciBjYW4gb2J0YWluIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb3IgY29udHJvbHMuIn0sYXR0cmlidXRlczpbe25hbWU6Im9wZW4iLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgZGV0YWlscyDigJQgdGhhdCBpcywgdGhlIGNvbnRlbnRzIG9mIHRoZSBgPGRldGFpbHM+YCBlbGVtZW50IOKAlCBhcmUgY3VycmVudGx5IHZpc2libGUuIFRoZSBkZWZhdWx0LCBgZmFsc2VgLCBtZWFucyB0aGUgZGV0YWlscyBhcmUgbm90IHZpc2libGUuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGV0YWlscyJ9XX0se25hbWU6InN1bW1hcnkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzdW1tYXJ5IGVsZW1lbnQgcmVwcmVzZW50cyBhIHN1bW1hcnksIGNhcHRpb24sIG9yIGxlZ2VuZCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdW1tYXJ5IGVsZW1lbnQncyBwYXJlbnQgZGV0YWlscyBlbGVtZW50LCBpZiBhbnkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3VtbWFyeSJ9XX0se25hbWU6ImRpYWxvZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRpYWxvZyBlbGVtZW50IHJlcHJlc2VudHMgYSBwYXJ0IG9mIGFuIGFwcGxpY2F0aW9uIHRoYXQgYSB1c2VyIGludGVyYWN0cyB3aXRoIHRvIHBlcmZvcm0gYSB0YXNrLCBmb3IgZXhhbXBsZSBhIGRpYWxvZyBib3gsIGluc3BlY3Rvciwgb3Igd2luZG93LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJvcGVuIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGRpYWxvZyBpcyBhY3RpdmUgYW5kIGF2YWlsYWJsZSBmb3IgaW50ZXJhY3Rpb24uIFdoZW4gdGhlIGBvcGVuYCBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGRpYWxvZyBzaG91bGRuJ3QgYmUgc2hvd24gdG8gdGhlIHVzZXIuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kaWFsb2cifV19LHtuYW1lOiJzY3JpcHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzY3JpcHQgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBpbmNsdWRlIGR5bmFtaWMgc2NyaXB0IGFuZCBkYXRhIGJsb2NrcyBpbiB0aGVpciBkb2N1bWVudHMuIFRoZSBlbGVtZW50IGRvZXMgbm90IHJlcHJlc2VudCBjb250ZW50IGZvciB0aGUgdXNlci4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3JjIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIFVSSSBvZiBhbiBleHRlcm5hbCBzY3JpcHQ7IHRoaXMgY2FuIGJlIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gZW1iZWRkaW5nIGEgc2NyaXB0IGRpcmVjdGx5IHdpdGhpbiBhIGRvY3VtZW50LlxuXG5JZiBhIGBzY3JpcHRgIGVsZW1lbnQgaGFzIGEgYHNyY2AgYXR0cmlidXRlIHNwZWNpZmllZCwgaXQgc2hvdWxkIG5vdCBoYXZlIGEgc2NyaXB0IGVtYmVkZGVkIGluc2lkZSBpdHMgdGFncy4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgdHlwZSBvZiBzY3JpcHQgcmVwcmVzZW50ZWQuIFRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSB3aWxsIGJlIGluIG9uZSBvZiB0aGUgZm9sbG93aW5nIGNhdGVnb3JpZXM6XG5cbiogICAqKk9taXR0ZWQgb3IgYSBKYXZhU2NyaXB0IE1JTUUgdHlwZToqKiBGb3IgSFRNTDUtY29tcGxpYW50IGJyb3dzZXJzIHRoaXMgaW5kaWNhdGVzIHRoZSBzY3JpcHQgaXMgSmF2YVNjcmlwdC4gSFRNTDUgc3BlY2lmaWNhdGlvbiB1cmdlcyBhdXRob3JzIHRvIG9taXQgdGhlIGF0dHJpYnV0ZSByYXRoZXIgdGhhbiBwcm92aWRlIGEgcmVkdW5kYW50IE1JTUUgdHlwZS4gSW4gZWFybGllciBicm93c2VycywgdGhpcyBpZGVudGlmaWVkIHRoZSBzY3JpcHRpbmcgbGFuZ3VhZ2Ugb2YgdGhlIGVtYmVkZGVkIG9yIGltcG9ydGVkICh2aWEgdGhlIGBzcmNgIGF0dHJpYnV0ZSkgY29kZS4gSmF2YVNjcmlwdCBNSU1FIHR5cGVzIGFyZSBbbGlzdGVkIGluIHRoZSBzcGVjaWZpY2F0aW9uXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0Jhc2ljc19vZl9IVFRQL01JTUVfdHlwZXMjSmF2YVNjcmlwdF90eXBlcykuXG4qICAgKipgbW9kdWxlYDoqKiBGb3IgSFRNTDUtY29tcGxpYW50IGJyb3dzZXJzIHRoZSBjb2RlIGlzIHRyZWF0ZWQgYXMgYSBKYXZhU2NyaXB0IG1vZHVsZS4gVGhlIHByb2Nlc3Npbmcgb2YgdGhlIHNjcmlwdCBjb250ZW50cyBpcyBub3QgYWZmZWN0ZWQgYnkgdGhlIGBjaGFyc2V0YCBhbmQgYGRlZmVyYCBhdHRyaWJ1dGVzLiBGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgYG1vZHVsZWAsIHNlZSBbRVM2IGluIERlcHRoOiBNb2R1bGVzXShodHRwczovL2hhY2tzLm1vemlsbGEub3JnLzIwMTUvMDgvZXM2LWluLWRlcHRoLW1vZHVsZXMvKS4gQ29kZSBtYXkgYmVoYXZlIGRpZmZlcmVudGx5IHdoZW4gdGhlIGBtb2R1bGVgIGtleXdvcmQgaXMgdXNlZC5cbiogICAqKkFueSBvdGhlciB2YWx1ZToqKiBUaGUgZW1iZWRkZWQgY29udGVudCBpcyB0cmVhdGVkIGFzIGEgZGF0YSBibG9jayB3aGljaCB3b25cJ3QgYmUgcHJvY2Vzc2VkIGJ5IHRoZSBicm93c2VyLiBEZXZlbG9wZXJzIG11c3QgdXNlIGEgdmFsaWQgTUlNRSB0eXBlIHRoYXQgaXMgbm90IGEgSmF2YVNjcmlwdCBNSU1FIHR5cGUgdG8gZGVub3RlIGRhdGEgYmxvY2tzLiBUaGUgYHNyY2AgYXR0cmlidXRlIHdpbGwgYmUgaWdub3JlZC5cblxuKipOb3RlOioqIGluIEZpcmVmb3ggeW91IGNvdWxkIHNwZWNpZnkgdGhlIHZlcnNpb24gb2YgSmF2YVNjcmlwdCBjb250YWluZWQgaW4gYSBgPHNjcmlwdD5gIGVsZW1lbnQgYnkgaW5jbHVkaW5nIGEgbm9uLXN0YW5kYXJkIGB2ZXJzaW9uYCBwYXJhbWV0ZXIgaW5zaWRlIHRoZSBgdHlwZWAgYXR0cmlidXRlIOKAlCBmb3IgZXhhbXBsZSBgdHlwZT0idGV4dC9qYXZhc2NyaXB0O3ZlcnNpb249MS44ImAuIFRoaXMgaGFzIGJlZW4gcmVtb3ZlZCBpbiBGaXJlZm94IDU5IChzZWUgW2J1Z8KgMTQyODc0NV0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyODc0NSAiRklYRUQ6IFJlbW92ZSBzdXBwb3J0IGZvciB2ZXJzaW9uIHBhcmFtZXRlciBmcm9tIHNjcmlwdCBsb2FkZXIiKSkuJ319LHtuYW1lOiJjaGFyc2V0In0se25hbWU6ImFzeW5jIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBpcyBhIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRpbmcgdGhhdCB0aGUgYnJvd3NlciBzaG91bGQsIGlmIHBvc3NpYmxlLCBsb2FkIHRoZSBzY3JpcHQgYXN5bmNocm9ub3VzbHkuXG5cblRoaXMgYXR0cmlidXRlIG11c3Qgbm90IGJlIHVzZWQgaWYgdGhlIGBzcmNgIGF0dHJpYnV0ZSBpcyBhYnNlbnQgKGkuZS4gZm9yIGlubGluZSBzY3JpcHRzKS4gSWYgaXQgaXMgaW5jbHVkZWQgaW4gdGhpcyBjYXNlIGl0IHdpbGwgaGF2ZSBubyBlZmZlY3QuXG5cbkJyb3dzZXJzIHVzdWFsbHkgYXNzdW1lIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIGFuZCBsb2FkIHNjcmlwdHMgc3luY2hyb25vdXNseSwgKGkuZS4gYGFzeW5jPSJmYWxzZSJgKSBkdXJpbmcgSFRNTCBwYXJzaW5nLlxuXG5EeW5hbWljYWxseSBpbnNlcnRlZCBzY3JpcHRzICh1c2luZyBbYGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoKWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Eb2N1bWVudC9jcmVhdGVFbGVtZW50ICJJbiBhbiBIVE1MIGRvY3VtZW50LCB0aGUgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgpIG1ldGhvZCBjcmVhdGVzIHRoZSBIVE1MIGVsZW1lbnQgc3BlY2lmaWVkIGJ5IHRhZ05hbWUsIG9yIGFuIEhUTUxVbmtub3duRWxlbWVudCBpZiB0YWdOYW1lIGlzblwndCByZWNvZ25pemVkLiIpKSBsb2FkIGFzeW5jaHJvbm91c2x5IGJ5IGRlZmF1bHQsIHNvIHRvIHR1cm4gb24gc3luY2hyb25vdXMgbG9hZGluZyAoaS5lLiBzY3JpcHRzIGxvYWQgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBpbnNlcnRlZCkgc2V0IGBhc3luYz0iZmFsc2UiYC5cblxuU2VlIFtCcm93c2VyIGNvbXBhdGliaWxpdHldKCNCcm93c2VyX2NvbXBhdGliaWxpdHkpIGZvciBub3RlcyBvbiBicm93c2VyIHN1cHBvcnQuIFNlZSBhbHNvIFtBc3luYyBzY3JpcHRzIGZvciBhc20uanNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2FtZXMvVGVjaG5pcXVlcy9Bc3luY19zY3JpcHRzKS4nfX0se25hbWU6ImRlZmVyIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpcyBzZXQgdG8gaW5kaWNhdGUgdG8gYSBicm93c2VyIHRoYXQgdGhlIHNjcmlwdCBpcyBtZWFudCB0byBiZSBleGVjdXRlZCBhZnRlciB0aGUgZG9jdW1lbnQgaGFzIGJlZW4gcGFyc2VkLCBidXQgYmVmb3JlIGZpcmluZyBbYERPTUNvbnRlbnRMb2FkZWRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9FdmVudHMvRE9NQ29udGVudExvYWRlZCAiL2VuLVVTL2RvY3MvV2ViL0V2ZW50cy9ET01Db250ZW50TG9hZGVkIikuXG5cblNjcmlwdHMgd2l0aCB0aGUgYGRlZmVyYCBhdHRyaWJ1dGUgd2lsbCBwcmV2ZW50IHRoZSBgRE9NQ29udGVudExvYWRlZGAgZXZlbnQgZnJvbSBmaXJpbmcgdW50aWwgdGhlIHNjcmlwdCBoYXMgbG9hZGVkIGFuZCBmaW5pc2hlZCBldmFsdWF0aW5nLlxuXG5UaGlzIGF0dHJpYnV0ZSBtdXN0IG5vdCBiZSB1c2VkIGlmIHRoZSBgc3JjYCBhdHRyaWJ1dGUgaXMgYWJzZW50IChpLmUuIGZvciBpbmxpbmUgc2NyaXB0cyksIGluIHRoaXMgY2FzZSBpdCB3b3VsZCBoYXZlIG5vIGVmZmVjdC5cblxuVG8gYWNoaWV2ZSBhIHNpbWlsYXIgZWZmZWN0IGZvciBkeW5hbWljYWxseSBpbnNlcnRlZCBzY3JpcHRzIHVzZSBgYXN5bmM9ImZhbHNlImAgaW5zdGVhZC4gU2NyaXB0cyB3aXRoIHRoZSBgZGVmZXJgIGF0dHJpYnV0ZSB3aWxsIGV4ZWN1dGUgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXBwZWFyIGluIHRoZSBkb2N1bWVudC4nfX0se25hbWU6ImNyb3Nzb3JpZ2luIix2YWx1ZVNldDoieG8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J05vcm1hbCBgc2NyaXB0YCBlbGVtZW50cyBwYXNzIG1pbmltYWwgaW5mb3JtYXRpb24gdG8gdGhlIFtgd2luZG93Lm9uZXJyb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvR2xvYmFsRXZlbnRIYW5kbGVycy9vbmVycm9yICJUaGUgb25lcnJvciBwcm9wZXJ0eSBvZiB0aGUgR2xvYmFsRXZlbnRIYW5kbGVycyBtaXhpbiBpcyBhbiBFdmVudEhhbmRsZXIgdGhhdCBwcm9jZXNzZXMgZXJyb3IgZXZlbnRzLiIpIGZvciBzY3JpcHRzIHdoaWNoIGRvIG5vdCBwYXNzIHRoZSBzdGFuZGFyZCBbQ09SU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9DT1JTICJDT1JTOiBDT1JTIChDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZykgaXMgYSBzeXN0ZW0sIGNvbnNpc3Rpbmcgb2YgdHJhbnNtaXR0aW5nIEhUVFAgaGVhZGVycywgdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgYnJvd3NlcnMgYmxvY2sgZnJvbnRlbmQgSmF2YVNjcmlwdCBjb2RlIGZyb20gYWNjZXNzaW5nIHJlc3BvbnNlcyBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzLiIpIGNoZWNrcy4gVG8gYWxsb3cgZXJyb3IgbG9nZ2luZyBmb3Igc2l0ZXMgd2hpY2ggdXNlIGEgc2VwYXJhdGUgZG9tYWluIGZvciBzdGF0aWMgbWVkaWEsIHVzZSB0aGlzIGF0dHJpYnV0ZS4gU2VlIFtDT1JTIHNldHRpbmdzIGF0dHJpYnV0ZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQ09SU19zZXR0aW5nc19hdHRyaWJ1dGVzKSBmb3IgYSBtb3JlIGRlc2NyaXB0aXZlIGV4cGxhbmF0aW9uIG9mIGl0cyB2YWxpZCBhcmd1bWVudHMuJ319LHtuYW1lOiJub25jZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBjcnlwdG9ncmFwaGljIG5vbmNlIChudW1iZXIgdXNlZCBvbmNlKSB0byB3aGl0ZWxpc3QgaW5saW5lIHNjcmlwdHMgaW4gYSBbc2NyaXB0LXNyYyBDb250ZW50LVNlY3VyaXR5LVBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0NvbnRlbnQtU2VjdXJpdHktUG9saWN5L3NjcmlwdC1zcmMpLiBUaGUgc2VydmVyIG11c3QgZ2VuZXJhdGUgYSB1bmlxdWUgbm9uY2UgdmFsdWUgZWFjaCB0aW1lIGl0IHRyYW5zbWl0cyBhIHBvbGljeS4gSXQgaXMgY3JpdGljYWwgdG8gcHJvdmlkZSBhIG5vbmNlIHRoYXQgY2Fubm90IGJlIGd1ZXNzZWQgYXMgYnlwYXNzaW5nIGEgcmVzb3VyY2UncyBwb2xpY3kgaXMgb3RoZXJ3aXNlIHRyaXZpYWwuIn19LHtuYW1lOiJpbnRlZ3JpdHkiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBpbmxpbmUgbWV0YWRhdGEgdGhhdCBhIHVzZXIgYWdlbnQgY2FuIHVzZSB0byB2ZXJpZnkgdGhhdCBhIGZldGNoZWQgcmVzb3VyY2UgaGFzIGJlZW4gZGVsaXZlcmVkIGZyZWUgb2YgdW5leHBlY3RlZCBtYW5pcHVsYXRpb24uIFNlZSBbU3VicmVzb3VyY2UgSW50ZWdyaXR5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TdWJyZXNvdXJjZV9JbnRlZ3JpdHkpLiJ9LHtuYW1lOiJub21vZHVsZSIsZGVzY3JpcHRpb246IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaXMgc2V0IHRvIGluZGljYXRlIHRoYXQgdGhlIHNjcmlwdCBzaG91bGQgbm90IGJlIGV4ZWN1dGVkIGluIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCBbRVMyMDE1IG1vZHVsZXNdKGh0dHBzOi8vaGFja3MubW96aWxsYS5vcmcvMjAxNS8wOC9lczYtaW4tZGVwdGgtbW9kdWxlcy8pIOKAlCBpbiBlZmZlY3QsIHRoaXMgY2FuIGJlIHVzZWQgdG8gc2VydmUgZmFsbGJhY2sgc2NyaXB0cyB0byBvbGRlciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IG1vZHVsYXIgSmF2YVNjcmlwdCBjb2RlLiJ9LHtuYW1lOiJyZWZlcnJlcnBvbGljeSIsZGVzY3JpcHRpb246J0luZGljYXRlcyB3aGljaCBbcmVmZXJyZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Eb2N1bWVudC9yZWZlcnJlcikgdG8gc2VuZCB3aGVuIGZldGNoaW5nIHRoZSBzY3JpcHQsIG9yIHJlc291cmNlcyBmZXRjaGVkIGJ5IHRoZSBzY3JpcHQ6XG5cbiogICBgbm8tcmVmZXJyZXJgOiBUaGUgW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQuXG4qICAgYG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlYCAoZGVmYXVsdCk6IFRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudCB0byBbb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L29yaWdpbiAib3JpZ2luOiBXZWIgY29udGVudFwncyBvcmlnaW4gaXMgZGVmaW5lZCBieSB0aGUgc2NoZW1lIChwcm90b2NvbCksIGhvc3QgKGRvbWFpbiksIGFuZCBwb3J0IG9mIHRoZSBVUkwgdXNlZCB0byBhY2Nlc3MgaXQuIFR3byBvYmplY3RzIGhhdmUgdGhlIHNhbWUgb3JpZ2luIG9ubHkgd2hlbiB0aGUgc2NoZW1lLCBob3N0LCBhbmQgcG9ydCBhbGwgbWF0Y2guIilzIHdpdGhvdXQgW1RMU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9UTFMgIlRMUzogVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpLCBwcmV2aW91c2x5IGtub3duIGFzIFNlY3VyZSBTb2NrZXRzIExheWVyIChTU0wpLCBpcyBhIHByb3RvY29sIHVzZWQgYnkgYXBwbGljYXRpb25zIHRvIGNvbW11bmljYXRlIHNlY3VyZWx5IGFjcm9zcyBhIG5ldHdvcmssIHByZXZlbnRpbmcgdGFtcGVyaW5nIHdpdGggYW5kIGVhdmVzZHJvcHBpbmcgb24gZW1haWwsIHdlYiBicm93c2luZywgbWVzc2FnaW5nLCBhbmQgb3RoZXIgcHJvdG9jb2xzLiIpIChbSFRUUFNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvSFRUUFMgIkhUVFBTOiBIVFRQUyAoSFRUUCBTZWN1cmUpIGlzIGFuIGVuY3J5cHRlZCB2ZXJzaW9uIG9mIHRoZSBIVFRQIHByb3RvY29sLiBJdCB1c3VhbGx5IHVzZXMgU1NMIG9yIFRMUyB0byBlbmNyeXB0IGFsbCBjb21tdW5pY2F0aW9uIGJldHdlZW4gYSBjbGllbnQgYW5kIGEgc2VydmVyLiBUaGlzIHNlY3VyZSBjb25uZWN0aW9uIGFsbG93cyBjbGllbnRzIHRvIHNhZmVseSBleGNoYW5nZSBzZW5zaXRpdmUgZGF0YSB3aXRoIGEgc2VydmVyLCBmb3IgZXhhbXBsZSBmb3IgYmFua2luZyBhY3Rpdml0aWVzIG9yIG9ubGluZSBzaG9wcGluZy4iKSkuXG4qICAgYG9yaWdpbmA6IFRoZSBzZW50IHJlZmVycmVyIHdpbGwgYmUgbGltaXRlZCB0byB0aGUgb3JpZ2luIG9mIHRoZSByZWZlcnJpbmcgcGFnZTogaXRzIFtzY2hlbWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQXJjaGl2ZS9Nb3ppbGxhL1VSSVNjaGVtZSksIFtob3N0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L2hvc3QgImhvc3Q6IEEgaG9zdCBpcyBhIGRldmljZSBjb25uZWN0ZWQgdG8gdGhlIEludGVybmV0IChvciBhIGxvY2FsIG5ldHdvcmspLiBTb21lIGhvc3RzIGNhbGxlZCBzZXJ2ZXJzIG9mZmVyIGFkZGl0aW9uYWwgc2VydmljZXMgbGlrZSBzZXJ2aW5nIHdlYnBhZ2VzIG9yIHN0b3JpbmcgZmlsZXMgYW5kIGVtYWlscy4iKSwgYW5kIFtwb3J0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3BvcnQgInBvcnQ6IEZvciBhIGNvbXB1dGVyIGNvbm5lY3RlZCB0byBhIG5ldHdvcmsgd2l0aCBhbiBJUCBhZGRyZXNzLCBhIHBvcnQgaXMgYSBjb21tdW5pY2F0aW9uIGVuZHBvaW50LiBQb3J0cyBhcmUgZGVzaWduYXRlZCBieSBudW1iZXJzLCBhbmQgYmVsb3cgMTAyNCBlYWNoIHBvcnQgaXMgYXNzb2NpYXRlZCBieSBkZWZhdWx0IHdpdGggYSBzcGVjaWZpYyBwcm90b2NvbC4iKS5cbiogICBgb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYDogVGhlIHJlZmVycmVyIHNlbnQgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydC4gTmF2aWdhdGlvbnMgb24gdGhlIHNhbWUgb3JpZ2luIHdpbGwgc3RpbGwgaW5jbHVkZSB0aGUgcGF0aC5cbiogICBgc2FtZS1vcmlnaW5gOiBBIHJlZmVycmVyIHdpbGwgYmUgc2VudCBmb3IgW3NhbWUgb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1NhbWUtb3JpZ2luX3BvbGljeSAic2FtZSBvcmlnaW46IFRoZSBzYW1lLW9yaWdpbiBwb2xpY3kgaXMgYSBjcml0aWNhbCBzZWN1cml0eSBtZWNoYW5pc20gdGhhdCByZXN0cmljdHMgaG93IGEgZG9jdW1lbnQgb3Igc2NyaXB0IGxvYWRlZCBmcm9tIG9uZSBvcmlnaW4gY2FuIGludGVyYWN0IHdpdGggYSByZXNvdXJjZSBmcm9tIGFub3RoZXIgb3JpZ2luLiIpLCBidXQgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIHdpbGwgY29udGFpbiBubyByZWZlcnJlciBpbmZvcm1hdGlvbi5cbiogICBgc3RyaWN0LW9yaWdpbmA6IE9ubHkgc2VuZCB0aGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBhcyB0aGUgcmVmZXJyZXIgd2hlbiB0aGUgcHJvdG9jb2wgc2VjdXJpdHkgbGV2ZWwgc3RheXMgdGhlIHNhbWUgKGUuZy4gSFRUUFPihpJIVFRQUyksIGJ1dCBkb25cJ3Qgc2VuZCBpdCB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChlLmcuIEhUVFBT4oaSSFRUUCkuXG4qICAgYHN0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gOiBTZW5kIGEgZnVsbCBVUkwgd2hlbiBwZXJmb3JtaW5nIGEgc2FtZS1vcmlnaW4gcmVxdWVzdCwgYnV0IG9ubHkgc2VuZCB0aGUgb3JpZ2luIHdoZW4gdGhlIHByb3RvY29sIHNlY3VyaXR5IGxldmVsIHN0YXlzIHRoZSBzYW1lIChlLmcuSFRUUFPihpJIVFRQUyksIGFuZCBzZW5kIG5vIGhlYWRlciB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChlLmcuIEhUVFBT4oaSSFRUUCkuXG4qICAgYHVuc2FmZS11cmxgOiBUaGUgcmVmZXJyZXIgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW4gX2FuZF8gdGhlIHBhdGggKGJ1dCBub3QgdGhlIFtmcmFnbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMvaGFzaCksIFtwYXNzd29yZF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMvcGFzc3dvcmQpLCBvciBbdXNlcm5hbWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL3VzZXJuYW1lKSkuICoqVGhpcyB2YWx1ZSBpcyB1bnNhZmUqKiwgYmVjYXVzZSBpdCBsZWFrcyBvcmlnaW5zIGFuZCBwYXRocyBmcm9tIFRMUy1wcm90ZWN0ZWQgcmVzb3VyY2VzIHRvIGluc2VjdXJlIG9yaWdpbnMuXG5cbioqTm90ZSoqOiBBbiBlbXB0eSBzdHJpbmcgdmFsdWUgKGAiImApIGlzIGJvdGggdGhlIGRlZmF1bHQgdmFsdWUsIGFuZCBhIGZhbGxiYWNrIHZhbHVlIGlmIGByZWZlcnJlcnBvbGljeWAgaXMgbm90IHN1cHBvcnRlZC4gSWYgYHJlZmVycmVycG9saWN5YCBpcyBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgb24gdGhlIGA8c2NyaXB0PmAgZWxlbWVudCwgaXQgd2lsbCBhZG9wdCBhIGhpZ2hlci1sZXZlbCByZWZlcnJlciBwb2xpY3ksIGkuZS4gb25lIHNldCBvbiB0aGUgd2hvbGUgZG9jdW1lbnQgb3IgZG9tYWluLiBJZiBhIGhpZ2hlci1sZXZlbCBwb2xpY3kgaXMgbm90IGF2YWlsYWJsZSzCoHRoZSBlbXB0eSBzdHJpbmcgaXMgdHJlYXRlZCBhcyBiZWluZyBlcXVpdmFsZW50IHRvIGBuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZWAuJ30se25hbWU6InRleHQiLGRlc2NyaXB0aW9uOiJMaWtlIHRoZSBgdGV4dENvbnRlbnRgIGF0dHJpYnV0ZSwgdGhpcyBhdHRyaWJ1dGUgc2V0cyB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBlbGVtZW50LiBVbmxpa2UgdGhlIGB0ZXh0Q29udGVudGAgYXR0cmlidXRlLCBob3dldmVyLCB0aGlzIGF0dHJpYnV0ZSBpcyBldmFsdWF0ZWQgYXMgZXhlY3V0YWJsZSBjb2RlIGFmdGVyIHRoZSBub2RlIGlzIGluc2VydGVkIGludG8gdGhlIERPTS4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NjcmlwdCJ9XX0se25hbWU6Im5vc2NyaXB0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbm9zY3JpcHQgZWxlbWVudCByZXByZXNlbnRzIG5vdGhpbmcgaWYgc2NyaXB0aW5nIGlzIGVuYWJsZWQsIGFuZCByZXByZXNlbnRzIGl0cyBjaGlsZHJlbiBpZiBzY3JpcHRpbmcgaXMgZGlzYWJsZWQuIEl0IGlzIHVzZWQgdG8gcHJlc2VudCBkaWZmZXJlbnQgbWFya3VwIHRvIHVzZXIgYWdlbnRzIHRoYXQgc3VwcG9ydCBzY3JpcHRpbmcgYW5kIHRob3NlIHRoYXQgZG9uJ3Qgc3VwcG9ydCBzY3JpcHRpbmcsIGJ5IGFmZmVjdGluZyBob3cgdGhlIGRvY3VtZW50IGlzIHBhcnNlZC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ub3NjcmlwdCJ9XX0se25hbWU6InRlbXBsYXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGVtcGxhdGUgZWxlbWVudCBpcyB1c2VkIHRvIGRlY2xhcmUgZnJhZ21lbnRzIG9mIEhUTUwgdGhhdCBjYW4gYmUgY2xvbmVkIGFuZCBpbnNlcnRlZCBpbiB0aGUgZG9jdW1lbnQgYnkgc2NyaXB0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RlbXBsYXRlIn1dfSx7bmFtZToiY2FudmFzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY2FudmFzIGVsZW1lbnQgcHJvdmlkZXMgc2NyaXB0cyB3aXRoIGEgcmVzb2x1dGlvbi1kZXBlbmRlbnQgYml0bWFwIGNhbnZhcywgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIHJlbmRlcmluZyBncmFwaHMsIGdhbWUgZ3JhcGhpY3MsIGFydCwgb3Igb3RoZXIgdmlzdWFsIGltYWdlcyBvbiB0aGUgZmx5LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHdpZHRoIG9mIHRoZSBjb29yZGluYXRlIHNwYWNlIGluIENTUyBwaXhlbHMuIERlZmF1bHRzIHRvIDMwMC4ifX0se25hbWU6ImhlaWdodCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhlaWdodCBvZiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBpbiBDU1MgcGl4ZWxzLiBEZWZhdWx0cyB0byAxNTAuIn19LHtuYW1lOiJtb3otb3BhcXVlIixkZXNjcmlwdGlvbjoiTGV0cyB0aGUgY2FudmFzIGtub3cgd2hldGhlciBvciBub3QgdHJhbnNsdWNlbmN5IHdpbGwgYmUgYSBmYWN0b3IuIElmIHRoZSBjYW52YXMga25vd3MgdGhlcmUncyBubyB0cmFuc2x1Y2VuY3ksIHBhaW50aW5nIHBlcmZvcm1hbmNlIGNhbiBiZSBvcHRpbWl6ZWQuIFRoaXMgaXMgb25seSBzdXBwb3J0ZWQgYnkgTW96aWxsYS1iYXNlZCBicm93c2VyczsgdXNlIHRoZSBzdGFuZGFyZGl6ZWQgW2BjYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7IGFscGhhOiBmYWxzZSB9KWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MQ2FudmFzRWxlbWVudC9nZXRDb250ZXh0IFwiVGhlIEhUTUxDYW52YXNFbGVtZW50LmdldENvbnRleHQoKSBtZXRob2QgcmV0dXJucyBhIGRyYXdpbmcgY29udGV4dCBvbiB0aGUgY2FudmFzLCBvciBudWxsIGlmIHRoZSBjb250ZXh0IGlkZW50aWZpZXIgaXMgbm90IHN1cHBvcnRlZC5cIikgaW5zdGVhZC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhbnZhcyJ9XX1dLGdsb2JhbEF0dHJpYnV0ZXM6W3tuYW1lOiJhY2Nlc3NrZXkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlByb3ZpZGVzIGEgaGludCBmb3IgZ2VuZXJhdGluZyBhIGtleWJvYXJkIHNob3J0Y3V0IGZvciB0aGUgY3VycmVudCBlbGVtZW50LiBUaGlzIGF0dHJpYnV0ZSBjb25zaXN0cyBvZiBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGNoYXJhY3RlcnMuIFRoZSBicm93c2VyIHNob3VsZCB1c2UgdGhlIGZpcnN0IG9uZSB0aGF0IGV4aXN0cyBvbiB0aGUgY29tcHV0ZXIga2V5Ym9hcmQgbGF5b3V0LiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvYWNjZXNza2V5In1dfSx7bmFtZToiYXV0b2NhcGl0YWxpemUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvbnRyb2xzIHdoZXRoZXIgYW5kIGhvdyB0ZXh0IGlucHV0IGlzIGF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZWQgYXMgaXQgaXMgZW50ZXJlZC9lZGl0ZWQgYnkgdGhlIHVzZXIuIEl0IGNhbiBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYG9mZmAgb3IgYG5vbmVgLCBubyBhdXRvY2FwaXRhbGl6YXRpb24gaXMgYXBwbGllZCAoYWxsIGxldHRlcnMgZGVmYXVsdCB0byBsb3dlcmNhc2UpXG4qICAgYG9uYCBvciBgc2VudGVuY2VzYCwgdGhlIGZpcnN0IGxldHRlciBvZiBlYWNoIHNlbnRlbmNlIGRlZmF1bHRzIHRvIGEgY2FwaXRhbCBsZXR0ZXI7IGFsbCBvdGhlciBsZXR0ZXJzIGRlZmF1bHQgdG8gbG93ZXJjYXNlXG4qICAgYHdvcmRzYCwgdGhlIGZpcnN0IGxldHRlciBvZiBlYWNoIHdvcmQgZGVmYXVsdHMgdG8gYSBjYXBpdGFsIGxldHRlcjsgYWxsIG90aGVyIGxldHRlcnMgZGVmYXVsdCB0byBsb3dlcmNhc2VcbiogICBgY2hhcmFjdGVyc2AsIGFsbCBsZXR0ZXJzIHNob3VsZCBkZWZhdWx0IHRvIHVwcGVyY2FzZSJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvYXV0b2NhcGl0YWxpemUifV19LHtuYW1lOiJjbGFzcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgY2xhc3NlcyBvZiB0aGUgZWxlbWVudC4gQ2xhc3NlcyBhbGxvd3MgQ1NTIGFuZCBKYXZhU2NyaXB0IHRvIHNlbGVjdCBhbmQgYWNjZXNzIHNwZWNpZmljIGVsZW1lbnRzIHZpYSB0aGUgW2NsYXNzIHNlbGVjdG9yc10oL2VuLVVTL2RvY3MvV2ViL0NTUy9DbGFzc19zZWxlY3RvcnMpIG9yIGZ1bmN0aW9ucyBsaWtlIHRoZSBtZXRob2QgW2BEb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKClgXSgvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50L2dldEVsZW1lbnRzQnlDbGFzc05hbWUgInJldHVybnMgYW4gYXJyYXktbGlrZSBvYmplY3Qgb2YgYWxsIGNoaWxkIGVsZW1lbnRzIHdoaWNoIGhhdmUgYWxsIG9mIHRoZSBnaXZlbiBjbGFzcyBuYW1lcy4iKS4nfSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2NsYXNzIn1dfSx7bmFtZToiY29udGVudGVkaXRhYmxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIGlmIHRoZSBlbGVtZW50IHNob3VsZCBiZSBlZGl0YWJsZSBieSB0aGUgdXNlci4gSWYgc28sIHRoZSBicm93c2VyIG1vZGlmaWVzIGl0cyB3aWRnZXQgdG8gYWxsb3cgZWRpdGluZy4gVGhlIGF0dHJpYnV0ZSBtdXN0IHRha2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYHRydWVgIG9yIHRoZSBfZW1wdHkgc3RyaW5nXywgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgbXVzdCBiZSBlZGl0YWJsZTtcbiogICBgZmFsc2VgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBtdXN0IG5vdCBiZSBlZGl0YWJsZS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2NvbnRlbnRlZGl0YWJsZSJ9XX0se25hbWU6ImNvbnRleHRtZW51IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgYFsqKmlkKipdKCNhdHRyLWlkKWAgb2YgYSBbYDxtZW51PmBdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWVudSAiVGhlIEhUTUwgPG1lbnU+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGdyb3VwIG9mIGNvbW1hbmRzIHRoYXQgYSB1c2VyIGNhbiBwZXJmb3JtIG9yIGFjdGl2YXRlLiBUaGlzIGluY2x1ZGVzIGJvdGggbGlzdCBtZW51cywgd2hpY2ggbWlnaHQgYXBwZWFyIGFjcm9zcyB0aGUgdG9wIG9mIGEgc2NyZWVuLCBhcyB3ZWxsIGFzIGNvbnRleHQgbWVudXMsIHN1Y2ggYXMgdGhvc2UgdGhhdCBtaWdodCBhcHBlYXIgdW5kZXJuZWF0aCBhIGJ1dHRvbiBhZnRlciBpdCBoYXMgYmVlbiBjbGlja2VkLiIpIHRvIHVzZSBhcyB0aGUgY29udGV4dHVhbCBtZW51IGZvciB0aGlzIGVsZW1lbnQuJ30scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9jb250ZXh0bWVudSJ9XX0se25hbWU6ImRpciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGluZyB0aGUgZGlyZWN0aW9uYWxpdHkgb2YgdGhlIGVsZW1lbnQncyB0ZXh0LiBJdCBjYW4gaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGBsdHJgLCB3aGljaCBtZWFucyBfbGVmdCB0byByaWdodF8gYW5kIGlzIHRvIGJlIHVzZWQgZm9yIGxhbmd1YWdlcyB0aGF0IGFyZSB3cml0dGVuIGZyb20gdGhlIGxlZnQgdG8gdGhlIHJpZ2h0IChsaWtlIEVuZ2xpc2gpO1xuKiAgIGBydGxgLCB3aGljaCBtZWFucyBfcmlnaHQgdG8gbGVmdF8gYW5kIGlzIHRvIGJlIHVzZWQgZm9yIGxhbmd1YWdlcyB0aGF0IGFyZSB3cml0dGVuIGZyb20gdGhlIHJpZ2h0IHRvIHRoZSBsZWZ0IChsaWtlIEFyYWJpYyk7XG4qICAgYGF1dG9gLCB3aGljaCBsZXRzIHRoZSB1c2VyIGFnZW50IGRlY2lkZS4gSXQgdXNlcyBhIGJhc2ljIGFsZ29yaXRobSBhcyBpdCBwYXJzZXMgdGhlIGNoYXJhY3RlcnMgaW5zaWRlIHRoZSBlbGVtZW50IHVudGlsIGl0IGZpbmRzIGEgY2hhcmFjdGVyIHdpdGggYSBzdHJvbmcgZGlyZWN0aW9uYWxpdHksIHRoZW4gaXQgYXBwbGllcyB0aGF0IGRpcmVjdGlvbmFsaXR5IHRvIHRoZSB3aG9sZSBlbGVtZW50LiJ9LHZhbHVlU2V0OiJkIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2RpciJ9XX0se25hbWU6ImRyYWdnYWJsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBlbGVtZW50IGNhbiBiZSBkcmFnZ2VkLCB1c2luZyB0aGUgW0RyYWcgYW5kIERyb3AgQVBJXSgvZW4tdXMvZG9jcy9EcmFnRHJvcC9EcmFnX2FuZF9Ecm9wKS4gSXQgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgdHJ1ZWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IG1heSBiZSBkcmFnZ2VkXG4qICAgYGZhbHNlYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgbWF5IG5vdCBiZSBkcmFnZ2VkLiJ9LHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2RyYWdnYWJsZSJ9XX0se25hbWU6ImRyb3B6b25lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIHdoYXQgdHlwZXMgb2YgY29udGVudCBjYW4gYmUgZHJvcHBlZCBvbiBhbiBlbGVtZW50LCB1c2luZyB0aGUgW0RyYWcgYW5kIERyb3AgQVBJXSgvZW4tVVMvZG9jcy9EcmFnRHJvcC9EcmFnX2FuZF9Ecm9wKS4gSXQgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgY29weWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IGRyb3BwaW5nIHdpbGwgY3JlYXRlIGEgY29weSBvZiB0aGUgZWxlbWVudCB0aGF0IHdhcyBkcmFnZ2VkXG4qICAgYG1vdmVgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCB0aGF0IHdhcyBkcmFnZ2VkIHdpbGwgYmUgbW92ZWQgdG8gdGhpcyBuZXcgbG9jYXRpb24uXG4qICAgYGxpbmtgLCB3aWxsIGNyZWF0ZSBhIGxpbmsgdG8gdGhlIGRyYWdnZWQgZGF0YS4ifX0se25hbWU6ImV4cG9ydHBhcnRzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJVc2VkIHRvIHRyYW5zaXRpdmVseSBleHBvcnQgc2hhZG93IHBhcnRzIGZyb20gYSBuZXN0ZWQgc2hhZG93IHRyZWUgaW50byBhIGNvbnRhaW5pbmcgbGlnaHQgdHJlZS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2V4cG9ydHBhcnRzIn1dfSx7bmFtZToiaGlkZGVuIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IGlzIG5vdCB5ZXQsIG9yIGlzIG5vIGxvbmdlciwgX3JlbGV2YW50Xy4gRm9yIGV4YW1wbGUsIGl0IGNhbiBiZSB1c2VkIHRvIGhpZGUgZWxlbWVudHMgb2YgdGhlIHBhZ2UgdGhhdCBjYW4ndCBiZSB1c2VkIHVudGlsIHRoZSBsb2dpbiBwcm9jZXNzIGhhcyBiZWVuIGNvbXBsZXRlZC4gVGhlIGJyb3dzZXIgd29uJ3QgcmVuZGVyIHN1Y2ggZWxlbWVudHMuIFRoaXMgYXR0cmlidXRlIG11c3Qgbm90IGJlIHVzZWQgdG8gaGlkZSBjb250ZW50IHRoYXQgY291bGQgbGVnaXRpbWF0ZWx5IGJlIHNob3duLiJ9LHZhbHVlU2V0OiJ2IixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2hpZGRlbiJ9XX0se25hbWU6ImlkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGEgdW5pcXVlIGlkZW50aWZpZXIgKElEKSB3aGljaCBtdXN0IGJlIHVuaXF1ZSBpbiB0aGUgd2hvbGUgZG9jdW1lbnQuIEl0cyBwdXJwb3NlIGlzIHRvIGlkZW50aWZ5IHRoZSBlbGVtZW50IHdoZW4gbGlua2luZyAodXNpbmcgYSBmcmFnbWVudCBpZGVudGlmaWVyKSwgc2NyaXB0aW5nLCBvciBzdHlsaW5nICh3aXRoIENTUykuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pZCJ9XX0se25hbWU6ImlucHV0bW9kZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonUHJvdmlkZXMgYSBoaW50IHRvIGJyb3dzZXJzIGFzIHRvIHRoZSB0eXBlIG9mIHZpcnR1YWwga2V5Ym9hcmQgY29uZmlndXJhdGlvbiB0byB1c2Ugd2hlbiBlZGl0aW5nIHRoaXMgZWxlbWVudCBvciBpdHMgY29udGVudHMuIFVzZWQgcHJpbWFyaWx5IG9uIFtgPGlucHV0PmBdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50cywgYnV0IGlzIHVzYWJsZSBvbiBhbnkgZWxlbWVudCB3aGlsZSBpbiBgW2NvbnRlbnRlZGl0YWJsZV0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMjYXR0ci1jb250ZW50ZWRpdGFibGUpYCBtb2RlLid9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaW5wdXRtb2RlIn1dfSx7bmFtZToiaXMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGF0IGEgc3RhbmRhcmQgSFRNTCBlbGVtZW50IHNob3VsZCBiZWhhdmUgbGlrZSBhIHJlZ2lzdGVyZWQgY3VzdG9tIGJ1aWx0LWluIGVsZW1lbnQgKHNlZSBbVXNpbmcgY3VzdG9tIGVsZW1lbnRzXSgvZW4tVVMvZG9jcy9XZWIvV2ViX0NvbXBvbmVudHMvVXNpbmdfY3VzdG9tX2VsZW1lbnRzKSBmb3IgbW9yZSBkZXRhaWxzKS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2lzIn1dfSx7bmFtZToiaXRlbWlkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdW5pcXVlLCBnbG9iYWwgaWRlbnRpZmllciBvZiBhbiBpdGVtLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaXRlbWlkIn1dfSx7bmFtZToiaXRlbXByb3AiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlVzZWQgdG8gYWRkIHByb3BlcnRpZXMgdG8gYW4gaXRlbS4gRXZlcnkgSFRNTCBlbGVtZW50IG1heSBoYXZlIGFuIGBpdGVtcHJvcGAgYXR0cmlidXRlIHNwZWNpZmllZCwgd2hlcmUgYW4gYGl0ZW1wcm9wYCBjb25zaXN0cyBvZiBhIG5hbWUgYW5kIHZhbHVlIHBhaXIuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pdGVtcHJvcCJ9XX0se25hbWU6Iml0ZW1yZWYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlByb3BlcnRpZXMgdGhhdCBhcmUgbm90IGRlc2NlbmRhbnRzIG9mIGFuIGVsZW1lbnQgd2l0aCB0aGUgYGl0ZW1zY29wZWAgYXR0cmlidXRlIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGl0ZW0gdXNpbmcgYW4gYGl0ZW1yZWZgLiBJdCBwcm92aWRlcyBhIGxpc3Qgb2YgZWxlbWVudCBpZHMgKG5vdCBgaXRlbWlkYHMpIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGVsc2V3aGVyZSBpbiB0aGUgZG9jdW1lbnQuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pdGVtcmVmIn1dfSx7bmFtZToiaXRlbXNjb3BlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJgaXRlbXNjb3BlYCAodXN1YWxseSkgd29ya3MgYWxvbmcgd2l0aCBgW2l0ZW10eXBlXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLWl0ZW10eXBlKWAgdG8gc3BlY2lmeSB0aGF0IHRoZSBIVE1MIGNvbnRhaW5lZCBpbiBhIGJsb2NrIGlzIGFib3V0IGEgcGFydGljdWxhciBpdGVtLiBgaXRlbXNjb3BlYCBjcmVhdGVzIHRoZSBJdGVtIGFuZCBkZWZpbmVzIHRoZSBzY29wZSBvZiB0aGUgYGl0ZW10eXBlYCBhc3NvY2lhdGVkIHdpdGggaXQuIGBpdGVtdHlwZWAgaXMgYSB2YWxpZCBVUkwgb2YgYSB2b2NhYnVsYXJ5IChzdWNoIGFzIFtzY2hlbWEub3JnXShodHRwczovL3NjaGVtYS5vcmcvKSkgdGhhdCBkZXNjcmliZXMgdGhlIGl0ZW0gYW5kIGl0cyBwcm9wZXJ0aWVzIGNvbnRleHQuIn0sdmFsdWVTZXQ6InYiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaXRlbXNjb3BlIn1dfSx7bmFtZToiaXRlbXR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlNwZWNpZmllcyB0aGUgVVJMIG9mIHRoZSB2b2NhYnVsYXJ5IHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRlZmluZSBgaXRlbXByb3BgcyAoaXRlbSBwcm9wZXJ0aWVzKSBpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUuIGBbaXRlbXNjb3BlXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLWl0ZW1zY29wZSlgIGlzIHVzZWQgdG8gc2V0IHRoZSBzY29wZSBvZiB3aGVyZSBpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUgdGhlIHZvY2FidWxhcnkgc2V0IGJ5IGBpdGVtdHlwZWAgd2lsbCBiZSBhY3RpdmUuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pdGVtdHlwZSJ9XX0se25hbWU6ImxhbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkhlbHBzIGRlZmluZSB0aGUgbGFuZ3VhZ2Ugb2YgYW4gZWxlbWVudDogdGhlIGxhbmd1YWdlIHRoYXQgbm9uLWVkaXRhYmxlIGVsZW1lbnRzIGFyZSBpbiwgb3IgdGhlIGxhbmd1YWdlIHRoYXQgZWRpdGFibGUgZWxlbWVudHMgc2hvdWxkIGJlIHdyaXR0ZW4gaW4gYnkgdGhlIHVzZXIuIFRoZSBhdHRyaWJ1dGUgY29udGFpbnMgb25lIOKAnGxhbmd1YWdlIHRhZ+KAnSAobWFkZSBvZiBoeXBoZW4tc2VwYXJhdGVkIOKAnGxhbmd1YWdlIHN1YnRhZ3PigJ0pIGluIHRoZSBmb3JtYXQgZGVmaW5lZCBpbiBbX1RhZ3MgZm9yIElkZW50aWZ5aW5nIExhbmd1YWdlcyAoQkNQNDcpX10oaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL2JjcC9iY3A0Ny50eHQpLiBbKip4bWw6bGFuZyoqXSgjYXR0ci14bWw6bGFuZykgaGFzIHByaW9yaXR5IG92ZXIgaXQuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9sYW5nIn1dfSx7bmFtZToicGFydCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgcGFydCBuYW1lcyBvZiB0aGUgZWxlbWVudC4gUGFydCBuYW1lcyBhbGxvd3MgQ1NTIHRvIHNlbGVjdCBhbmQgc3R5bGUgc3BlY2lmaWMgZWxlbWVudHMgaW4gYSBzaGFkb3cgdHJlZSB2aWEgdGhlIFtgOjpwYXJ0YF0oL2VuLVVTL2RvY3MvV2ViL0NTUy86OnBhcnQgIlRoZSA6OnBhcnQgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgYW55IGVsZW1lbnQgd2l0aGluIGEgc2hhZG93IHRyZWUgdGhhdCBoYXMgYSBtYXRjaGluZyBwYXJ0IGF0dHJpYnV0ZS4iKSBwc2V1ZG8tZWxlbWVudC4nfSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3BhcnQifV19LHtuYW1lOiJyb2xlIix2YWx1ZVNldDoicm9sZXMifSx7bmFtZToic2xvdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQXNzaWducyBhIHNsb3QgaW4gYSBbc2hhZG93IERPTV0oL2VuLVVTL2RvY3MvV2ViL1dlYl9Db21wb25lbnRzL1NoYWRvd19ET00pIHNoYWRvdyB0cmVlIHRvIGFuIGVsZW1lbnQ6IEFuIGVsZW1lbnQgd2l0aCBhIGBzbG90YCBhdHRyaWJ1dGUgaXMgYXNzaWduZWQgdG8gdGhlIHNsb3QgY3JlYXRlZCBieSB0aGUgW2A8c2xvdD5gXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Nsb3QgXCJUaGUgSFRNTCA8c2xvdD4gZWxlbWVudOKAlHBhcnQgb2YgdGhlIFdlYiBDb21wb25lbnRzIHRlY2hub2xvZ3kgc3VpdGXigJRpcyBhIHBsYWNlaG9sZGVyIGluc2lkZSBhIHdlYiBjb21wb25lbnQgdGhhdCB5b3UgY2FuIGZpbGwgd2l0aCB5b3VyIG93biBtYXJrdXAsIHdoaWNoIGxldHMgeW91IGNyZWF0ZSBzZXBhcmF0ZSBET00gdHJlZXMgYW5kIHByZXNlbnQgdGhlbSB0b2dldGhlci5cIikgZWxlbWVudCB3aG9zZSBgW25hbWVdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2xvdCNhdHRyLW5hbWUpYCBhdHRyaWJ1dGUncyB2YWx1ZSBtYXRjaGVzIHRoYXQgYHNsb3RgIGF0dHJpYnV0ZSdzIHZhbHVlLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvc2xvdCJ9XX0se25hbWU6InNwZWxsY2hlY2siLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVudW1lcmF0ZWQgYXR0cmlidXRlIGRlZmluZXMgd2hldGhlciB0aGUgZWxlbWVudCBtYXkgYmUgY2hlY2tlZCBmb3Igc3BlbGxpbmcgZXJyb3JzLiBJdCBtYXkgaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGB0cnVlYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgc2hvdWxkIGJlLCBpZiBwb3NzaWJsZSwgY2hlY2tlZCBmb3Igc3BlbGxpbmcgZXJyb3JzO1xuKiAgIGBmYWxzZWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBub3QgYmUgY2hlY2tlZCBmb3Igc3BlbGxpbmcgZXJyb3JzLiJ9LHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3NwZWxsY2hlY2sifV19LHtuYW1lOiJzdHlsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQ29udGFpbnMgW0NTU10oL2VuLVVTL2RvY3MvV2ViL0NTUykgc3R5bGluZyBkZWNsYXJhdGlvbnMgdG8gYmUgYXBwbGllZCB0byB0aGUgZWxlbWVudC4gTm90ZSB0aGF0IGl0IGlzIHJlY29tbWVuZGVkIGZvciBzdHlsZXMgdG8gYmUgZGVmaW5lZCBpbiBhIHNlcGFyYXRlIGZpbGUgb3IgZmlsZXMuIFRoaXMgYXR0cmlidXRlIGFuZCB0aGUgW2A8c3R5bGU+YF0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zdHlsZSAiVGhlIEhUTUwgPHN0eWxlPiBlbGVtZW50IGNvbnRhaW5zIHN0eWxlIGluZm9ybWF0aW9uIGZvciBhIGRvY3VtZW50LCBvciBwYXJ0IG9mIGEgZG9jdW1lbnQuIikgZWxlbWVudCBoYXZlIG1haW5seSB0aGUgcHVycG9zZSBvZiBhbGxvd2luZyBmb3IgcXVpY2sgc3R5bGluZywgZm9yIGV4YW1wbGUgZm9yIHRlc3RpbmcgcHVycG9zZXMuJ30scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9zdHlsZSJ9XX0se25hbWU6InRhYmluZGV4IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBpbnRlZ2VyIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIGlmIHRoZSBlbGVtZW50IGNhbiB0YWtlIGlucHV0IGZvY3VzIChpcyBfZm9jdXNhYmxlXyksIGlmIGl0IHNob3VsZCBwYXJ0aWNpcGF0ZSB0byBzZXF1ZW50aWFsIGtleWJvYXJkIG5hdmlnYXRpb24sIGFuZCBpZiBzbywgYXQgd2hhdCBwb3NpdGlvbi4gSXQgY2FuIHRha2Ugc2V2ZXJhbCB2YWx1ZXM6XG5cbiogICBhIF9uZWdhdGl2ZSB2YWx1ZV8gbWVhbnMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZm9jdXNhYmxlLCBidXQgc2hvdWxkIG5vdCBiZSByZWFjaGFibGUgdmlhIHNlcXVlbnRpYWwga2V5Ym9hcmQgbmF2aWdhdGlvbjtcbiogICBgMGAgbWVhbnMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZm9jdXNhYmxlIGFuZCByZWFjaGFibGUgdmlhIHNlcXVlbnRpYWwga2V5Ym9hcmQgbmF2aWdhdGlvbiwgYnV0IGl0cyByZWxhdGl2ZSBvcmRlciBpcyBkZWZpbmVkIGJ5IHRoZSBwbGF0Zm9ybSBjb252ZW50aW9uO1xuKiAgIGEgX3Bvc2l0aXZlIHZhbHVlXyBtZWFucyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBiZSBmb2N1c2FibGUgYW5kIHJlYWNoYWJsZSB2aWEgc2VxdWVudGlhbCBrZXlib2FyZCBuYXZpZ2F0aW9uOyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIGVsZW1lbnRzIGFyZSBmb2N1c2VkIGlzIHRoZSBpbmNyZWFzaW5nIHZhbHVlIG9mIHRoZSBbKip0YWJpbmRleCoqXSgjYXR0ci10YWJpbmRleCkuIElmIHNldmVyYWwgZWxlbWVudHMgc2hhcmUgdGhlIHNhbWUgdGFiaW5kZXgsIHRoZWlyIHJlbGF0aXZlIG9yZGVyIGZvbGxvd3MgdGhlaXIgcmVsYXRpdmUgcG9zaXRpb25zIGluIHRoZSBkb2N1bWVudC4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3RhYmluZGV4In1dfSx7bmFtZToidGl0bGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvbnRhaW5zIGEgdGV4dCByZXByZXNlbnRpbmcgYWR2aXNvcnkgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgZWxlbWVudCBpdCBiZWxvbmdzIHRvLiBTdWNoIGluZm9ybWF0aW9uIGNhbiB0eXBpY2FsbHksIGJ1dCBub3QgbmVjZXNzYXJpbHksIGJlIHByZXNlbnRlZCB0byB0aGUgdXNlciBhcyBhIHRvb2x0aXAuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy90aXRsZSJ9XX0se25hbWU6InRyYW5zbGF0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgdGhhdCBpcyB1c2VkIHRvIHNwZWNpZnkgd2hldGhlciBhbiBlbGVtZW50J3MgYXR0cmlidXRlIHZhbHVlcyBhbmQgdGhlIHZhbHVlcyBvZiBpdHMgW2BUZXh0YF0oL2VuLVVTL2RvY3MvV2ViL0FQSS9UZXh0IFwiVGhlIFRleHQgaW50ZXJmYWNlIHJlcHJlc2VudHMgdGhlIHRleHR1YWwgY29udGVudCBvZiBFbGVtZW50IG9yIEF0dHIuIElmIGFuIGVsZW1lbnQgaGFzIG5vIG1hcmt1cCB3aXRoaW4gaXRzIGNvbnRlbnQsIGl0IGhhcyBhIHNpbmdsZSBjaGlsZCBpbXBsZW1lbnRpbmcgVGV4dCB0aGF0IGNvbnRhaW5zIHRoZSBlbGVtZW50J3MgdGV4dC4gSG93ZXZlciwgaWYgdGhlIGVsZW1lbnQgY29udGFpbnMgbWFya3VwLCBpdCBpcyBwYXJzZWQgaW50byBpbmZvcm1hdGlvbiBpdGVtcyBhbmQgVGV4dCBub2RlcyB0aGF0IGZvcm0gaXRzIGNoaWxkcmVuLlwiKSBub2RlIGNoaWxkcmVuIGFyZSB0byBiZSB0cmFuc2xhdGVkIHdoZW4gdGhlIHBhZ2UgaXMgbG9jYWxpemVkLCBvciB3aGV0aGVyIHRvIGxlYXZlIHRoZW0gdW5jaGFuZ2VkLiBJdCBjYW4gaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGVtcHR5IHN0cmluZyBhbmQgYHllc2AsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHdpbGwgYmUgdHJhbnNsYXRlZC5cbiogICBgbm9gLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCB3aWxsIG5vdCBiZSB0cmFuc2xhdGVkLiJ9LHZhbHVlU2V0OiJ5IixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3RyYW5zbGF0ZSJ9XX0se25hbWU6Im9uYWJvcnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsb2FkaW5nIG9mIGEgcmVzb3VyY2UgaGFzIGJlZW4gYWJvcnRlZC4ifX0se25hbWU6Im9uYmx1ciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZWxlbWVudCBoYXMgbG9zdCBmb2N1cyAoZG9lcyBub3QgYnViYmxlKS4ifX0se25hbWU6Im9uY2FucGxheSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVzZXIgYWdlbnQgY2FuIHBsYXkgdGhlIG1lZGlhLCBidXQgZXN0aW1hdGVzIHRoYXQgbm90IGVub3VnaCBkYXRhIGhhcyBiZWVuIGxvYWRlZCB0byBwbGF5IHRoZSBtZWRpYSB1cCB0byBpdHMgZW5kIHdpdGhvdXQgaGF2aW5nIHRvIHN0b3AgZm9yIGZ1cnRoZXIgYnVmZmVyaW5nIG9mIGNvbnRlbnQuIn19LHtuYW1lOiJvbmNhbnBsYXl0aHJvdWdoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdXNlciBhZ2VudCBjYW4gcGxheSB0aGUgbWVkaWEgdXAgdG8gaXRzIGVuZCB3aXRob3V0IGhhdmluZyB0byBzdG9wIGZvciBmdXJ0aGVyIGJ1ZmZlcmluZyBvZiBjb250ZW50LiJ9fSx7bmFtZToib25jaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgZm9yIDxpbnB1dD4sIDxzZWxlY3Q+LCBhbmQgPHRleHRhcmVhPiBlbGVtZW50cyB3aGVuIGEgY2hhbmdlIHRvIHRoZSBlbGVtZW50J3MgdmFsdWUgaXMgY29tbWl0dGVkIGJ5IHRoZSB1c2VyLiJ9fSx7bmFtZToib25jbGljayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgYnV0dG9uIGhhcyBiZWVuIHByZXNzZWQgYW5kIHJlbGVhc2VkIG9uIGFuIGVsZW1lbnQuIn19LHtuYW1lOiJvbmNvbnRleHRtZW51IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcmlnaHQgYnV0dG9uIG9mIHRoZSBtb3VzZSBpcyBjbGlja2VkIChiZWZvcmUgdGhlIGNvbnRleHQgbWVudSBpcyBkaXNwbGF5ZWQpLiJ9fSx7bmFtZToib25kYmxjbGljayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgYnV0dG9uIGlzIGNsaWNrZWQgdHdpY2Ugb24gYW4gZWxlbWVudC4ifX0se25hbWU6Im9uZHJhZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbiBpcyBiZWluZyBkcmFnZ2VkIChldmVyeSAzNTBtcykuIn19LHtuYW1lOiJvbmRyYWdlbmQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgZHJhZyBvcGVyYXRpb24gaXMgYmVpbmcgZW5kZWQgKGJ5IHJlbGVhc2luZyBhIG1vdXNlIGJ1dHRvbiBvciBoaXR0aW5nIHRoZSBlc2NhcGUga2V5KS4ifX0se25hbWU6Im9uZHJhZ2VudGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGRyYWdnZWQgZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbiBlbnRlcnMgYSB2YWxpZCBkcm9wIHRhcmdldC4ifX0se25hbWU6Im9uZHJhZ2xlYXZlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGRyYWdnZWQgZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbiBsZWF2ZXMgYSB2YWxpZCBkcm9wIHRhcmdldC4ifX0se25hbWU6Im9uZHJhZ292ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVsZW1lbnQgb3IgdGV4dCBzZWxlY3Rpb24gaXMgYmVpbmcgZHJhZ2dlZCBvdmVyIGEgdmFsaWQgZHJvcCB0YXJnZXQgKGV2ZXJ5IDM1MG1zKS4ifX0se25hbWU6Im9uZHJhZ3N0YXJ0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdXNlciBzdGFydHMgZHJhZ2dpbmcgYW4gZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbi4ifX0se25hbWU6Im9uZHJvcCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZWxlbWVudCBpcyBkcm9wcGVkIG9uIGEgdmFsaWQgZHJvcCB0YXJnZXQuIn19LHtuYW1lOiJvbmR1cmF0aW9uY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZHVyYXRpb24gYXR0cmlidXRlIGhhcyBiZWVuIHVwZGF0ZWQuIn19LHtuYW1lOiJvbmVtcHRpZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtZWRpYSBoYXMgYmVjb21lIGVtcHR5OyBmb3IgZXhhbXBsZSwgdGhpcyBldmVudCBpcyBzZW50IGlmIHRoZSBtZWRpYSBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZCAob3IgcGFydGlhbGx5IGxvYWRlZCksIGFuZCB0aGUgbG9hZCgpIG1ldGhvZCBpcyBjYWxsZWQgdG8gcmVsb2FkIGl0LiJ9fSx7bmFtZToib25lbmRlZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUGxheWJhY2sgaGFzIHN0b3BwZWQgYmVjYXVzZSB0aGUgZW5kIG9mIHRoZSBtZWRpYSB3YXMgcmVhY2hlZC4ifX0se25hbWU6Im9uZXJyb3IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcmVzb3VyY2UgZmFpbGVkIHRvIGxvYWQuIn19LHtuYW1lOiJvbmZvY3VzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbGVtZW50IGhhcyByZWNlaXZlZCBmb2N1cyAoZG9lcyBub3QgYnViYmxlKS4ifX0se25hbWU6Im9uZm9ybWNoYW5nZSJ9LHtuYW1lOiJvbmZvcm1pbnB1dCJ9LHtuYW1lOiJvbmlucHV0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdmFsdWUgb2YgYW4gZWxlbWVudCBjaGFuZ2VzIG9yIHRoZSBjb250ZW50IG9mIGFuIGVsZW1lbnQgd2l0aCB0aGUgYXR0cmlidXRlIGNvbnRlbnRlZGl0YWJsZSBpcyBtb2RpZmllZC4ifX0se25hbWU6Im9uaW52YWxpZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBzdWJtaXR0YWJsZSBlbGVtZW50IGhhcyBiZWVuIGNoZWNrZWQgYW5kIGRvZXNuJ3Qgc2F0aXNmeSBpdHMgY29uc3RyYWludHMuIn19LHtuYW1lOiJvbmtleWRvd24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEga2V5IGlzIHByZXNzZWQgZG93bi4ifX0se25hbWU6Im9ua2V5cHJlc3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEga2V5IGlzIHByZXNzZWQgZG93biBhbmQgdGhhdCBrZXkgbm9ybWFsbHkgcHJvZHVjZXMgYSBjaGFyYWN0ZXIgdmFsdWUgKHVzZSBpbnB1dCBpbnN0ZWFkKS4ifX0se25hbWU6Im9ua2V5dXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEga2V5IGlzIHJlbGVhc2VkLiJ9fSx7bmFtZToib25sb2FkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHJlc291cmNlIGFuZCBpdHMgZGVwZW5kZW50IHJlc291cmNlcyBoYXZlIGZpbmlzaGVkIGxvYWRpbmcuIn19LHtuYW1lOiJvbmxvYWRlZGRhdGEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBmaXJzdCBmcmFtZSBvZiB0aGUgbWVkaWEgaGFzIGZpbmlzaGVkIGxvYWRpbmcuIn19LHtuYW1lOiJvbmxvYWRlZG1ldGFkYXRhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWV0YWRhdGEgaGFzIGJlZW4gbG9hZGVkLiJ9fSx7bmFtZToib25sb2Fkc3RhcnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlByb2dyZXNzIGhhcyBiZWd1bi4ifX0se25hbWU6Im9ubW91c2Vkb3duIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBidXR0b24gKHVzdWFsbHkgYSBtb3VzZSkgaXMgcHJlc3NlZCBvbiBhbiBlbGVtZW50LiJ9fSx7bmFtZToib25tb3VzZW1vdmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG92ZXIgYW4gZWxlbWVudC4ifX0se25hbWU6Im9ubW91c2VvdXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG9mZiB0aGUgZWxlbWVudCB0aGF0IGhhcyB0aGUgbGlzdGVuZXIgYXR0YWNoZWQgb3Igb2ZmIG9uZSBvZiBpdHMgY2hpbGRyZW4uIn19LHtuYW1lOiJvbm1vdXNlb3ZlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb250byB0aGUgZWxlbWVudCB0aGF0IGhhcyB0aGUgbGlzdGVuZXIgYXR0YWNoZWQgb3Igb250byBvbmUgb2YgaXRzIGNoaWxkcmVuLiJ9fSx7bmFtZToib25tb3VzZXVwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBidXR0b24gaXMgcmVsZWFzZWQgb3ZlciBhbiBlbGVtZW50LiJ9fSx7bmFtZToib25tb3VzZXdoZWVsIn0se25hbWU6Im9ubW91c2VlbnRlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb250byB0aGUgZWxlbWVudCB0aGF0IGhhcyB0aGUgbGlzdGVuZXIgYXR0YWNoZWQuIn19LHtuYW1lOiJvbm1vdXNlbGVhdmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG9mZiB0aGUgZWxlbWVudCB0aGF0IGhhcyB0aGUgbGlzdGVuZXIgYXR0YWNoZWQuIn19LHtuYW1lOiJvbnBhdXNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQbGF5YmFjayBoYXMgYmVlbiBwYXVzZWQuIn19LHtuYW1lOiJvbnBsYXkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlBsYXliYWNrIGhhcyBiZWd1bi4ifX0se25hbWU6Im9ucGxheWluZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUGxheWJhY2sgaXMgcmVhZHkgdG8gc3RhcnQgYWZ0ZXIgaGF2aW5nIGJlZW4gcGF1c2VkIG9yIGRlbGF5ZWQgZHVlIHRvIGxhY2sgb2YgZGF0YS4ifX0se25hbWU6Im9ucHJvZ3Jlc3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluIHByb2dyZXNzLiJ9fSx7bmFtZToib25yYXRlY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcGxheWJhY2sgcmF0ZSBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9ucmVzZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgZm9ybSBpcyByZXNldC4ifX0se25hbWU6Im9ucmVzaXplIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZG9jdW1lbnQgdmlldyBoYXMgYmVlbiByZXNpemVkLiJ9fSx7bmFtZToib25yZWFkeXN0YXRlY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgb2YgYSBkb2N1bWVudCBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9uc2Nyb2xsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZG9jdW1lbnQgdmlldyBvciBhbiBlbGVtZW50IGhhcyBiZWVuIHNjcm9sbGVkLiJ9fSx7bmFtZToib25zZWVrZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgc2VlayBvcGVyYXRpb24gY29tcGxldGVkLiJ9fSx7bmFtZToib25zZWVraW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHNlZWsgb3BlcmF0aW9uIGJlZ2FuLiJ9fSx7bmFtZToib25zZWxlY3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlNvbWUgdGV4dCBpcyBiZWluZyBzZWxlY3RlZC4ifX0se25hbWU6Im9uc2hvdyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBjb250ZXh0bWVudSBldmVudCB3YXMgZmlyZWQgb24vYnViYmxlZCB0byBhbiBlbGVtZW50IHRoYXQgaGFzIGEgY29udGV4dG1lbnUgYXR0cmlidXRlIn19LHtuYW1lOiJvbnN0YWxsZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1c2VyIGFnZW50IGlzIHRyeWluZyB0byBmZXRjaCBtZWRpYSBkYXRhLCBidXQgZGF0YSBpcyB1bmV4cGVjdGVkbHkgbm90IGZvcnRoY29taW5nLiJ9fSx7bmFtZToib25zdWJtaXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgZm9ybSBpcyBzdWJtaXR0ZWQuIn19LHtuYW1lOiJvbnN1c3BlbmQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6Ik1lZGlhIGRhdGEgbG9hZGluZyBoYXMgYmVlbiBzdXNwZW5kZWQuIn19LHtuYW1lOiJvbnRpbWV1cGRhdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0aW1lIGluZGljYXRlZCBieSB0aGUgY3VycmVudFRpbWUgYXR0cmlidXRlIGhhcyBiZWVuIHVwZGF0ZWQuIn19LHtuYW1lOiJvbnZvbHVtZWNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHZvbHVtZSBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9ud2FpdGluZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUGxheWJhY2sgaGFzIHN0b3BwZWQgYmVjYXVzZSBvZiBhIHRlbXBvcmFyeSBsYWNrIG9mIGRhdGEuIn19LHtuYW1lOiJvbnBvaW50ZXJjYW5jZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGVyIGlzIHVubGlrZWx5IHRvIHByb2R1Y2UgYW55IG1vcmUgZXZlbnRzLiJ9fSx7bmFtZToib25wb2ludGVyZG93biIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50ZXIgZW50ZXJzIHRoZSBhY3RpdmUgYnV0dG9ucyBzdGF0ZS4ifX0se25hbWU6Im9ucG9pbnRlcmVudGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgaW5zaWRlIHRoZSBoaXQtdGVzdGluZyBib3VuZGFyeS4ifX0se25hbWU6Im9ucG9pbnRlcmxlYXZlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb3V0IG9mIHRoZSBoaXQtdGVzdGluZyBib3VuZGFyeS4ifX0se25hbWU6Im9ucG9pbnRlcmxvY2tjaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGVyIHdhcyBsb2NrZWQgb3IgcmVsZWFzZWQuIn19LHtuYW1lOiJvbnBvaW50ZXJsb2NrZXJyb3IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6Ikl0IHdhcyBpbXBvc3NpYmxlIHRvIGxvY2sgdGhlIHBvaW50ZXIgZm9yIHRlY2huaWNhbCByZWFzb25zIG9yIGJlY2F1c2UgdGhlIHBlcm1pc3Npb24gd2FzIGRlbmllZC4ifX0se25hbWU6Im9ucG9pbnRlcm1vdmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGVyIGNoYW5nZWQgY29vcmRpbmF0ZXMuIn19LHtuYW1lOiJvbnBvaW50ZXJvdXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGluZyBkZXZpY2UgbW92ZWQgb3V0IG9mIGhpdC10ZXN0aW5nIGJvdW5kYXJ5IG9yIGxlYXZlcyBkZXRlY3RhYmxlIGhvdmVyIHJhbmdlLiJ9fSx7bmFtZToib25wb2ludGVyb3ZlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBpbnRvIHRoZSBoaXQtdGVzdGluZyBib3VuZGFyeS4ifX0se25hbWU6Im9ucG9pbnRlcnVwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcG9pbnRlciBsZWF2ZXMgdGhlIGFjdGl2ZSBidXR0b25zIHN0YXRlLiJ9fSx7bmFtZToiYXJpYS1hY3RpdmVkZXNjZW5kYW50IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtYWN0aXZlZGVzY2VuZGFudCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBjdXJyZW50bHkgYWN0aXZlIGVsZW1lbnQgd2hlbiBET00gZm9jdXMgaXMgb24gYSBbYGNvbXBvc2l0ZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2NvbXBvc2l0ZSkgd2lkZ2V0LCBbYHRleHRib3hgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0ZXh0Ym94KSwgW2Bncm91cGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyb3VwKSwgb3IgW2BhcHBsaWNhdGlvbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FwcGxpY2F0aW9uKS4ifX0se25hbWU6ImFyaWEtYXRvbWljIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWF0b21pYyJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciBbYXNzaXN0aXZlIHRlY2hub2xvZ2llc10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWFzc2lzdGl2ZS10ZWNobm9sb2d5KSB3aWxsIHByZXNlbnQgYWxsLCBvciBvbmx5IHBhcnRzIG9mLCB0aGUgY2hhbmdlZCByZWdpb24gYmFzZWQgb24gdGhlIGNoYW5nZSBub3RpZmljYXRpb25zIGRlZmluZWQgYnkgdGhlIFtgYXJpYS1yZWxldmFudGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcmVsZXZhbnQpIGF0dHJpYnV0ZS4ifX0se25hbWU6ImFyaWEtYXV0b2NvbXBsZXRlIix2YWx1ZVNldDoiYXV0b2NvbXBsZXRlIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtYXV0b2NvbXBsZXRlIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIGlucHV0dGluZyB0ZXh0IGNvdWxkIHRyaWdnZXIgZGlzcGxheSBvZiBvbmUgb3IgbW9yZSBwcmVkaWN0aW9ucyBvZiB0aGUgdXNlcidzIGludGVuZGVkIHZhbHVlIGZvciBhbiBpbnB1dCBhbmQgc3BlY2lmaWVzIGhvdyBwcmVkaWN0aW9ucyB3b3VsZCBiZSBwcmVzZW50ZWQgaWYgdGhleSBhcmUgbWFkZS4ifX0se25hbWU6ImFyaWEtYnVzeSIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1idXN5In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyBhbiBlbGVtZW50IGlzIGJlaW5nIG1vZGlmaWVkIGFuZCB0aGF0IGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMgX01BWV8gd2FudCB0byB3YWl0IHVudGlsIHRoZSBtb2RpZmljYXRpb25zIGFyZSBjb21wbGV0ZSBiZWZvcmUgZXhwb3NpbmcgdGhlbSB0byB0aGUgdXNlci4ifX0se25hbWU6ImFyaWEtY2hlY2tlZCIsdmFsdWVTZXQ6InRyaXN0YXRlIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY2hlY2tlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidJbmRpY2F0ZXMgdGhlIGN1cnJlbnQgImNoZWNrZWQiIFtzdGF0ZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXN0YXRlKSBvZiBjaGVja2JveGVzLCByYWRpbyBidXR0b25zLCBhbmQgb3RoZXIgW3dpZGdldHNdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi13aWRnZXQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtcHJlc3NlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcHJlc3NlZCkgYW5kIFtgYXJpYS1zZWxlY3RlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtc2VsZWN0ZWQpLid9fSx7bmFtZToiYXJpYS1jb2xjb3VudCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbGNvdW50In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGluIGEgW2B0YWJsZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RhYmxlKSwgW2BncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JpZCksIG9yIFtgdHJlZWdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0cmVlZ3JpZCkuIFNlZSByZWxhdGVkIFtgYXJpYS1jb2xpbmRleGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29saW5kZXgpLiJ9fSx7bmFtZToiYXJpYS1jb2xpbmRleCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbGluZGV4In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgYW4gW2VsZW1lbnQnc10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGNvbHVtbiBpbmRleCBvciBwb3NpdGlvbiB3aXRoIHJlc3BlY3QgdG8gdGhlIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIHdpdGhpbiBhIFtgdGFibGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0YWJsZSksIFtgZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyaWQpLCBvciBbYHRyZWVncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdHJlZWdyaWQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtY29sY291bnRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbGNvdW50KSBhbmQgW2BhcmlhLWNvbHNwYW5gXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbHNwYW4pLiJ9fSx7bmFtZToiYXJpYS1jb2xzcGFuIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29sc3BhbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBudW1iZXIgb2YgY29sdW1ucyBzcGFubmVkIGJ5IGEgY2VsbCBvciBncmlkY2VsbCB3aXRoaW4gYSBbYHRhYmxlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGFibGUpLCBbYGdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncmlkKSwgb3IgW2B0cmVlZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RyZWVncmlkKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWNvbGluZGV4YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb2xpbmRleCkgYW5kIFtgYXJpYS1yb3dzcGFuYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dzcGFuKS4ifX0se25hbWU6ImFyaWEtY29udHJvbHMiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb250cm9scyJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIChvciBlbGVtZW50cykgd2hvc2UgY29udGVudHMgb3IgcHJlc2VuY2UgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIGN1cnJlbnQgZWxlbWVudC4gU2VlIHJlbGF0ZWQgW2BhcmlhLW93bnNgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW93bnMpLiJ9fSx7bmFtZToiYXJpYS1jdXJyZW50Iix2YWx1ZVNldDoiY3VycmVudCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWN1cnJlbnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIHRoYXQgcmVwcmVzZW50cyB0aGUgY3VycmVudCBpdGVtIHdpdGhpbiBhIGNvbnRhaW5lciBvciBzZXQgb2YgcmVsYXRlZCBlbGVtZW50cy4ifX0se25hbWU6ImFyaWEtZGVzY3JpYmVkYXQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kZXNjcmliZWRhdCJ9XX0se25hbWU6ImFyaWEtZGVzY3JpYmVkYnkiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kZXNjcmliZWRieSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIChvciBlbGVtZW50cykgdGhhdCBkZXNjcmliZXMgdGhlIFtvYmplY3RdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vYmplY3QpLiBTZWUgcmVsYXRlZCBbYGFyaWEtbGFiZWxsZWRieWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGFiZWxsZWRieSkuIn19LHtuYW1lOiJhcmlhLWRpc2FibGVkIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRpc2FibGVkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGF0IHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGlzIFtwZXJjZWl2YWJsZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXBlcmNlaXZhYmxlKSBidXQgZGlzYWJsZWQsIHNvIGl0IGlzIG5vdCBlZGl0YWJsZSBvciBvdGhlcndpc2UgW29wZXJhYmxlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tb3BlcmFibGUpLiBTZWUgcmVsYXRlZCBbYGFyaWEtaGlkZGVuYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1oaWRkZW4pIGFuZCBbYGFyaWEtcmVhZG9ubHlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJlYWRvbmx5KS4ifX0se25hbWU6ImFyaWEtZHJvcGVmZmVjdCIsdmFsdWVTZXQ6ImRyb3BlZmZlY3QiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kcm9wZWZmZWN0In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlxcW0RlcHJlY2F0ZWQgaW4gQVJJQSAxLjFcXF0gSW5kaWNhdGVzIHdoYXQgZnVuY3Rpb25zIGNhbiBiZSBwZXJmb3JtZWQgd2hlbiBhIGRyYWdnZWQgb2JqZWN0IGlzIHJlbGVhc2VkIG9uIHRoZSBkcm9wIHRhcmdldC4ifX0se25hbWU6ImFyaWEtZXJyb3JtZXNzYWdlIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZXJyb3JtZXNzYWdlIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgdGhhdCBwcm92aWRlcyBhbiBlcnJvciBtZXNzYWdlIGZvciB0aGUgW29iamVjdF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLW9iamVjdCkuIFNlZSByZWxhdGVkIFtgYXJpYS1pbnZhbGlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1pbnZhbGlkKSBhbmQgW2BhcmlhLWRlc2NyaWJlZGJ5YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kZXNjcmliZWRieSkuIn19LHtuYW1lOiJhcmlhLWV4cGFuZGVkIix2YWx1ZVNldDoidSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWV4cGFuZGVkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIHRoZSBlbGVtZW50LCBvciBhbm90aGVyIGdyb3VwaW5nIGVsZW1lbnQgaXQgY29udHJvbHMsIGlzIGN1cnJlbnRseSBleHBhbmRlZCBvciBjb2xsYXBzZWQuIn19LHtuYW1lOiJhcmlhLWZsb3d0byIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWZsb3d0byJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBuZXh0IFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSBpbiBhbiBhbHRlcm5hdGUgcmVhZGluZyBvcmRlciBvZiBjb250ZW50IHdoaWNoLCBhdCB0aGUgdXNlcidzIGRpc2NyZXRpb24sIGFsbG93cyBhc3Npc3RpdmUgdGVjaG5vbG9neSB0byBvdmVycmlkZSB0aGUgZ2VuZXJhbCBkZWZhdWx0IG9mIHJlYWRpbmcgaW4gZG9jdW1lbnQgc291cmNlIG9yZGVyLiJ9fSx7bmFtZToiYXJpYS1ncmFiYmVkIix2YWx1ZVNldDoidSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWdyYWJiZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonXFxbRGVwcmVjYXRlZCBpbiBBUklBIDEuMVxcXSBJbmRpY2F0ZXMgYW4gZWxlbWVudFwncyAiZ3JhYmJlZCIgW3N0YXRlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tc3RhdGUpIGluIGEgZHJhZy1hbmQtZHJvcCBvcGVyYXRpb24uJ319LHtuYW1lOiJhcmlhLWhhc3BvcHVwIix2YWx1ZVNldDoiaGFzcG9wdXAiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1oYXNwb3B1cCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIGF2YWlsYWJpbGl0eSBhbmQgdHlwZSBvZiBpbnRlcmFjdGl2ZSBwb3B1cCBlbGVtZW50LCBzdWNoIGFzIG1lbnUgb3IgZGlhbG9nLCB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KS4ifX0se25hbWU6ImFyaWEtaGlkZGVuIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWhpZGRlbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBpcyBleHBvc2VkIHRvIGFuIGFjY2Vzc2liaWxpdHkgQVBJLiBTZWUgcmVsYXRlZCBbYGFyaWEtZGlzYWJsZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRpc2FibGVkKS4ifX0se25hbWU6ImFyaWEtaW52YWxpZCIsdmFsdWVTZXQ6ImludmFsaWQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1pbnZhbGlkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgZW50ZXJlZCB2YWx1ZSBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBTZWUgcmVsYXRlZCBbYGFyaWEtZXJyb3JtZXNzYWdlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1lcnJvcm1lc3NhZ2UpLiJ9fSx7bmFtZToiYXJpYS1rYmRzaG9ydGN1dHMiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1rYmRzaG9ydGN1dHMifV19LHtuYW1lOiJhcmlhLWxhYmVsIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGFiZWwifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhIHN0cmluZyB2YWx1ZSB0aGF0IGxhYmVscyB0aGUgY3VycmVudCBlbGVtZW50LiBTZWUgcmVsYXRlZCBbYGFyaWEtbGFiZWxsZWRieWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGFiZWxsZWRieSkuIn19LHtuYW1lOiJhcmlhLWxhYmVsbGVkYnkiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1sYWJlbGxlZGJ5In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSB0aGF0IGxhYmVscyB0aGUgY3VycmVudCBlbGVtZW50LiBTZWUgcmVsYXRlZCBbYGFyaWEtZGVzY3JpYmVkYnlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRlc2NyaWJlZGJ5KS4ifX0se25hbWU6ImFyaWEtbGV2ZWwiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1sZXZlbCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBoaWVyYXJjaGljYWwgbGV2ZWwgb2YgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSB3aXRoaW4gYSBzdHJ1Y3R1cmUuIn19LHtuYW1lOiJhcmlhLWxpdmUiLHZhbHVlU2V0OiJsaXZlIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGl2ZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCBhbiBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIHdpbGwgYmUgdXBkYXRlZCwgYW5kIGRlc2NyaWJlcyB0aGUgdHlwZXMgb2YgdXBkYXRlcyB0aGUgW3VzZXIgYWdlbnRzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tdXNlci1hZ2VudCksIFthc3Npc3RpdmUgdGVjaG5vbG9naWVzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tYXNzaXN0aXZlLXRlY2hub2xvZ3kpLCBhbmQgdXNlciBjYW4gZXhwZWN0IGZyb20gdGhlIFtsaXZlIHJlZ2lvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWxpdmUtcmVnaW9uKS4ifX0se25hbWU6ImFyaWEtbW9kYWwiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbW9kYWwifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoZXRoZXIgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBpcyBtb2RhbCB3aGVuIGRpc3BsYXllZC4ifX0se25hbWU6ImFyaWEtbXVsdGlsaW5lIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW11bHRpbGluZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciBhIHRleHQgYm94IGFjY2VwdHMgbXVsdGlwbGUgbGluZXMgb2YgaW5wdXQgb3Igb25seSBhIHNpbmdsZSBsaW5lLiJ9fSx7bmFtZToiYXJpYS1tdWx0aXNlbGVjdGFibGUiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbXVsdGlzZWxlY3RhYmxlIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIG1heSBzZWxlY3QgbW9yZSB0aGFuIG9uZSBpdGVtIGZyb20gdGhlIGN1cnJlbnQgc2VsZWN0YWJsZSBkZXNjZW5kYW50cy4ifX0se25hbWU6ImFyaWEtb3JpZW50YXRpb24iLHZhbHVlU2V0OiJvcmllbnRhdGlvbiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW9yaWVudGF0aW9uIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIHRoZSBlbGVtZW50J3Mgb3JpZW50YXRpb24gaXMgaG9yaXpvbnRhbCwgdmVydGljYWwsIG9yIHVua25vd24vYW1iaWd1b3VzLiJ9fSx7bmFtZToiYXJpYS1vd25zIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtb3ducyJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSBpbiBvcmRlciB0byBkZWZpbmUgYSB2aXN1YWwsIGZ1bmN0aW9uYWwsIG9yIGNvbnRleHR1YWwgcGFyZW50L2NoaWxkIFtyZWxhdGlvbnNoaXBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1yZWxhdGlvbnNoaXApIGJldHdlZW4gRE9NIGVsZW1lbnRzIHdoZXJlIHRoZSBET00gaGllcmFyY2h5IGNhbm5vdCBiZSB1c2VkIHRvIHJlcHJlc2VudCB0aGUgcmVsYXRpb25zaGlwLiBTZWUgcmVsYXRlZCBbYGFyaWEtY29udHJvbHNgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbnRyb2xzKS4ifX0se25hbWU6ImFyaWEtcGxhY2Vob2xkZXIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1wbGFjZWhvbGRlciJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGEgc2hvcnQgaGludCAoYSB3b3JkIG9yIHNob3J0IHBocmFzZSkgaW50ZW5kZWQgdG8gYWlkIHRoZSB1c2VyIHdpdGggZGF0YSBlbnRyeSB3aGVuIHRoZSBjb250cm9sIGhhcyBubyB2YWx1ZS4gQSBoaW50IGNvdWxkIGJlIGEgc2FtcGxlIHZhbHVlIG9yIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGV4cGVjdGVkIGZvcm1hdC4ifX0se25hbWU6ImFyaWEtcG9zaW5zZXQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1wb3NpbnNldCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkncyBudW1iZXIgb3IgcG9zaXRpb24gaW4gdGhlIGN1cnJlbnQgc2V0IG9mIGxpc3RpdGVtcyBvciB0cmVlaXRlbXMuIE5vdCByZXF1aXJlZCBpZiBhbGwgZWxlbWVudHMgaW4gdGhlIHNldCBhcmUgcHJlc2VudCBpbiB0aGUgRE9NLiBTZWUgcmVsYXRlZCBbYGFyaWEtc2V0c2l6ZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtc2V0c2l6ZSkuIn19LHtuYW1lOiJhcmlhLXByZXNzZWQiLHZhbHVlU2V0OiJ0cmlzdGF0ZSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXByZXNzZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonSW5kaWNhdGVzIHRoZSBjdXJyZW50ICJwcmVzc2VkIiBbc3RhdGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1zdGF0ZSkgb2YgdG9nZ2xlIGJ1dHRvbnMuIFNlZSByZWxhdGVkIFtgYXJpYS1jaGVja2VkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jaGVja2VkKSBhbmQgW2BhcmlhLXNlbGVjdGVkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zZWxlY3RlZCkuJ319LHtuYW1lOiJhcmlhLXJlYWRvbmx5Iix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJlYWRvbmx5In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGF0IHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGlzIG5vdCBlZGl0YWJsZSwgYnV0IGlzIG90aGVyd2lzZSBbb3BlcmFibGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vcGVyYWJsZSkuIFNlZSByZWxhdGVkIFtgYXJpYS1kaXNhYmxlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZGlzYWJsZWQpLiJ9fSx7bmFtZToiYXJpYS1yZWxldmFudCIsdmFsdWVTZXQ6InJlbGV2YW50IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcmVsZXZhbnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoYXQgbm90aWZpY2F0aW9ucyB0aGUgdXNlciBhZ2VudCB3aWxsIHRyaWdnZXIgd2hlbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlIHdpdGhpbiBhIGxpdmUgcmVnaW9uIGlzIG1vZGlmaWVkLiBTZWUgcmVsYXRlZCBbYGFyaWEtYXRvbWljYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1hdG9taWMpLiJ9fSx7bmFtZToiYXJpYS1yZXF1aXJlZCIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yZXF1aXJlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCB1c2VyIGlucHV0IGlzIHJlcXVpcmVkIG9uIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGJlZm9yZSBhIGZvcm0gbWF5IGJlIHN1Ym1pdHRlZC4ifX0se25hbWU6ImFyaWEtcm9sZWRlc2NyaXB0aW9uIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm9sZWRlc2NyaXB0aW9uIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgYSBodW1hbi1yZWFkYWJsZSwgYXV0aG9yLWxvY2FsaXplZCBkZXNjcmlwdGlvbiBmb3IgdGhlIFtyb2xlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tcm9sZSkgb2YgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KS4ifX0se25hbWU6ImFyaWEtcm93Y291bnQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3djb3VudCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyBpbiBhIFtgdGFibGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0YWJsZSksIFtgZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyaWQpLCBvciBbYHRyZWVncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdHJlZWdyaWQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtcm93aW5kZXhgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvd2luZGV4KS4ifX0se25hbWU6ImFyaWEtcm93aW5kZXgiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dpbmRleCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGFuIFtlbGVtZW50J3NdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSByb3cgaW5kZXggb3IgcG9zaXRpb24gd2l0aCByZXNwZWN0IHRvIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyB3aXRoaW4gYSBbYHRhYmxlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGFibGUpLCBbYGdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncmlkKSwgb3IgW2B0cmVlZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RyZWVncmlkKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXJvd2NvdW50YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3djb3VudCkgYW5kIFtgYXJpYS1yb3dzcGFuYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dzcGFuKS4ifX0se25hbWU6ImFyaWEtcm93c3BhbiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvd3NwYW4ifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3Mgc3Bhbm5lZCBieSBhIGNlbGwgb3IgZ3JpZGNlbGwgd2l0aGluIGEgW2B0YWJsZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RhYmxlKSwgW2BncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JpZCksIG9yIFtgdHJlZWdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0cmVlZ3JpZCkuIFNlZSByZWxhdGVkIFtgYXJpYS1yb3dpbmRleGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93aW5kZXgpIGFuZCBbYGFyaWEtY29sc3BhbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29sc3BhbikuIn19LHtuYW1lOiJhcmlhLXNlbGVjdGVkIix2YWx1ZVNldDoidSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNlbGVjdGVkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0luZGljYXRlcyB0aGUgY3VycmVudCAic2VsZWN0ZWQiIFtzdGF0ZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXN0YXRlKSBvZiB2YXJpb3VzIFt3aWRnZXRzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4td2lkZ2V0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWNoZWNrZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNoZWNrZWQpIGFuZCBbYGFyaWEtcHJlc3NlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcHJlc3NlZCkuJ319LHtuYW1lOiJhcmlhLXNldHNpemUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zZXRzaXplIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgY3VycmVudCBzZXQgb2YgbGlzdGl0ZW1zIG9yIHRyZWVpdGVtcy4gTm90IHJlcXVpcmVkIGlmIGFsbCBlbGVtZW50cyBpbiB0aGUgc2V0IGFyZSBwcmVzZW50IGluIHRoZSBET00uIFNlZSByZWxhdGVkIFtgYXJpYS1wb3NpbnNldGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcG9zaW5zZXQpLiJ9fSx7bmFtZToiYXJpYS1zb3J0Iix2YWx1ZVNldDoic29ydCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNvcnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIGlmIGl0ZW1zIGluIGEgdGFibGUgb3IgZ3JpZCBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvciBkZXNjZW5kaW5nIG9yZGVyLiJ9fSx7bmFtZToiYXJpYS12YWx1ZW1heCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXZhbHVlbWF4In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIG1heGltdW0gYWxsb3dlZCB2YWx1ZSBmb3IgYSByYW5nZSBbd2lkZ2V0XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4td2lkZ2V0KS4ifX0se25hbWU6ImFyaWEtdmFsdWVtaW4iLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS12YWx1ZW1pbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBtaW5pbXVtIGFsbG93ZWQgdmFsdWUgZm9yIGEgcmFuZ2UgW3dpZGdldF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIn19LHtuYW1lOiJhcmlhLXZhbHVlbm93IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWVub3cifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgY3VycmVudCB2YWx1ZSBmb3IgYSByYW5nZSBbd2lkZ2V0XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4td2lkZ2V0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXZhbHVldGV4dGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWV0ZXh0KS4ifX0se25hbWU6ImFyaWEtdmFsdWV0ZXh0IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWV0ZXh0In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIGh1bWFuIHJlYWRhYmxlIHRleHQgYWx0ZXJuYXRpdmUgb2YgW2BhcmlhLXZhbHVlbm93YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS12YWx1ZW5vdykgZm9yIGEgcmFuZ2UgW3dpZGdldF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIn19LHtuYW1lOiJhcmlhLWRldGFpbHMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgdGhhdCBwcm92aWRlcyBhIGRldGFpbGVkLCBleHRlbmRlZCBkZXNjcmlwdGlvbiBmb3IgdGhlIFtvYmplY3RdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vYmplY3QpLiBTZWUgcmVsYXRlZCBbYGFyaWEtZGVzY3JpYmVkYnlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRlc2NyaWJlZGJ5KS4ifX0se25hbWU6ImFyaWEta2V5c2hvcnRjdXRzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMga2V5Ym9hcmQgc2hvcnRjdXRzIHRoYXQgYW4gYXV0aG9yIGhhcyBpbXBsZW1lbnRlZCB0byBhY3RpdmF0ZSBvciBnaXZlIGZvY3VzIHRvIGFuIGVsZW1lbnQuIn19XSx2YWx1ZVNldHM6W3tuYW1lOiJiIix2YWx1ZXM6W3tuYW1lOiJ0cnVlIn0se25hbWU6ImZhbHNlIn1dfSx7bmFtZToidSIsdmFsdWVzOlt7bmFtZToidHJ1ZSJ9LHtuYW1lOiJmYWxzZSJ9LHtuYW1lOiJ1bmRlZmluZWQifV19LHtuYW1lOiJvIix2YWx1ZXM6W3tuYW1lOiJvbiJ9LHtuYW1lOiJvZmYifV19LHtuYW1lOiJ5Iix2YWx1ZXM6W3tuYW1lOiJ5ZXMifSx7bmFtZToibm8ifV19LHtuYW1lOiJ3Iix2YWx1ZXM6W3tuYW1lOiJzb2Z0In0se25hbWU6ImhhcmQifV19LHtuYW1lOiJkIix2YWx1ZXM6W3tuYW1lOiJsdHIifSx7bmFtZToicnRsIn0se25hbWU6ImF1dG8ifV19LHtuYW1lOiJtIix2YWx1ZXM6W3tuYW1lOiJnZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvcnJlc3BvbmRzIHRvIHRoZSBIVFRQIFtHRVQgbWV0aG9kXShodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM5Lmh0bWwjc2VjOS4zKTsgZm9ybSBkYXRhIGFyZSBhcHBlbmRlZCB0byB0aGUgYGFjdGlvbmAgYXR0cmlidXRlIFVSSSB3aXRoIGEgJz8nIGFzIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHRpbmcgVVJJIGlzIHNlbnQgdG8gdGhlIHNlcnZlci4gVXNlIHRoaXMgbWV0aG9kIHdoZW4gdGhlIGZvcm0gaGFzIG5vIHNpZGUtZWZmZWN0cyBhbmQgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLiJ9fSx7bmFtZToicG9zdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQ29ycmVzcG9uZHMgdG8gdGhlIEhUVFAgW1BPU1QgbWV0aG9kXShodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM5Lmh0bWwjc2VjOS41KTsgZm9ybSBkYXRhIGFyZSBpbmNsdWRlZCBpbiB0aGUgYm9keSBvZiB0aGUgZm9ybSBhbmQgc2VudCB0byB0aGUgc2VydmVyLiJ9fSx7bmFtZToiZGlhbG9nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJVc2Ugd2hlbiB0aGUgZm9ybSBpcyBpbnNpZGUgYSBbYDxkaWFsb2c+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RpYWxvZykgZWxlbWVudCB0byBjbG9zZSB0aGUgZGlhbG9nIHdoZW4gc3VibWl0dGVkLiJ9fV19LHtuYW1lOiJmbSIsdmFsdWVzOlt7bmFtZToiZ2V0In0se25hbWU6InBvc3QifV19LHtuYW1lOiJzIix2YWx1ZXM6W3tuYW1lOiJyb3cifSx7bmFtZToiY29sIn0se25hbWU6InJvd2dyb3VwIn0se25hbWU6ImNvbGdyb3VwIn1dfSx7bmFtZToidCIsdmFsdWVzOlt7bmFtZToiaGlkZGVuIn0se25hbWU6InRleHQifSx7bmFtZToic2VhcmNoIn0se25hbWU6InRlbCJ9LHtuYW1lOiJ1cmwifSx7bmFtZToiZW1haWwifSx7bmFtZToicGFzc3dvcmQifSx7bmFtZToiZGF0ZXRpbWUifSx7bmFtZToiZGF0ZSJ9LHtuYW1lOiJtb250aCJ9LHtuYW1lOiJ3ZWVrIn0se25hbWU6InRpbWUifSx7bmFtZToiZGF0ZXRpbWUtbG9jYWwifSx7bmFtZToibnVtYmVyIn0se25hbWU6InJhbmdlIn0se25hbWU6ImNvbG9yIn0se25hbWU6ImNoZWNrYm94In0se25hbWU6InJhZGlvIn0se25hbWU6ImZpbGUifSx7bmFtZToic3VibWl0In0se25hbWU6ImltYWdlIn0se25hbWU6InJlc2V0In0se25hbWU6ImJ1dHRvbiJ9XX0se25hbWU6ImltIix2YWx1ZXM6W3tuYW1lOiJ2ZXJiYXRpbSJ9LHtuYW1lOiJsYXRpbiJ9LHtuYW1lOiJsYXRpbi1uYW1lIn0se25hbWU6ImxhdGluLXByb3NlIn0se25hbWU6ImZ1bGwtd2lkdGgtbGF0aW4ifSx7bmFtZToia2FuYSJ9LHtuYW1lOiJrYW5hLW5hbWUifSx7bmFtZToia2F0YWthbmEifSx7bmFtZToibnVtZXJpYyJ9LHtuYW1lOiJ0ZWwifSx7bmFtZToiZW1haWwifSx7bmFtZToidXJsIn1dfSx7bmFtZToiYnQiLHZhbHVlczpbe25hbWU6ImJ1dHRvbiJ9LHtuYW1lOiJzdWJtaXQifSx7bmFtZToicmVzZXQifSx7bmFtZToibWVudSJ9XX0se25hbWU6Imx0Iix2YWx1ZXM6W3tuYW1lOiIxIn0se25hbWU6ImEifSx7bmFtZToiQSJ9LHtuYW1lOiJpIn0se25hbWU6IkkifV19LHtuYW1lOiJtdCIsdmFsdWVzOlt7bmFtZToiY29udGV4dCJ9LHtuYW1lOiJ0b29sYmFyIn1dfSx7bmFtZToibWl0Iix2YWx1ZXM6W3tuYW1lOiJjb21tYW5kIn0se25hbWU6ImNoZWNrYm94In0se25hbWU6InJhZGlvIn1dfSx7bmFtZToiZXQiLHZhbHVlczpbe25hbWU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9LHtuYW1lOiJtdWx0aXBhcnQvZm9ybS1kYXRhIn0se25hbWU6InRleHQvcGxhaW4ifV19LHtuYW1lOiJ0ayIsdmFsdWVzOlt7bmFtZToic3VidGl0bGVzIn0se25hbWU6ImNhcHRpb25zIn0se25hbWU6ImRlc2NyaXB0aW9ucyJ9LHtuYW1lOiJjaGFwdGVycyJ9LHtuYW1lOiJtZXRhZGF0YSJ9XX0se25hbWU6InBsIix2YWx1ZXM6W3tuYW1lOiJub25lIn0se25hbWU6Im1ldGFkYXRhIn0se25hbWU6ImF1dG8ifV19LHtuYW1lOiJzaCIsdmFsdWVzOlt7bmFtZToiY2lyY2xlIn0se25hbWU6ImRlZmF1bHQifSx7bmFtZToicG9seSJ9LHtuYW1lOiJyZWN0In1dfSx7bmFtZToieG8iLHZhbHVlczpbe25hbWU6ImFub255bW91cyJ9LHtuYW1lOiJ1c2UtY3JlZGVudGlhbHMifV19LHtuYW1lOiJzYiIsdmFsdWVzOlt7bmFtZToiYWxsb3ctZm9ybXMifSx7bmFtZToiYWxsb3ctbW9kYWxzIn0se25hbWU6ImFsbG93LXBvaW50ZXItbG9jayJ9LHtuYW1lOiJhbGxvdy1wb3B1cHMifSx7bmFtZToiYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94In0se25hbWU6ImFsbG93LXNhbWUtb3JpZ2luIn0se25hbWU6ImFsbG93LXNjcmlwdHMifSx7bmFtZToiYWxsb3ctdG9wLW5hdmlnYXRpb24ifV19LHtuYW1lOiJ0cmlzdGF0ZSIsdmFsdWVzOlt7bmFtZToidHJ1ZSJ9LHtuYW1lOiJmYWxzZSJ9LHtuYW1lOiJtaXhlZCJ9LHtuYW1lOiJ1bmRlZmluZWQifV19LHtuYW1lOiJpbnB1dGF1dG9jb21wbGV0ZSIsdmFsdWVzOlt7bmFtZToiYWRkaXRpb25hbC1uYW1lIn0se25hbWU6ImFkZHJlc3MtbGV2ZWwxIn0se25hbWU6ImFkZHJlc3MtbGV2ZWwyIn0se25hbWU6ImFkZHJlc3MtbGV2ZWwzIn0se25hbWU6ImFkZHJlc3MtbGV2ZWw0In0se25hbWU6ImFkZHJlc3MtbGluZTEifSx7bmFtZToiYWRkcmVzcy1saW5lMiJ9LHtuYW1lOiJhZGRyZXNzLWxpbmUzIn0se25hbWU6ImJkYXkifSx7bmFtZToiYmRheS15ZWFyIn0se25hbWU6ImJkYXktZGF5In0se25hbWU6ImJkYXktbW9udGgifSx7bmFtZToiYmlsbGluZyJ9LHtuYW1lOiJjYy1hZGRpdGlvbmFsLW5hbWUifSx7bmFtZToiY2MtY3NjIn0se25hbWU6ImNjLWV4cCJ9LHtuYW1lOiJjYy1leHAtbW9udGgifSx7bmFtZToiY2MtZXhwLXllYXIifSx7bmFtZToiY2MtZmFtaWx5LW5hbWUifSx7bmFtZToiY2MtZ2l2ZW4tbmFtZSJ9LHtuYW1lOiJjYy1uYW1lIn0se25hbWU6ImNjLW51bWJlciJ9LHtuYW1lOiJjYy10eXBlIn0se25hbWU6ImNvdW50cnkifSx7bmFtZToiY291bnRyeS1uYW1lIn0se25hbWU6ImN1cnJlbnQtcGFzc3dvcmQifSx7bmFtZToiZW1haWwifSx7bmFtZToiZmFtaWx5LW5hbWUifSx7bmFtZToiZmF4In0se25hbWU6ImdpdmVuLW5hbWUifSx7bmFtZToiaG9tZSJ9LHtuYW1lOiJob25vcmlmaWMtcHJlZml4In0se25hbWU6Imhvbm9yaWZpYy1zdWZmaXgifSx7bmFtZToiaW1wcCJ9LHtuYW1lOiJsYW5ndWFnZSJ9LHtuYW1lOiJtb2JpbGUifSx7bmFtZToibmFtZSJ9LHtuYW1lOiJuZXctcGFzc3dvcmQifSx7bmFtZToibmlja25hbWUifSx7bmFtZToib3JnYW5pemF0aW9uIn0se25hbWU6Im9yZ2FuaXphdGlvbi10aXRsZSJ9LHtuYW1lOiJwYWdlciJ9LHtuYW1lOiJwaG90byJ9LHtuYW1lOiJwb3N0YWwtY29kZSJ9LHtuYW1lOiJzZXgifSx7bmFtZToic2hpcHBpbmcifSx7bmFtZToic3RyZWV0LWFkZHJlc3MifSx7bmFtZToidGVsLWFyZWEtY29kZSJ9LHtuYW1lOiJ0ZWwifSx7bmFtZToidGVsLWNvdW50cnktY29kZSJ9LHtuYW1lOiJ0ZWwtZXh0ZW5zaW9uIn0se25hbWU6InRlbC1sb2NhbCJ9LHtuYW1lOiJ0ZWwtbG9jYWwtcHJlZml4In0se25hbWU6InRlbC1sb2NhbC1zdWZmaXgifSx7bmFtZToidGVsLW5hdGlvbmFsIn0se25hbWU6InRyYW5zYWN0aW9uLWFtb3VudCJ9LHtuYW1lOiJ0cmFuc2FjdGlvbi1jdXJyZW5jeSJ9LHtuYW1lOiJ1cmwifSx7bmFtZToidXNlcm5hbWUifSx7bmFtZToid29yayJ9XX0se25hbWU6ImF1dG9jb21wbGV0ZSIsdmFsdWVzOlt7bmFtZToiaW5saW5lIn0se25hbWU6Imxpc3QifSx7bmFtZToiYm90aCJ9LHtuYW1lOiJub25lIn1dfSx7bmFtZToiY3VycmVudCIsdmFsdWVzOlt7bmFtZToicGFnZSJ9LHtuYW1lOiJzdGVwIn0se25hbWU6ImxvY2F0aW9uIn0se25hbWU6ImRhdGUifSx7bmFtZToidGltZSJ9LHtuYW1lOiJ0cnVlIn0se25hbWU6ImZhbHNlIn1dfSx7bmFtZToiZHJvcGVmZmVjdCIsdmFsdWVzOlt7bmFtZToiY29weSJ9LHtuYW1lOiJtb3ZlIn0se25hbWU6ImxpbmsifSx7bmFtZToiZXhlY3V0ZSJ9LHtuYW1lOiJwb3B1cCJ9LHtuYW1lOiJub25lIn1dfSx7bmFtZToiaW52YWxpZCIsdmFsdWVzOlt7bmFtZToiZ3JhbW1hciJ9LHtuYW1lOiJmYWxzZSJ9LHtuYW1lOiJzcGVsbGluZyJ9LHtuYW1lOiJ0cnVlIn1dfSx7bmFtZToibGl2ZSIsdmFsdWVzOlt7bmFtZToib2ZmIn0se25hbWU6InBvbGl0ZSJ9LHtuYW1lOiJhc3NlcnRpdmUifV19LHtuYW1lOiJvcmllbnRhdGlvbiIsdmFsdWVzOlt7bmFtZToidmVydGljYWwifSx7bmFtZToiaG9yaXpvbnRhbCJ9LHtuYW1lOiJ1bmRlZmluZWQifV19LHtuYW1lOiJyZWxldmFudCIsdmFsdWVzOlt7bmFtZToiYWRkaXRpb25zIn0se25hbWU6InJlbW92YWxzIn0se25hbWU6InRleHQifSx7bmFtZToiYWxsIn0se25hbWU6ImFkZGl0aW9ucyB0ZXh0In1dfSx7bmFtZToic29ydCIsdmFsdWVzOlt7bmFtZToiYXNjZW5kaW5nIn0se25hbWU6ImRlc2NlbmRpbmcifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJvdGhlciJ9XX0se25hbWU6InJvbGVzIix2YWx1ZXM6W3tuYW1lOiJhbGVydCJ9LHtuYW1lOiJhbGVydGRpYWxvZyJ9LHtuYW1lOiJidXR0b24ifSx7bmFtZToiY2hlY2tib3gifSx7bmFtZToiZGlhbG9nIn0se25hbWU6ImdyaWRjZWxsIn0se25hbWU6ImxpbmsifSx7bmFtZToibG9nIn0se25hbWU6Im1hcnF1ZWUifSx7bmFtZToibWVudWl0ZW0ifSx7bmFtZToibWVudWl0ZW1jaGVja2JveCJ9LHtuYW1lOiJtZW51aXRlbXJhZGlvIn0se25hbWU6Im9wdGlvbiJ9LHtuYW1lOiJwcm9ncmVzc2JhciJ9LHtuYW1lOiJyYWRpbyJ9LHtuYW1lOiJzY3JvbGxiYXIifSx7bmFtZToic2VhcmNoYm94In0se25hbWU6InNsaWRlciJ9LHtuYW1lOiJzcGluYnV0dG9uIn0se25hbWU6InN0YXR1cyJ9LHtuYW1lOiJzd2l0Y2gifSx7bmFtZToidGFiIn0se25hbWU6InRhYnBhbmVsIn0se25hbWU6InRleHRib3gifSx7bmFtZToidGltZXIifSx7bmFtZToidG9vbHRpcCJ9LHtuYW1lOiJ0cmVlaXRlbSJ9LHtuYW1lOiJjb21ib2JveCJ9LHtuYW1lOiJncmlkIn0se25hbWU6Imxpc3Rib3gifSx7bmFtZToibWVudSJ9LHtuYW1lOiJtZW51YmFyIn0se25hbWU6InJhZGlvZ3JvdXAifSx7bmFtZToidGFibGlzdCJ9LHtuYW1lOiJ0cmVlIn0se25hbWU6InRyZWVncmlkIn0se25hbWU6ImFwcGxpY2F0aW9uIn0se25hbWU6ImFydGljbGUifSx7bmFtZToiY2VsbCJ9LHtuYW1lOiJjb2x1bW5oZWFkZXIifSx7bmFtZToiZGVmaW5pdGlvbiJ9LHtuYW1lOiJkaXJlY3RvcnkifSx7bmFtZToiZG9jdW1lbnQifSx7bmFtZToiZmVlZCJ9LHtuYW1lOiJmaWd1cmUifSx7bmFtZToiZ3JvdXAifSx7bmFtZToiaGVhZGluZyJ9LHtuYW1lOiJpbWcifSx7bmFtZToibGlzdCJ9LHtuYW1lOiJsaXN0aXRlbSJ9LHtuYW1lOiJtYXRoIn0se25hbWU6Im5vbmUifSx7bmFtZToibm90ZSJ9LHtuYW1lOiJwcmVzZW50YXRpb24ifSx7bmFtZToicmVnaW9uIn0se25hbWU6InJvdyJ9LHtuYW1lOiJyb3dncm91cCJ9LHtuYW1lOiJyb3doZWFkZXIifSx7bmFtZToic2VwYXJhdG9yIn0se25hbWU6InRhYmxlIn0se25hbWU6InRlcm0ifSx7bmFtZToidGV4dCJ9LHtuYW1lOiJ0b29sYmFyIn0se25hbWU6ImJhbm5lciJ9LHtuYW1lOiJjb21wbGVtZW50YXJ5In0se25hbWU6ImNvbnRlbnRpbmZvIn0se25hbWU6ImZvcm0ifSx7bmFtZToibWFpbiJ9LHtuYW1lOiJuYXZpZ2F0aW9uIn0se25hbWU6InJlZ2lvbiJ9LHtuYW1lOiJzZWFyY2gifSx7bmFtZToiZG9jLWFic3RyYWN0In0se25hbWU6ImRvYy1hY2tub3dsZWRnbWVudHMifSx7bmFtZToiZG9jLWFmdGVyd29yZCJ9LHtuYW1lOiJkb2MtYXBwZW5kaXgifSx7bmFtZToiZG9jLWJhY2tsaW5rIn0se25hbWU6ImRvYy1iaWJsaW9lbnRyeSJ9LHtuYW1lOiJkb2MtYmlibGlvZ3JhcGh5In0se25hbWU6ImRvYy1iaWJsaW9yZWYifSx7bmFtZToiZG9jLWNoYXB0ZXIifSx7bmFtZToiZG9jLWNvbG9waG9uIn0se25hbWU6ImRvYy1jb25jbHVzaW9uIn0se25hbWU6ImRvYy1jb3ZlciJ9LHtuYW1lOiJkb2MtY3JlZGl0In0se25hbWU6ImRvYy1jcmVkaXRzIn0se25hbWU6ImRvYy1kZWRpY2F0aW9uIn0se25hbWU6ImRvYy1lbmRub3RlIn0se25hbWU6ImRvYy1lbmRub3RlcyJ9LHtuYW1lOiJkb2MtZXBpZ3JhcGgifSx7bmFtZToiZG9jLWVwaWxvZ3VlIn0se25hbWU6ImRvYy1lcnJhdGEifSx7bmFtZToiZG9jLWV4YW1wbGUifSx7bmFtZToiZG9jLWZvb3Rub3RlIn0se25hbWU6ImRvYy1mb3Jld29yZCJ9LHtuYW1lOiJkb2MtZ2xvc3NhcnkifSx7bmFtZToiZG9jLWdsb3NzcmVmIn0se25hbWU6ImRvYy1pbmRleCJ9LHtuYW1lOiJkb2MtaW50cm9kdWN0aW9uIn0se25hbWU6ImRvYy1ub3RlcmVmIn0se25hbWU6ImRvYy1ub3RpY2UifSx7bmFtZToiZG9jLXBhZ2VicmVhayJ9LHtuYW1lOiJkb2MtcGFnZWxpc3QifSx7bmFtZToiZG9jLXBhcnQifSx7bmFtZToiZG9jLXByZWZhY2UifSx7bmFtZToiZG9jLXByb2xvZ3VlIn0se25hbWU6ImRvYy1wdWxscXVvdGUifSx7bmFtZToiZG9jLXFuYSJ9LHtuYW1lOiJkb2Mtc3VidGl0bGUifSx7bmFtZToiZG9jLXRpcCJ9LHtuYW1lOiJkb2MtdG9jIn1dfSx7bmFtZToibWV0YW5hbWVzIix2YWx1ZXM6W3tuYW1lOiJhcHBsaWNhdGlvbi1uYW1lIn0se25hbWU6ImF1dGhvciJ9LHtuYW1lOiJkZXNjcmlwdGlvbiJ9LHtuYW1lOiJmb3JtYXQtZGV0ZWN0aW9uIn0se25hbWU6ImdlbmVyYXRvciJ9LHtuYW1lOiJrZXl3b3JkcyJ9LHtuYW1lOiJwdWJsaXNoZXIifSx7bmFtZToicmVmZXJyZXIifSx7bmFtZToicm9ib3RzIn0se25hbWU6InRoZW1lLWNvbG9yIn0se25hbWU6InZpZXdwb3J0In1dfSx7bmFtZToiaGFzcG9wdXAiLHZhbHVlczpbe25hbWU6ImZhbHNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiIoZGVmYXVsdCkgSW5kaWNhdGVzIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBwb3B1cC4ifX0se25hbWU6InRydWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSBtZW51LiJ9fSx7bmFtZToibWVudSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBwb3B1cCBpcyBhIG1lbnUuIn19LHtuYW1lOiJsaXN0Ym94IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIHBvcHVwIGlzIGEgbGlzdGJveC4ifX0se25hbWU6InRyZWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSB0cmVlLiJ9fSx7bmFtZToiZ3JpZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBwb3B1cCBpcyBhIGdyaWQuIn19LHtuYW1lOiJkaWFsb2ciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSBkaWFsb2cuIn19XX1dfSx3cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5kYXRhUHJvdmlkZXJzPVtdLHRoaXMuc2V0RGF0YVByb3ZpZGVycyghMSE9PWUudXNlRGVmYXVsdERhdGFQcm92aWRlcixlLmN1c3RvbURhdGFQcm92aWRlcnN8fFtdKX1yZXR1cm4gZS5wcm90b3R5cGUuc2V0RGF0YVByb3ZpZGVycz1mdW5jdGlvbihlLHQpe3ZhciBuO3RoaXMuZGF0YVByb3ZpZGVycz1bXSxlJiZ0aGlzLmRhdGFQcm92aWRlcnMucHVzaChuZXcgU28oImh0bWw1IixicykpLChuPXRoaXMuZGF0YVByb3ZpZGVycykucHVzaC5hcHBseShuLHQpfSxlLnByb3RvdHlwZS5nZXREYXRhUHJvdmlkZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YVByb3ZpZGVyc30sZX0oKSxfcz17fTtmdW5jdGlvbiB2cyhlLHQpe3JldHVybiBuZXcgU28oZSx0KX1zZWxmLm9ubWVzc2FnZT0oKT0+e0FyKCgoZSx0KT0+bmV3IGNsYXNze19jdHg7X2xhbmd1YWdlU2VydmljZTtfbGFuZ3VhZ2VTZXR0aW5ncztfbGFuZ3VhZ2VJZDtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2N0eD1lLHRoaXMuX2xhbmd1YWdlU2V0dGluZ3M9dC5sYW5ndWFnZVNldHRpbmdzLHRoaXMuX2xhbmd1YWdlSWQ9dC5sYW5ndWFnZUlkO2NvbnN0IG49dGhpcy5fbGFuZ3VhZ2VTZXR0aW5ncy5kYXRhLHI9bj8udXNlRGVmYXVsdERhdGFQcm92aWRlcixpPVtdO2lmKG4/LmRhdGFQcm92aWRlcnMpZm9yKGNvbnN0IGUgaW4gbi5kYXRhUHJvdmlkZXJzKWkucHVzaCh2cyhlLG4uZGF0YVByb3ZpZGVyc1tlXSkpO3RoaXMuX2xhbmd1YWdlU2VydmljZT1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT1fcyk7dmFyIHQ9bmV3IHdzKGUpLG49bmV3IEJvKGUsdCkscj1uZXcgRG8oZSx0KTtyZXR1cm57c2V0RGF0YVByb3ZpZGVyczp0LnNldERhdGFQcm92aWRlcnMuYmluZCh0KSxjcmVhdGVTY2FubmVyOm9vLHBhcnNlSFRNTERvY3VtZW50OmZ1bmN0aW9uKGUpe3JldHVybiB1byhlLmdldFRleHQoKSl9LGRvQ29tcGxldGU6ci5kb0NvbXBsZXRlLmJpbmQociksZG9Db21wbGV0ZTI6ci5kb0NvbXBsZXRlMi5iaW5kKHIpLHNldENvbXBsZXRpb25QYXJ0aWNpcGFudHM6ci5zZXRDb21wbGV0aW9uUGFydGljaXBhbnRzLmJpbmQociksZG9Ib3ZlcjpuLmRvSG92ZXIuYmluZChuKSxmb3JtYXQ6JG8sZmluZERvY3VtZW50SGlnaGxpZ2h0czphcyxmaW5kRG9jdW1lbnRMaW5rczppcyxmaW5kRG9jdW1lbnRTeW1ib2xzOmNzLGdldEZvbGRpbmdSYW5nZXM6bXMsZ2V0U2VsZWN0aW9uUmFuZ2VzOmZzLGRvUXVvdGVDb21wbGV0ZTpyLmRvUXVvdGVDb21wbGV0ZS5iaW5kKHIpLGRvVGFnQ29tcGxldGU6ci5kb1RhZ0NvbXBsZXRlLmJpbmQociksZG9SZW5hbWU6ZHMsZmluZE1hdGNoaW5nVGFnUG9zaXRpb246dXMsZmluZE9uVHlwZVJlbmFtZVJhbmdlczpwcyxmaW5kTGlua2VkRWRpdGluZ1Jhbmdlczpwc319KHt1c2VEZWZhdWx0RGF0YVByb3ZpZGVyOnIsY3VzdG9tRGF0YVByb3ZpZGVyczppfSl9YXN5bmMgZG9Db21wbGV0ZShlLHQpe2xldCBuPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighbilyZXR1cm4gbnVsbDtsZXQgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VIVE1MRG9jdW1lbnQobik7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9sYW5ndWFnZVNlcnZpY2UuZG9Db21wbGV0ZShuLHQscix0aGlzLl9sYW5ndWFnZVNldHRpbmdzJiZ0aGlzLl9sYW5ndWFnZVNldHRpbmdzLnN1Z2dlc3QpKX1hc3luYyBmb3JtYXQoZSx0LG4pe2xldCByPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighcilyZXR1cm5bXTtsZXQgaT17Li4udGhpcy5fbGFuZ3VhZ2VTZXR0aW5ncy5mb3JtYXQsLi4ubn0sYT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZm9ybWF0KHIsdCxpKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGEpfWFzeW5jIGRvSG92ZXIoZSx0KXtsZXQgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuIG51bGw7bGV0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlSFRNTERvY3VtZW50KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvSG92ZXIobix0LHIpO3JldHVybiBQcm9taXNlLnJlc29sdmUoaSl9YXN5bmMgZmluZERvY3VtZW50SGlnaGxpZ2h0cyhlLHQpe2xldCBuPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighbilyZXR1cm5bXTtsZXQgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VIVE1MRG9jdW1lbnQobiksaT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZmluZERvY3VtZW50SGlnaGxpZ2h0cyhuLHQscik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShpKX1hc3luYyBmaW5kRG9jdW1lbnRMaW5rcyhlKXtsZXQgdD10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIXQpcmV0dXJuW107bGV0IG49dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmREb2N1bWVudExpbmtzKHQsbnVsbCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShuKX1hc3luYyBmaW5kRG9jdW1lbnRTeW1ib2xzKGUpe2xldCB0PXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighdClyZXR1cm5bXTtsZXQgbj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VIVE1MRG9jdW1lbnQodCkscj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZmluZERvY3VtZW50U3ltYm9scyh0LG4pO3JldHVybiBQcm9taXNlLnJlc29sdmUocil9YXN5bmMgZ2V0Rm9sZGluZ1JhbmdlcyhlLHQpe2xldCBuPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighbilyZXR1cm5bXTtsZXQgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZ2V0Rm9sZGluZ1JhbmdlcyhuLHQpO3JldHVybiBQcm9taXNlLnJlc29sdmUocil9YXN5bmMgZ2V0U2VsZWN0aW9uUmFuZ2VzKGUsdCl7bGV0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFuKXJldHVybltdO2xldCByPXRoaXMuX2xhbmd1YWdlU2VydmljZS5nZXRTZWxlY3Rpb25SYW5nZXMobix0KTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIpfWFzeW5jIGRvUmVuYW1lKGUsdCxuKXtsZXQgcj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIXIpcmV0dXJuIG51bGw7bGV0IGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlSFRNTERvY3VtZW50KHIpLGE9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvUmVuYW1lKHIsdCxuLGkpO3JldHVybiBQcm9taXNlLnJlc29sdmUoYSl9X2dldFRleHREb2N1bWVudChlKXtsZXQgdD10aGlzLl9jdHguZ2V0TWlycm9yTW9kZWxzKCk7Zm9yKGxldCBuIG9mIHQpaWYobi51cmkudG9TdHJpbmcoKT09PWUpcmV0dXJuIE1hLmNyZWF0ZShlLHRoaXMuX2xhbmd1YWdlSWQsbi52ZXJzaW9uLG4uZ2V0VmFsdWUoKSk7cmV0dXJuIG51bGx9fShlLHQpKSl9fSgpOwoK', null, false);
|
|
4
4
|
/* eslint-enable */
|
|
5
5
|
|
|
6
6
|
export { WorkerFactory as default };
|