The Obelisk.html 2.5 MB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857
  1. <!--
  2. The Obelisk is a pornographic interactive-fiction game set in a post-apocalyptic
  3. world ravaged by a magical tower.
  4. Copyright (C) 2017-2018, Reddo
  5. This program is free software: you can redistribute it and/or modify
  6. it under the terms of the GNU Affero General Public License as
  7. published by the Free Software Foundation, either version 3 of the
  8. License, or (at your option) any later version.
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. GNU Affero General Public License for more details.
  13. GNU AFFERO GENERAL PUBLIC LICENSE
  14. Version 3, 19 November 2007
  15. Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
  16. Everyone is permitted to copy and distribute verbatim copies
  17. of this license document, but changing it is not allowed.
  18. Preamble
  19. The GNU Affero General Public License is a free, copyleft license for
  20. software and other kinds of works, specifically designed to ensure
  21. cooperation with the community in the case of network server software.
  22. The licenses for most software and other practical works are designed
  23. to take away your freedom to share and change the works. By contrast,
  24. our General Public Licenses are intended to guarantee your freedom to
  25. share and change all versions of a program--to make sure it remains free
  26. software for all its users.
  27. When we speak of free software, we are referring to freedom, not
  28. price. Our General Public Licenses are designed to make sure that you
  29. have the freedom to distribute copies of free software (and charge for
  30. them if you wish), that you receive source code or can get it if you
  31. want it, that you can change the software or use pieces of it in new
  32. free programs, and that you know you can do these things.
  33. Developers that use our General Public Licenses protect your rights
  34. with two steps: (1) assert copyright on the software, and (2) offer
  35. you this License which gives you legal permission to copy, distribute
  36. and/or modify the software.
  37. A secondary benefit of defending all users' freedom is that
  38. improvements made in alternate versions of the program, if they
  39. receive widespread use, become available for other developers to
  40. incorporate. Many developers of free software are heartened and
  41. encouraged by the resulting cooperation. However, in the case of
  42. software used on network servers, this result may fail to come about.
  43. The GNU General Public License permits making a modified version and
  44. letting the public access it on a server without ever releasing its
  45. source code to the public.
  46. The GNU Affero General Public License is designed specifically to
  47. ensure that, in such cases, the modified source code becomes available
  48. to the community. It requires the operator of a network server to
  49. provide the source code of the modified version running there to the
  50. users of that server. Therefore, public use of a modified version, on
  51. a publicly accessible server, gives the public access to the source
  52. code of the modified version.
  53. An older license, called the Affero General Public License and
  54. published by Affero, was designed to accomplish similar goals. This is
  55. a different license, not a version of the Affero GPL, but Affero has
  56. released a new version of the Affero GPL which permits relicensing under
  57. this license.
  58. The precise terms and conditions for copying, distribution and
  59. modification follow.
  60. TERMS AND CONDITIONS
  61. 0. Definitions.
  62. "This License" refers to version 3 of the GNU Affero General Public License.
  63. "Copyright" also means copyright-like laws that apply to other kinds of
  64. works, such as semiconductor masks.
  65. "The Program" refers to any copyrightable work licensed under this
  66. License. Each licensee is addressed as "you". "Licensees" and
  67. "recipients" may be individuals or organizations.
  68. To "modify" a work means to copy from or adapt all or part of the work
  69. in a fashion requiring copyright permission, other than the making of an
  70. exact copy. The resulting work is called a "modified version" of the
  71. earlier work or a work "based on" the earlier work.
  72. A "covered work" means either the unmodified Program or a work based
  73. on the Program.
  74. To "propagate" a work means to do anything with it that, without
  75. permission, would make you directly or secondarily liable for
  76. infringement under applicable copyright law, except executing it on a
  77. computer or modifying a private copy. Propagation includes copying,
  78. distribution (with or without modification), making available to the
  79. public, and in some countries other activities as well.
  80. To "convey" a work means any kind of propagation that enables other
  81. parties to make or receive copies. Mere interaction with a user through
  82. a computer network, with no transfer of a copy, is not conveying.
  83. An interactive user interface displays "Appropriate Legal Notices"
  84. to the extent that it includes a convenient and prominently visible
  85. feature that (1) displays an appropriate copyright notice, and (2)
  86. tells the user that there is no warranty for the work (except to the
  87. extent that warranties are provided), that licensees may convey the
  88. work under this License, and how to view a copy of this License. If
  89. the interface presents a list of user commands or options, such as a
  90. menu, a prominent item in the list meets this criterion.
  91. 1. Source Code.
  92. The "source code" for a work means the preferred form of the work
  93. for making modifications to it. "Object code" means any non-source
  94. form of a work.
  95. A "Standard Interface" means an interface that either is an official
  96. standard defined by a recognized standards body, or, in the case of
  97. interfaces specified for a particular programming language, one that
  98. is widely used among developers working in that language.
  99. The "System Libraries" of an executable work include anything, other
  100. than the work as a whole, that (a) is included in the normal form of
  101. packaging a Major Component, but which is not part of that Major
  102. Component, and (b) serves only to enable use of the work with that
  103. Major Component, or to implement a Standard Interface for which an
  104. implementation is available to the public in source code form. A
  105. "Major Component", in this context, means a major essential component
  106. (kernel, window system, and so on) of the specific operating system
  107. (if any) on which the executable work runs, or a compiler used to
  108. produce the work, or an object code interpreter used to run it.
  109. The "Corresponding Source" for a work in object code form means all
  110. the source code needed to generate, install, and (for an executable
  111. work) run the object code and to modify the work, including scripts to
  112. control those activities. However, it does not include the work's
  113. System Libraries, or general-purpose tools or generally available free
  114. programs which are used unmodified in performing those activities but
  115. which are not part of the work. For example, Corresponding Source
  116. includes interface definition files associated with source files for
  117. the work, and the source code for shared libraries and dynamically
  118. linked subprograms that the work is specifically designed to require,
  119. such as by intimate data communication or control flow between those
  120. subprograms and other parts of the work.
  121. The Corresponding Source need not include anything that users
  122. can regenerate automatically from other parts of the Corresponding
  123. Source.
  124. The Corresponding Source for a work in source code form is that
  125. same work.
  126. 2. Basic Permissions.
  127. All rights granted under this License are granted for the term of
  128. copyright on the Program, and are irrevocable provided the stated
  129. conditions are met. This License explicitly affirms your unlimited
  130. permission to run the unmodified Program. The output from running a
  131. covered work is covered by this License only if the output, given its
  132. content, constitutes a covered work. This License acknowledges your
  133. rights of fair use or other equivalent, as provided by copyright law.
  134. You may make, run and propagate covered works that you do not
  135. convey, without conditions so long as your license otherwise remains
  136. in force. You may convey covered works to others for the sole purpose
  137. of having them make modifications exclusively for you, or provide you
  138. with facilities for running those works, provided that you comply with
  139. the terms of this License in conveying all material for which you do
  140. not control copyright. Those thus making or running the covered works
  141. for you must do so exclusively on your behalf, under your direction
  142. and control, on terms that prohibit them from making any copies of
  143. your copyrighted material outside their relationship with you.
  144. Conveying under any other circumstances is permitted solely under
  145. the conditions stated below. Sublicensing is not allowed; section 10
  146. makes it unnecessary.
  147. 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
  148. No covered work shall be deemed part of an effective technological
  149. measure under any applicable law fulfilling obligations under article
  150. 11 of the WIPO copyright treaty adopted on 20 December 1996, or
  151. similar laws prohibiting or restricting circumvention of such
  152. measures.
  153. When you convey a covered work, you waive any legal power to forbid
  154. circumvention of technological measures to the extent such circumvention
  155. is effected by exercising rights under this License with respect to
  156. the covered work, and you disclaim any intention to limit operation or
  157. modification of the work as a means of enforcing, against the work's
  158. users, your or third parties' legal rights to forbid circumvention of
  159. technological measures.
  160. 4. Conveying Verbatim Copies.
  161. You may convey verbatim copies of the Program's source code as you
  162. receive it, in any medium, provided that you conspicuously and
  163. appropriately publish on each copy an appropriate copyright notice;
  164. keep intact all notices stating that this License and any
  165. non-permissive terms added in accord with section 7 apply to the code;
  166. keep intact all notices of the absence of any warranty; and give all
  167. recipients a copy of this License along with the Program.
  168. You may charge any price or no price for each copy that you convey,
  169. and you may offer support or warranty protection for a fee.
  170. 5. Conveying Modified Source Versions.
  171. You may convey a work based on the Program, or the modifications to
  172. produce it from the Program, in the form of source code under the
  173. terms of section 4, provided that you also meet all of these conditions:
  174. a) The work must carry prominent notices stating that you modified
  175. it, and giving a relevant date.
  176. b) The work must carry prominent notices stating that it is
  177. released under this License and any conditions added under section
  178. 7. This requirement modifies the requirement in section 4 to
  179. "keep intact all notices".
  180. c) You must license the entire work, as a whole, under this
  181. License to anyone who comes into possession of a copy. This
  182. License will therefore apply, along with any applicable section 7
  183. additional terms, to the whole of the work, and all its parts,
  184. regardless of how they are packaged. This License gives no
  185. permission to license the work in any other way, but it does not
  186. invalidate such permission if you have separately received it.
  187. d) If the work has interactive user interfaces, each must display
  188. Appropriate Legal Notices; however, if the Program has interactive
  189. interfaces that do not display Appropriate Legal Notices, your
  190. work need not make them do so.
  191. A compilation of a covered work with other separate and independent
  192. works, which are not by their nature extensions of the covered work,
  193. and which are not combined with it such as to form a larger program,
  194. in or on a volume of a storage or distribution medium, is called an
  195. "aggregate" if the compilation and its resulting copyright are not
  196. used to limit the access or legal rights of the compilation's users
  197. beyond what the individual works permit. Inclusion of a covered work
  198. in an aggregate does not cause this License to apply to the other
  199. parts of the aggregate.
  200. 6. Conveying Non-Source Forms.
  201. You may convey a covered work in object code form under the terms
  202. of sections 4 and 5, provided that you also convey the
  203. machine-readable Corresponding Source under the terms of this License,
  204. in one of these ways:
  205. a) Convey the object code in, or embodied in, a physical product
  206. (including a physical distribution medium), accompanied by the
  207. Corresponding Source fixed on a durable physical medium
  208. customarily used for software interchange.
  209. b) Convey the object code in, or embodied in, a physical product
  210. (including a physical distribution medium), accompanied by a
  211. written offer, valid for at least three years and valid for as
  212. long as you offer spare parts or customer support for that product
  213. model, to give anyone who possesses the object code either (1) a
  214. copy of the Corresponding Source for all the software in the
  215. product that is covered by this License, on a durable physical
  216. medium customarily used for software interchange, for a price no
  217. more than your reasonable cost of physically performing this
  218. conveying of source, or (2) access to copy the
  219. Corresponding Source from a network server at no charge.
  220. c) Convey individual copies of the object code with a copy of the
  221. written offer to provide the Corresponding Source. This
  222. alternative is allowed only occasionally and noncommercially, and
  223. only if you received the object code with such an offer, in accord
  224. with subsection 6b.
  225. d) Convey the object code by offering access from a designated
  226. place (gratis or for a charge), and offer equivalent access to the
  227. Corresponding Source in the same way through the same place at no
  228. further charge. You need not require recipients to copy the
  229. Corresponding Source along with the object code. If the place to
  230. copy the object code is a network server, the Corresponding Source
  231. may be on a different server (operated by you or a third party)
  232. that supports equivalent copying facilities, provided you maintain
  233. clear directions next to the object code saying where to find the
  234. Corresponding Source. Regardless of what server hosts the
  235. Corresponding Source, you remain obligated to ensure that it is
  236. available for as long as needed to satisfy these requirements.
  237. e) Convey the object code using peer-to-peer transmission, provided
  238. you inform other peers where the object code and Corresponding
  239. Source of the work are being offered to the general public at no
  240. charge under subsection 6d.
  241. A separable portion of the object code, whose source code is excluded
  242. from the Corresponding Source as a System Library, need not be
  243. included in conveying the object code work.
  244. A "User Product" is either (1) a "consumer product", which means any
  245. tangible personal property which is normally used for personal, family,
  246. or household purposes, or (2) anything designed or sold for incorporation
  247. into a dwelling. In determining whether a product is a consumer product,
  248. doubtful cases shall be resolved in favor of coverage. For a particular
  249. product received by a particular user, "normally used" refers to a
  250. typical or common use of that class of product, regardless of the status
  251. of the particular user or of the way in which the particular user
  252. actually uses, or expects or is expected to use, the product. A product
  253. is a consumer product regardless of whether the product has substantial
  254. commercial, industrial or non-consumer uses, unless such uses represent
  255. the only significant mode of use of the product.
  256. "Installation Information" for a User Product means any methods,
  257. procedures, authorization keys, or other information required to install
  258. and execute modified versions of a covered work in that User Product from
  259. a modified version of its Corresponding Source. The information must
  260. suffice to ensure that the continued functioning of the modified object
  261. code is in no case prevented or interfered with solely because
  262. modification has been made.
  263. If you convey an object code work under this section in, or with, or
  264. specifically for use in, a User Product, and the conveying occurs as
  265. part of a transaction in which the right of possession and use of the
  266. User Product is transferred to the recipient in perpetuity or for a
  267. fixed term (regardless of how the transaction is characterized), the
  268. Corresponding Source conveyed under this section must be accompanied
  269. by the Installation Information. But this requirement does not apply
  270. if neither you nor any third party retains the ability to install
  271. modified object code on the User Product (for example, the work has
  272. been installed in ROM).
  273. The requirement to provide Installation Information does not include a
  274. requirement to continue to provide support service, warranty, or updates
  275. for a work that has been modified or installed by the recipient, or for
  276. the User Product in which it has been modified or installed. Access to a
  277. network may be denied when the modification itself materially and
  278. adversely affects the operation of the network or violates the rules and
  279. protocols for communication across the network.
  280. Corresponding Source conveyed, and Installation Information provided,
  281. in accord with this section must be in a format that is publicly
  282. documented (and with an implementation available to the public in
  283. source code form), and must require no special password or key for
  284. unpacking, reading or copying.
  285. 7. Additional Terms.
  286. "Additional permissions" are terms that supplement the terms of this
  287. License by making exceptions from one or more of its conditions.
  288. Additional permissions that are applicable to the entire Program shall
  289. be treated as though they were included in this License, to the extent
  290. that they are valid under applicable law. If additional permissions
  291. apply only to part of the Program, that part may be used separately
  292. under those permissions, but the entire Program remains governed by
  293. this License without regard to the additional permissions.
  294. When you convey a copy of a covered work, you may at your option
  295. remove any additional permissions from that copy, or from any part of
  296. it. (Additional permissions may be written to require their own
  297. removal in certain cases when you modify the work.) You may place
  298. additional permissions on material, added by you to a covered work,
  299. for which you have or can give appropriate copyright permission.
  300. Notwithstanding any other provision of this License, for material you
  301. add to a covered work, you may (if authorized by the copyright holders of
  302. that material) supplement the terms of this License with terms:
  303. a) Disclaiming warranty or limiting liability differently from the
  304. terms of sections 15 and 16 of this License; or
  305. b) Requiring preservation of specified reasonable legal notices or
  306. author attributions in that material or in the Appropriate Legal
  307. Notices displayed by works containing it; or
  308. c) Prohibiting misrepresentation of the origin of that material, or
  309. requiring that modified versions of such material be marked in
  310. reasonable ways as different from the original version; or
  311. d) Limiting the use for publicity purposes of names of licensors or
  312. authors of the material; or
  313. e) Declining to grant rights under trademark law for use of some
  314. trade names, trademarks, or service marks; or
  315. f) Requiring indemnification of licensors and authors of that
  316. material by anyone who conveys the material (or modified versions of
  317. it) with contractual assumptions of liability to the recipient, for
  318. any liability that these contractual assumptions directly impose on
  319. those licensors and authors.
  320. All other non-permissive additional terms are considered "further
  321. restrictions" within the meaning of section 10. If the Program as you
  322. received it, or any part of it, contains a notice stating that it is
  323. governed by this License along with a term that is a further
  324. restriction, you may remove that term. If a license document contains
  325. a further restriction but permits relicensing or conveying under this
  326. License, you may add to a covered work material governed by the terms
  327. of that license document, provided that the further restriction does
  328. not survive such relicensing or conveying.
  329. If you add terms to a covered work in accord with this section, you
  330. must place, in the relevant source files, a statement of the
  331. additional terms that apply to those files, or a notice indicating
  332. where to find the applicable terms.
  333. Additional terms, permissive or non-permissive, may be stated in the
  334. form of a separately written license, or stated as exceptions;
  335. the above requirements apply either way.
  336. 8. Termination.
  337. You may not propagate or modify a covered work except as expressly
  338. provided under this License. Any attempt otherwise to propagate or
  339. modify it is void, and will automatically terminate your rights under
  340. this License (including any patent licenses granted under the third
  341. paragraph of section 11).
  342. However, if you cease all violation of this License, then your
  343. license from a particular copyright holder is reinstated (a)
  344. provisionally, unless and until the copyright holder explicitly and
  345. finally terminates your license, and (b) permanently, if the copyright
  346. holder fails to notify you of the violation by some reasonable means
  347. prior to 60 days after the cessation.
  348. Moreover, your license from a particular copyright holder is
  349. reinstated permanently if the copyright holder notifies you of the
  350. violation by some reasonable means, this is the first time you have
  351. received notice of violation of this License (for any work) from that
  352. copyright holder, and you cure the violation prior to 30 days after
  353. your receipt of the notice.
  354. Termination of your rights under this section does not terminate the
  355. licenses of parties who have received copies or rights from you under
  356. this License. If your rights have been terminated and not permanently
  357. reinstated, you do not qualify to receive new licenses for the same
  358. material under section 10.
  359. 9. Acceptance Not Required for Having Copies.
  360. You are not required to accept this License in order to receive or
  361. run a copy of the Program. Ancillary propagation of a covered work
  362. occurring solely as a consequence of using peer-to-peer transmission
  363. to receive a copy likewise does not require acceptance. However,
  364. nothing other than this License grants you permission to propagate or
  365. modify any covered work. These actions infringe copyright if you do
  366. not accept this License. Therefore, by modifying or propagating a
  367. covered work, you indicate your acceptance of this License to do so.
  368. 10. Automatic Licensing of Downstream Recipients.
  369. Each time you convey a covered work, the recipient automatically
  370. receives a license from the original licensors, to run, modify and
  371. propagate that work, subject to this License. You are not responsible
  372. for enforcing compliance by third parties with this License.
  373. An "entity transaction" is a transaction transferring control of an
  374. organization, or substantially all assets of one, or subdividing an
  375. organization, or merging organizations. If propagation of a covered
  376. work results from an entity transaction, each party to that
  377. transaction who receives a copy of the work also receives whatever
  378. licenses to the work the party's predecessor in interest had or could
  379. give under the previous paragraph, plus a right to possession of the
  380. Corresponding Source of the work from the predecessor in interest, if
  381. the predecessor has it or can get it with reasonable efforts.
  382. You may not impose any further restrictions on the exercise of the
  383. rights granted or affirmed under this License. For example, you may
  384. not impose a license fee, royalty, or other charge for exercise of
  385. rights granted under this License, and you may not initiate litigation
  386. (including a cross-claim or counterclaim in a lawsuit) alleging that
  387. any patent claim is infringed by making, using, selling, offering for
  388. sale, or importing the Program or any portion of it.
  389. 11. Patents.
  390. A "contributor" is a copyright holder who authorizes use under this
  391. License of the Program or a work on which the Program is based. The
  392. work thus licensed is called the contributor's "contributor version".
  393. A contributor's "essential patent claims" are all patent claims
  394. owned or controlled by the contributor, whether already acquired or
  395. hereafter acquired, that would be infringed by some manner, permitted
  396. by this License, of making, using, or selling its contributor version,
  397. but do not include claims that would be infringed only as a
  398. consequence of further modification of the contributor version. For
  399. purposes of this definition, "control" includes the right to grant
  400. patent sublicenses in a manner consistent with the requirements of
  401. this License.
  402. Each contributor grants you a non-exclusive, worldwide, royalty-free
  403. patent license under the contributor's essential patent claims, to
  404. make, use, sell, offer for sale, import and otherwise run, modify and
  405. propagate the contents of its contributor version.
  406. In the following three paragraphs, a "patent license" is any express
  407. agreement or commitment, however denominated, not to enforce a patent
  408. (such as an express permission to practice a patent or covenant not to
  409. sue for patent infringement). To "grant" such a patent license to a
  410. party means to make such an agreement or commitment not to enforce a
  411. patent against the party.
  412. If you convey a covered work, knowingly relying on a patent license,
  413. and the Corresponding Source of the work is not available for anyone
  414. to copy, free of charge and under the terms of this License, through a
  415. publicly available network server or other readily accessible means,
  416. then you must either (1) cause the Corresponding Source to be so
  417. available, or (2) arrange to deprive yourself of the benefit of the
  418. patent license for this particular work, or (3) arrange, in a manner
  419. consistent with the requirements of this License, to extend the patent
  420. license to downstream recipients. "Knowingly relying" means you have
  421. actual knowledge that, but for the patent license, your conveying the
  422. covered work in a country, or your recipient's use of the covered work
  423. in a country, would infringe one or more identifiable patents in that
  424. country that you have reason to believe are valid.
  425. If, pursuant to or in connection with a single transaction or
  426. arrangement, you convey, or propagate by procuring conveyance of, a
  427. covered work, and grant a patent license to some of the parties
  428. receiving the covered work authorizing them to use, propagate, modify
  429. or convey a specific copy of the covered work, then the patent license
  430. you grant is automatically extended to all recipients of the covered
  431. work and works based on it.
  432. A patent license is "discriminatory" if it does not include within
  433. the scope of its coverage, prohibits the exercise of, or is
  434. conditioned on the non-exercise of one or more of the rights that are
  435. specifically granted under this License. You may not convey a covered
  436. work if you are a party to an arrangement with a third party that is
  437. in the business of distributing software, under which you make payment
  438. to the third party based on the extent of your activity of conveying
  439. the work, and under which the third party grants, to any of the
  440. parties who would receive the covered work from you, a discriminatory
  441. patent license (a) in connection with copies of the covered work
  442. conveyed by you (or copies made from those copies), or (b) primarily
  443. for and in connection with specific products or compilations that
  444. contain the covered work, unless you entered into that arrangement,
  445. or that patent license was granted, prior to 28 March 2007.
  446. Nothing in this License shall be construed as excluding or limiting
  447. any implied license or other defenses to infringement that may
  448. otherwise be available to you under applicable patent law.
  449. 12. No Surrender of Others' Freedom.
  450. If conditions are imposed on you (whether by court order, agreement or
  451. otherwise) that contradict the conditions of this License, they do not
  452. excuse you from the conditions of this License. If you cannot convey a
  453. covered work so as to satisfy simultaneously your obligations under this
  454. License and any other pertinent obligations, then as a consequence you may
  455. not convey it at all. For example, if you agree to terms that obligate you
  456. to collect a royalty for further conveying from those to whom you convey
  457. the Program, the only way you could satisfy both those terms and this
  458. License would be to refrain entirely from conveying the Program.
  459. 13. Remote Network Interaction; Use with the GNU General Public License.
  460. Notwithstanding any other provision of this License, if you modify the
  461. Program, your modified version must prominently offer all users
  462. interacting with it remotely through a computer network (if your version
  463. supports such interaction) an opportunity to receive the Corresponding
  464. Source of your version by providing access to the Corresponding Source
  465. from a network server at no charge, through some standard or customary
  466. means of facilitating copying of software. This Corresponding Source
  467. shall include the Corresponding Source for any work covered by version 3
  468. of the GNU General Public License that is incorporated pursuant to the
  469. following paragraph.
  470. Notwithstanding any other provision of this License, you have
  471. permission to link or combine any covered work with a work licensed
  472. under version 3 of the GNU General Public License into a single
  473. combined work, and to convey the resulting work. The terms of this
  474. License will continue to apply to the part which is the covered work,
  475. but the work with which it is combined will remain governed by version
  476. 3 of the GNU General Public License.
  477. 14. Revised Versions of this License.
  478. The Free Software Foundation may publish revised and/or new versions of
  479. the GNU Affero General Public License from time to time. Such new versions
  480. will be similar in spirit to the present version, but may differ in detail to
  481. address new problems or concerns.
  482. Each version is given a distinguishing version number. If the
  483. Program specifies that a certain numbered version of the GNU Affero General
  484. Public License "or any later version" applies to it, you have the
  485. option of following the terms and conditions either of that numbered
  486. version or of any later version published by the Free Software
  487. Foundation. If the Program does not specify a version number of the
  488. GNU Affero General Public License, you may choose any version ever published
  489. by the Free Software Foundation.
  490. If the Program specifies that a proxy can decide which future
  491. versions of the GNU Affero General Public License can be used, that proxy's
  492. public statement of acceptance of a version permanently authorizes you
  493. to choose that version for the Program.
  494. Later license versions may give you additional or different
  495. permissions. However, no additional obligations are imposed on any
  496. author or copyright holder as a result of your choosing to follow a
  497. later version.
  498. 15. Disclaimer of Warranty.
  499. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
  500. APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
  501. HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
  502. OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
  503. THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  504. PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
  505. IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
  506. ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  507. 16. Limitation of Liability.
  508. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
  509. WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
  510. THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
  511. GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
  512. USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
  513. DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
  514. PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
  515. EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
  516. SUCH DAMAGES.
  517. 17. Interpretation of Sections 15 and 16.
  518. If the disclaimer of warranty and limitation of liability provided
  519. above cannot be given local legal effect according to their terms,
  520. reviewing courts shall apply local law that most closely approximates
  521. an absolute waiver of all civil liability in connection with the
  522. Program, unless a warranty or assumption of liability accompanies a
  523. copy of the Program in return for a fee.
  524. END OF TERMS AND CONDITIONS
  525. -->
  526. <!DOCTYPE html>
  527. <html>
  528. <head>
  529. <meta charset='UTF-8'>
  530. <meta content='no-referrer' name='referrer'>
  531. <meta content='minimal-ui, width=device-width, height=device-height, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'>
  532. <meta content='yes' name='apple-mobile-web-app-capable'>
  533. <meta content='black' name='apple-mobile-web-app-status-bar-style'>
  534. <meta content='yes' name='mobile-web-app-capable'>
  535. <link href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAABL1BMVEUAAAAOVAAOVAAAAAAAAAAOVAAJOQANUwAOVAAOVAAOVAAOVAAOVAAOVAAOVAADEgAGJQAAAAAAAAAOVAAOVAAOVAAAAAAOVAAAAAAOVAAOVAAAAAAOVAAOVAAOVAAAAAAAAAAOVAAOVAAOVAAAAAAOVAAOVAAAAAAAAAAAAAAAAAAOVAAOVAAOVAAAAAAOVAAAAAAOVAAAAAAOVAAOVAAOVAAAAAAAAAAAAAAOVAAAAAAOVAAOVAAAAAAAAAAOVAAAAAAAAAAAAAAOVAAAAAACDQAOVAAAAAAMSAAHLAACCwAAAAAOVAAOVAALQQAOVAAOVAAAAQAOVAAAAAAAAwAKQQACCwAMSAAINAANTwANTAABBwAGJwAFIgAEFwACDwALRQAFHAADFAAJOgAHLgBZrvIiAAAAUnRSTlMAMM8wz/4D3AnvJB4T+V8LBfjz1LqjKxkXD/Pr5cnDvo13SUL79uni3smrno6GfWxcU0o7LiomH+Pg1720sKGXlnJmZU88ORD35tTUzKiBfmQyliy5MwAAA59JREFUeNrs1b2qhDAQhuGBSNguJkUIpDCF4E8hYqEiKLq4WGy1jPd/LcfiNGfZVZsJHPC5greZb+Dyj3FhGr1pjODgHxf1PI3RZpzm2ntCaB5lkWdWbmyWF+XDhOBRyIosbZVccbNK1aZZwfwViLpyCb5JXFUL8IJrF9gV36w2cJqDB+JVdPhRV7wE0GN5IvEjmeQMqIXmnuJX6Z38GJayV/iV6ssFaOlB4Q41aCAlyg53daUAQks1WNxlh2oBOs3YxrgrbscG6LBoxQNrxIDMrXrioWd1AyL8zwbsbAEHGiFzFg9ZR/YXxdwrPKT6WQANM2USD8lsMkCjcUmMh+LENUCjzhWeoPIaaOgoxhPiSAMNFuApwe8UXQFXwBXww+4cCAAAAAAA+b82QoGBgYGBgYGBgYGBgYGBgYEB7dVNa+pAFIDhVjj5MgmFKKJoQEU3KiLqQlroorS0pV8cM0lMYoyp//83XCkNt3rNZIa7sIt5di488xLOJCLgf0hKvabNZ7O5VqsrEncAZQrj8eWuOapWWq1KdWR2y4rEGUCZwnT6dNIeXMuqAWCo8vWgPZnu/80TQJlSSNI7w5bcVHsAgAgAPbUpt4YdXeIIoE0poD/cVfuAR6BfvXvQ2QNoUwrONyuyCvgPUOWKec8acE+bQi0of9w0MEfj5u2ZLeD5jTblo0w5v11qAOaAhvzkLhm4TzJtSqldzj/fAqSAx4ihwI0e6VOsvILa2AKkgiQKlwXCKCmaYo1rp8+3DSxC1gUF4ZpgEcM+VXDVsQ3AQiR2lhROTLAQGHbn6uJIvTvsI4NgRytw4l2ADPrDbv0oQLtdGMjC813KAvoesjAWt9rRC3j6AsgmSfMD0gTZwMtUOgjQxzIy8tZh/gZ6yEge6wcbMHlVkdHqc+vkbMD2c4WM1NdJ/WADmgayCnw3bwMCZGU0D7ZgZgOyI5vTARuC7MCe/XwHWMghiZ3TdzBBDtbfd4GkmzJmuNaQvoJ0sqlLWYD23kQOQeSe/goFyKH5rmUBSnegIoeVnzr7Ax0ndDd7buh8/Uz9FXJQB10lu4RmpYcZ1ovouOl655M9f7dOXSe7hMx6FTO7iLXRApCH58ebbeQTb/XV4xE/2m5i30MesBhl38S5DcgnIMQLVj+eSeAREiAfsOffAZclPIvSpQgQASJABIgAESACRIAIEAEiQASIABGQBVh4FlYWoFWt0hlYVe07QNEuz0JTLoRf4A/6QnkTnNuX5gAAAABJRU5ErkJggg==' rel='shortcut icon' sizes='196x196'>
  536. <link href='data:image/png;base64,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' rel='shortcut icon' sizes='128x128'>
  537. <title>The Obelisk</title>
  538. <link href='data:image/x-icon;base64,AAABAAEAEBAAAAEAIAAoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVBBAAFwQgABUDoAAVA6AAFQOgABUDoAAVA6AAFQOgABUDoAAVA6AAFQOgABUDoAAVA6AAFQOgABcEIAAUhBBAFMPigBjEP8AWw//AFsP/wBbD/8AWw//AFsP/wBbD/8AWw//AFsP/wBbD/8AWw//AFsP/wBbD/8AYxD/AFMPiwBUDn8AWw//AFQO/wBUDv8AVA7/AFQO/wBUDv8AVA7/AFQO/wBUDv8AVA7/AFQO/wBUDv8AVA7/AFsP/wBUDoAAVA6CAFsP/wBUDv8AVA7/AFQO/wBTDv8AVw//AFoP/wBaD/8AVw//AFMO/wBUDv8AVA7/AFQO/wBbD/8AVA6DAFUNcgBbD/8AVA7/AFQO/wBUDv8AVw//AEUL/wA1Cf8ANQn/AEQL/wBXD/8AVA7/AFQO/wBUDv8AWw//AFQNdABVDCoAVg7/AFcO/wBUDv8AVQ7/AF0Q/wAeBf8AAAD/AAAA/wAeBf8AXRD/AFUO/wBUDv8AVw7/AFYP/wBRDCwAAAAAAFMNdQBYD/8AXA//AFsP/wA6B+8AAQD/AAAA/wAAAP8AAQD/ADkH7wBbD/8AXA//AFkP/wBUDXcAAAAAAAAAAAAAAAAAUw43AFgPdwBgD0UAAACBAAAA/wAAAP8AAAD/AAAA/wAAAIMAYg9EAFgPdwBSDjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAP8AAAD/AAAA/wAAAP8AAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH8AAAD/AAAA/wAAAP8AAAD/AAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/AAAA/wAAAP8AAAD/AAAA/wAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgFNTU/9TU1P/U1NT/1NTU/8AAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAD/LS0t/y0tLf8AAAD/AAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTAAAA/y0tLf8tLS3/AAAA/wAAAFYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAMEtLS3/LS0t/wAAAMIAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAZQAAAGYAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' rel='shortcut icon'>
  539. <style media='screen' type='text/css'>
  540. /*! normalize.css v6.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}/*# sourceMappingURL=normalize.min.css.map */
  541. /* Welcome to Compass.
  542. * In this file you should write your main styles. (or centralize your imports)
  543. * Import this file using the following HTML or equivalent:
  544. * <link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css" /> */
  545. /* line 7, ../sass/screen.scss */
  546. p {
  547. margin: 0px;
  548. padding: 0px;
  549. }
  550. /* line 1, ../sass/_page.scss */
  551. .error {
  552. padding: 0.5em;
  553. background-color: #d6a3a7;
  554. color: #780100;
  555. }
  556. /* line 5, ../sass/_page.scss */
  557. .error:before {
  558. content: "ERROR: ";
  559. font-weight: bold;
  560. }
  561. /* line 11, ../sass/_page.scss */
  562. .unselectable, .textLink, .lineLink, .columnLink, .ccButton, .roomObject, .roomDirection, .rememberedRoomLink, .inventoryLink, .statusLink, .roundButton, p.choice, .combatChoice {
  563. -moz-user-select: -moz-none;
  564. -khtml-user-select: none;
  565. -webkit-user-select: none;
  566. -o-user-select: none;
  567. user-select: none;
  568. }
  569. /* line 17, ../sass/_page.scss */
  570. .unselectable:hover, .textLink:hover, .lineLink:hover, .columnLink:hover, .ccButton:hover, .roomObject:hover, .roomDirection:hover, .rememberedRoomLink:hover, .inventoryLink:hover, .statusLink:hover, .roundButton:hover, p.choice:hover, .combatChoice:hover {
  571. cursor: default;
  572. }
  573. /* line 23, ../sass/_page.scss */
  574. .scrollbar::-webkit-scrollbar-track {
  575. -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
  576. background-color: #F5F5F5;
  577. }
  578. /* line 28, ../sass/_page.scss */
  579. .scrollbar::-webkit-scrollbar {
  580. width: 6px;
  581. background-color: #F5F5F5;
  582. }
  583. /* line 33, ../sass/_page.scss */
  584. .scrollbar::-webkit-scrollbar-thumb {
  585. background-color: #000000;
  586. }
  587. /* line 38, ../sass/_page.scss */
  588. .header, .roomName, .roomExitsHeader, .inventoryHeader, .appearanceHeader {
  589. font-weight: bold;
  590. font-variant: small-caps;
  591. font-size: 1.1rem;
  592. }
  593. /* line 44, ../sass/_page.scss */
  594. .alignRight {
  595. text-align: right;
  596. }
  597. /* line 48, ../sass/_page.scss */
  598. .alignCenter {
  599. text-align: center;
  600. }
  601. /* line 53, ../sass/_page.scss */
  602. body {
  603. background-color: #000;
  604. }
  605. /* line 57, ../sass/_page.scss */
  606. #mainPage {
  607. background-color: #fff;
  608. }
  609. /* line 61, ../sass/_page.scss */
  610. #mainPage, .topBottomFlex {
  611. position: absolute;
  612. left: 0px;
  613. top: 0px;
  614. width: 100%;
  615. height: 100%;
  616. display: flex;
  617. flex-direction: column;
  618. flex-wrap: nowrap;
  619. justify-content: flex-start;
  620. align-content: stretch;
  621. align-items: flex-start;
  622. }
  623. /* line 75, ../sass/_page.scss */
  624. .leftRightFlex {
  625. display: flex;
  626. flex-direction: row;
  627. flex-wrap: nowrap;
  628. justify-content: flex-start;
  629. align-content: stretch;
  630. align-items: flex-start;
  631. }
  632. /* line 84, ../sass/_page.scss */
  633. #mainPage {
  634. color: #000;
  635. font-family: "Source Sans Pro";
  636. }
  637. /* line 89, ../sass/_page.scss */
  638. #statusLine, .noshrinkFlex, #roomExitsHolder {
  639. flex: 0 0 auto;
  640. align-self: stretch;
  641. height: auto;
  642. overflow: visible;
  643. position: relative;
  644. }
  645. /* line 97, ../sass/_page.scss */
  646. #statusLine {
  647. background-color: black;
  648. color: #FFF;
  649. font-family: "Cousine";
  650. white-space: nowrap;
  651. padding: 0.4rem;
  652. }
  653. /* line 105, ../sass/_page.scss */
  654. .statusColumnRight {
  655. margin-left: auto;
  656. }
  657. /* line 109, ../sass/_page.scss */
  658. .statusColumnCenter {
  659. margin-left: auto;
  660. margin-right: auto;
  661. }
  662. /* line 114, ../sass/_page.scss */
  663. .statusColumnDivider {
  664. border-right: #fff solid 1px;
  665. margin-left: 0.5rem;
  666. margin-right: 0.5rem;
  667. }
  668. /* line 120, ../sass/_page.scss */
  669. #gameContainer, .growingFlex {
  670. flex: 1 1 auto;
  671. align-self: stretch;
  672. position: relative;
  673. }
  674. /* line 126, ../sass/_page.scss */
  675. #leftWindow, #centerWindow, #rightWindow {
  676. flex: 1 0 auto;
  677. align-self: auto;
  678. flex-grow: 1;
  679. min-width: 10rem;
  680. position: relative;
  681. background-color: #fff;
  682. }
  683. /* line 135, ../sass/_page.scss */
  684. #centerWindow {
  685. max-width: 60%;
  686. flex: 1 1 auto;
  687. flex-grow: 4;
  688. }
  689. /* line 141, ../sass/_page.scss */
  690. #windowContainer {
  691. display: flex;
  692. flex-direction: row;
  693. flex-wrap: nowrap;
  694. justify-content: flex-start;
  695. align-content: stretch;
  696. align-items: stretch;
  697. height: 100%;
  698. width: 100%;
  699. position: absolute;
  700. }
  701. /* line 153, ../sass/_page.scss */
  702. #currentTurn {
  703. overflow-x: hidden;
  704. overflow-y: scroll;
  705. min-height: 100px;
  706. background: linear-gradient(to bottom, rgba(0, 0, 0, 0.03) 75%, rgba(0, 0, 0, 0.06) 100%);
  707. }
  708. /* line 160, ../sass/_page.scss */
  709. #currentTurn > * {
  710. animation: fadein 1s;
  711. }
  712. @keyframes fadein {
  713. from {
  714. opacity: 0;
  715. }
  716. to {
  717. opacity: 1;
  718. }
  719. }
  720. /* line 168, ../sass/_page.scss */
  721. #leftWindow {
  722. background: linear-gradient(to right, rgba(0, 0, 0, 0.12) 0%, rgba(0, 0, 0, 0.09) 50%, rgba(0, 0, 0, 0.06) 100%);
  723. }
  724. /* line 172, ../sass/_page.scss */
  725. #appearanceTab {
  726. overflow: auto;
  727. padding: 0.8rem;
  728. }
  729. /* line 178, ../sass/_page.scss */
  730. #inventoryTab {
  731. overflow: hidden;
  732. }
  733. /* line 183, ../sass/_page.scss */
  734. #currentRoomTab {
  735. overflow: hidden;
  736. background: linear-gradient(to bottom, rgba(0, 0, 0, 0.06) 75%, rgba(0, 0, 0, 0.03) 100%);
  737. padding: 0.8rem;
  738. }
  739. /* line 189, ../sass/_page.scss */
  740. #hyperlinksTab {
  741. background: rgba(0, 0, 0, 0.03);
  742. text-indent: 1em;
  743. }
  744. /* line 194, ../sass/_page.scss */
  745. #mainPage.mobile #fakeparserTab {
  746. display: none;
  747. }
  748. /* line 198, ../sass/_page.scss */
  749. #fakeparserTab {
  750. overflow: visible;
  751. background: rgba(0, 0, 0, 0.03);
  752. padding: 0.8rem;
  753. font-family: "Cousine";
  754. }
  755. /* line 204, ../sass/_page.scss */
  756. #fakeparserTab:before {
  757. content: ">";
  758. }
  759. /* line 209, ../sass/_page.scss */
  760. #currentCommand, #fakeParserThingy {
  761. font-weight: bold;
  762. }
  763. /* line 213, ../sass/_page.scss */
  764. #fakeParserThingy {
  765. animation: blinker 0.9s cubic-bezier(0.5, 0, 1, 1) infinite alternate;
  766. }
  767. @keyframes blinker {
  768. to {
  769. opacity: 0;
  770. }
  771. }
  772. /* line 219, ../sass/_page.scss */
  773. #rememberedRoomsTab, #mapTab {
  774. overflow-y: auto;
  775. background: linear-gradient(to bottom left, rgba(0, 0, 0, 0.12) 0%, rgba(0, 0, 0, 0.09) 50%, rgba(0, 0, 0, 0.06) 100%);
  776. padding: 0.8rem;
  777. }
  778. /* line 226, ../sass/_page.scss */
  779. #roomExitsHolder {
  780. background: linear-gradient(to top left, rgba(0, 0, 0, 0.12) 0%, rgba(0, 0, 0, 0.09) 50%, rgba(0, 0, 0, 0.06) 100%);
  781. padding: 2ex;
  782. padding-top: 0px;
  783. }
  784. /* line 233, ../sass/_page.scss */
  785. #exitsTab {
  786. overflow: hidden;
  787. background-color: rgba(0, 0, 0, 0.03);
  788. padding: 0.8rem;
  789. }
  790. /* line 1, ../sass/_modal.scss */
  791. #modalWindow {
  792. opacity: 0;
  793. pointer-events: none;
  794. z-index: 10;
  795. position: absolute;
  796. left: 0px;
  797. right: 0px;
  798. top: 0px;
  799. bottom: 0px;
  800. transition: opacity .3s ease-in-out;
  801. display: flex;
  802. align-items: center;
  803. justify-content: center;
  804. overflow: hidden;
  805. }
  806. /* line 17, ../sass/_modal.scss */
  807. *:not(#modalWindow) {
  808. transition: filter .3s ease-in-out;
  809. }
  810. /* line 22, ../sass/_modal.scss */
  811. body.modal > *:not(#modalWindow) {
  812. filter: blur(3px);
  813. }
  814. /* line 26, ../sass/_modal.scss */
  815. body.modal #modalWindow {
  816. opacity: 1;
  817. pointer-events: auto;
  818. }
  819. /* line 32, ../sass/_modal.scss */
  820. #modalContent {
  821. width: auto;
  822. height: auto;
  823. max-height: 85%;
  824. max-width: 85%;
  825. background: rgba(230, 240, 255, 0.4);
  826. border: 2px dashed transparent;
  827. box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, 0.15);
  828. border-radius: 4px;
  829. overflow-x: hidden;
  830. overflow-y: auto;
  831. padding: 1.6rem;
  832. padding-top: 0px;
  833. }
  834. /* line 47, ../sass/_modal.scss */
  835. #leftWindow, #rightWindow, #currentRoomTab, #hyperlinksTab, #fakeparserTab, #statusLine {
  836. transition: filter .3s ease-in-out;
  837. }
  838. /* line 52, ../sass/_modal.scss */
  839. #mainPage.turn #leftWindow, #mainPage.turn #rightWindow, #mainPage.turn #currentRoomTab, #mainPage.turn #hyperlinksTab, #mainPage.turn #fakeparserTab, #mainPage.turn #statusLine {
  840. pointer-events: none;
  841. filter: blur(2px);
  842. }
  843. /* line 59, ../sass/_modal.scss */
  844. #mainPage.intro #leftWindow, #mainPage.intro #rightWindow, #mainPage.intro #statusLine {
  845. display: none;
  846. }
  847. /* line 63, ../sass/_modal.scss */
  848. #mainPage.intro #centerWindow {
  849. max-width: 100%;
  850. }
  851. /* line 68, ../sass/_modal.scss */
  852. #loadingScreen {
  853. position: absolute;
  854. left: 0px;
  855. top: 0px;
  856. bottom: 0px;
  857. right: 0px;
  858. background: linear-gradient(1deg, #FFF, #EEE);
  859. background-size: 400% 400%;
  860. z-index: 99999;
  861. }
  862. /* line 12, ../sass/_linktab.scss */
  863. .lineLink {
  864. line-height: 2em;
  865. padding-left: 0.35em;
  866. padding-right: 0.35em;
  867. }
  868. /* line 23, ../sass/_linktab.scss */
  869. .columnLink {
  870. line-height: 2em;
  871. padding-left: 0.35em;
  872. padding-right: 0.35em;
  873. }
  874. /* line 30, ../sass/_linktab.scss */
  875. #linkTarget {
  876. font-weight: bold;
  877. display: inline;
  878. line-height: 2em;
  879. margin-left: 2ex;
  880. }
  881. /* line 37, ../sass/_linktab.scss */
  882. #linkActions {
  883. display: inline;
  884. white-space: nowrap;
  885. }
  886. /* line 1, ../sass/_map.scss */
  887. .mapRow {
  888. padding: 0;
  889. margin: 0;
  890. list-style: none;
  891. display: flex;
  892. flex-flow: row;
  893. justify-content: center;
  894. margin-top: 1ex;
  895. z-index: 1;
  896. }
  897. /* line 12, ../sass/_map.scss */
  898. .mapRoom {
  899. z-index: 2;
  900. opacity: 0.5;
  901. max-width: 4.5ex;
  902. color: white;
  903. flex: 1 0 auto;
  904. margin-left: 1ex;
  905. height: auto;
  906. position: relative;
  907. }
  908. /* line 21, ../sass/_map.scss */
  909. .mapRoom:last-child {
  910. margin-right: 1ex;
  911. }
  912. /* line 26, ../sass/_map.scss */
  913. .mapRoom.linked:hover {
  914. opacity: 1;
  915. cursor: pointer;
  916. }
  917. /* line 31, ../sass/_map.scss */
  918. .mapRoom.current {
  919. opacity: 1;
  920. }
  921. /* line 33, ../sass/_map.scss */
  922. .mapRoom.current:hover {
  923. cursor: auto;
  924. }
  925. /* line 37, ../sass/_map.scss */
  926. .mapRoom.current::after {
  927. display: block;
  928. position: absolute;
  929. content: '';
  930. border: solid 2px #000;
  931. box-sizing: border-box;
  932. height: 100%;
  933. width: 100%;
  934. }
  935. /* line 55, ../sass/_map.scss */
  936. .mapRoom.unknown {
  937. opacity: 0;
  938. pointer-events: none;
  939. }
  940. /* line 60, ../sass/_map.scss */
  941. .mapRoom::before {
  942. content: '';
  943. float: left;
  944. padding-top: 100%;
  945. }
  946. /* line 67, ../sass/_map.scss */
  947. .mapRoomConnection, .mapRoomConnectionEast, .mapRoomConnectionWest, .mapRoomConnectionNorth, .mapRoomConnectionSouth {
  948. pointer-events: none;
  949. display: block;
  950. background-color: black;
  951. position: absolute;
  952. z-index: 3;
  953. }
  954. /* line 75, ../sass/_map.scss */
  955. .mapRoomConnectionEast {
  956. width: 1ex;
  957. height: 0.6ex;
  958. right: -1ex;
  959. top: 50%;
  960. margin-top: -0.3ex;
  961. }
  962. /* line 84, ../sass/_map.scss */
  963. .mapRoomConnectionWest {
  964. width: 1ex;
  965. height: 0.6ex;
  966. left: -1ex;
  967. top: 50%;
  968. margin-top: -0.3ex;
  969. }
  970. /* line 93, ../sass/_map.scss */
  971. .mapRoomConnectionNorth {
  972. width: 0.6ex;
  973. height: 1ex;
  974. left: 50%;
  975. top: -1ex;
  976. margin-left: -0.3ex;
  977. }
  978. /* line 102, ../sass/_map.scss */
  979. .mapRoomConnectionSouth {
  980. width: 0.6ex;
  981. height: 1ex;
  982. left: 50%;
  983. bottom: -1ex;
  984. margin-left: -0.3ex;
  985. }
  986. /* line 111, ../sass/_map.scss */
  987. .mapRoomName {
  988. display: none;
  989. position: absolute;
  990. text-align: center;
  991. bottom: 105%;
  992. right: 5%;
  993. padding: 5%;
  994. white-space: nowrap;
  995. margin: auto;
  996. background-color: white;
  997. color: #000;
  998. font-weight: bold;
  999. border: solid 2px #000;
  1000. z-index: 4;
  1001. pointer-events: none;
  1002. }
  1003. /* line 128, ../sass/_map.scss */
  1004. .mapRoom.linked:hover > .mapRoomName {
  1005. display: block;
  1006. }
  1007. /* line 132, ../sass/_map.scss */
  1008. .tomato {
  1009. background: tomato;
  1010. }
  1011. /* line 136, ../sass/_map.scss */
  1012. .bloo {
  1013. background: blue;
  1014. }
  1015. /* line 140, ../sass/_map.scss */
  1016. .blocked {
  1017. background-color: black;
  1018. }
  1019. /* line 143, ../sass/_map.scss */
  1020. .blocked.unknown {
  1021. opacity: 1;
  1022. }
  1023. /* line 1, ../sass/_hoverInfo.scss */
  1024. #hoverInfo {
  1025. z-index: 100;
  1026. position: fixed;
  1027. top: 10px;
  1028. left: 10px;
  1029. background-color: #fff;
  1030. border: solid 2px #000;
  1031. padding: 4px;
  1032. font-weight: bold;
  1033. pointer-events: none;
  1034. max-width: 100%;
  1035. display: none;
  1036. box-sizing: border-box;
  1037. }
  1038. /* line 1, ../sass/_mainMenu.scss */
  1039. #forceTurnToTop {
  1040. display: none;
  1041. }
  1042. /* line 6, ../sass/_mainMenu.scss */
  1043. #mainPage.mainmenu #statusLine, #mainPage.mainmenu #statusLine, #mainPage.mainmenu #rightWindow, #mainPage.mainmenu #currentRoomTab, #mainPage.mainmenu #fakeparserTab, #mainPage.mainmenu #hyperlinksTab, #mainPage.mainmenu #leftWindow {
  1044. display: none;
  1045. }
  1046. /* line 10, ../sass/_mainMenu.scss */
  1047. #mainPage.mainmenu #forceTurnToTop {
  1048. display: block;
  1049. }
  1050. /* line 14, ../sass/_mainMenu.scss */
  1051. #mainPage.mainmenu #centerWindow {
  1052. max-width: 100%;
  1053. }
  1054. /* line 18, ../sass/_mainMenu.scss */
  1055. #mainPage.mainmenu #currentTurnTab {
  1056. padding-left: 15%;
  1057. padding-right: 15%;
  1058. padding-bottom: 2%;
  1059. }
  1060. /* line 24, ../sass/_mainMenu.scss */
  1061. #mainPage.mainmenu.mobile #currentTurnTab {
  1062. padding-left: 0%;
  1063. padding-right: 0%;
  1064. }
  1065. /* line 30, ../sass/_mainMenu.scss */
  1066. #mainPage.mainmenu p.choice {
  1067. border: none;
  1068. background: none;
  1069. color: #000;
  1070. font-weight: bold;
  1071. text-align: center;
  1072. padding: 0rem;
  1073. margin: 0rem;
  1074. margin-bottom: 0.1rem;
  1075. margin-top: 0.1rem;
  1076. }
  1077. /* line 44, ../sass/_mainMenu.scss */
  1078. #mainPage.mainmenu p.choice::before {
  1079. color: #000;
  1080. }
  1081. /* line 47, ../sass/_mainMenu.scss */
  1082. #mainPage.mainmenu p.choice::after {
  1083. content: " ";
  1084. color: #000;
  1085. }
  1086. /* line 53, ../sass/_mainMenu.scss */
  1087. #mainPage.mainmenu p.choice:hover::before {
  1088. content: "< ";
  1089. color: #000;
  1090. }
  1091. /* line 57, ../sass/_mainMenu.scss */
  1092. #mainPage.mainmenu p.choice:hover::after {
  1093. content: " >";
  1094. color: #000;
  1095. }
  1096. /* line 64, ../sass/_mainMenu.scss */
  1097. #mainPage.mainmenu p.choice[data-shortcut]:hover::before {
  1098. content: "< " attr(data-shortcut) ") ";
  1099. color: #000;
  1100. }
  1101. /* line 68, ../sass/_mainMenu.scss */
  1102. #mainPage.mainmenu p.choice[data-shortcut]:hover::after {
  1103. content: " >";
  1104. color: #000;
  1105. }
  1106. /* line 1, ../sass/_characterCreation.scss */
  1107. #characterCreation {
  1108. display: flex;
  1109. flex-direction: row;
  1110. flex-wrap: nowrap;
  1111. justify-content: space-around;
  1112. align-content: stretch;
  1113. align-items: center;
  1114. }
  1115. /* line 10, ../sass/_characterCreation.scss */
  1116. #ccLeft {
  1117. flex: 0 1 auto;
  1118. width: 50%;
  1119. align-self: auto;
  1120. }
  1121. /* line 16, ../sass/_characterCreation.scss */
  1122. #ccRight {
  1123. flex: 0 1 auto;
  1124. width: 50%;
  1125. align-self: center;
  1126. }
  1127. /* line 22, ../sass/_characterCreation.scss */
  1128. .ccOption {
  1129. margin: auto;
  1130. margin-bottom: 2.25ex;
  1131. text-align: center;
  1132. }
  1133. /* line 28, ../sass/_characterCreation.scss */
  1134. .ccRange {
  1135. vertical-align: top;
  1136. margin-left: 1.5ex;
  1137. margin-right: 1.5ex;
  1138. }
  1139. /* line 36, ../sass/_characterCreation.scss */
  1140. .ccButton[data-shortcut]:before {
  1141. content: " (" attr(data-shortcut) ") " !important;
  1142. }
  1143. /* line 41, ../sass/_characterCreation.scss */
  1144. .ccOptionTopLabel {
  1145. text-align: center;
  1146. font-weight: bold;
  1147. margin-bottom: -0.25ex;
  1148. }
  1149. /* line 47, ../sass/_characterCreation.scss */
  1150. .ccHeader {
  1151. text-align: center;
  1152. font-weight: bold;
  1153. margin-top: 2ex;
  1154. margin-bottom: 0.5ex;
  1155. font-size: 1.1rem;
  1156. }
  1157. /* line 55, ../sass/_characterCreation.scss */
  1158. .rangeValue {
  1159. margin-top: -0.25ex;
  1160. }
  1161. /* line 1, ../sass/text/_links.scss */
  1162. .textLink, .lineLink, .columnLink, .ccButton, .roomObject, .roomDirection, .rememberedRoomLink, .inventoryLink {
  1163. font-weight: bold;
  1164. color: #0000aa;
  1165. }
  1166. /* line 6, ../sass/text/_links.scss */
  1167. .textLink:hover, .lineLink:hover, .columnLink:hover, .ccButton:hover, .roomObject:hover, .roomDirection:hover, .rememberedRoomLink:hover, .inventoryLink:hover {
  1168. color: #0000ff;
  1169. cursor: pointer;
  1170. }
  1171. /* line 9, ../sass/text/_links.scss */
  1172. .textLink:hover:active, .lineLink:hover:active, .columnLink:hover:active, .ccButton:hover:active, .roomObject:hover:active, .roomDirection:hover:active, .rememberedRoomLink:hover:active, .inventoryLink:hover:active {
  1173. color: #000099;
  1174. }
  1175. /* line 14, ../sass/text/_links.scss */
  1176. .textLink[data-shortcut]:before, [data-shortcut].lineLink:before, [data-shortcut].columnLink:before, [data-shortcut].ccButton:before, [data-shortcut].roomObject:before, [data-shortcut].roomDirection:before, [data-shortcut].rememberedRoomLink:before, [data-shortcut].inventoryLink:before {
  1177. content: attr(data-shortcut) ") ";
  1178. }
  1179. /* line 19, ../sass/text/_links.scss */
  1180. .statusLink {
  1181. font-weight: bold;
  1182. color: #99f;
  1183. }
  1184. /* line 24, ../sass/text/_links.scss */
  1185. .statusLink:hover {
  1186. color: #ddf;
  1187. cursor: pointer;
  1188. }
  1189. /* line 27, ../sass/text/_links.scss */
  1190. .statusLink:hover:active {
  1191. color: #66d;
  1192. }
  1193. /* line 1, ../sass/text/_room.scss */
  1194. .roomName {
  1195. font-size: 1.2rem;
  1196. margin-bottom: 1ex;
  1197. }
  1198. /* line 7, ../sass/text/_room.scss */
  1199. .roomDescription {
  1200. text-indent: 1rem;
  1201. text-align: justify;
  1202. margin-top: 1ex;
  1203. }
  1204. /* line 13, ../sass/text/_room.scss */
  1205. .roomExitsHeader {
  1206. margin-top: 2ex;
  1207. }
  1208. /* line 18, ../sass/text/_room.scss */
  1209. .roomExit {
  1210. text-indent: 1.5rem;
  1211. margin-top: 1ex;
  1212. }
  1213. /* line 27, ../sass/text/_room.scss */
  1214. .rememberedRoomRow {
  1215. display: flex;
  1216. flex-direction: row;
  1217. flex-wrap: nowrap;
  1218. justify-content: space-between;
  1219. align-content: stretch;
  1220. align-items: stretch;
  1221. }
  1222. /* line 34, ../sass/text/_room.scss */
  1223. .rememberedRoomRow:hover {
  1224. background-color: rgba(0, 0, 0, 0.12);
  1225. }
  1226. /* line 39, ../sass/text/_room.scss */
  1227. .rememberedRoomRow.currentRoom > .rememberedRoomLink {
  1228. color: #000;
  1229. display: none;
  1230. }
  1231. /* line 43, ../sass/text/_room.scss */
  1232. .rememberedRoomRow.currentRoom > .rememberedRoomLink:hover {
  1233. cursor: auto;
  1234. }
  1235. /* line 47, ../sass/text/_room.scss */
  1236. .rememberedRoomRow.currentRoom > .rememberedRoomLink.name {
  1237. display: initial;
  1238. }
  1239. /* line 54, ../sass/text/_room.scss */
  1240. .rememberedRoomLink {
  1241. white-space: nowrap;
  1242. overflow: hidden;
  1243. order: 2;
  1244. flex: 0 0 auto;
  1245. align-self: auto;
  1246. padding: 0.6ex;
  1247. padding-left: 1ex;
  1248. padding-right: 1ex;
  1249. }
  1250. /* line 65, ../sass/text/_room.scss */
  1251. .rememberedRoomLink.name {
  1252. text-overflow: ellipsis;
  1253. padding-left: 1.5ex;
  1254. order: 1;
  1255. flex: 1 1 auto;
  1256. }
  1257. /* line 71, ../sass/text/_room.scss */
  1258. .rememberedRoomLink.name:hover {
  1259. overflow: visible;
  1260. white-space: initial;
  1261. }
  1262. /* line 1, ../sass/text/_say.scss */
  1263. p.contentOld {
  1264. color: #888;
  1265. }
  1266. /* line 4, ../sass/text/_say.scss */
  1267. p.contentOld:hover {
  1268. color: #000;
  1269. }
  1270. /* line 9, ../sass/text/_say.scss */
  1271. p.contentOld, p.content {
  1272. text-indent: 1rem;
  1273. text-align: justify;
  1274. padding: 0.5rem;
  1275. padding-left: 1.6rem;
  1276. padding-right: 1.6rem;
  1277. }
  1278. /* line 16, ../sass/text/_say.scss */
  1279. p.contentOld.centered, p.content.centered {
  1280. text-indent: 0px;
  1281. text-align: center;
  1282. }
  1283. /* line 22, ../sass/text/_say.scss */
  1284. .textIndenter {
  1285. margin-right: 1rem;
  1286. }
  1287. /* line 26, ../sass/text/_say.scss */
  1288. div.choiceContainer {
  1289. padding-bottom: 0.8rem;
  1290. }
  1291. /* line 28, ../sass/text/_say.scss */
  1292. div.choiceContainer:hover {
  1293. background-color: rgba(10, 10, 80, 0.05);
  1294. }
  1295. /* line 33, ../sass/text/_say.scss */
  1296. .roundButton, p.choice, .combatChoice {
  1297. padding: 0.3rem;
  1298. margin: 0.8rem;
  1299. margin-bottom: 0.3rem;
  1300. margin-top: 0.3rem;
  1301. border: solid 1px #0000aa;
  1302. border-radius: 1rem;
  1303. background-color: #fff;
  1304. }
  1305. /* line 43, ../sass/text/_say.scss */
  1306. .roundButton[data-shortcut]:before, p[data-shortcut].choice:before, [data-shortcut].combatChoice:before {
  1307. content: attr(data-shortcut) ") ";
  1308. font-weight: bold;
  1309. color: #0000aa;
  1310. }
  1311. /* line 49, ../sass/text/_say.scss */
  1312. .roundButton:hover, p.choice:hover, .combatChoice:hover {
  1313. cursor: pointer;
  1314. background-color: #eeeeff;
  1315. border-color: #0000ff;
  1316. }
  1317. /* line 53, ../sass/text/_say.scss */
  1318. .roundButton:hover[data-shortcut]:before, p.choice:hover[data-shortcut]:before, .combatChoice:hover[data-shortcut]:before {
  1319. color: #0000ff;
  1320. }
  1321. /* line 58, ../sass/text/_say.scss */
  1322. .roundButton:active, p.choice:active, .combatChoice:active {
  1323. background-color: #c8c8ff;
  1324. border-color: #000099;
  1325. }
  1326. /* line 61, ../sass/text/_say.scss */
  1327. .roundButton:active[data-shortcut]:before, p.choice:active[data-shortcut]:before, .combatChoice:active[data-shortcut]:before {
  1328. color: #000099;
  1329. }
  1330. /* line 67, ../sass/text/_say.scss */
  1331. p.choice {
  1332. text-indent: 0.5rem;
  1333. text-align: justify;
  1334. }
  1335. /* line 71, ../sass/text/_say.scss */
  1336. p.choice.picked {
  1337. color: #888;
  1338. }
  1339. /* line 76, ../sass/text/_say.scss */
  1340. .combatChoicesContainer {
  1341. display: flex;
  1342. flex-direction: row;
  1343. flex-wrap: wrap;
  1344. justify-content: center;
  1345. align-content: stretch;
  1346. align-items: stretch;
  1347. }
  1348. /* line 85, ../sass/text/_say.scss */
  1349. .combatChoice {
  1350. flex: 0 0 auto;
  1351. align-self: auto;
  1352. overflow: hidden;
  1353. padding: 0.6em;
  1354. margin: 0.3em;
  1355. }
  1356. /* line 94, ../sass/text/_say.scss */
  1357. p.turnStart {
  1358. display: flex;
  1359. flex-basis: 100%;
  1360. align-items: center;
  1361. font-size: 0.8rem;
  1362. font-weight: bold;
  1363. line-height: 1em;
  1364. }
  1365. /* line 102, ../sass/text/_say.scss */
  1366. p.turnStart::before {
  1367. margin-right: 10px;
  1368. }
  1369. /* line 106, ../sass/text/_say.scss */
  1370. p.turnStart::after {
  1371. margin-left: 10px;
  1372. }
  1373. /* line 110, ../sass/text/_say.scss */
  1374. p.turnStart::before, p.turnStart::after {
  1375. content: "";
  1376. flex-grow: 1;
  1377. border-bottom: solid 1px rgba(180, 0, 0, 0.6);
  1378. }
  1379. /* line 117, ../sass/text/_say.scss */
  1380. .horFlex {
  1381. display: flex;
  1382. flex-direction: row;
  1383. flex-wrap: nowrap;
  1384. justify-content: space-around;
  1385. align-content: stretch;
  1386. align-items: center;
  1387. }
  1388. /* line 126, ../sass/text/_say.scss */
  1389. .horFlexColumn {
  1390. flex: 0 1 auto;
  1391. width: 50%;
  1392. align-self: auto;
  1393. }
  1394. /* line 1, ../sass/text/_inventory.scss */
  1395. .inventoryHeader {
  1396. margin-top: 1em;
  1397. margin-left: 1ex;
  1398. }
  1399. /* line 7, ../sass/text/_inventory.scss */
  1400. .inventoryRow {
  1401. display: flex;
  1402. flex-direction: row;
  1403. flex-wrap: nowrap;
  1404. justify-content: space-between;
  1405. align-content: stretch;
  1406. align-items: stretch;
  1407. }
  1408. /* line 14, ../sass/text/_inventory.scss */
  1409. .inventoryRow:hover {
  1410. background-color: rgba(0, 0, 0, 0.12);
  1411. }
  1412. /* line 19, ../sass/text/_inventory.scss */
  1413. .inventoryLink {
  1414. white-space: nowrap;
  1415. overflow: hidden;
  1416. order: 2;
  1417. flex: 0 0 auto;
  1418. align-self: auto;
  1419. padding: 0.6ex;
  1420. padding-left: 1ex;
  1421. padding-right: 1ex;
  1422. }
  1423. /* line 30, ../sass/text/_inventory.scss */
  1424. .inventoryLink.name {
  1425. text-overflow: ellipsis;
  1426. padding-left: 1.5ex;
  1427. order: 1;
  1428. flex: 1 1 auto;
  1429. }
  1430. /* line 36, ../sass/text/_inventory.scss */
  1431. .inventoryLink.name:hover {
  1432. overflow: visible;
  1433. white-space: initial;
  1434. }
  1435. /* line 42, ../sass/text/_inventory.scss */
  1436. .inventoryGold {
  1437. text-align: center;
  1438. font-size: 1rem;
  1439. font-weight: normal;
  1440. padding-top: 1ex;
  1441. }
  1442. /* line 49, ../sass/text/_inventory.scss */
  1443. #inventoryTarget {
  1444. padding-bottom: 1ex;
  1445. }
  1446. /* line 5, ../sass/text/_appearance.scss */
  1447. .appearanceDescription {
  1448. padding: 0.5ex;
  1449. text-align: justify;
  1450. text-indent: 1em;
  1451. line-height: 1.5em;
  1452. }
  1453. </style>
  1454. </head>
  1455. <body>
  1456. <div id='loadingScreen'></div>
  1457. <div id='imageViewer'></div>
  1458. <div id='hoverInfo'>
  1459. <div id='hoverIcon'></div>
  1460. <div id='hoverContent'>
  1461. As
  1462. </div>
  1463. </div>
  1464. <div id='modalWindow'>
  1465. <div class='scrollbar' id='modalContent'>
  1466. <div id='optionsWindow'>
  1467. <h1>Options</h1>
  1468. <p>This is where you set the options!</p>
  1469. </div>
  1470. </div>
  1471. </div>
  1472. <div id='mainPage'>
  1473. <div id='gameContainer'>
  1474. <div id='windowContainer'>
  1475. <div id='leftWindow'>
  1476. <div class='topBottomFlex'>
  1477. <div class='growingFlex scrollbar' id='appearanceTab'>
  1478. <p class='appearanceHeader'>Appearance:</p>
  1479. <div id='appearanceTarget'></div>
  1480. </div>
  1481. <div class='growingFlex'></div>
  1482. <div class='noshrinkFlex scrollbar'>
  1483. <div id='inventoryTarget'></div>
  1484. </div>
  1485. </div>
  1486. </div>
  1487. <div id='centerWindow'>
  1488. <div class='topBottomFlex'>
  1489. <div class='growingFlex scrollbar' id='currentTurn'>
  1490. <div class='topBottomFlex'>
  1491. <div class='growingFlex' id='forceTurnToBottom'></div>
  1492. <div class='noshrinkFlex' id='currentTurnTab'></div>
  1493. <div class='growingFlex' id='forceTurnToTop'></div>
  1494. </div>
  1495. </div>
  1496. <div class='noshrinkFlex' id='currentRoomTab'>
  1497. <p class='roomName' id='roomName'></p>
  1498. <div id='roomDescription'></div>
  1499. </div>
  1500. <div class='noshrinkFlex' id='hyperlinksTab'>
  1501. <div id='commonActionsTab'></div>
  1502. <div id='linkTarget'></div>
  1503. <div id='linkActions'></div>
  1504. </div>
  1505. <div class='noshrinkFlex' id='fakeparserTab'><a id='currentCommand'></a><a id='fakeParserThingy'>_</a>
  1506. </div>
  1507. </div>
  1508. </div>
  1509. <div id='rightWindow'>
  1510. <div class='topBottomFlex'>
  1511. <div class='growingFlex scrollbar' id='mapTab'>
  1512. <div id='mapTarget'></div>
  1513. </div>
  1514. <div id='roomExitsHolder'>
  1515. <p class='roomExitsHeader'>Exits:</p>
  1516. <div id='roomExits'></div>
  1517. </div>
  1518. </div>
  1519. </div>
  1520. </div>
  1521. </div>
  1522. </div>
  1523. <script id="ApplicationJS" type="text/javascript", charset="utf8", src="data:application/javascript,(function()%7B%0A%EF%BB%BFfunction%20arrayUnique(a)%20%7B%0A%20%20%20%20for%20(var%20i%20=%200;%20i%20%3C%20a.length;%20++i)%20%7B%0A%20%20%20%20%20%20%20%20for%20(var%20j%20=%20i%20+%201;%20j%20%3C%20a.length;%20++j)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(a[i]%20===%20a[j])%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20a.splice(j--,%201);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20a;%0A%7D%0Afunction%20arrayUniqueNewArray(a)%20%7B%0A%20%20%20%20a%20=%20a.slice();%0A%20%20%20%20arrayUnique(a);%0A%20%20%20%20return%20a;%0A%7D%0Afunction%20arrayShuffle(a)%20%7B%0A%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20a.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20let%20pos%20=%20Math.floor(Math.random()%20*%20(a.length%20-%20i))%20+%20i;%0A%20%20%20%20%20%20%20%20let%20temp%20=%20a[i];%0A%20%20%20%20%20%20%20%20a[i]%20=%20a[pos];%0A%20%20%20%20%20%20%20%20a[pos]%20=%20temp;%0A%20%20%20%20%7D%0A%7D%0Afunction%20arrayShuffleNewArray(a)%20%7B%0A%20%20%20%20let%20nA%20=%20a.slice();%0A%20%20%20%20arrayShuffle(nA);%0A%20%20%20%20return%20nA;%0A%7D%0Aclass%20StoredVariable%20%7B%0A%20%20%20%20constructor(options)%20%7B%0A%20%20%20%20%20%20%20%20this.id%20=%20options.id;%0A%20%20%20%20%20%20%20%20this.value%20=%20options.value;%0A%20%20%20%20%20%20%20%20this.defValue%20=%20this.value;%0A%20%20%20%20%20%20%20%20StoredVariable.registerVariable(this);%0A%20%20%20%20%7D%0A%20%20%20%20reset()%20%7B%0A%20%20%20%20%20%20%20%20this.value%20=%20this.defValue;%0A%20%20%20%20%7D%0A%20%20%20%20updateFromObject(obj)%20%7B%0A%20%20%20%20%20%20%20%20this.value%20=%20obj;%0A%20%20%20%20%7D%0A%20%20%20%20exportAsObject()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.value;%0A%20%20%20%20%7D%0A%20%20%20%20static%20registerVariable(variable)%20%7B%0A%20%20%20%20%20%20%20%20if%20(StoredVariable.storedVariables[variable.id]%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20StoredVariable.storedVariables[variable.id]%20=%20variable;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.warn(%22[StoredVariable]%20%22%20+%20variable.id%20+%20%22%20already%20defined.%20Ignoring:%22,%20variable);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20static%20getVariable(id)%20%7B%0A%20%20%20%20%20%20%20%20return%20StoredVariable.storedVariables[id];%0A%20%20%20%20%7D%0A%20%20%20%20static%20getVariables()%20%7B%0A%20%20%20%20%20%20%20%20let%20list%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20key%20in%20StoredVariable.storedVariables)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20list.push(StoredVariable.storedVariables[key]);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20list;%0A%20%20%20%20%7D%0A%20%20%20%20static%20exportAsObject()%20%7B%0A%20%20%20%20%20%20%20%20let%20list%20=%20%7B%7D;%0A%20%20%20%20%20%20%20%20for%20(let%20key%20in%20StoredVariable.storedVariables)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20list[key]%20=%20StoredVariable.storedVariables[key].value;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20list;%0A%20%20%20%20%7D%0A%20%20%20%20static%20updateFromObject(obj)%20%7B%0A%20%20%20%20%20%20%20%20for%20(let%20key%20in%20StoredVariable.storedVariables)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(obj[key]%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20StoredVariable.storedVariables[key].updateFromObject(obj[key]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20StoredVariable.storedVariables[key].reset();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0AStoredVariable.storedVariables%20=%20%7B%7D;%0Aclass%20RulebookRunner%20%7B%0A%20%20%20%20constructor(rulebook,%20noun)%20%7B%0A%20%20%20%20%20%20%20%20this.rulesToExecute%20=%20[];%0A%20%20%20%20%20%20%20%20this.ruleRunner%20=%20-1;%0A%20%20%20%20%20%20%20%20this.rulebook%20=%20rulebook;%0A%20%20%20%20%20%20%20%20this.noun%20=%20noun;%0A%20%20%20%20%7D%0A%20%20%20%20addRulebooks(...rulebooks)%20%7B%0A%20%20%20%20%20%20%20%20rulebooks%20=%20arrayUniqueNewArray(rulebooks);%0A%20%20%20%20%20%20%20%20rulebooks.forEach((rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.addRules(...rulebook.rules);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20addRules(...rules)%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.ruleRunner%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.rulesToExecute.push(...rules);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20skipRule(rule)%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.ruleRunner%20%3E=%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20index%20=%20this.rulesToExecute.indexOf(rule);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(index%20%3E%20this.ruleRunner)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.rulesToExecute.splice(index,%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%22[Rulebook]%22%20+%20this.rulebook.name%20+%20%22,%20skipping%20Rule%20%22%20+%20rule.name%20+%20%22%20due%20to%20request.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.warn(%22[Rulebook]%22%20+%20this.rulebook.name%20+%20%22:%20uname%20to%20skip%20Rule%22%20+%20rule.name%20+%20%22%20due%20to%20it%20being%20too%20late%20to%20stop%20it.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20async%20execute()%20%7B%0A%20%20%20%20%20%20%20%20arrayUnique(this.rulesToExecute).sort(function%20(a,%20b)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20a.compareTo(b);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20for%20(this.ruleRunner%20=%200;%20this.ruleRunner%20%3C%20this.rulesToExecute.length;%20this.ruleRunner++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.rule%20=%20this.rulesToExecute[this.ruleRunner];%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20result%20=%20await%20this.rule.execute(this);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(result%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20result;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0Aclass%20Rulebook%20%7B%0A%20%20%20%20constructor(name)%20%7B%0A%20%20%20%20%20%20%20%20this.rules%20=%20[];%0A%20%20%20%20%20%20%20%20this.name%20=%20name;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getStack()%20%7B%0A%20%20%20%20%20%20%20%20let%20stack%20=%20[];%0A%20%20%20%20%20%20%20%20Rulebook.rulebookStack.forEach((rl)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(rl%20instanceof%20Object%20&&%20rl.name%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20stack.push(rl.name);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(typeof%20rl%20==%20%22string%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20stack.push(rl);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(rl%20instanceof%20Object%20&&%20rl.id%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20stack.push(rl.id);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20stack.push(%22Undefined%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20stack;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getIndentation()%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%20%22.repeat(Rulebook.indentantionSpaces).repeat(Rulebook.rulebookStack.length);%0A%20%20%20%20%7D%0A%20%20%20%20static%20increaseIndentation(rulebook)%20%7B%0A%20%20%20%20%20%20%20%20Rulebook.rulebookStack.push(rulebook);%0A%20%20%20%20%7D%0A%20%20%20%20static%20decreaseIndentation()%20%7B%0A%20%20%20%20%20%20%20%20Rulebook.rulebookStack.pop();%0A%20%20%20%20%7D%0A%20%20%20%20static%20isRunning(r)%20%7B%0A%20%20%20%20%20%20%20%20return%20Rulebook.rulebookStack.indexOf(r)%20!=%20-1;%0A%20%20%20%20%7D%0A%20%20%20%20isRunning()%20%7B%0A%20%20%20%20%20%20%20%20return%20Rulebook.isRunning(this);%0A%20%20%20%20%7D%0A%20%20%20%20async%20execute(options,%20...rulebooks)%20%7B%0A%20%20%20%20%20%20%20%20options%20=%20options%20==%20undefined%20?%20%7B%7D%20:%20options;%0A%20%20%20%20%20%20%20%20let%20runner%20=%20new%20RulebookRunner(this,%20options.noun);%0A%20%20%20%20%20%20%20%20runner.addRulebooks(this,%20...rulebooks);%0A%20%20%20%20%20%20%20%20var%20names%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20rulebooks.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(rulebooks[i]%20===%20this)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20continue;%0A%20%20%20%20%20%20%20%20%20%20%20%20names.push(rulebooks[i].name);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20//Rulebook.getIndentation()%20+%20%22[RULEBOOK]%20%22%20+%20this.name%20+%20(names.length%20%3E%200%20?%20(%22%20merged%20with%20%22%20+%20names.join(%22,%20%22))%20:%20%22%22));%0A%20%20%20%20%20%20%20%20Rulebook.increaseIndentation(this);%0A%20%20%20%20%20%20%20%20let%20result%20=%20await%20runner.execute();%0A%20%20%20%20%20%20%20%20Rulebook.decreaseIndentation();%0A%20%20%20%20%20%20%20%20return%20result;%0A%20%20%20%20%7D%0A%20%20%20%20createAndAddRule(r)%20%7B%0A%20%20%20%20%20%20%20%20let%20rule%20=%20new%20Rule(r);%0A%20%20%20%20%20%20%20%20this.addRule(rule);%0A%20%20%20%20%20%20%20%20return%20rule;%0A%20%20%20%20%7D%0A%20%20%20%20addRule(r)%20%7B%0A%20%20%20%20%20%20%20%20this.rules.push(r);%0A%20%20%20%20%7D%0A%20%20%20%20sortRules()%20%7B%0A%20%20%20%20%20%20%20%20this.rules.sort(function%20(a,%20b)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20a.compareTo(b);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%7D%0ARulebook.indentantionSpaces%20=%202;%0ARulebook.rulebookStack%20=%20[];%0Avar%20Settings;%0A(function%20(Settings)%20%7B%0A%20%20%20%20var%20debug%20=%20console.debug;%0A%20%20%20%20var%20debugEmpty%20=%20()%20=%3E%20%7B%20%7D;%0A%20%20%20%20Settings.hardDebug%20=%20false;%0A%20%20%20%20Settings.sayTurnTime%20=%20true;%0A%20%20%20%20function%20setDebug(isDebug)%20%7B%0A%20%20%20%20%20%20%20%20if%20(isDebug)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.debug%20=%20debug;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.debug%20=%20debugEmpty;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20Settings.setDebug%20=%20setDebug;%0A%20%20%20%20function%20isDebug()%20%7B%0A%20%20%20%20%20%20%20%20return%20console.debug%20==%20debug;%0A%20%20%20%20%7D%0A%20%20%20%20Settings.isDebug%20=%20isDebug;%0A%20%20%20%20function%20setHardDebug(isHardDebug)%20%7B%0A%20%20%20%20%20%20%20%20Settings.hardDebug%20=%20isHardDebug;%0A%20%20%20%20%7D%0A%20%20%20%20Settings.setHardDebug%20=%20setHardDebug;%0A%7D)(Settings%20%7C%7C%20(Settings%20=%20%7B%7D));%0Aclass%20Rule%20%7B%0A%20%20%20%20constructor(options)%20%7B%0A%20%20%20%20%20%20%20%20this._priority%20=%200;%0A%20%20%20%20%20%20%20%20this.firstPriority%20=%200;%0A%20%20%20%20%20%20%20%20this.priority%20=%20options.priority%20!=%20undefined%20?%20options.priority%20:%20Rule.PRIORITY_MEDIUM;%0A%20%20%20%20%20%20%20%20this.firstPriority%20=%20options.firstPriority%20!=%20undefined%20?%20options.firstPriority%20:%20Rule.PRIORITY_MEDIUM;%0A%20%20%20%20%20%20%20%20this.name%20=%20options.name;%0A%20%20%20%20%20%20%20%20this.code%20=%20options.code;%0A%20%20%20%20%20%20%20%20this.createdWhere%20=%20(new%20Error());%0A%20%20%20%20%20%20%20%20this.conditions%20=%20options.conditions%20!=%20undefined%20?%20options.conditions%20:%20()%20=%3E%20%7B%20return%20true;%20%7D;%0A%20%20%20%20%7D%0A%20%20%20%20async%20execute(rulebook)%20%7B%0A%20%20%20%20%20%20%20%20if%20(!this.conditions(rulebook))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20//Rulebook.getIndentation()%20+%20%22[RULE]%20%22%20+%20this.name);%0A%20%20%20%20%20%20%20%20Settings.hardDebug%20&&%20//this.name,%20this.createdWhere);%0A%20%20%20%20%20%20%20%20Rulebook.increaseIndentation(this);%0A%20%20%20%20%20%20%20%20rulebook.rule%20=%20this;%0A%20%20%20%20%20%20%20%20let%20result%20=%20this.code(rulebook);%0A%20%20%20%20%20%20%20%20if%20(result%20instanceof%20Promise)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20result%20=%20await%20result;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(result%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20//Rulebook.getIndentation()%20+%20%22Result:%22,%20result);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20Rulebook.decreaseIndentation();%0A%20%20%20%20%20%20%20%20return%20result;%0A%20%20%20%20%7D%0A%20%20%20%20get%20priority()%20%7B%0A%20%20%20%20%20%20%20%20return%20this._priority;%0A%20%20%20%20%7D%0A%20%20%20%20set%20priority(value)%20%7B%0A%20%20%20%20%20%20%20%20this._priority%20=%20value;%0A%20%20%20%20%7D%0A%20%20%20%20compareTo(b)%20%7B%0A%20%20%20%20%20%20%20%20var%20a%20=%20this;%0A%20%20%20%20%20%20%20%20if%20(b.firstPriority%20%3C%20a.firstPriority)%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20-1;%0A%20%20%20%20%20%20%20%20if%20(a.firstPriority%20%3C%20b.firstPriority)%0A%20%20%20%20%20%20%20%20%20%20%20%20return%201;%0A%20%20%20%20%20%20%20%20if%20(b.priority%20%3C%20a.priority)%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20-1;%0A%20%20%20%20%20%20%20%20if%20(a.priority%20%3C%20b.priority)%0A%20%20%20%20%20%20%20%20%20%20%20%20return%201;%0A%20%20%20%20%20%20%20%20return%200;%0A%20%20%20%20%7D%0A%7D%0ARule.PRIORITY_HIGHEST%20=%2020;%0ARule.PRIORITY_HIGH%20=%2015;%0ARule.PRIORITY_MEDIUM%20=%2010;%0ARule.PRIORITY_LOW%20=%205;%0ARule.PRIORITY_LOWEST%20=%200;%0Avar%20TurnSequence;%0A(function%20(TurnSequence)%20%7B%0A%20%20%20%20TurnSequence.rulebook%20=%20new%20Rulebook(%22Turn%20Sequence%22);%0A%20%20%20%20TurnSequence.playerActions%20=%20[];%0A%20%20%20%20TurnSequence.lastTurnTime%20=%200;%0A%20%20%20%20async%20function%20execute(action)%20%7B%0A%20%20%20%20%20%20%20%20if%20(TurnSequence.playerActions.push(action)%20==%201)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20t0%20=%20performance.now();%0A%20%20%20%20%20%20%20%20%20%20%20%20//Rulebook.getIndentation()%20+%20%22%20%20%20Player%20Action:%20%22%20+%20(action%20?%20action.getCommandText()%20:%20%22none%22));%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20TurnSequence.rulebook.execute(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20noun:%20action%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20TurnSequence.playerActions%20=%20[];%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20t1%20=%20performance.now();%0A%20%20%20%20%20%20%20%20%20%20%20%20TurnSequence.lastTurnTime%20=%20t1%20-%20t0;%0A%20%20%20%20%20%20%20%20%20%20%20%20//%22Total:%20%22%20+%20(t1%20-%20t0)%20+%20%22%20milliseconds.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(Settings.sayTurnTime)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.printAsContent(new%20Say(new%20SayBold(%22Time%20taken%20for%20turn:%20%22),%20(t1%20-%20t0),%20%22%20milliseconds.%22));%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20TurnSequence.execute%20=%20execute;%0A%20%20%20%20TurnSequence.PrepareElementsRule%20=%20new%20Rule(%7B%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20%20%20%20%20priority:%20Rule.PRIORITY_MEDIUM,%0A%20%20%20%20%20%20%20%20name:%20%22Begin%20Turn%20(Elements%20Side)%22,%0A%20%20%20%20%20%20%20%20code:%20function%20(runner)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.startTurn(runner.noun);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%20%20%20%20TurnSequence.rulebook.addRule(TurnSequence.PrepareElementsRule);%0A%20%20%20%20TurnSequence.PlayerActionRule%20=%20new%20Rule(%7B%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGH,%0A%20%20%20%20%20%20%20%20priority:%20Rule.PRIORITY_MEDIUM,%0A%20%20%20%20%20%20%20%20name:%20%22Do%20Player%20Action%22,%0A%20%20%20%20%20%20%20%20code:%20async%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20playerAction%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(playerAction%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20promise%20=%20playerAction.execute();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20promise;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.printAsContent(playerAction.say);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(playerAction.requiresTurn)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20WorldState.incrementPlayerTurn();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%20%20%20%20TurnSequence.rulebook.addRule(TurnSequence.PlayerActionRule);%0A%20%20%20%20TurnSequence.RunEveryTurnRulesRule%20=%20new%20Rule(%7B%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_MEDIUM,%0A%20%20%20%20%20%20%20%20priority:%20Rule.PRIORITY_MEDIUM,%0A%20%20%20%20%20%20%20%20name:%20%22Run%20Every%20Turn%20Rules%22,%0A%20%20%20%20%20%20%20%20code:%20async%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20while%20(WorldState.isTurnWaiting())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20EveryTurn.EveryTurn.execute(%7B%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%20%20%20%20TurnSequence.rulebook.addRule(TurnSequence.RunEveryTurnRulesRule);%0A%20%20%20%20TurnSequence.RemoveTurnFromElementsRule%20=%20new%20Rule(%7B%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20%20%20%20%20priority:%20Rule.PRIORITY_MEDIUM,%0A%20%20%20%20%20%20%20%20name:%20%22End%20Turn%20(Elements/Controls%20Side)%22,%0A%20%20%20%20%20%20%20%20code:%20async%20function%20(rulebook)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.endTurn();%0A%20%20%20%20%20%20%20%20%20%20%20%20Controls.KeyHandler.reset();%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20Elements.HyperlinkHandler.hyperlinkCommonActions();%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20Elements.RoomHandler.updateRoom();%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20Elements.RememberedHandler.updateMap();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20playerAction%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(playerAction)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20Elements.HyperlinkHandler.hyperlinkObject(playerAction.getNoun(0));%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20Elements.HyperlinkHandler.hyperlinkObject();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20Elements.InventoryHandler.updateInventory();%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20Elements.AppearanceHandler.updateAppearance();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%20%20%20%20TurnSequence.rulebook.addRule(TurnSequence.RemoveTurnFromElementsRule);%0A%7D)(TurnSequence%20%7C%7C%20(TurnSequence%20=%20%7B%7D));%0Avar%20Version;%0A(function%20(Version)%20%7B%0A%20%20%20%20Version.currentVersion%20=%20[0,%201,%200];%0A%20%20%20%20function%20compareVersion(v1,%20v2)%20%7B%0A%20%20%20%20%20%20%20%20if%20(v1[0]%20%3C%20v2[0])%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20-1;%0A%20%20%20%20%20%20%20%20else%20if%20(v1[0]%20%3E%20v2[0])%0A%20%20%20%20%20%20%20%20%20%20%20%20return%201;%0A%20%20%20%20%20%20%20%20if%20(v1[1]%20%3C%20v2[1])%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20-1;%0A%20%20%20%20%20%20%20%20else%20if%20(v1[1]%20%3E%20v2[1])%0A%20%20%20%20%20%20%20%20%20%20%20%20return%201;%0A%20%20%20%20%20%20%20%20if%20(v1[2]%20%3C%20v2[2])%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20-1;%0A%20%20%20%20%20%20%20%20else%20if%20(v1[2]%20%3E%20v2[2])%0A%20%20%20%20%20%20%20%20%20%20%20%20return%201;%0A%20%20%20%20%20%20%20%20return%200;%0A%20%20%20%20%7D%0A%20%20%20%20Version.compareVersion%20=%20compareVersion;%0A%20%20%20%20function%20getCurrentVersion()%20%7B%0A%20%20%20%20%20%20%20%20let%20v%20=%20Version.currentVersion;%0A%20%20%20%20%20%20%20%20return%20v[0]%20+%20%22.%22%20+%20v[1]%20+%20%22.%22%20+%20v[2];%0A%20%20%20%20%7D%0A%20%20%20%20Version.getCurrentVersion%20=%20getCurrentVersion;%0A%20%20%20%20document.title%20=%20document.title%20+%20%22%20[%22%20+%20getCurrentVersion()%20+%20%22]%20%20%22;%0A%7D)(Version%20%7C%7C%20(Version%20=%20%7B%7D));%0Avar%20Controls;%0A(function%20(Controls)%20%7B%0A%20%20%20%20var%20Memory;%0A%20%20%20%20(function%20(Memory)%20%7B%0A%20%20%20%20%20%20%20%20let%20versionSet%20=%20false;%0A%20%20%20%20%20%20%20%20let%20settingsVersion%20=%20Version.currentVersion;%0A%20%20%20%20%20%20%20%20let%20versionId%20=%20%22Version%22;%0A%20%20%20%20%20%20%20%20let%20memoryPrefix%20=%20%22obelisk_%22;%0A%20%20%20%20%20%20%20%20let%20memories%20=%20%7B%7D;%0A%20%20%20%20%20%20%20%20function%20getValue(id,%20defValue)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20storage%20=%20localStorage.getItem(memoryPrefix%20+%20id);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20storage%20==%20undefined%20?%20defValue%20:%20JSON.parse(storage);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20Memory.getValue%20=%20getValue;%0A%20%20%20%20%20%20%20%20function%20setValue(id,%20value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20localStorage.setItem(memoryPrefix%20+%20id,%20JSON.stringify(value));%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!versionSet)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20versionSet%20=%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20settingsVersion%20=%20getValue(versionId,%20Version.currentVersion);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setValue(versionId,%20Version.currentVersion);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(settingsVersion%20==%20undefined)%20%7B%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20Memory.setValue%20=%20setValue;%0A%20%20%20%20%20%20%20%20function%20registerMemory(mem)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(memories[mem.getId()]%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.error(%22[Controls.Memory]%20Memory%20already%20registered%20on%20id%20%22%20+%20mem.getId(),%20%22Old:%22,%20memories[mem.getId()],%20%22New:%22,%20mem);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20memories[mem.getId()]%20=%20mem;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mem.setValueFromLocalStorageDoNotInvoke(getValue(mem.getId(),%20mem.getValue()));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20updateF%20=%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Controls.Memory.setValue(mem.getId(),%20mem.getValue());%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mem.addListener(updateF);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20updateF();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20Memory.registerMemory%20=%20registerMemory;%0A%20%20%20%20%7D)(Memory%20=%20Controls.Memory%20%7C%7C%20(Controls.Memory%20=%20%7B%7D));%0A%7D)(Controls%20%7C%7C%20(Controls%20=%20%7B%7D));%0Aclass%20StoredMemory%20%7B%0A%20%20%20%20constructor(id,%20value)%20%7B%0A%20%20%20%20%20%20%20%20this.listeners%20=%20[];%0A%20%20%20%20%20%20%20%20this.id%20=%20id;%0A%20%20%20%20%20%20%20%20this.value%20=%20value;%0A%20%20%20%20%20%20%20%20Controls.Memory.registerMemory(this);%0A%20%20%20%20%7D%0A%20%20%20%20setValueFromLocalStorageDoNotInvoke(value)%20%7B%0A%20%20%20%20%20%20%20%20this.value%20=%20value;%0A%20%20%20%20%7D%0A%20%20%20%20storeValue(value)%20%7B%0A%20%20%20%20%20%20%20%20if%20(JSON.stringify(value)%20!==%20JSON.stringify(this.value))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.value%20=%20value;%0A%20%20%20%20%20%20%20%20%20%20%20%20this.triggerListeners();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getValue()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.value;%0A%20%20%20%20%7D%0A%20%20%20%20getId()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.id;%0A%20%20%20%20%7D%0A%20%20%20%20addListener(listener)%20%7B%0A%20%20%20%20%20%20%20%20this.listeners.push(listener);%0A%20%20%20%20%7D%0A%20%20%20%20triggerListeners()%20%7B%0A%20%20%20%20%20%20%20%20for%20(var%20i%20=%200;%20i%20%3C%20this.listeners.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.listeners[i](this);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0Avar%20SaveHandler;%0A(function%20(SaveHandler)%20%7B%0A%20%20%20%20let%20saveName%20=%20%22Obelisk_Save%22;%0A%20%20%20%20let%20saveExtension%20=%20%22obsav%22;%0A%20%20%20%20let%20storagePrefix%20=%20%22save_%22;%0A%20%20%20%20let%20saveSlot%20=%200;%0A%20%20%20%20let%20errors%20=%20[];%0A%20%20%20%20let%20erasing%20=%20false;%0A%20%20%20%20let%20virgin%20=%20new%20StoredMemory(%22First%20time%20saving%22,%20true);%0A%20%20%20%20SaveHandler.AfterLoad%20=%20new%20Rulebook(%22After%20loading%22);%0A%20%20%20%20async%20function%20readFile()%20%7B%0A%20%20%20%20%20%20%20%20let%20element%20=%20document.createElement(%22input%22);%0A%20%20%20%20%20%20%20%20element.type%20=%20%22file%22;%0A%20%20%20%20%20%20%20%20element.accept%20=%20%22.%22%20+%20saveExtension;%0A%20%20%20%20%20%20%20%20let%20promise%20=%20new%20Promise((resolve,%20reject)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20element.onchange%20=%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(element.files.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20resolve(undefined);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20fr%20=%20new%20FileReader();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20fr.onload%20=%20(ev)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20resolve(ev.target['result']);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20fr.readAsText(element.files[0]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20element.click();%0A%20%20%20%20%20%20%20%20return%20promise;%0A%20%20%20%20%7D%0A%20%20%20%20SaveHandler.readFile%20=%20readFile;%0A%20%20%20%20function%20download(filename,%20text)%20%7B%0A%20%20%20%20%20%20%20%20var%20element%20=%20document.createElement('a');%0A%20%20%20%20%20%20%20%20element.setAttribute('href',%20'data:text/plain;charset=utf-8,'%20+%20encodeURIComponent(text));%0A%20%20%20%20%20%20%20%20element.setAttribute('download',%20filename);%0A%20%20%20%20%20%20%20%20element.style.display%20=%20'none';%0A%20%20%20%20%20%20%20%20document.body.appendChild(element);%0A%20%20%20%20%20%20%20%20element.click();%0A%20%20%20%20%20%20%20%20document.body.removeChild(element);%0A%20%20%20%20%7D%0A%20%20%20%20function%20loadSave()%20%7B%0A%20%20%20%20%20%20%20%20let%20input%20=%20document.createElement(%22input%22);%0A%20%20%20%20%20%20%20%20input.type%20=%20%22file%22;%0A%20%20%20%20%20%20%20%20input.accept%20=%20%22.%22%20+%20saveExtension;%0A%20%20%20%20%20%20%20%20document.body.appendChild(input);%0A%20%20%20%20%20%20%20%20input.addEventListener(%22change%22,%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20reader%20=%20new%20FileReader();%0A%20%20%20%20%20%20%20%20%20%20%20%20reader.onload%20=%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20text%20=%20reader.result;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20SaveHandler.loadGame(JSON.parse(text));%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20reader.readAsText(input.files[0]);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20input.click();%0A%20%20%20%20%20%20%20%20document.body.removeChild(input);%0A%20%20%20%20%7D%0A%20%20%20%20SaveHandler.loadSave%20=%20loadSave;%0A%20%20%20%20function%20getItem(thing)%20%7B%0A%20%20%20%20%20%20%20%20let%20item;%0A%20%20%20%20%20%20%20%20if%20(thing.Unique)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20item%20=%20Thing.getUnique(thing.Name);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20items%20=%20Thing.getNonUnique(thing.Name);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(items.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20item%20=%20items[0];%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(item%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20error%20=%20thing.Name%20+%20%22%20no%20longer%20exists.%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.error(%22[SaveHandler]%20%22%20+%20error);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20errors.push(error);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20undefined;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20item%20=%20item.clone(true);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20item.setChanges(thing.Changes);%0A%20%20%20%20%20%20%20%20return%20item;%0A%20%20%20%20%7D%0A%20%20%20%20function%20loadGame(saveStruc)%20%7B%0A%20%20%20%20%20%20%20%20let%20player%20=%20WorldState.player;%0A%20%20%20%20%20%20%20%20StoredVariable.updateFromObject(saveStruc.Variables);%0A%20%20%20%20%20%20%20%20WorldState.setCurrentTurn(saveStruc.Rounds);%0A%20%20%20%20%20%20%20%20Thing.WearRelation.getRight(player).forEach((thing)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Thing.WearRelation.unsetRight(thing);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20Thing.WieldRelation.getRight(player).forEach((thing)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Thing.WieldRelation.unsetRight(thing);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20Thing.CarryRelation.getRight(player).forEach((thing)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Thing.CarryRelation.unsetRight(thing);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20saveStruc.Wielded.forEach((thing)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20item%20=%20getItem(thing);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(item%20!=%20undefined)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20WorldState.player.setWielded(item);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20saveStruc.Worn.forEach((thing)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20item%20=%20getItem(thing);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(item%20!=%20undefined)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20WorldState.player.setWorn(item);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20saveStruc.Carried.forEach((thing)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20item%20=%20getItem(thing);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(item%20!=%20undefined)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20WorldState.player.setCarried(item);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20let%20savedPlayer%20=%20saveStruc.Player;%0A%20%20%20%20%20%20%20%20player.setName(savedPlayer.Name);%0A%20%20%20%20%20%20%20%20player.setChanges(savedPlayer.PlayerChanges);%0A%20%20%20%20%20%20%20%20savedPlayer.Parts.forEach((part)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20bpList%20=%20player.getPartsByName(part.Name);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(bpList%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bpList[0].setChanges(part.Changes);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20saveStruc.UniqueThings.forEach((savedThing)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20thing%20=%20Thing.getUnique(savedThing.Name);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(thing%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20thing.setChanges(savedThing.Changes);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20SaveHandler.loadGame%20=%20loadGame;%0A%20%20%20%20function%20exportPlayer()%20%7B%0A%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Name:%20WorldState.player.getName(),%0A%20%20%20%20%20%20%20%20%20%20%20%20PlayerChanges:%20WorldState.player.getChanges(),%0A%20%20%20%20%20%20%20%20%20%20%20%20Parts:%20exportThings(WorldState.player.getParts())%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%7D%0A%20%20%20%20function%20exportThings(arr,%20changedOnly)%20%7B%0A%20%20%20%20%20%20%20%20let%20obj%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20arr.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20thing%20=%20arr[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20savedThing%20=%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Unique:%20thing.isUnique(),%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Name:%20thing.getName(),%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Changes:%20thing.getChanges()%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!changedOnly%20%7C%7C%20Object.keys(savedThing.Changes).length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20obj.push(savedThing);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20obj;%0A%20%20%20%20%7D%0A%20%20%20%20SaveHandler.exportThings%20=%20exportThings;%0A%20%20%20%20function%20getSaveStructure()%20%7B%0A%20%20%20%20%20%20%20%20let%20variables%20=%20StoredVariable.getVariables();%0A%20%20%20%20%20%20%20%20let%20savedVariables%20=%20%7B%7D;%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20variables.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20savedVariables[variables[i].id]%20=%20variables[i].exportAsObject();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20wielded%20=%20Thing.WieldRelation.getRight(WorldState.player);%0A%20%20%20%20%20%20%20%20let%20worn%20=%20Thing.WearRelation.getRight(WorldState.player);%0A%20%20%20%20%20%20%20%20let%20carried%20=%20Thing.CarryRelation.getRight(WorldState.player);%0A%20%20%20%20%20%20%20%20let%20saveStruc%20=%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Variables:%20savedVariables,%0A%20%20%20%20%20%20%20%20%20%20%20%20UniqueThings:%20exportThings(Thing.getUniques()),%0A%20%20%20%20%20%20%20%20%20%20%20%20Wielded:%20exportThings(wielded),%0A%20%20%20%20%20%20%20%20%20%20%20%20Worn:%20exportThings(worn),%0A%20%20%20%20%20%20%20%20%20%20%20%20Carried:%20exportThings(carried),%0A%20%20%20%20%20%20%20%20%20%20%20%20Player:%20exportPlayer(),%0A%20%20%20%20%20%20%20%20%20%20%20%20Rounds:%20WorldState.getCurrentTurn(),%0A%20%20%20%20%20%20%20%20%20%20%20%20Date:%20new%20Date().toLocaleString()%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20//%22[SaveHandler]%20Created%20Save%20Structure%22,%20saveStruc);%0A%20%20%20%20%20%20%20%20return%20saveStruc;%0A%20%20%20%20%7D%0A%20%20%20%20SaveHandler.getSaveStructure%20=%20getSaveStructure;%0A%20%20%20%20function%20setSlot(slotN)%20%7B%0A%20%20%20%20%20%20%20%20saveSlot%20=%20slotN;%0A%20%20%20%20%7D%0A%20%20%20%20SaveHandler.setSlot%20=%20setSlot;%0A%20%20%20%20function%20saveToStorage()%20%7B%0A%20%20%20%20%20%20%20%20Controls.Memory.setValue(storagePrefix%20+%20saveSlot,%20getSaveStructure());%0A%20%20%20%20%7D%0A%20%20%20%20SaveHandler.saveToStorage%20=%20saveToStorage;%0A%20%20%20%20async%20function%20loadFromStorage()%20%7B%0A%20%20%20%20%20%20%20%20if%20(!erasing)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20saveStruct%20=%20(Controls.Memory.getValue(storagePrefix%20+%20saveSlot,%20undefined));%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(saveStruct%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20loadGame(saveStruct);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20await%20SaveHandler.AfterLoad.execute(%7B%20noun:%20saveStruct%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20await%20CharacterCreation.rulebook.execute(%7B%7D);%0A%20%20%20%20%7D%0A%20%20%20%20SaveHandler.loadFromStorage%20=%20loadFromStorage;%0A%20%20%20%20async%20function%20loadFromFile()%20%7B%0A%20%20%20%20%20%20%20%20PlayBegins.LOAD_FAILED%20=%20false;%0A%20%20%20%20%20%20%20%20let%20promise%20=%20readFile();%0A%20%20%20%20%20%20%20%20let%20finishedAny;%0A%20%20%20%20%20%20%20%20let%20realPromise%20=%20new%20Promise((resolve)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20finishedAny%20=%20resolve;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20let%20say%20=%20new%20Say(%22No%20save%20file%20was%20loaded.%22,%20Say.PARAGRAPH_BREAK,%20Say.CENTERED,%20new%20SayBold(%22Press%20any%20key%20to%20return.%22));%0A%20%20%20%20%20%20%20%20let%20sayElements%20=%20await%20Elements.CurrentTurnHandler.getSayElementsAsContent(say);%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.print(...sayElements);%0A%20%20%20%20%20%20%20%20let%20nextKey%20=%20Controls.KeyHandler.getNextKey();%0A%20%20%20%20%20%20%20%20promise.then((file)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Controls.KeyHandler.stopGivingNextKey(nextKey);%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.unprint(...sayElements);%0A%20%20%20%20%20%20%20%20%20%20%20%20loadGame(getFromFile(file));%0A%20%20%20%20%20%20%20%20%20%20%20%20finishedAny();%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20nextKey.then((keyCode)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20PlayBegins.LOAD_FAILED%20=%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20finishedAny();%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20await%20realPromise;%0A%20%20%20%20%7D%0A%20%20%20%20SaveHandler.loadFromFile%20=%20loadFromFile;%0A%20%20%20%20function%20getSayForSlot(slotNumber)%20%7B%0A%20%20%20%20%20%20%20%20let%20saveStruct%20=%20(Controls.Memory.getValue(storagePrefix%20+%20slotNumber,%20undefined));%0A%20%20%20%20%20%20%20%20if%20(saveStruct%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20new%20Say(%22New%20Game%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20erasingText%20=%20erasing%20?%20%22(ERASE)%20-%20%22%20:%20%22%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20new%20Say(erasingText,%20saveStruct.Player.Name%20+%20%22%20-%20Turns:%20%22%20+%20saveStruct.Rounds%20+%20%22%20-%20Last%20Played:%20%22%20+%20saveStruct.Date);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20SaveHandler.getSayForSlot%20=%20getSayForSlot;%0A%20%20%20%20function%20getFromFile(saveText)%20%7B%0A%20%20%20%20%20%20%20%20return%20JSON.parse(decodeURIComponent(atob(saveText)));%0A%20%20%20%20%7D%0A%20%20%20%20SaveHandler.getFromFile%20=%20getFromFile;%0A%20%20%20%20function%20saveToFile()%20%7B%0A%20%20%20%20%20%20%20%20download(saveName%20+%20%22.%22%20+%20saveExtension,%20btoa(unescape(encodeURIComponent((JSON.stringify(getSaveStructure()))))));%0A%20%20%20%20%7D%0A%20%20%20%20SaveHandler.saveToFile%20=%20saveToFile;%0A%20%20%20%20function%20isErasing()%20%7B%0A%20%20%20%20%20%20%20%20return%20erasing;%0A%20%20%20%20%7D%0A%20%20%20%20SaveHandler.isErasing%20=%20isErasing;%0A%20%20%20%20function%20toggleErasing()%20%7B%0A%20%20%20%20%20%20%20%20erasing%20=%20!erasing;%0A%20%20%20%20%7D%0A%20%20%20%20SaveHandler.toggleErasing%20=%20toggleErasing;%0A%20%20%20%20function%20isVirgin()%20%7B%0A%20%20%20%20%20%20%20%20let%20was%20=%20virgin.getValue();%0A%20%20%20%20%20%20%20%20virgin.storeValue(false);%0A%20%20%20%20%20%20%20%20return%20was;%0A%20%20%20%20%7D%0A%20%20%20%20SaveHandler.isVirgin%20=%20isVirgin;%0A%7D)(SaveHandler%20%7C%7C%20(SaveHandler%20=%20%7B%7D));%0ATurnSequence.rulebook.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Save%20game%20to%20Storage%22,%0A%20%20%20%20priority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20code:%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20SaveHandler.saveToStorage();%0A%20%20%20%20%7D%0A%7D);%0Aclass%20CharacterOrigin%20%7B%0A%20%20%20%20constructor(id)%20%7B%0A%20%20%20%20%20%20%20%20this.confirmPicked%20=%20()%20=%3E%20%7B%20%7D;%0A%20%20%20%20%20%20%20%20this.id%20=%20id;%0A%20%20%20%20%20%20%20%20CharacterOrigin.storeOrigin(this);%0A%20%20%20%20%7D%0A%20%20%20%20static%20storeOrigin(origin)%20%7B%0A%20%20%20%20%20%20%20%20CharacterOrigin.origins[origin.id]%20=%20origin;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getOrigin(id)%20%7B%0A%20%20%20%20%20%20%20%20return%20CharacterOrigin.origins[id];%0A%20%20%20%20%7D%0A%20%20%20%20static%20getOrigins()%20%7B%0A%20%20%20%20%20%20%20%20let%20origins%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20id%20in%20CharacterOrigin.origins)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20origins.push(CharacterOrigin.origins[id]);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20origins.sort((a,%20b)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20na%20=%20a.name.toUpperCase();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20nb%20=%20b.name.toUpperCase();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(na%20%3C%20nb)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20-1;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(na%20%3E%20nb)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%201;%0A%20%20%20%20%20%20%20%20%20%20%20%20return%200;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20origins;%0A%20%20%20%20%7D%0A%7D%0ACharacterOrigin.origins%20=%20%7B%7D;%0Avar%20CharacterCreation;%0A(function%20(CharacterCreation)%20%7B%0A%20%20%20%20CharacterCreation.ChampionOrigin%20=%20new%20CharacterOrigin(%22Champion%22);%0A%20%20%20%20CharacterCreation.ChampionOrigin.name%20=%20%22Champion%22;%0A%20%20%20%20CharacterCreation.ChampionOrigin.description%20=%20%22You%20were%20born%20in%20the%20small%20village%20of%20Southwood%20in%20the%20post-Tower%20world.%20Chosen%20by%20the%20village%20elder,%20you%20were%20trained%20relentlessly%20as%20soon%20as%20you%20became%20able%20to%20walk.%20Your%20mission:%20get%20to%20the%20Tower%20and%20find%20a%20way%20to%20destroy%20it.%20Unbeknownst%20to%20you,%20this%20is%20little%20more%20than%20a%20sacrifice%20ritual%20and%20you%20are%20just%20it's%20latest%20victim.%20The%20village%20doesn't%20actually%20expect%20you%20to%20succeed,%20you%20are%20merely%20a%20gift%20to%20the%20Tower,%20so%20that%20it%20will%20not%20destroy%20Southwood.%22;%0A%20%20%20%20CharacterCreation.ChampionOrigin.bonusStats%20=%20%22This%20origin%20grants%20a%20+1%20Bonus%20to%20every%20attribute,%20but%20you%20will%20be%20stuck%20with%20some%20perks%20gained%20through%20your%20training.%22;%0A%20%20%20%20CharacterCreation.ChampionOrigin.confirmPicked%20=%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20player%20=%20WorldState.player;%0A%20%20%20%20%20%20%20%20function%20increaseStat(attr)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20player.setStat(attr,%20player.getStat(attr)%20+%201);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20increaseStat(Attributes.Strength);%0A%20%20%20%20%20%20%20%20increaseStat(Attributes.Charm);%0A%20%20%20%20%20%20%20%20increaseStat(Attributes.Agility);%0A%20%20%20%20%20%20%20%20increaseStat(Attributes.Intelligence);%0A%20%20%20%20%7D;%0A%7D)(CharacterCreation%20%7C%7C%20(CharacterCreation%20=%20%7B%7D));%0Avar%20CharacterCreation;%0A(function%20(CharacterCreation)%20%7B%0A%20%20%20%20CharacterCreation.PlayerOrigin%20=%20new%20StoredVariable(%7B%20id:%20%22Player%20Origin%22,%20value:%20CharacterCreation.ChampionOrigin.id%20%7D);%0A%20%20%20%20function%20getOrigin()%20%7B%0A%20%20%20%20%20%20%20%20return%20CharacterOrigin.getOrigin(CharacterCreation.PlayerOrigin.value);%0A%20%20%20%20%7D%0A%20%20%20%20CharacterCreation.getOrigin%20=%20getOrigin;%0A%20%20%20%20CharacterCreation.rulebook%20=%20new%20Rulebook(%22Character%20Creation%22);%0A%7D)(CharacterCreation%20%7C%7C%20(CharacterCreation%20=%20%7B%7D));%0Aclass%20Perk%20extends%20StoredVariable%20%7B%0A%20%20%20%20constructor(id)%20%7B%0A%20%20%20%20%20%20%20%20super(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20id:%20%22Perk_%22%20+%20id,%0A%20%20%20%20%20%20%20%20%20%20%20%20value:%20false%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.forcedStatus%20=%20()%20=%3E%20%7B%20return%20undefined;%20%7D;%0A%20%20%20%20%20%20%20%20this.description%20=%20%22Undefined%22;%0A%20%20%20%20%20%20%20%20this.confirmPicked%20=%20()%20=%3E%20%7B%20%7D;%0A%20%20%20%20%20%20%20%20this.name%20=%20id;%0A%20%20%20%20%20%20%20%20Perk.storePerk(this);%0A%20%20%20%20%7D%0A%20%20%20%20isEnabled(valueOnly)%20%7B%0A%20%20%20%20%20%20%20%20if%20(valueOnly%20!=%20true)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20forced%20=%20this.forcedStatus(this);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(forced%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20forced;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20this.value;%0A%20%20%20%20%7D%0A%20%20%20%20isForced()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.forcedStatus(this)%20!=%20undefined;%0A%20%20%20%20%7D%0A%20%20%20%20getDescription()%20%7B%0A%20%20%20%20%20%20%20%20if%20(typeof%20this.description%20==%20%22function%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.description(this);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.description;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20static%20storePerk(perk)%20%7B%0A%20%20%20%20%20%20%20%20Perk.perks[perk.id]%20=%20perk;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getPerk(id)%20%7B%0A%20%20%20%20%20%20%20%20return%20Perk.perks[id];%0A%20%20%20%20%7D%0A%20%20%20%20static%20getPerks()%20%7B%0A%20%20%20%20%20%20%20%20let%20perks%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20id%20in%20Perk.perks)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20perks.push(Perk.perks[id]);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20perks.sort((a,%20b)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20na%20=%20a.name.toUpperCase();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20nb%20=%20b.name.toUpperCase();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(na%20%3C%20nb)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20-1;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(na%20%3E%20nb)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%201;%0A%20%20%20%20%20%20%20%20%20%20%20%20return%200;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20perks;%0A%20%20%20%20%7D%0A%20%20%20%20static%20updatePerks()%20%7B%0A%20%20%20%20%20%20%20%20for%20(let%20id%20in%20Perk.perks)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20perk%20=%20Perk.perks[id];%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(perk.isForced())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20perk.value%20=%20perk.forcedStatus(perk);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0APerk.perks%20=%20%7B%7D;%0Aclass%20OneOf%20%7B%0A%20%20%20%20constructor(randomMode,%20...poss)%20%7B%0A%20%20%20%20%20%20%20%20this.possibilities%20=%20[];%0A%20%20%20%20%20%20%20%20this.cyclingOrder%20=%200;%0A%20%20%20%20%20%20%20%20this.randomMode%20=%20randomMode;%0A%20%20%20%20%20%20%20%20this.possibilities%20=%20poss;%0A%20%20%20%20%20%20%20%20if%20(this.randomMode%20==%20OneOf.ROTATING_RANDOM)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.availablePossibilites%20=%20this.possibilities.slice();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getOne()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.randomMode%20==%20OneOf.PURELY_AT_RANDOM)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.possibilities[Math.floor(Math.random()%20*%20this.possibilities.length)];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(this.randomMode%20==%20OneOf.ROTATING_RANDOM)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.availablePossibilites.length%20%3C%201)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.availablePossibilites%20=%20this.possibilities.slice();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.availablePossibilites.splice(Math.floor(Math.random()%20*%20this.availablePossibilites.length),%201)[0];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(this.randomMode%20==%20OneOf.CYCLING)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20r%20=%20this.possibilities[this.cyclingOrder++];%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.cyclingOrder%20%3E%20this.possibilities.length)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.cyclingOrder%20=%200;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20r;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0AOneOf.PURELY_AT_RANDOM%20=%200;%0AOneOf.ROTATING_RANDOM%20=%201;%0AOneOf.CYCLING%20=%202;%0Avar%20MachineBegins;%0A(function%20(MachineBegins)%20%7B%0A%20%20%20%20MachineBegins.rulebook%20=%20new%20Rulebook(%22Machine%20Begins%22);%0A%20%20%20%20function%20execute()%20%7B%0A%20%20%20%20%20%20%20%20MachineBegins.rulebook.execute(%7B%7D);%0A%20%20%20%20%7D%0A%20%20%20%20MachineBegins.execute%20=%20execute;%0A%7D)(MachineBegins%20%7C%7C%20(MachineBegins%20=%20%7B%7D));%0Adocument.addEventListener(%22DOMContentLoaded%22,%20()%20=%3E%20%7B%0A%20%20%20%20MachineBegins.execute();%0A%7D);%0Avar%20Elements;%0A(function%20(Elements)%20%7B%0A%20%20%20%20Elements.animationTime%20=%201000;%0A%20%20%20%20Elements.isMobile%20=%20/Mobi/i.test(navigator.userAgent);%0A%20%20%20%20Elements.screenWidth%20=%20document.body.clientWidth;%0A%20%20%20%20Elements.screenHeight%20=%20document.body.clientHeight;%0A%20%20%20%20function%20getLinkElements(image)%20%7B%0A%20%20%20%20%20%20%20%20if%20(Elements.CurrentTurnHandler%20==%20undefined)%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20[];%0A%20%20%20%20%20%20%20%20if%20(Elements.CurrentTurnHandler.isTurn()%20%7C%7C%20image)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20[Elements.CurrentTurnHandler.currentTurnTab];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20[Elements.HyperlinkHandler.linkedActionsTab,%20Elements.RoomHandler.currentRoomTab,%20Elements.HyperlinkHandler.commonActionsTab,%20Elements.CurrentTurnHandler.currentTurnTab,%20Elements.RoomHandler.currentRoomExits];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20Elements.getLinkElements%20=%20getLinkElements;%0A%20%20%20%20function%20updateScreenSize()%20%7B%0A%20%20%20%20%20%20%20%20Elements.screenWidth%20=%20document.body.clientWidth;%0A%20%20%20%20%20%20%20%20Elements.screenHeight%20=%20document.body.clientHeight;%0A%20%20%20%20%7D%0A%20%20%20%20Elements.updateScreenSize%20=%20updateScreenSize;%0A%20%20%20%20Elements.mainPage%20=%20document.getElementById(%22mainPage%22);%0A%20%20%20%20function%20startTurn()%20%7B%0A%20%20%20%20%20%20%20%20Elements.mainPage.classList.add(%22turn%22);%0A%20%20%20%20%7D%0A%20%20%20%20Elements.startTurn%20=%20startTurn;%0A%20%20%20%20function%20endTurn()%20%7B%0A%20%20%20%20%20%20%20%20Elements.mainPage.classList.remove(%22turn%22);%0A%20%20%20%20%7D%0A%20%20%20%20Elements.endTurn%20=%20endTurn;%0A%20%20%20%20function%20isInTurn()%20%7B%0A%20%20%20%20%20%20%20%20return%20Elements.mainPage.classList.contains(%22turn%22);%0A%20%20%20%20%7D%0A%20%20%20%20Elements.isInTurn%20=%20isInTurn;%0A%20%20%20%20let%20menuOutsideofTurn%20=%20false;%0A%20%20%20%20let%20menus%20=%200;%0A%20%20%20%20function%20startMenu()%20%7B%0A%20%20%20%20%20%20%20%20if%20(!isInTurn())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20menuOutsideofTurn%20=%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20startTurn();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20Elements.mainPage.classList.add(%22mainmenu%22);%0A%20%20%20%20%20%20%20%20menus++;%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.clear();%0A%20%20%20%20%20%20%20%20Controls.KeyHandler.reset();%0A%20%20%20%20%7D%0A%20%20%20%20Elements.startMenu%20=%20startMenu;%0A%20%20%20%20function%20endMenu()%20%7B%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.clear();%0A%20%20%20%20%20%20%20%20if%20(--menus%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(menuOutsideofTurn)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20endTurn();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20resetMenus();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20Elements.endMenu%20=%20endMenu;%0A%20%20%20%20function%20resetMenus()%20%7B%0A%20%20%20%20%20%20%20%20if%20(menus%20!=%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.error(%22A%20menu%20wasn't%20finished%20properly.%20Please%20correct%20the%20dialogue.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20menus%20=%200;%0A%20%20%20%20%20%20%20%20menuOutsideofTurn%20=%20false;%0A%20%20%20%20%20%20%20%20Elements.mainPage.classList.remove(%22mainmenu%22);%0A%20%20%20%20%7D%0A%20%20%20%20Elements.resetMenus%20=%20resetMenus;%0A%20%20%20%20function%20clearMainScreen()%20%7B%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.clear();%0A%20%20%20%20%7D%0A%20%20%20%20Elements.clearMainScreen%20=%20clearMainScreen;%0A%20%20%20%20let%20loadingScreen%20=%20document.getElementById(%22loadingScreen%22);%0A%20%20%20%20function%20stopLoading()%20%7B%0A%20%20%20%20%20%20%20%20document.body.removeChild(loadingScreen);%0A%20%20%20%20%7D%0A%20%20%20%20Elements.stopLoading%20=%20stopLoading;%0A%20%20%20%20async%20function%20waitForAnyKey()%20%7B%0A%20%20%20%20%20%20%20%20let%20say%20=%20new%20Say(Say.CENTERED,%20new%20SayBold(%22Press%20any%20key%20to%20continue.%22));%0A%20%20%20%20%20%20%20%20let%20elements%20=%20await%20say.getHTML(%22p%22,%20[%22content%22]);%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.print(...elements);%0A%20%20%20%20%20%20%20%20await%20Controls.KeyHandler.getNextKey();%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.unprint(...elements);%0A%20%20%20%20%7D%0A%20%20%20%20Elements.waitForAnyKey%20=%20waitForAnyKey;%0A%20%20%20%20async%20function%20waitForSpaceKey()%20%7B%0A%20%20%20%20%20%20%20%20let%20say%20=%20new%20Say(Say.CENTERED,%20new%20SayBold(%22Press%20Space%20to%20continue.%22));%0A%20%20%20%20%20%20%20%20let%20elements%20=%20await%20say.getHTML(%22p%22,%20[%22content%22]);%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.print(...elements);%0A%20%20%20%20%20%20%20%20let%20lastKey%20=%20%22notSpace%22;%0A%20%20%20%20%20%20%20%20while%20(lastKey%20!=%20%22Space%22%20&&%20lastKey%20!=%20%22Click%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20lastKey%20=%20(await%20Controls.KeyHandler.getNextKey()).evCode;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.unprint(...elements);%0A%20%20%20%20%7D%0A%20%20%20%20Elements.waitForSpaceKey%20=%20waitForSpaceKey;%0A%20%20%20%20function%20printObeliskLogo()%20%7B%0A%20%20%20%20%20%20%20%20let%20say%20=%20new%20Say(Say.CENTERED,%20new%20SayImage(%22introLogo%22),%20Say.LINE_BREAK,%20new%20SayItalic(%22The%20Obelisk%20is%20an%20adult%20interactive%20fiction%20game%20set%20in%20a%20post-apocalyptic%20world%20ravaged%20by%20a%20magical%20structure.%22));%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.printAsContent(say);%0A%20%20%20%20%7D%0A%20%20%20%20Elements.printObeliskLogo%20=%20printObeliskLogo;%0A%7D)(Elements%20%7C%7C%20(Elements%20=%20%7B%7D));%0Aif%20(Elements.isMobile)%20%7B%0A%20%20%20%20Elements.mainPage.classList.add(%22mobile%22);%0A%7D%0Awindow.addEventListener(%22resize%22,%20function%20()%20%7B%0A%20%20%20%20Elements.updateScreenSize();%0A%7D);%0Avar%20MachineBegins;%0A(function%20(MachineBegins)%20%7B%0A%20%20%20%20MachineBegins.HideLoadingDivRule%20=%20MachineBegins.rulebook.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20name:%20%22Hide%20loading%20div%22,%0A%20%20%20%20%20%20%20%20code:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.stopLoading();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%7D)(MachineBegins%20%7C%7C%20(MachineBegins%20=%20%7B%7D));%0Avar%20TurnSequence;%0A(function%20(TurnSequence)%20%7B%0A%20%20%20%20TurnSequence.LazilyFixMenus%20=%20TurnSequence.rulebook.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20name:%20%22Fix%20menus%20that%20were%20never%20closed%20because%20the%20dev%20is%20stupid%22,%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20%20%20%20%20priority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20%20%20%20%20code:%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.resetMenus();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%7D)(TurnSequence%20%7C%7C%20(TurnSequence%20=%20%7B%7D));%0Avar%20Controls;%0A(function%20(Controls)%20%7B%0A%20%20%20%20var%20KeyHandler;%0A%20%20%20%20(function%20(KeyHandler)%20%7B%0A%20%20%20%20%20%20%20%20let%20promiseStack%20=%20[];%0A%20%20%20%20%20%20%20%20let%20promiseOriginalStack%20=%20[];%0A%20%20%20%20%20%20%20%20function%20rejectPromise(promise)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20promiseStack.splice(promiseStack.indexOf(promise),%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20promiseOriginalStack.splice(promiseStack.indexOf(promise),%201);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20KeyHandler.rejectPromise%20=%20rejectPromise;%0A%20%20%20%20%20%20%20%20function%20createKeyCode(ev)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20name%20=%20ev.key.toUpperCase();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20representation%20=%20name;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20evCode%20=%20ev.code;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(ev.shiftKey)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%20=%20%22Shift%20+%20%22%20+%20name;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20evCode%20=%20%22Sh%22%20+%20evCode;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20representation%20=%20%22S%22%20+%20representation;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(ev.altKey)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%20=%20%22Alt%20+%20%22%20+%20name;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20evCode%20=%20%22Al%22%20+%20evCode;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20representation%20=%20%22A%22%20+%20representation;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(ev.ctrlKey)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%20=%20%22Control%20+%20%22%20+%20name;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20evCode%20=%20%22Ct%22%20+%20evCode;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20representation%20=%20%22C%22%20+%20representation;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20keyCode%20=%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20evCode:%20evCode,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name:%20name,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20representation:%20representation%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20keyCode;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20KeyHandler.createKeyCode%20=%20createKeyCode;%0A%20%20%20%20%20%20%20%20window.addEventListener(%22mousedown%22,%20function%20(event)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20keyCode%20=%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20representation:%20%22Click%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20evCode:%20%22Click%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name:%20%22Click%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20promise%20=%20promiseStack.shift();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(promise%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20promise(keyCode);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20promiseOriginalStack.shift();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20window.addEventListener(%22keydown%22,%20function%20(event)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20keyCode%20=%20createKeyCode(event);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20promise%20=%20promiseStack.shift();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(promise%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20promise(keyCode);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20promiseOriginalStack.shift();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(keyCode.evCode%20==%20KeyHandler.scrollKeyCode.getValue().evCode)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.scrollSpace();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(keyCode.evCode%20==%20KeyHandler.imageKeyCode.getValue().evCode)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(SayImage.imageViewer.style.display%20==%20%22block%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20SayImage.imageViewer.style.display%20=%20%22none%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20images%20=%20Elements.CurrentTurnHandler.currentTurnTab.getElementsByClassName(%22contentImage%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(images.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20images[images.length%20-%201].click();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20ele;%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.getLinkElements().some((element)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20keyables%20=%20element.getElementsByClassName(%22keyable%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20keyables.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(keyables[i].dataset['shortcutcode']%20==%20keyCode.evCode)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ele%20=%20keyables[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(ele%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ele.click();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20function%20createKeyCodes(codes,%20keys,%20mods)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20arr%20=%20[];%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20mod%20=%200;%20mod%20%3C%204;%20mod++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(mod%20==%200%20%7C%7C%20mods[mod]%20==%20true)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20codes.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20name%20=%20keys[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20representation%20=%20keys[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20evCode%20=%20codes[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(mod%20==%201)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%20=%20%22Shift%20+%20%22%20+%20name;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20evCode%20=%20%22Sh%22%20+%20evCode;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20representation%20=%20%22S%22%20+%20representation;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(mod%20==%202)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%20=%20%22Alt%20+%20%22%20+%20name;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20evCode%20=%20%22Al%22%20+%20evCode;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20representation%20=%20%22A%22%20+%20representation;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(mod%20==%203)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%20=%20%22Control%20+%20%22%20+%20name;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20evCode%20=%20%22Ct%22%20+%20evCode;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20representation%20=%20%22C%22%20+%20representation;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20keyCode%20=%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20evCode:%20evCode,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20representation:%20representation,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name:%20name%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20arr.push(keyCode);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20arr;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20KeyHandler.createKeyCodes%20=%20createKeyCodes;%0A%20%20%20%20%20%20%20%20KeyHandler.scrollKeyCode%20=%20new%20StoredMemory(%22scrollKeyCode%22,%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20evCode:%20%22Space%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20representation:%20%22Space%22%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20KeyHandler.imageKeyCode%20=%20new%20StoredMemory(%22imageKeyCode%22,%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20evCode:%20%22KeyI%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20representation:%20%22I%22%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20KeyHandler.keyCodes1%20=%20new%20StoredMemory(%22keyCodesRoom%22,%20createKeyCodes([%22Digit1%22,%20%22Digit2%22,%20%22Digit3%22,%20%22Digit4%22,%20%22Digit5%22],%20[%221%22,%20%222%22,%20%223%22,%20%224%22,%20%225%22],%20[true,%20true,%20true,%20true]));%0A%20%20%20%20%20%20%20%20KeyHandler.keyCodes2%20=%20new%20StoredMemory(%22keyCodesActions%22,%20createKeyCodes([%22KeyQ%22,%20%22KeyW%22,%20%22KeyE%22,%20%22KeyR%22,%20%22KeyT%22],%20[%22Q%22,%20%22W%22,%20%22E%22,%20%22R%22,%20%22T%22],%20[true,%20true,%20true,%20true]));%0A%20%20%20%20%20%20%20%20KeyHandler.keyCodes3%20=%20new%20StoredMemory(%22keyCodesGlobal%22,%20createKeyCodes([%22KeyF%22,%20%22KeyV%22,%20%22KeyG%22,%20%22KeyB%22],%20[%22F%22,%20%22V%22,%20%22G%22,%20%22B%22],%20[true,%20true,%20true,%20true]));%0A%20%20%20%20%20%20%20%20KeyHandler.keyCodeNorth%20=%20new%20StoredMemory(%22keyCodeNorth%22,%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20evCode:%20%22KeyS%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20representation:%20%22S%22%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20KeyHandler.keyCodeEast%20=%20new%20StoredMemory(%22keyCodeEast%22,%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20evCode:%20%22KeyC%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20representation:%20%22C%22%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20KeyHandler.keyCodeSouth%20=%20new%20StoredMemory(%22keyCodeSouth%22,%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20evCode:%20%22KeyX%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20representation:%20%22X%22%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20KeyHandler.keyCodeWest%20=%20new%20StoredMemory(%22keyCodeWest%22,%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20evCode:%20%22KeyZ%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20representation:%20%22Z%22%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20KeyHandler.keyCodeUp%20=%20new%20StoredMemory(%22keyCodeUp%22,%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20evCode:%20%22KeyA%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20representation:%20%22A%22%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20KeyHandler.keyCodeDown%20=%20new%20StoredMemory(%22keyCodeDown%22,%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20evCode:%20%22KeyD%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20representation:%20%22D%22%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20var%20directionCodeByIndex%20=%20[KeyHandler.keyCodeNorth,%20undefined,%20KeyHandler.keyCodeEast,%20undefined,%0A%20%20%20%20%20%20%20%20%20%20%20%20KeyHandler.keyCodeSouth,%20undefined,%20KeyHandler.keyCodeWest,%20undefined,%20KeyHandler.keyCodeUp,%20KeyHandler.keyCodeDown];%0A%20%20%20%20%20%20%20%20function%20getDirectionCode(direction)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20getDirectionCodeByIndex(Room.DIRECTIONS.indexOf(direction));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20KeyHandler.getDirectionCode%20=%20getDirectionCode;%0A%20%20%20%20%20%20%20%20function%20getDirectionCodeByIndex(index)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20directionCodeByIndex[index].getValue();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20KeyHandler.getDirectionCodeByIndex%20=%20getDirectionCodeByIndex;%0A%20%20%20%20%20%20%20%20KeyHandler.available1%20=%20[];%0A%20%20%20%20%20%20%20%20KeyHandler.available2%20=%20[];%0A%20%20%20%20%20%20%20%20KeyHandler.available3%20=%20[];%0A%20%20%20%20%20%20%20%20function%20reset()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20KeyHandler.available1%20=%20KeyHandler.keyCodes1.getValue().slice();%0A%20%20%20%20%20%20%20%20%20%20%20%20KeyHandler.available2%20=%20KeyHandler.keyCodes2.getValue().slice();%0A%20%20%20%20%20%20%20%20%20%20%20%20KeyHandler.available3%20=%20KeyHandler.keyCodes3.getValue().slice();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20KeyHandler.reset%20=%20reset;%0A%20%20%20%20%20%20%20%20let%20showKeys%20=%20new%20StoredMemory(%22ShowKeys%22,%20!Elements.isMobile);%0A%20%20%20%20%20%20%20%20function%20applyCode(element,%20code)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(code%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20delete%20(element.dataset['shortcut']);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20delete%20(element.dataset['shortcutcode']);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20element.classList.remove(%22keyable%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20element.dataset['shortcutcode']%20=%20code.evCode;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(showKeys.getValue())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20element.dataset['shortcut']%20=%20code.representation;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20element.classList.add(%22keyable%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20KeyHandler.applyCode%20=%20applyCode;%0A%20%20%20%20%20%20%20%20function%20getFirstKeyCode()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20chosen%20=%20KeyHandler.available1.length%20%3E%200%20?%20KeyHandler.available1%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20KeyHandler.available2.length%20%3E%200%20?%20KeyHandler.available2%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20KeyHandler.available3.length%20%3E%200%20?%20KeyHandler.available3%20:%20undefined;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(chosen%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20chosen.shift();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20undefined;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20KeyHandler.getFirstKeyCode%20=%20getFirstKeyCode;%0A%20%20%20%20%20%20%20%20function%20getSecondKeyCode()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20chosen%20=%20KeyHandler.available2.length%20%3E%200%20?%20KeyHandler.available2%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20KeyHandler.available3.length%20%3E%200%20?%20KeyHandler.available3%20:%20undefined;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(chosen%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20chosen.splice(0,%201)[0];%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20undefined;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20KeyHandler.getSecondKeyCode%20=%20getSecondKeyCode;%0A%20%20%20%20%20%20%20%20function%20getThirdKeyCode()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20chosen%20=%20KeyHandler.available3.length%20%3E%200%20?%20KeyHandler.available3%20:%20undefined;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(chosen%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20chosen.splice(0,%201)[0];%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20undefined;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20KeyHandler.getThirdKeyCode%20=%20getThirdKeyCode;%0A%20%20%20%20%20%20%20%20function%20getNextKey(timeout)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20timeoutNumber;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20promise%20=%20(new%20Promise((resolve,%20reject)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20promiseStack.push(resolve);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(timeout%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20timeoutNumber%20=%20setTimeout(()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20KeyHandler.rejectPromise(resolve);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20reject();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D,%20timeout%20*%201000);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D));%0A%20%20%20%20%20%20%20%20%20%20%20%20promise.then(()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20clearTimeout(timeoutNumber);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20promise;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20KeyHandler.getNextKey%20=%20getNextKey;%0A%20%20%20%20%20%20%20%20function%20stopGivingNextKey(originalPromise)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20index%20=%20promiseOriginalStack.indexOf(originalPromise);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(index%20!=%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rejectPromise(promiseStack[index]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20KeyHandler.stopGivingNextKey%20=%20stopGivingNextKey;%0A%20%20%20%20%7D)(KeyHandler%20=%20Controls.KeyHandler%20%7C%7C%20(Controls.KeyHandler%20=%20%7B%7D));%0A%7D)(Controls%20%7C%7C%20(Controls%20=%20%7B%7D));%0Aclass%20SayImage%20%7B%0A%20%20%20%20constructor(imgName)%20%7B%0A%20%20%20%20%20%20%20%20this.imgName%20=%20imgName;%0A%20%20%20%20%20%20%20%20if%20(!SayImage.loadTimeCheck%20&&%20SayImage.imageNames.indexOf(this)%20==%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20SayImage.imageNames.push(this);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20isImageDefined()%20%7B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(var%20i%20=%200;%20i%20%3C%20document.styleSheets.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20rules%20=%20document.styleSheets[i]['rules']%20%7C%7C%20document.styleSheets[i]['cssRules'];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(var%20x%20in%20rules)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(typeof%20rules[x].selectorText%20==%20'string'%20&&%20rules[x].selectorText%20==%20%22.%22%20+%20this.imgName)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20catch%20(e)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.warn(%22Can't%20check%20for%20undefined%20images.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getImageElement()%20%7B%0A%20%20%20%20%20%20%20%20let%20img%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20if%20(this.isImageDefined())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20img.classList.add(this.imgName);%0A%20%20%20%20%20%20%20%20%20%20%20%20img.classList.add(%22contentImage%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20img.classList.add(%22error%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20img.appendChild(document.createTextNode(%22Image%20%5C%22%22%20+%20this.imgName%20+%20%22%5C%22%20not%20found.%22));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20img.addEventListener(%22click%22,%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20SayImage.showInViewer(this);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20Controls.KeyHandler.applyCode(img,%20Controls.KeyHandler.imageKeyCode.getValue());%0A%20%20%20%20%20%20%20%20return%20img;%0A%20%20%20%20%7D%0A%20%20%20%20getPrintedElement()%20%7B%0A%20%20%20%20%20%20%20%20return%20[this.getImageElement()];%0A%20%20%20%20%7D%0A%20%20%20%20static%20doLoadTimeCheck()%20%7B%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20SayImage.imageNames.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20image%20=%20SayImage.imageNames[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!image.isImageDefined())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(Settings.hardDebug)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.printAsError(%22Image%20%5C%22%22%20+%20image.imgName%20+%20%22%5C%22%20was%20not%20found.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.error(%22Image%20%5C%22%22%20+%20image.imgName%20+%20%22%5C%22%20was%20not%20found.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20SayImage.loadTimeCheck%20=%20true;%0A%20%20%20%20%7D%0A%20%20%20%20static%20showInViewer(image)%20%7B%0A%20%20%20%20%20%20%20%20if%20(!(SayImage.imageViewer.style.display%20==%20'block'))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20SayImage.imageViewer.addEventListener(%22click%22,%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20SayImage.imageViewer.style.display%20=%20%22none%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20SayImage.imageViewer.className%20=%20image.imgName;%0A%20%20%20%20%20%20%20%20%20%20%20%20SayImage.imageViewer.style.display%20=%20%22block%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20SayImage.imageViewer.style.display%20=%20%22none%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0ASayImage.imageNames%20=%20[];%0ASayImage.loadTimeCheck%20=%20false;%0ASayImage.imageViewer%20=%20document.getElementById(%22imageViewer%22);%0Avar%20MachineBegins;%0A(function%20(MachineBegins)%20%7B%0A%20%20%20%20MachineBegins.ImageLoadTimeCheck%20=%20MachineBegins.rulebook.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20%20%20%20%20name:%20%22Check%20for%20undefined%20images%22,%0A%20%20%20%20%20%20%20%20code:%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20SayImage.doLoadTimeCheck();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20catch%20(e)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.warn(%22Can't%20check%20for%20undefined%20images.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%7D)(MachineBegins%20%7C%7C%20(MachineBegins%20=%20%7B%7D));%0Aclass%20SayableObject%20%7B%0A%7D%0Aclass%20Say%20%7B%0A%20%20%20%20constructor(...objs)%20%7B%0A%20%20%20%20%20%20%20%20this.sequence%20=%20[];%0A%20%20%20%20%20%20%20%20this.skipbreaks%20=%20false;%0A%20%20%20%20%20%20%20%20this.centered%20=%20false;%0A%20%20%20%20%20%20%20%20this.add(...objs);%0A%20%20%20%20%7D%0A%20%20%20%20add(...objs)%20%7B%0A%20%20%20%20%20%20%20%20this.sequence.push(...objs);%0A%20%20%20%20%7D%0A%20%20%20%20remove(...objs)%20%7B%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20objs.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20index%20=%20this.sequence.indexOf(objs[i]);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(index%20%3E=%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.sequence.splice(index,%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20isEmpty()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.sequence.length%20%3C%201;%0A%20%20%20%20%7D%0A%20%20%20%20async%20getTextOf(index,%20seq)%20%7B%0A%20%20%20%20%20%20%20%20let%20elements%20=%20await%20this.getElementFor(index,%20seq);%0A%20%20%20%20%20%20%20%20let%20div%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20elements.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(typeof%20elements[i]%20!=%20%22number%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20div.appendChild(elements[i]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20div.innerText;%0A%20%20%20%20%7D%0A%20%20%20%20doLineBreak()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.currentParagraph.length%20%3E%200%20&&%20!this.skipbreaks)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20br%20=%20document.createElement(%22br%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20br.classList.add(%22linebreak%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20ti%20=%20document.createElement(%22span%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20ti.classList.add(%22textIndenter%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.currentParagraph.push(br,%20ti);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20doParagraphBreak()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.currentParagraph.length%20%3E%200%20&&%20!this.skipbreaks)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.paragraphs.push(this.currentParagraph);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.currentParagraph%20=%20[];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20async%20getParagraphs()%20%7B%0A%20%20%20%20%20%20%20%20this.paragraphs%20=%20[];%0A%20%20%20%20%20%20%20%20this.currentParagraph%20=%20[];%0A%20%20%20%20%20%20%20%20this.skipbreaks%20=%20false;%0A%20%20%20%20%20%20%20%20for%20(this.sequenceRunner%20=%200;%20this.sequenceRunner%20%3C%20this.sequence.length;%20this.sequenceRunner++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20seq%20=%20this.sequence[this.sequenceRunner];%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(seq%20instanceof%20OneOf)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20seq%20=%20seq.getOne();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(seq%20==%20Say.CENTERED)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.setCentered(true);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(seq%20==%20Say.b)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20boldObjects%20=%20[];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%20this.sequenceRunner%20+%201;%20i%20%3C%20this.sequence.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20candidate%20=%20this.sequenceRunner[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(candidate%20==%20Say.b)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.sequence.splice(i,%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20boldObjects.push(this.sequence.splice(i,%201));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(boldObjects.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20bold%20=%20new%20SayBold(...boldObjects);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.sequence.splice(this.sequenceRunner%20+%201,%200,%20bold);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(seq%20==%20Say.COCK)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(HumanoidPenis%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20cock%20=%20HumanoidPenis.getSynonym();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.currentParagraph.push(document.createTextNode(cock));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(seq%20==%20Say.PUSSY)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(HumanoidVagina%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20vagina%20=%20HumanoidVagina.getSynonym();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.currentParagraph.push(document.createTextNode(vagina));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(seq%20==%20Say.LINE_BREAK)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.doLineBreak();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(seq%20==%20Say.PARAGRAPH_BREAK)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.doParagraphBreak();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(seq%20==%20Say.RUN_PARAGRAPH)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.skipbreaks%20=%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(seq%20==%20Say.RUN_PARAGRAPH_OFF)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.skipbreaks%20=%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(typeof%20seq%20==%20%22function%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20fObj%20=%20seq(this);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(Array.isArray(fObj))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20k%20=%20fObj.length%20-%201;%20k%20%3E=%200;%20k--)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.sequence.splice(this.sequenceRunner%20+%201,%200,%20fObj[k]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(fObj%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.sequence.splice(this.sequenceRunner%20+%201,%200,%20fObj);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.sequence.splice(this.sequenceRunner,%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.sequenceRunner--;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(seq.constructor%20==%20this.constructor)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20k%20=%20seq.sequence.length%20-%201;%20k%20%3E=%200;%20k--)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.sequence.splice(this.sequenceRunner%20+%201,%200,%20seq.sequence[k]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.sequence.splice(this.sequenceRunner,%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.sequenceRunner--;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(seq%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20elements%20=%20await%20this.getElementFor(this.sequenceRunner,%20seq);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20elements.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(elements[i]%20===%20Say.DO_LINE_BREAK)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.doLineBreak();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(elements[i]%20===%20Say.DO_PARAGRAPH_BREAK)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.doParagraphBreak();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.currentParagraph.push(elements[i]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(this.currentParagraph.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.paragraphs.push(this.currentParagraph);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20this.paragraphs;%0A%20%20%20%20%7D%0A%20%20%20%20async%20getElementFor(index,%20obj)%20%7B%0A%20%20%20%20%20%20%20%20if%20(obj%20instanceof%20Promise)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20obj%20=%20await%20obj;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(typeof%20obj%20==%20%22string%22%20%7C%7C%20obj%20instanceof%20String)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20[document.createTextNode(obj)];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(typeof%20obj%20==%20%22number%22%20%7C%7C%20obj%20instanceof%20Number)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20[document.createTextNode((parseFloat(obj.toFixed(2))%20/%201).toString())];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(typeof%20obj%20==%20%22function%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20elements%20=%20await%20this.getElementFor(-1,%20obj(this));%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20elements;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(obj%20instanceof%20SayImage)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20[obj.getImageElement()];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(obj%20instanceof%20SayLeftRight)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20(await%20obj.getPureElements());%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(obj%20instanceof%20Say)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20elements%20=%20await%20obj.getPureElements(this);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20elements;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(this.isProperElement(obj))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20[obj];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(obj%20instanceof%20Object)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20elements%20=%20await%20this.printName(obj);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20elements;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20async%20getPureElements(say)%20%7B%0A%20%20%20%20%20%20%20%20let%20paragraphs%20=%20await%20this.getParagraphs();%0A%20%20%20%20%20%20%20%20return%20paragraphs.length%20==%201%20?%20paragraphs[0]%20:%20Array.prototype.concat.apply([],%20paragraphs);%0A%20%20%20%20%7D%0A%20%20%20%20setCentered(bool)%20%7B%0A%20%20%20%20%20%20%20%20this.centered%20=%20bool;%0A%20%20%20%20%7D%0A%20%20%20%20async%20getHTML(tagName,%20classList,%20singleParagraph)%20%7B%0A%20%20%20%20%20%20%20%20let%20paragraphs%20=%20await%20this.getParagraphs();%0A%20%20%20%20%20%20%20%20if%20(singleParagraph%20==%20true%20&&%20paragraphs.length%20%3E%201)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20paragraphs%20=%20[Array.prototype.concat.apply([],%20paragraphs)];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20elements%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200,%20paragraph%20=%20paragraphs[i];%20paragraph%20!=%20undefined;%20paragraph%20=%20paragraphs[++i])%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20parent%20=%20document.createElement(tagName);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(classList.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20parent.classList.add(...classList);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20k%20=%200,%20ele%20=%20paragraph[k];%20ele%20!=%20undefined;%20ele%20=%20paragraph[++k])%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20parent.appendChild(ele);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20elements.push(parent);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.centered)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20parent.classList.add(%22centered%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20elements;%0A%20%20%20%20%7D%0A%20%20%20%20getHTMLContent()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getHTML(%22p%22,%20[%22content%22]);%0A%20%20%20%20%7D%0A%20%20%20%20isProperElement(o)%20%7B%0A%20%20%20%20%20%20%20%20return%20(typeof%20Node%20===%20%22object%22%20?%20o%20instanceof%20Node%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20o%20&&%20typeof%20o%20===%20%22object%22%20&&%20typeof%20o.nodeType%20===%20%22number%22%20&&%20typeof%20o.nodeName%20===%20%22string%22)%20%7C%7C%20(typeof%20HTMLElement%20===%20%22object%22%20?%20o%20instanceof%20HTMLElement%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20o%20&&%20typeof%20o%20===%20%22object%22%20&&%20o%20!==%20null%20&&%20o.nodeType%20===%201%20&&%20typeof%20o.nodeName%20===%20%22string%22);%0A%20%20%20%20%7D%0A%20%20%20%20async%20printName(thing)%20%7B%0A%20%20%20%20%20%20%20%20this.currentNoun%20=%20thing;%0A%20%20%20%20%20%20%20%20this.currentNounElements%20=%20[];%0A%20%20%20%20%20%20%20%20let%20before%20=%20Say.beforePrinting.execute(%7B%20noun:%20this%20%7D);%0A%20%20%20%20%20%20%20%20await%20before;%0A%20%20%20%20%20%20%20%20let%20print%20=%20Say.printing.execute(%7B%20noun:%20this%20%7D);%0A%20%20%20%20%20%20%20%20await%20print;%0A%20%20%20%20%20%20%20%20let%20after%20=%20Say.afterPrinting.execute(%7B%20noun:%20this%20%7D);%0A%20%20%20%20%20%20%20%20await%20after;%0A%20%20%20%20%20%20%20%20return%20this.currentNounElements;%0A%20%20%20%20%7D%0A%20%20%20%20static%20hisHersIts(target,%20startOfSentence)%20%7B%0A%20%20%20%20%20%20%20%20return%20new%20SayHisHersIts(target);%0A%20%20%20%20%7D%0A%7D%0ASay.LINE_BREAK%20=%20new%20SayableObject();%0ASay.PARAGRAPH_BREAK%20=%20new%20SayableObject();%0ASay.RUN_PARAGRAPH%20=%20new%20SayableObject();%0ASay.RUN_PARAGRAPH_OFF%20=%20new%20SayableObject();%0ASay.CENTERED%20=%20new%20SayableObject();%0ASay.b%20=%20new%20SayableObject();%0ASay.DO_PARAGRAPH_BREAK%20=%20new%20SayableObject();%0ASay.DO_LINE_BREAK%20=%20new%20SayableObject();%0ASay.COCK%20=%20new%20SayableObject();%0ASay.PUSSY%20=%20new%20SayableObject();%0ASay.beforePrinting%20=%20new%20Rulebook(%22Before%20printing%20the%20name%20of%20something%22);%0ASay.printing%20=%20new%20Rulebook(%22Printing%20the%20name%20of%20something%22);%0ASay.afterPrinting%20=%20new%20Rulebook(%22After%20printing%20the%20name%20of%20something%22);%0ASay.printing.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Printing%20the%20name%20of%20a%20Printable%20Element%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_LOW,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20say%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20if%20(say.currentNoun.getPrintedElement)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.currentNounElements.push(...say.currentNoun.getPrintedElement());%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0ASay.printing.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Printing%20the%20name%20of%20a%20Printable%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_LOW,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20say%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20if%20(say.currentNoun.getPrintedName)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20thingEle%20=%20document.createTextNode(say.currentNoun.getPrintedName());%0A%20%20%20%20%20%20%20%20%20%20%20%20say.currentNounElements.push(thingEle);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0ASay.printing.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Printing%20the%20name%20of%20an%20unknown%20object%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20priority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20say%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20if%20(say.currentNoun.getPrintedName)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.currentNounElements.push((document.createTextNode(say.currentNoun.toString())));%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0Avar%20CharacterCreation;%0A(function%20(CharacterCreation)%20%7B%0A%20%20%20%20CharacterCreation.FalselyAccused%20=%20new%20CharacterOrigin(%22Falsely%20Accused%22);%0A%20%20%20%20CharacterCreation.FalselyAccused.name%20=%20%22Falsely%20Accused%22;%0A%20%20%20%20CharacterCreation.FalselyAccused.description%20=%20new%20Say(%22You%20made%20some%20allegations%20against%20a%20powerful%20man%20in%20your%20village.%20Whether%20those%20were%20true%20or%20not%20didn't%20matter,%20he%20was%20most%20displeased%20with%20your%20actions%20and%20did%20all%20he%20could%20to%20end%20your%20life%20as%20you%20knew%20it.%20Just%20as%20you%20were%20about%20to%20be%20executed%20for%20your%20inexistent%20crimes,%20the%20man%20asked%20for%20mercy.%20You%20thought%20he%20wasn't%20willing%20to%20go%20this%20far%20with%20his%20lies,%20only%20to%20have%20your%20hopes%20crushed%20when%20you%20noticed%20a%20smirk%20in%20his%20evil%20face.%5Cn%22,%20Say.PARAGRAPH_BREAK,%20%22The%20man%20claimed%20he%20wanted%20to%20forgive%20you,%20but%20would%20need%20proof%20of%20your%20regret.%20You%20received%20an%20alternative%20sentence:%20go%20to%20the%20Tower%20and%20find%20a%20way%20to%20destroy%20it.%20Surely%20an%20impossible%20task.%20Surely%20just%20another%20death%20sentence...%20or%20worse.%20But%20it's%20not%20like%20you%20have%20a%20choice%20in%20the%20matter.%22);%0A%20%20%20%20CharacterCreation.FalselyAccused.bonusStats%20=%20%22This%20origin%20confers%20no%20bonuses,%20but%20you%20have%20complete%20freedom%20with%20your%20perks.%22;%0A%7D)(CharacterCreation%20%7C%7C%20(CharacterCreation%20=%20%7B%7D));%0Avar%20CharacterCreation;%0A(function%20(CharacterCreation)%20%7B%0A%20%20%20%20CharacterCreation.HornyVirgin%20=%20new%20Perk(%22Horny%20Virgin%22);%0A%20%20%20%20CharacterCreation.HornyVirgin.description%20=%20new%20Say(%22Whichever%20life%20you%20led%20up%20to%20this%20point%20never%20allowed%20you%20to%20explore%20your%20sexuality.%20As%20a%20result,%20you're%20both%20virgin%20AND%20extremely%20horny.%20This%20perk%20makes%20it%20so%20that%20the%20World%20Depravity%20around%20the%20Tower%20is%20initially%20higher%20and%20rises%20faster,%20however%20you%20are%20not%20as%20affected%20by%20this%20rising%20Depravity%20around%20you.%22,%20Say.PARAGRAPH_BREAK,%20%22This%20perk%20is%20mandatory%20for%20Champions%20and%20is%20not%20compatible%20with%20most%20sex-related%20perks.%22);%0A%20%20%20%20CharacterCreation.HornyVirgin.forcedStatus%20=%20(hornyVirgin)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20if%20(CharacterCreation.getOrigin()%20==%20CharacterCreation.ChampionOrigin)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(CharacterCreation.Slut.isEnabled(true))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D;%0A%20%20%20%20CharacterCreation.Slut%20=%20new%20Perk(%22Unredeemable%20Slut%22);%0A%20%20%20%20CharacterCreation.Slut.description%20=%20new%20Say(%22Simply%20put:%20you%20really%20like%20sex.%20Your%20Depravity%20starts%20off%20higher%20and%20rises%20even%20faster,%20also%20affecting%20World%20Depravity.%20However,%20you%20level%20up%20sex-related%20Skills%20faster.%22,%20Say.PARAGRAPH_BREAK,%20%22This%20perk%20is%20not%20compatible%20with%20%22,%20CharacterCreation.HornyVirgin.name,%20%22.%22);%0A%20%20%20%20CharacterCreation.Slut.forcedStatus%20=%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20if%20(CharacterCreation.HornyVirgin.isEnabled(true))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D;%0A%20%20%20%20CharacterCreation.SensitiveHoles%20=%20new%20Perk(%22Sensitive%20Holes%22);%0A%20%20%20%20CharacterCreation.SensitiveHoles.description%20=%20%22You%20are%20very%20sensitive%20to%20any%20kind%20of%20receptive%20penetration.%20You%20have%20a%20harder%20time%20escaping%20grapples%20while%20being%20penetrated%20and%20an%20easier%20time%20orgasming%20from%20it,%20but%20getting%20aroused%20faster%20also%20means%20you%20take%20less%20damage%20from%20it.%22;%0A%7D)(CharacterCreation%20%7C%7C%20(CharacterCreation%20=%20%7B%7D));%0Avar%20ContentHandler;%0A(function%20(ContentHandler)%20%7B%0A%20%20%20%20let%20contentHash%20=%20%7B%7D;%0A%20%20%20%20let%20contentArray%20=%20[];%0A%20%20%20%20function%20registerContentType(type)%20%7B%0A%20%20%20%20%20%20%20%20if%20(contentHash[type.getId()]%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.error(%22[ContentHandler%7D%20Can't%20register%20the%20content.%22,%20type,%20%22Old:%22,%20contentHash[type.getId()]);%0A%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20contentHash[type.getId()]%20=%20type;%0A%20%20%20%20%20%20%20%20%20%20%20%20contentArray.push(type);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20ContentHandler.registerContentType%20=%20registerContentType;%0A%20%20%20%20function%20getContentTypes()%20%7B%0A%20%20%20%20%20%20%20%20return%20contentArray.slice();%0A%20%20%20%20%7D%0A%20%20%20%20ContentHandler.getContentTypes%20=%20getContentTypes;%0A%7D)(ContentHandler%20%7C%7C%20(ContentHandler%20=%20%7B%7D));%0Aclass%20ContentType%20extends%20StoredMemory%20%7B%0A%20%20%20%20constructor(options)%20%7B%0A%20%20%20%20%20%20%20%20super(ContentType.memoryPrefix%20+%20options.id,%20options.defaultValue);%0A%20%20%20%20%20%20%20%20this.valueDescription%20=%20()%20=%3E%20%7B%20return%20new%20Say(JSON.stringify(this.getValue()));%20%7D;%0A%20%20%20%20%20%20%20%20this.changeable%20=%20true;%0A%20%20%20%20%20%20%20%20this.description%20=%20options.description%20instanceof%20Say%20?%20options.description%20:%20new%20Say(options.description);%0A%20%20%20%20%20%20%20%20this.valueDescription%20=%20options.currentValueDescription%20==%20undefined%20?%20this.valueDescription%20:%20options.currentValueDescription;%0A%20%20%20%20%20%20%20%20if%20(options.changeable%20==%20false)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.storeValue(options.defaultValue);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.changeable%20=%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20ContentHandler.registerContentType(this);%0A%20%20%20%20%7D%0A%20%20%20%20getDescription()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.description;%0A%20%20%20%20%7D%0A%20%20%20%20getValueDescription()%20%7B%0A%20%20%20%20%20%20%20%20let%20desc%20=%20this.valueDescription(this);%0A%20%20%20%20%20%20%20%20if%20(desc%20instanceof%20Say)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20desc;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20new%20Say(desc);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20toggle()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.changeable)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.storeValue(!this.getValue());%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20isAllowed()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getValue();%0A%20%20%20%20%7D%0A%7D%0AContentType.memoryPrefix%20=%20%22ct_%22;%0AContentType.MM%20=%20new%20ContentType(%7B%0A%20%20%20%20changeable:%20false,%0A%20%20%20%20description:%20%22Homosexual%20(M/M)%20sexual%20events%22,%0A%20%20%20%20id:%20%22MM%22,%0A%20%20%20%20defaultValue:%20true%0A%7D);%0AContentType.FF%20=%20new%20ContentType(%7B%0A%20%20%20%20changeable:%20false,%0A%20%20%20%20description:%20%22Homosexual%20(F/F)%20sexual%20events%22,%0A%20%20%20%20id:%20%22FF%22,%0A%20%20%20%20defaultValue:%20true%0A%7D);%0AContentType.MF%20=%20new%20ContentType(%7B%0A%20%20%20%20changeable:%20false,%0A%20%20%20%20description:%20%22Heterosexual%20(M/F)%20sexual%20events%22,%0A%20%20%20%20id:%20%22MF%22,%0A%20%20%20%20defaultValue:%20true%0A%7D);%0AContentType.Beast%20=%20new%20ContentType(%7B%0A%20%20%20%20changeable:%20true,%0A%20%20%20%20description:%20%22Sexual%20events%20with%20either%20monsters%20or%20magical%20beasts.%20MM/MF/FF%20take%20precedence%20over%20this%20one%20if%20blocked.%20Sufficiently%20human%20creatures%20do%20not%20get%20counted%20into%20this.%22,%0A%20%20%20%20id:%20%22Beast%22,%0A%20%20%20%20defaultValue:%20true%0A%7D);%0AContentType.Scat%20=%20new%20ContentType(%7B%0A%20%20%20%20changeable:%20false,%0A%20%20%20%20description:%20%22Scatologic%20sexual%20events%22,%0A%20%20%20%20id:%20%22Scat%22,%0A%20%20%20%20defaultValue:%20false%0A%7D);%0AContentType.Pee%20=%20new%20ContentType(%7B%0A%20%20%20%20changeable:%20false,%0A%20%20%20%20description:%20%22Sexual%20events%20with%20urine%22,%0A%20%20%20%20id:%20%22Urophilia%22,%0A%20%20%20%20defaultValue:%20false%0A%7D);%0Avar%20Elements;%0A(function%20(Elements)%20%7B%0A%20%20%20%20var%20CurrentTurnHandler;%0A%20%20%20%20(function%20(CurrentTurnHandler)%20%7B%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.currentTurnTab%20=%20document.getElementById(%22currentTurnTab%22);%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.currentTurn%20=%20document.getElementById(%22currentTurn%22);%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.turnHr%20=%20document.createElement(%22p%22);%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.lastReadOffset%20=%20CurrentTurnHandler.currentTurnTab.clientHeight%20/%202;%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.turnHr.classList.add(%22turnStart%22);%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.turnHr.appendChild(document.createTextNode(%22Start%20of%20Turn%22));%0A%20%20%20%20%20%20%20%20function%20startTurn(action)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20oldContent%20=%20CurrentTurnHandler.currentTurnTab.getElementsByClassName(%22content%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20oldContent.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20oldContent[i].classList.add(%22contentOld%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20oldContent[i].classList.remove(%22content%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20CurrentTurnHandler.currentTurnTab.appendChild(CurrentTurnHandler.turnHr);%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.startTurn();%0A%20%20%20%20%20%20%20%20%20%20%20%20scrollToNewTurn();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.startTurn%20=%20startTurn;%0A%20%20%20%20%20%20%20%20function%20isTurn()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20Elements.isInTurn();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.isTurn%20=%20isTurn;%0A%20%20%20%20%20%20%20%20function%20endTurn()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.endTurn();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.endTurn%20=%20endTurn;%0A%20%20%20%20%20%20%20%20function%20getSayElementsAsContent(say)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20say.getHTML(%22p%22,%20[%22content%22]);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.getSayElementsAsContent%20=%20getSayElementsAsContent;%0A%20%20%20%20%20%20%20%20function%20printAsContent(say)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20node%20=%20getMarker();%0A%20%20%20%20%20%20%20%20%20%20%20%20getSayElementsAsContent(say).then(value%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20insertBefore(value,%20node);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20unprint(node);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.printAsContent%20=%20printAsContent;%0A%20%20%20%20%20%20%20%20function%20simplePrint(...sayValues)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20printAsContent(new%20Say(...sayValues));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.simplePrint%20=%20simplePrint;%0A%20%20%20%20%20%20%20%20function%20printAsError(msg)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(msg%20instanceof%20Say)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20msg.getHTML(%22div%22,%20[%22error%22],%20true).then(value%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20print(...value);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20div%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20div.classList.add(%22error%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20div.appendChild(document.createTextNode(msg));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20print(div);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.printAsError%20=%20printAsError;%0A%20%20%20%20%20%20%20%20function%20clear()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20while%20(CurrentTurnHandler.currentTurnTab.firstChild%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CurrentTurnHandler.currentTurnTab.removeChild(CurrentTurnHandler.currentTurnTab.firstChild);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20Controls.KeyHandler.reset();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.clear%20=%20clear;%0A%20%20%20%20%20%20%20%20function%20print(...elements)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(elements.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20elements.forEach((element)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CurrentTurnHandler.currentTurnTab.appendChild(element);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scrollTo(CurrentTurnHandler.lastReadOffset);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.print%20=%20print;%0A%20%20%20%20%20%20%20%20function%20getMarker()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20node%20=%20document.createTextNode(%22%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20CurrentTurnHandler.currentTurnTab.appendChild(node);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20node;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.getMarker%20=%20getMarker;%0A%20%20%20%20%20%20%20%20function%20insertBefore(newChilds,%20oldChild)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20newChilds.forEach((newChild)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CurrentTurnHandler.currentTurnTab.insertBefore(newChild,%20oldChild);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20scrollTo(CurrentTurnHandler.lastReadOffset);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.insertBefore%20=%20insertBefore;%0A%20%20%20%20%20%20%20%20function%20unprint(...elements)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20elements.forEach((element)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(element.parentElement%20==%20CurrentTurnHandler.currentTurnTab)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CurrentTurnHandler.currentTurnTab.removeChild(element);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.unprint%20=%20unprint;%0A%20%20%20%20%20%20%20%20function%20scrollToNewTurn()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20target%20=%20CurrentTurnHandler.turnHr.offsetTop%20+%20CurrentTurnHandler.turnHr.offsetHeight;%0A%20%20%20%20%20%20%20%20%20%20%20%20CurrentTurnHandler.lastReadOffset%20=%20target;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(target%20%3C%20CurrentTurnHandler.currentTurn.scrollTop)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20scrollTo(target);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.scrollToNewTurn%20=%20scrollToNewTurn;%0A%20%20%20%20%20%20%20%20function%20scrollToBottom()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20scrollTo(CurrentTurnHandler.currentTurn.scrollHeight%20-%20CurrentTurnHandler.currentTurn.clientHeight);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.scrollToBottom%20=%20scrollToBottom;%0A%20%20%20%20%20%20%20%20function%20scrollSpace()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20scrollTo(CurrentTurnHandler.currentTurn.scrollTop%20+%20(CurrentTurnHandler.currentTurn.clientHeight%20/%202));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.scrollSpace%20=%20scrollSpace;%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.currentTurn.addEventListener(%22scroll%22,%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20currentRead%20=%20CurrentTurnHandler.currentTurn.scrollTop%20+%20CurrentTurnHandler.currentTurn.clientHeight;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(currentRead%20%3E%20CurrentTurnHandler.lastReadOffset)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CurrentTurnHandler.lastReadOffset%20=%20currentRead;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20var%20startOffset;%0A%20%20%20%20%20%20%20%20var%20targetOffset;%0A%20%20%20%20%20%20%20%20var%20startTime;%0A%20%20%20%20%20%20%20%20var%20finishTime;%0A%20%20%20%20%20%20%20%20var%20totalTime;%0A%20%20%20%20%20%20%20%20var%20animationRequest;%0A%20%20%20%20%20%20%20%20function%20scrollTo(offset)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(offset%20%3C=%20CurrentTurnHandler.lastReadOffset)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20startOffset%20=%20CurrentTurnHandler.currentTurn.scrollTop;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20targetOffset%20=%20offset;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20startTime%20=%20new%20Date().getTime();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20finishTime%20=%20startTime%20+%20Elements.animationTime;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20totalTime%20=%20finishTime%20-%20startTime;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20startScrolling();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.scrollTo%20=%20scrollTo;%0A%20%20%20%20%20%20%20%20function%20startScrolling()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(animationRequest%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20animationRequest%20=%20requestAnimationFrame(CurrentTurnHandler.updateFrame);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.startScrolling%20=%20startScrolling;%0A%20%20%20%20%20%20%20%20CurrentTurnHandler.updateFrame%20=%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20animationRequest%20=%20undefined;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20movingOffset%20=%20(targetOffset%20-%20startOffset);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20timePassed%20=%20new%20Date().getTime()%20-%20startTime;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20idealOffset%20=%20movingOffset%20*%20(timePassed%20/%20totalTime);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20maxScroll%20=%20CurrentTurnHandler.currentTurn.scrollHeight%20-%20CurrentTurnHandler.currentTurn.clientHeight;%0A%20%20%20%20%20%20%20%20%20%20%20%20CurrentTurnHandler.currentTurn.scrollTop%20=%20startOffset%20+%20idealOffset;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(CurrentTurnHandler.currentTurn.scrollTop%20%3C%20targetOffset%20&&%20CurrentTurnHandler.currentTurn.scrollTop%20%3C%20maxScroll)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20startScrolling();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%7D)(CurrentTurnHandler%20=%20Elements.CurrentTurnHandler%20%7C%7C%20(Elements.CurrentTurnHandler%20=%20%7B%7D));%0A%7D)(Elements%20%7C%7C%20(Elements%20=%20%7B%7D));%0Avar%20Controls;%0A(function%20(Controls)%20%7B%0A%20%20%20%20var%20Links;%0A%20%20%20%20(function%20(Links)%20%7B%0A%20%20%20%20%20%20%20%20function%20makeCustomLink(element,%20options)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(options.mouseover%20!=%20undefined%20&&%20options.mouseout%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20element.addEventListener(%22mouseover%22,%20options.mouseover);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20element.addEventListener(%22mouseout%22,%20options.mouseout);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20element.addEventListener(%22click%22,%20options.click);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20Links.makeCustomLink%20=%20makeCustomLink;%0A%20%20%20%20%20%20%20%20function%20makeLink(element,%20action)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20makeCustomLink(element,%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mouseover:%20()%20=%3E%20%7B%20Elements.HyperlinkHandler.hoverAction(action);%20%7D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mouseout:%20()%20=%3E%20%7B%20Elements.HyperlinkHandler.unhoverAction();%20%7D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20click:%20(e)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20TurnSequence.execute(action);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Elements.HyperlinkHandler.unhoverAction();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20e.stopPropagation();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20e.preventDefault();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20Links.makeLink%20=%20makeLink;%0A%20%20%20%20%7D)(Links%20=%20Controls.Links%20%7C%7C%20(Controls.Links%20=%20%7B%7D));%0A%7D)(Controls%20%7C%7C%20(Controls%20=%20%7B%7D));%0Aclass%20RoomNode%20%7B%0A%20%20%20%20constructor(room)%20%7B%0A%20%20%20%20%20%20%20%20this.mainDiv%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20this.room%20=%20room;%0A%20%20%20%20%20%20%20%20this.mainDiv.classList.add(%22mapRoom%22);%0A%20%20%20%20%20%20%20%20if%20(room%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.mainDiv.classList.add(%22linked%22,%20room.getBackgroundClass());%0A%20%20%20%20%20%20%20%20%20%20%20%20Room.DIRECTIONS.forEach((direction)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(room.connections[direction]%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20directionDiv%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20directionDiv.classList.add(%22mapRoomConnection%22%20+%20DirectionNames[Direction[direction]]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.mainDiv.appendChild(directionDiv);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20Controls.Links.makeLink(this.mainDiv,%20new%20ActionGo(WorldState.player,%20room));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20async%20createRoomNameFloater()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.room%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20roomName%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20sayName%20=%20new%20Say(this.room);%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20sayName.getPureElements().then(value%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value.forEach(element%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20roomName.appendChild(element);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Elements.HoverInfo.makeHoverable(this.mainDiv,%20value);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20async%20update()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.room%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(WorldState.player.getRoom()%20==%20this.room)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.mainDiv.classList.add(%22current%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.mainDiv.classList.remove(%22current%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20isRemembered%20=%20await%20WorldState.isRoomRemembered(this.room);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!isRemembered)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.mainDiv.classList.add(%22unknown%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.mainDiv.classList.remove(%22unknown%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getElement()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.mainDiv;%0A%20%20%20%20%7D%0A%7D%0Aclass%20SayAn%20extends%20Say%20%7B%0A%20%20%20%20constructor(autoUppercase)%20%7B%0A%20%20%20%20%20%20%20%20super();%0A%20%20%20%20%20%20%20%20this.node%20=%20document.createTextNode(%22a%20%22);%0A%20%20%20%20%20%20%20%20this.uppercase%20=%20true;%0A%20%20%20%20%20%20%20%20if%20(autoUppercase%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.uppercase%20=%20autoUppercase;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20async%20getPureElements(say)%20%7B%0A%20%20%20%20%20%20%20%20let%20next%20=%20say.sequence[say.sequenceRunner%20+%201];%0A%20%20%20%20%20%20%20%20if%20(next%20==%20undefined%20%7C%7C%20(next%20instanceof%20Thing%20&&%20next.properlyNamed))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20aan%20=%20AvsAn.query((await%20say.getTextOf(say.sequenceRunner%20+%201,%20next)).trim());%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(aan.prefix%20!=%20%22%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20aan.article%20+%20%22%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.uppercase%20&&%20say.currentParagraph.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20this.node.nodeValue.charAt(0).toUpperCase()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20this.node.nodeValue.substr(1,%20this.node.nodeValue.length%20-%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20this.node.nodeValue%20+%20%22%20%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20[this.node];%0A%20%20%20%20%7D%0A%7D%0Avar%20AvsAn%20=%20(function%20()%20%7B%0A%20%20%20%20var%20dict%20=%20%22p3ezz;4wrlg;2h;%232rg;22;2;a;7;;if;z;;&4h;1c;1;N;6;;*yp;6a;4;a2;q;;e1;q;;i1;h;;o;7;;/op;5n;9;a3;i;;e5;h;;h;;1;o5;;;i;r;;l;;1;/;6;;n;;1;o6;;;o1;a;;r;;1;e7;;;s;;1;/2;j;;09pa;y3;1;8e;10;;17qoq;qmm;2;12hp;7nw;a;0o4;45;1;0n;2w;;15r;1n;2;8;7;;9;5;;28s;x;;34q;z;1;7;5;;45n;n;;598;w;;65k;u;;74j;y;;850;y;;93x;g;;81ux;hgk;a;0zb;el;a;0p;4h;;11;16;;21;10;;32;15;;4;18;;54;v;;6;12;;7;s;;8;v;;9;17;;11k;bq;1;%20v;2;;229;f3;2;%201a;3;;%E2%80%935;;;31x;jc;1;%2012;2;;41w;kq;2;%20z;4;;%E2%80%935;;;559;sp;5;%202k;1;;,h;;;h7;;;kd;;;m6;;;62p;rm;2;%201b;5;;k5;;;72n;y6;2;%2014;;;%E2%80%935;;;82r;192;2;%2019;4;;,5;;;93i;1ig;2;%2010;4;;%E2%80%935;;;8ys;nsu;;%3Ce9;1x;2;m;;1;d;6;;o;6;;=kq;1x;1;=3m;g;1;E;6;;@16;2a;;A3wn;bu7d;6;Abr;y1;1;A8b;5o;1;S3;e;;i2g;4rh;1;r26;4dg;1;ob;2;;mg9;5490;1;a1k;140;1;rv;1e;1;%20t;1;;n6n;gfl;1;d25;1ae;1;a1c;5b;1;l1b;4c;1;u1b;3r;1;c18;c;1;i;;1;a;;1;n;6;;s3f;feu;1;tn;sc;1;uh;1t;1;rh;1s;1;ih;1q;1;ah;1q;1;sg;1;;t71;41h;1;h53;112;1;l4x;7i;1;e4w;6m;1;t4w;6m;1;e4w;2j;1;s;f;;B7cel;sz;2;hlb;42;2;aaw;28;1;ij;1y;1;rf;1s;1;ae;;;%C3%A1;11;;olhj;28;1;r1cy;j;1;des;f;1;%203;f;;C8l05;10j;3;a29ng;5t;1;i9c;b;1;s;;1;s5;;;h1ska;9p;4;aa1a;1x;2;i115;o;1;s5;g;1;e5;;;o5p;7;1;i;6;;l17;l;1;%C3%A1;f;;rkxk;19;1;o9t;a;1;%C3%AD;5;;u2re;y;2;i1;a;;r2fq;e;1;re;5;1;a;5;;o1vrk;88;1;njpy;1m;1;g380;f;1;j;5;;D40dx;hh;7;aj56;1y;1;o35;6;1;q;5;;ijhc;2t;2;nbw;j;1;a17;f;1;s4;f;;ogz;g;1;t1;9;;uivv;1r;1;ad2;7;1;lci;7;1;c;7;;%C3%A130;7;1;%20;5;;%C3%B2;5;;%C3%B91;e;;%C6%B0;7;;Efoe;42zy;7;U3t;zk;1;R1r;4;;be;42;1;oc;1t;1;lb;p;1;ib;;;m2k;73m;1;pw;13w;1;eh;91;1;zd;;;n7x;27zz;1;af;14;1;md;3;;syp;35x;1;pws;9c;5;awn;p;1;c;7;;e4;7d;;h;5;;o;b;;r;h;;udjl;hc;1;lj;6o;1;o6;;;wr;1e;1;id;2;;F4eta;hhx;11;%20cf;1rz;;,;17;;.2j;6h;;/i;29;;05;2y;;128;e1;;216;9g;;311;7d;;418;8i;;5i;5u;;69;z;;7;;1;0a;;;86;j;;97;l;;A404;5ij;e;Be;3;;Ct9;my;;Dx;9;;Fc;;;I;;2;L8;;;Rq;;;K11;;;Ll;4;;M1x;1;;Ny;2;;P13;2;;Q9h;5j;;Rad;3p;;S1n;9;;T2t;2;;B57;1ji;;C4s;jp;1;Mb;1;;D2g;ak;;E7r;39;2;C6;k;;I5;f;;F33;64;1;r5;;;Hz;1u;;I1vx;bk;3;A24;45;1;Tm;1;;R;;1;%20w;30;;U2;a;;J5;f;;Lkk;g1;3;C2p;3v;;N4;e;;P1;f;;M6w;1ds;;Og3;2e;1;%205;i;;Ps4;w7;1;.7i;53;;R8v;3z;2;A1e;g;1;%203;e;;Se;y;;S3g;91;;T8a;1ah;1;S1x;6;;Uel;3m;2;,2;b;;.;k;;Xm;1o;;Yz;5w;1;V6;;;c3;l;;f;;1;o7;;;h1;31;;%CF%831;i;;G55z0;ig;7;e1sct;3h;1;r1fvh;1n;1;n;;1;e;a;;h1sd;31;1;a17k;2e;3;e;q;;i;n;;o;6;;i4b9;s;1;alt;c;1;nl0;b;1;g1;a;;ovi2;2d;2;f;;1;%20;b;;t238;f;1;t2z;7;1;%20;6;;r17jv;32;1;iql;e;1;a;9;;w43;6;1;a1p;5;1;rd;5;1;r;5;;%C3%BA;5;;H24sn;cwd;s;%205i;mk;;&b;17;;,1;f;;.37;42;2;Ai;;;Ie;4;;1i;1j;;2r;22;;39;n;;5a;19;;72;a;;B2z;cx;1;P7;;;C1q;35;;Dd1;tb;;F1l;2x;;Gl;14;;Hy;30;1;I5;;;I80;i9;6;Cc;1;;G10;2;;Nb;1;;Pq;2;;S;;1;D1;j;;Tf;1;;K4k;1w;1;9;7;;L1e;35;;M36;6u;1;.c;;;Ny;2v;;O95;3g;2;%207;t;;Vc;16;;P4b;bf;;R2v;4v;1;Tn;7;;S;;1;F5;;;T9c;115;;V1k;3u;;eaox;7p;2;im1;11;1;r4;o;;r29t;2m;1;r1d;7;1;n;5;;ohh1;6d0;2;n3jr;65v;6;d121;v;;e4c;1m;1;s7;1m;;g21f;e;;kp;;;oad;61b;2;l26;1;;r7c;5jz;1;i;;1;f;5;;v6;;;u2q4;32;1;r2;2x;;I266;4mgb;3;I4o;8f;2;*6;;;I1v;j;;nij;1hm4;1;d9p;wtp;1;e1c;3wy;1;p12;3r6;1;e12;3r6;1;n12;3r4;1;d12;3r4;2;et;3qw;1;nt;3qw;1;c7;41;1;i6;;;%C3%AA8;;;s4h;cif;1;l2i;42z;1;a2h;3yr;1;ne;gy;1;de;gy;1;sd;3;;J24b6;7h;1;iw9;t;1;a;;1;o2;o;;L2u98;abe;y;%205s;17t;;,2;s;;.25;9q;;1l;1t;;2j;2h;;3a;10;;48;l;;8;c;;Anc;ce;3;%201e;6q;;Po;2t;;X1;a;;B1j;2r;;C59;r4;;D42;lc;;Ejg;hg;2;%202;i;;D4x;e9;;F20;3s;1;Ti;2;;G8s;ko;;H;;1;Dk;6;;Idy;1m;1;Rd;u;;Lc0;25k;;M3k;94;;N26;51;;P63;1g0;;R23;6z;;S2z;f6;1;m7;;;T36;86;;U1s;n;1;%205;h;;V14;35;1;C7;;;W;;1;T;5;;Z9;t;;%5E;5;;am5d;3g;1;o91;e;1;i;;1;g;e;;oln2;3r;1;c2ik;19;1;h1s;11;1;a7;z;1;b6;;;p1;h;;u51i;1q;1;s4p;x;1;hg;w;1;ob;;;%E1%BB%99;5;;M5bhu;skd;15;%206n;n2;;&b;1h;;,;g;;.1kr;5er;1;Alm;2kf;1;.kf;2ht;1;Sa;2;;/4;1f;;14f;f4;;22a;6k;;3y;31;;41j;5h;;5n;1a;;6r;3q;;7t;1f;;87;11;;A1fx;2mt;i;B5;;;C9q;1;;D2d;3;;F12;4;;G17;4;;J38;;;L11;2;;Mv;1;;N2i;a;;P2f;6;;R2o;;;S2t;6;;T2l;f;;Vc;2;;W7;;;X1h;;;Ya;;;Z7;;;Bbv;39s;1;Sb;r;1;T9;;;C5e;ni;;D5e;na;;Efj;d4;3;P1j;9f;1;S7;;;W;7;;n6;i;;F64;14y;;G31;az;;H2i;7d;;Izq;ij;4;%20f;w;;5;2o;;6f;35;;T25;7y;1;Mi;1;;K1o;3c;;Lcl;17r;;Mcc;rp;;N1i;40;;Osl;av;1;U17;2c;;Pel;3xz;;Qa;1g;;R4l;nw;;Sku;1ld;;Tai;yj;1;R1y;w;;Uas;1t;2;%202;i;;V3;d;;V3s;a5;;Xq;2p;;b1a;i;1;ur;d;1;m1;a;;f2q;ek;;hf;1g;;om4z;7h;2;D;;1;e7;;;U2b;34;1;.5;;;p;;1;31;b;;s23;h;1;c3;c;;N3qyx;ipi;y;%207p;qe;;+;9;;.;;1;Eg;5;;46;k;;7;7;;8;7;;:;5;;A4ga;in;3;A3g;6j;1;Fo;2;;I1m;52;;S2l3;1x;1;Lb;1b;;B8k;2gd;;Ckh;2ib;;D2t;aq;;Ejp;9r;3;A10;2r;;H5;16;;S;;1;%201y;2v;;Fas;2sm;1;Uc;2;;G5x;zb;;H8o;1oq;;I;;7;C1w;j;;D;;1;%20;9;;Ka;;;Ld;2;;Nj;;;O8;;;S20;n;;K1c;4g;;L2t;94;;M1s;9a;1;M5;;;Ndl;36;2;R1;d;;T4;h;;P;;1;O25k;1j4;1;V24y;1i8;1;/;;1;B;5;;R9n;f6;2;Je;3;;T3y;e;;Sby;lt;1;W5m;g;;T3m;9h;1;L;;1;D5;;;U60;1a;1;S4;i;;V1a;4h;;W64;4n;2;Au;30;;O;;1;H;8;;Xp;4p;;Ys5;af;3;C64;1i;1;L;6;;P1k;3t;;Uj;1p;;a10pz;8f;1;sq1;d;1;a;;1;n1;8;;t;;1;h1;a;;vk;1c;;%C2%B2;7;;%C3%97;5;;O1n9;1g7f;5;N17;3l;1;E12;2;;l29;8yb;1;vl;2;;nuh;1ti;2;c;;1;ec;2;;etc;21;1;i2;1k;;oi;3e;1;pf;1;;u3x;1ey;1;i3c;b;;P5dsg;kg;1;hmb6;3r;2;i39j;v;1;a;9;;o128;1s;2;bh;19;2;i8;;;o9;;;i1;j;;Qb3c;1l;1;i8c;t;1;n61;l;1;g4x;l;1;x1;f;;R3te6;u0n;z;%206h;119;;&8t;ze;;,;k;;.2r;4t;1;Jj;3;;/a;q;;11s;3k;;4a;r;;67;j;;A12c;ym;3;%20d;1o;;.1;a;;F7v;ra;1;Tf;;;B4b;v4;1;Rk;3;;C52;l7;;D34;9b;;Enp;3a;3;%20b;q;;S3z;q;1;Pa;p;;U;5;;Fxl;5cg;;G11;5w;;H1x;1a;1;S4;f;;If2;6o;2;A17;3s;;C;;1;%20a;1c;;Jn;2e;;Kz;5g;;L1h;2k;1;P6;;;M5u;cg;5;1e;4;;26;;;36;;;59;;;65;;;N4y;q3;;Ogs;86;2;Hk;16;;T1n;3b;2;Av;;;O7;;;P4u;q7;;Q8;q;;R21;37;1;F6;;;S1pl;1up;4;,85;6b;;.ba;7l;;?2l;y;;Tv;6;;T5t;iz;;U23;4u;4;B5;;;M5;;;Nb;;;S9;1;;V1h;8u;;Xa;o;;c;8;;f3qh;db8;1;M;;1;.h;4;;h1xk;1a;2;A;5;;B;5;;%C3%B2;5;;S7ldf;ea7;11;%209n;18a;;&1o;3s;;,2;f;;.e8;91;4;E7;m;;Mc;10;;Oa;18;;T;;1;.;;3;B2;b;;D3;c;;M2;c;;1m;29;;35;o;;4b;s;;55;i;;68;s;;84;i;;92;b;;A1b1;l3;3;%202a;7d;;8;5;;S2v;3t;2;Ep;4;;I6;;;B30;74;;Clf;a7;3;A2z;15;1;%203;y;;R;;2;Ap;;;U5;;;T6;s;;D66;ns;;Eri;jq;6;%20s;1g;;5;7;;C3g;ba;3;Ac;;;Oh;;;Rh;3;;I;;1;F9;;;O1a;28;;U;5;;F58;7w;3;&5;;;H6;;;O;;1;S8;;;G24;5v;1;Df;5;;H6m;3t;3;25;h;;32;g;;L;7;;It0;83;2;%20f;50;;S;;1;O6;;;K;;2;I9;1;;Yh;;;L6z;8m;3;A2k;o;2;%201;g;;.;5;;Iu;e;1;%203;c;;Om;5;;M9j;lh;3;A28;o;1;%204;m;;Ii;5;;U;;1;R6;;;N;;5;A1e;b;;C;;3;A8;;;B5;;;C8;1;;E18;o;;Fa;;;O4g;1;;Oi7;dc;5;%20c;u;;A4c;1h;1;I5;g;;Eg;1m;;Sv;5m;1;U5;;;V9;p;;P1r8;320;7;A102;1dn;7;Aa;;;Ch;;;D22;;;Mr;;;Ne;;;R2f;;;S8;1;;E3k;j;1;%204;g;;Ib9;155;4;Co;;;D6;;;N5;;;R5;;;L13;26;1;O6;;;O18;e;;U1x;5;;Y5;;;Q;;1;%201;e;;R3i;9z;;Sf7;1kv;1;We;;;Tjg;e7;9;A46;w;1;%208;s;;C7;r;;Dn;2z;;F4;n;;Iq;1c;;L6;k;;Mm;15;;Sb;12;;V5;12;;U;;7;Bn;1;;L42;28;;Mj;;;N18;;;P15;2;;Rf;;;Sf;;;V6j;y7;;Whe;2v;1;R5;m;;X;;1;M2;c;;ha9m;14;1;i2m7;i;1;g;;1;a;;1;o;7;;pxbl;3u;1;i1lg;s;1;o6;j;1;n6;;;tpmv;33;2;B;5;;ikz;b;1;c5b;a;1;i;8;;T3dav;if;4;aczy;4f;2;i1wj;15;2;g;;1;a6;;;s;;1;c;8;;v1q;q;1;e17;h;1;s;h;;ega6;29;1;a1o2;o;1;mg2;6;1;p;6;;uc4t;22;1;i;;2;l1;8;;r;8;;%C3%A01;n;;U2oh8;a1j;m;.jqk;80;1;N78;h;1;.70;h;1;C;f;;/2r;f;1;1;9;;1;;1;%20c;;;24b;x;1;17;k;;L3q;j;1;T;6;;M7h;1d;1;N8;q;;N4bp;am;4;C2u;k;1;L;5;;D;;2;%206;;;P14;2;;K;5;;R;;1;%205;;;a3;40;;b2r;43;2;am;4;;is;9;;de;16;;glp;3a;1;l;1n;;i;;1;gq;a;;l2u;14r;2;ig;4;;yc;;;my;8n;;ntrc;2uh;o;%205;k;;a;;1;n1e;b;;b3;1q;;ce;9w;;d1u;x2;;e19;1t;1;s16;2;;f3;2d;;g;l;;h6;l;;itj3;kb;2;d3;e;;n2;65;;j;7;;k3;55;;l3;2c;;m5;1e;;n2;t;;o4;13;;p2;1p;;q;5;;r6;71;;s5;2u;;t11;4a;;u6;v;;v1;a;;w1;10;;p12;ze;;r1ap;1rs;3;a4h;k;;ea;;;uz5;e2;1;k1;d;;s1at;41;3;%20;7;;h9;t;;tw;1r;1;rp;1;;tla;49;4;h2;a;;n1;n;;ra;u;;t7;j;;x2;j;;z2d;dy;;%C3%AD2;e;;W3fzh;1xp;2;Pgh8;1kw;1;:dtp;1jr;4;A;;1;Fp;1b;;I;;2;B1;9;;N;;1;H8;1;;Oe2;7b;1;V;a;;R1n7;cv;1;F;;1;C;;2;N5;;;U1b;e;;i150z;6l;1;kucb;5n;1;iu0s;5l;1;El;8;1;l;;1;i1;8;;X18k;5ru;7;a2o;6;;e7o;5;;h22;;;i8v;c;;om;4;;ux;4;;yt;4;;Ydr1;5s;3;e1xq;v;1;t35;a;1;h2;a;;p3;d;;s1;8;;[1f3;b3;5;A6;m;;E;b;;I1;a;;ai;13;;ed;30;;_1pde;5f3;2;_1pa2;5em;1;i;6;;e;5;;%604j;19;3;a1;g;;e;5;;i;7;;aa4e;1k1cr;7;%202e6;1r4;;m6h;1bmc;1;a2k;gdk;1;r;;1;%209;;;n1yq;4tcz;1;dsz;136;2;%20sm;69;;%C4%9B5;;;p8x;2tn1;1;rj;e8;1;t6;;;r1ql;dm6d;1;t1bb;7rrp;1;%C3%AD6;;;uat;271y;1;sc;wm;1;s6;l;1;i;;1;%205;;;v31;2qsv;1;u5;21;1;t5;;;d14132;4sp;3;a4bh7;3i;1;s1q3;1j;1;%20;1h;;edez2;3tl;2;mosa;1n;1;%202;10;;r9oc;3b1;1;%201;3an;;idsd0;ky;2;cfg1;k;1;hdj;d;1;%20;c;;e57k;6w;1;s1rl;l;1;e1pp;k;2;m;5;;r;5;;e7wn;zlrz;8;c2u;mo2;1;o1z;egy;1;n1g;bbv;1;o1e;bbg;1;m1e;bbc;1;i1b;9c8;1;a6;;;ee;15d;1;w8;;;lbr;2yiq;1;it;5bi;1;tj;3qh;1;eg;3hs;1;i5;;;m8g;1t5c;1;p2z;oie;1;ed;v6;1;zd;;;nyp;6b4j;1;t7j;1g2s;1;e16;5d4;1;n5;r;1;d5;;;s96;1ypr;2;a;;1;%205;;;t45;1716;4;a2g;c3l;1;%20d;;;e8;i0;1;%206;;;il;tl8;1;ml;tl5;1;al;tl4;1;r5;;;rd;bo;1;u;;1;t6;;;u2qo;74;1;p11a;2j;1;%20;i;;w2e;o;;f1n9ht;1ct;3;%201b;44;;M7;2j;;y1l;7;1;i;7;;hpp6o;1t04;9;%2037;kq;;,1;9;;.;5;;C2;1d;;a4tpe;la;1;u1je;1r;1;tn;1j;1;b5;;;e3q3g;3wn;2;iajd;24b;1;r1z;232;1;a15;1;;rjaj;1ep;1;m1uj;14;1;a83;e;1;n;5;;o63t5;1eb3;4;mymg;1rd;2;a16t;1mn;1;%206;;;mm;1g;;n1aw;owo;8;%20a;1;;b8;;;df;;;ez3;32r;3;%206;;;de;;;yvn;1;;ga;;;if;1;;k4e;;;vd;;;ro27;7b;1;sc8c;1v;1;%208;15;;u1lyy;mvr;1;r26;mus;;ry;7;1;%20;5;;t2t;51;1;t1e;24;1;p1e;24;1;:u;f;;i550;t5c8;6;bc;3a;1;n7;;;e9;l;1;r7;;;n2x3;jmka;2;fbo;1jnw;2;l1s;fl3;1;u17;cuh;1;%C3%AA9;;;o6p;gaj;1;ad;1;;s84;1pv1;1;t3y;whk;1;a17;9gq;1;ld;21c;1;a5;;;r2j;ekg;1;%208;1;;sqz;1agk;1;%20jd;4q;;u16;8;;k3v63;5f;1;urs;n;1;%203;n;;l1ewzo;zp;3;cj;7;1;d;6;;sl;5;1;%20;5;;vm;8;1;a;8;;m1ql98;243;a;%201b;93;;,;7;;Rs;3e;;b;;1;a5;;;egur2;9r;1;i2c;d;1;n3;d;;f5;g;;pz;6b;;t;;1;aa;;;u5ql8;5t;1;l193t;2t;1;t17us;2t;1;i17ty;2t;1;c1d4;8;1;a4z;6;1;mo;6;1;p;;1;i;6;;%C3%97;a;;n14seq;3b7;6;%209r;1ei;;V7;w;;W4;q;;dx;1n;1;%20e;;;te;u;;%C3%971;b;;o1po1;gmse;8;c2l;ewy;2;hb;4w;1;oa;1;;u7;6u;1;p7;;;d21;6ii;1;d1o;59e;1;ya;;;fkz;2cg9;1;%20br;51;;gp;fd;1;ge;11;1;ia;;;n1muy;151v;o;%204a;6y6;;';5;;,;8;;/1;3t;;a1;e;;b;db;;c1qc;se;1;o3;rn;;d1;n;;e1kqx;bu;2;i;b;;r6;3a;;f;9;;g1t;adm;;i3;ca;;l6q;jw7;;m4;14;;n;c;;o2;57;;r;1a;;s6;10f;;t6;hb;;u1;1l;;w1;1k;;y;15;;z;7;;%E2%80%93;6;;rht;2sas;1;i30;gwn;1;g2p;fl4;1;e6;;;t37;50i;1;r;;1;s;8;;u7j;1e6t;1;i16;6;;r1fxi6;1u1;3;%2014;6g;;&1;8;;f12;52;;s3aro5;3io;9;,;e;;?;5;;R2;h;;f;;2;e8;;;o8;;;iggn8;b9;1;c1vp;18;1;hb;17;;l20u4;1m;1;%20;5;;pbado;de;2;33;j;;ipic;12;1;%20;5;;r1t;k;1;g;c;;v;;3;ae;;;e11;;;i6;;;t1c1p7;1mt;2;A1;9;;S3;2u;;u4dhq;8rnc;c;%207x;n;;.9;;;beh;3f;2;e7;1m;;l;5;;fl;6;;k6h;2e;2;ae;11;;i8;n;;m1j;4kj;1;a;;1;%20f;5;;n2eo5;6zny;3;a3ln;7j0;3;%201r;4;;n3dz;in;5;a2;c;;c;8;;n5;a7;;s;37;;t;3h;;r4a;jh;1;y46;4;;e28;a8m;2;%20m;;;i7;;;i29p3;wfu;8;c14a;17;2;oeg;i;1;rcl;h;1;p;a;;u;;1;m;6;;d4x;2b9;1;i4d;f;1;o;7;;g;;1;n;5;;lsl;17;1;l;i;;m2i;r9;1;o2a;2;;n3y;ssp;;s9j;m;1;s;f;;vhg5;5x;1;oj;17;1;cd;3;;r1cb;bd4;5;aco;r;;e3v;h;;ih7;i;;l7m;1j;;o47;k;;s1szw;1ig;3;%20h;3f;;h1;9f;;u1bh;iv;1;rda;gs;2;eq;a;;pcd;gg;3;a3b;1y;;e7q;36;;ig;;;t33j;1ai;2;m;r;;ta;16b;;v3c;c;;w3e;d;1;a;7;;x;;b;%2023;hw;;';6;;,1;c;;.2;a;;8o;47;;b5;f;;k;13;;l1;8;;md;x;1;a7;;;t;c;;y4y;e;1;%20;a;;y6atn;ca;1;l1;c;;%7B6s;r;1;a;7;;%7C58;m;1;a1;b;;%C2%A36cs;8l;1;82b;6o;;%C3%80;9;;%C3%81a;o;;%C3%843;c;;%C3%852;k;;%C3%864;k;;%C3%89f;2q;;%C3%92;c;;%C3%931;1d;;%C3%96a;16;;%C3%9C4;v;;%C3%A07;v;;%C3%A15;l;;%C3%A61;m;;%C3%A8;6;;%C3%A94c;bg;1;t3h;29;3;a4;1n;;o;a;;u1;b;;%C3%AD;5;;%C3%B62;e;;%C3%BCd;r;1;%207;;;%C4%801;b;;%C4%813;s;;%C4%AB;5;;%C4%B04;o;;%C5%8C3;o;;%C5%8D;2m;;%C5%93;8;;%CE%A92;e;;%CE%B11c;c1;;%CE%B55;1s;;%CF%897;1x;;%CF%B5;8;;%D0%B5;5;;%E2%80%933a;1k;2;e;a;;i;9;;%E2%84%93;d;;%22;%0A%20%20%20%20var%20root%20=%20%7B%7D;%0A%20%20%20%20function%20fill(prefix,%20node,%20dict)%20%7B%0A%20%20%20%20%20%20%20%20var%20a%20=%20dict.split(';',%203),%20n%20=%20a.map(function%20(x)%20%7B%20return%20parseInt(x,%2036)%20%7C%7C%200;%20%7D);%0A%20%20%20%20%20%20%20%20node.data%20=%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20aCount:%20n[0],%0A%20%20%20%20%20%20%20%20%20%20%20%20anCount:%20n[1],%0A%20%20%20%20%20%20%20%20%20%20%20%20prefix:%20prefix,%0A%20%20%20%20%20%20%20%20%20%20%20%20article:%20n[0]%20%3E=%20n[1]%20?%20%22a%22%20:%20%22an%22%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20dict%20=%20dict.substr(1%20+%20a.join(';').length);%0A%20%20%20%20%20%20%20%20for%20(var%20i%20=%200;%20i%20%3C%20n[2];%20i++)%0A%20%20%20%20%20%20%20%20%20%20%20%20dict%20=%20fill(prefix%20+%20dict[0],%20node[dict[0]]%20=%20%7B%7D,%20dict.substr(1));%0A%20%20%20%20%20%20%20%20return%20dict;%0A%20%20%20%20%7D%0A%20%20%20%20fill(%22%22,%20root,%20dict);%0A%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20raw:%20root,%0A%20%20%20%20%20%20%20%20query:%20function%20(word)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20node%20=%20root,%20sI%20=%200,%20result,%20c;%0A%20%20%20%20%20%20%20%20%20%20%20%20do%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20c%20=%20word[sI++];%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20while%20('%22%E2%80%98%E2%80%99%E2%80%9C%E2%80%9D$%5C'-('.indexOf(c)%20%3E=%200);%0A%20%20%20%20%20%20%20%20%20%20%20%20while%20(1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20result%20=%20node.data%20%7C%7C%20result;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20node%20=%20node[c];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!node)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20result;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20c%20=%20word[sI++]%20%7C%7C%20%22%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D;%0A%7D)();%0Aclass%20SayBold%20extends%20Say%20%7B%0A%20%20%20%20async%20getPureElements()%20%7B%0A%20%20%20%20%20%20%20%20let%20paragraphs%20=%20await%20this.getParagraphs();%0A%20%20%20%20%20%20%20%20let%20elements%20=%20paragraphs.length%20==%201%20?%20paragraphs[0]%20:%20Array.prototype.concat.apply([],%20paragraphs);%0A%20%20%20%20%20%20%20%20let%20b%20=%20document.createElement(%22b%22);%0A%20%20%20%20%20%20%20%20elements.forEach((element)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20b.appendChild(element);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20[b];%0A%20%20%20%20%7D%0A%7D%0Aclass%20SayHeSheIt%20extends%20Say%20%7B%0A%20%20%20%20constructor(target,%20autoUppercase)%20%7B%0A%20%20%20%20%20%20%20%20super();%0A%20%20%20%20%20%20%20%20this.node%20=%20document.createTextNode(%22a%20%22);%0A%20%20%20%20%20%20%20%20this.uppercase%20=%20true;%0A%20%20%20%20%20%20%20%20this.target%20=%20target;%0A%20%20%20%20%20%20%20%20if%20(autoUppercase%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.uppercase%20=%20autoUppercase;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20async%20getPureElements(say)%20%7B%0A%20%20%20%20%20%20%20%20let%20next%20=%20this.target;%0A%20%20%20%20%20%20%20%20if%20(next%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(next%20instanceof%20Humanoid)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20gender%20=%20next.getGenderValue();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(gender.genderValueCorrected%20%3E%2065)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22she%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(gender.genderValueCorrected%20%3C%2035)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22he%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(gender.hasPenisBulge%20%7C%7C%20gender.hasPenis)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22he%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(gender.hasVagina%20%7C%7C%20gender.hasTits)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22she%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22they%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22it%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.uppercase%20&&%20say.currentParagraph.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20this.node.nodeValue.charAt(0).toUpperCase()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20this.node.nodeValue.substr(1,%20this.node.nodeValue.length%20-%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20[this.node];%0A%20%20%20%20%7D%0A%7D%0Aclass%20SayHimHerIt%20extends%20Say%20%7B%0A%20%20%20%20constructor(target,%20autoUppercase)%20%7B%0A%20%20%20%20%20%20%20%20super();%0A%20%20%20%20%20%20%20%20this.node%20=%20document.createTextNode(%22a%20%22);%0A%20%20%20%20%20%20%20%20this.uppercase%20=%20true;%0A%20%20%20%20%20%20%20%20this.target%20=%20target;%0A%20%20%20%20%20%20%20%20if%20(autoUppercase%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.uppercase%20=%20autoUppercase;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20async%20getPureElements(say)%20%7B%0A%20%20%20%20%20%20%20%20let%20next%20=%20this.target;%0A%20%20%20%20%20%20%20%20if%20(next%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(next%20instanceof%20Humanoid)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20gender%20=%20next.getGenderValue();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(gender.genderValueCorrected%20%3E%2065)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22her%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(gender.genderValueCorrected%20%3C%2035)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22him%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(gender.hasPenisBulge%20%7C%7C%20gender.hasPenis)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22him%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(gender.hasVagina%20%7C%7C%20gender.hasTits)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22her%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22them%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22it%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.uppercase%20&&%20say.currentParagraph.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20this.node.nodeValue.charAt(0).toUpperCase()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20this.node.nodeValue.substr(1,%20this.node.nodeValue.length%20-%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20[this.node];%0A%20%20%20%20%7D%0A%7D%0Aclass%20SayHisHersIts%20extends%20Say%20%7B%0A%20%20%20%20constructor(target,%20autoUppercase)%20%7B%0A%20%20%20%20%20%20%20%20super();%0A%20%20%20%20%20%20%20%20this.node%20=%20document.createTextNode(%22a%20%22);%0A%20%20%20%20%20%20%20%20this.uppercase%20=%20true;%0A%20%20%20%20%20%20%20%20this.target%20=%20target;%0A%20%20%20%20%20%20%20%20if%20(autoUppercase%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.uppercase%20=%20autoUppercase;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20async%20getPureElements(say)%20%7B%0A%20%20%20%20%20%20%20%20let%20next%20=%20this.target;%0A%20%20%20%20%20%20%20%20if%20(next%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(next%20instanceof%20Humanoid)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20gender%20=%20next.getGenderValue();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(gender.genderValueCorrected%20%3E%2065)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22hers%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(gender.genderValueCorrected%20%3C%2035)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22his%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(gender.hasPenisBulge%20%7C%7C%20gender.hasPenis)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22his%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(gender.hasVagina%20%7C%7C%20gender.hasTits)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22hers%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22their%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22its%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.uppercase%20&&%20say.currentParagraph.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20this.node.nodeValue.charAt(0).toUpperCase()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20this.node.nodeValue.substr(1,%20this.node.nodeValue.length%20-%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20[this.node];%0A%20%20%20%20%7D%0A%7D%0Aclass%20SayIf%20extends%20Say%20%7B%0A%20%20%20%20constructor(condition,%20...objs)%20%7B%0A%20%20%20%20%20%20%20%20super(...objs);%0A%20%20%20%20%20%20%20%20this.condition%20=%20condition%20!=%20undefined%20?%20condition%20:%20()%20=%3E%20%7B%20return%20true;%20%7D;%0A%20%20%20%20%7D%0A%20%20%20%20async%20getPureElements()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.condition())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20paragraphs%20=%20await%20this.getParagraphs();%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20paragraphs.length%20==%201%20?%20paragraphs[0]%20:%20Array.prototype.concat.apply([],%20paragraphs);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20[];%0A%20%20%20%20%7D%0A%7D%0Aclass%20SayItalic%20extends%20Say%20%7B%0A%20%20%20%20async%20getPureElements()%20%7B%0A%20%20%20%20%20%20%20%20let%20paragraphs%20=%20await%20this.getParagraphs();%0A%20%20%20%20%20%20%20%20let%20elements%20=%20paragraphs.length%20==%201%20?%20paragraphs[0]%20:%20Array.prototype.concat.apply([],%20paragraphs);%0A%20%20%20%20%20%20%20%20let%20b%20=%20document.createElement(%22i%22);%0A%20%20%20%20%20%20%20%20elements.forEach((element)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20b.appendChild(element);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20[b];%0A%20%20%20%20%7D%0A%7D%0Aclass%20SayLeftRight%20extends%20Say%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super();%0A%20%20%20%20%20%20%20%20this.left%20=%20new%20Say();%0A%20%20%20%20%20%20%20%20this.right%20=%20new%20Say();%0A%20%20%20%20%7D%0A%20%20%20%20addLeft(...objs)%20%7B%0A%20%20%20%20%20%20%20%20this.left.add(...objs);%0A%20%20%20%20%7D%0A%20%20%20%20addRight(...objs)%20%7B%0A%20%20%20%20%20%20%20%20this.right.add(...objs);%0A%20%20%20%20%7D%0A%20%20%20%20async%20getPureElements()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.left.sequence.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20await%20this.right.getPureElements();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(this.right.sequence.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20await%20this.left.getPureElements();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20mainDiv%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20mainDiv.classList.add(%22horFlex%22);%0A%20%20%20%20%20%20%20%20let%20left%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20left.classList.add(%22horFlexColumn%22);%0A%20%20%20%20%20%20%20%20mainDiv.appendChild(left);%0A%20%20%20%20%20%20%20%20let%20right%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20right.classList.add(%22horFlexColumn%22);%0A%20%20%20%20%20%20%20%20mainDiv.appendChild(right);%0A%20%20%20%20%20%20%20%20await%20this.left.getPureElements().then(value%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20value.forEach(element%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20left.appendChild(element);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20await%20this.right.getPureElements().then(value%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20value.forEach(element%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20right.appendChild(element);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20[mainDiv];%0A%20%20%20%20%7D%0A%7D%0Aclass%20SayLink%20extends%20Say%20%7B%0A%20%20%20%20setAction(action)%20%7B%0A%20%20%20%20%20%20%20%20this.linkedAction%20=%20action;%0A%20%20%20%20%7D%0A%20%20%20%20async%20getPureElements()%20%7B%0A%20%20%20%20%20%20%20%20let%20paragraphs%20=%20await%20this.getParagraphs();%0A%20%20%20%20%20%20%20%20let%20elements%20=%20paragraphs.length%20==%201%20?%20paragraphs[0]%20:%20Array.prototype.concat.apply([],%20paragraphs);%0A%20%20%20%20%20%20%20%20let%20b%20=%20document.createElement(%22b%22);%0A%20%20%20%20%20%20%20%20b.classList.add(%22textLink%22);%0A%20%20%20%20%20%20%20%20elements.forEach((element)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20b.appendChild(element);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20Controls.Links.makeLink(b,%20this.linkedAction);%0A%20%20%20%20%20%20%20%20return%20[b];%0A%20%20%20%20%7D%0A%7D%0Aclass%20SayThe%20extends%20Say%20%7B%0A%20%20%20%20constructor(autoUppercase,%20alwaysPrint)%20%7B%0A%20%20%20%20%20%20%20%20super();%0A%20%20%20%20%20%20%20%20this.node%20=%20document.createTextNode(%22%22);%0A%20%20%20%20%20%20%20%20this.uppercase%20=%20true;%0A%20%20%20%20%20%20%20%20this.alwaysPrint%20=%20false;%0A%20%20%20%20%20%20%20%20if%20(autoUppercase%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.uppercase%20=%20autoUppercase;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(alwaysPrint)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.alwaysPrint%20=%20alwaysPrint;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20async%20getPureElements(say)%20%7B%0A%20%20%20%20%20%20%20%20let%20next%20=%20say.sequence[say.sequenceRunner%20+%201];%0A%20%20%20%20%20%20%20%20if%20(this.alwaysPrint)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22the%20%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(next%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(next%20instanceof%20Thing)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!next.properlyNamed)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22the%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20%22%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(this.node.nodeValue%20!=%20%22%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.uppercase%20&&%20say.currentParagraph.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.node.nodeValue%20=%20this.node.nodeValue.charAt(0).toUpperCase()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20this.node.nodeValue.substr(1,%20this.node.nodeValue.length%20-%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20[this.node];%0A%20%20%20%20%7D%0A%7D%0Avar%20Elements;%0A(function%20(Elements)%20%7B%0A%20%20%20%20var%20AppearanceHandler;%0A%20%20%20%20(function%20(AppearanceHandler)%20%7B%0A%20%20%20%20%20%20%20%20var%20target%20=%20document.getElementById(%22appearanceTarget%22);%0A%20%20%20%20%20%20%20%20function%20empty()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20while%20(target.firstChild)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20target.removeChild(target.firstChild);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20async%20function%20print(say)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20say.getHTML(%22p%22,%20[%22appearanceDescription%22]).then(value%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20value.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20target.appendChild(value[i]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20AppearanceHandler.print%20=%20print;%0A%20%20%20%20%20%20%20%20async%20function%20updateAppearance()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20empty();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20player%20=%20WorldState.player;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20playerGender%20=%20player.getGenderValue();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20playerSluttiness%20=%20player.getSluttiness();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20you%20=%20new%20SayLink(%22You%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20you.setAction(new%20ActionExamine(WorldState.player,%20WorldState.player));%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20presentation%20=%20new%20Say(you,%20%22%20are%20presenting%20as%20%22,%20new%20SayAn(),%20player.getShortestDescription(),%20%22.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(playerSluttiness.naked)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation.add(%22%20You%20are%20naked.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(playerSluttiness.halfNaked)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation.add(%22%20You%20are%20almost%20naked.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20tits%20=%20Thing.PartRelation.getRightTypeOne(player,%20HumanoidBreasts);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20penis%20=%20Thing.PartRelation.getRightTypeOne(player,%20HumanoidPenis);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20bulges%20=%20player.getBulges();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(bulges.breasts%20%3E%200%20%7C%7C%20playerGender.genderValueCorrected%20%3E%2060)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20realTits%20=%20tits.getSizeText();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20fakeTits%20=%20HumanoidBreasts.getSizeText(bulges.breasts);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation.add(%22%20You%20have%20%22%20+%20realTits%20+%20%22%20breasts%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(bulges.breasts%20!=%20tits.getSize()%20&&%20realTits%20!=%20fakeTits)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation.add(%22,%20padded%20to%20appear%20as%20%22%20+%20fakeTits%20+%20%22%20through%20your%20clothing.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!tits.isUncovered())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation.add(%22,%20safely%20covered.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation.add(%22.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(penis%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation.add(%22%20You%20have%20%22,%20new%20SayAn(),%20HumanoidPenis.getSizeText(bulges.crotch)%20+%20%22%20crotch%20bulge%20visible%20through%20your%20clothing.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20realDick%20=%20penis.getSizeText();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20fakeDick%20=%20HumanoidPenis.getSizeText(bulges.crotch);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation.add(%22%20You%20have%20%22,%20new%20SayAn(),%20realDick%20+%20%22%20dick%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(penis.getActualSize()%20!=%20bulges.crotch%20&&%20realDick%20!=%20fakeDick)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation.add(%22,%20which%20looks%20like%20it%20is%20%22%20+%20fakeDick%20+%20%22%20due%20to%20your%20clothing.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!penis.isUncovered())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation.add(%22,%20which%20is%20covered.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation.add(%22.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20print(presentation);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20AppearanceHandler.updateAppearance%20=%20updateAppearance;%0A%20%20%20%20%7D)(AppearanceHandler%20=%20Elements.AppearanceHandler%20%7C%7C%20(Elements.AppearanceHandler%20=%20%7B%7D));%0A%7D)(Elements%20%7C%7C%20(Elements%20=%20%7B%7D));%0Afunction%20updateFontSize()%20%7B%0A%20%20%20%20var%20minWidth%20=%20Elements.isMobile%20?%20800%20:%201280;%0A%20%20%20%20var%20proportion%20=%20Elements.isMobile%20?%2017%20:%2014.5;%0A%20%20%20%20var%20width%20=%20document.body.clientWidth%20%3C%20minWidth%20?%20minWidth%20:%20document.body.clientWidth;%0A%20%20%20%20document.documentElement.style[%22font-size%22]%20=%20(width%20*%20proportion%20/%201280)%20+%20%22px%22;%0A%7D%0AupdateFontSize();%0Awindow.addEventListener(%22resize%22,%20updateFontSize);%0Afunction%20toggleFullScreen()%20%7B%0A%20%20%20%20var%20doc%20=%20window.document;%0A%20%20%20%20var%20docEl%20=%20doc.documentElement;%0A%20%20%20%20var%20requestFullScreen%20=%20docEl.requestFullscreen%20%7C%7C%20docEl.mozRequestFullScreen%20%7C%7C%20docEl.webkitRequestFullScreen%20%7C%7C%20docEl.msRequestFullscreen;%0A%20%20%20%20var%20cancelFullScreen%20=%20doc.exitFullscreen%20%7C%7C%20doc.mozCancelFullScreen%20%7C%7C%20doc.webkitExitFullscreen%20%7C%7C%20doc.msExitFullscreen;%0A%20%20%20%20if%20(!doc.fullscreenElement%20&&%20!doc.mozFullScreenElement%20&&%20!doc.webkitFullscreenElement%20&&%20!doc.msFullscreenElement)%20%7B%0A%20%20%20%20%20%20%20%20requestFullScreen.call(docEl);%0A%20%20%20%20%7D%0A%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20cancelFullScreen.call(doc);%0A%20%20%20%20%7D%0A%7D%0Avar%20Elements;%0A(function%20(Elements)%20%7B%0A%20%20%20%20var%20HoverInfo;%0A%20%20%20%20(function%20(HoverInfo)%20%7B%0A%20%20%20%20%20%20%20%20var%20hoverbox%20=%20document.getElementById(%22hoverInfo%22);%0A%20%20%20%20%20%20%20%20var%20contentTarget%20=%20document.getElementById(%22hoverContent%22);%0A%20%20%20%20%20%20%20%20var%20width%20=%200;%0A%20%20%20%20%20%20%20%20var%20height%20=%200;%0A%20%20%20%20%20%20%20%20function%20empty()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20while%20(contentTarget.firstChild%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20contentTarget.removeChild(contentTarget.firstChild);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20function%20makeHoverable(element,%20contents)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20element.addEventListener(%22mouseenter%22,%20(e)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Elements.HoverInfo.hoverStart(e,%20contents);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20element.addEventListener(%22mousemove%22,%20(e)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Elements.HoverInfo.hoverMove(e);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20element.addEventListener(%22mouseout%22,%20(e)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Elements.HoverInfo.hoverEnd();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20HoverInfo.makeHoverable%20=%20makeHoverable;%0A%20%20%20%20%20%20%20%20function%20hoverStart(e,%20contents)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20empty();%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20contents.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20contentTarget.appendChild(contents[i]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20hoverbox.style.display%20=%20%22block%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20hoverbox.style.left%20=%20%220px%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20hoverbox.style.top%20=%20%220px%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20width%20=%20hoverbox.offsetWidth;%0A%20%20%20%20%20%20%20%20%20%20%20%20height%20=%20hoverbox.offsetHeight;%0A%20%20%20%20%20%20%20%20%20%20%20%20hoverMove(e);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20HoverInfo.hoverStart%20=%20hoverStart;%0A%20%20%20%20%20%20%20%20function%20hoverMove(e)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20left%20=%20e.clientX%20-%20(width%20/%202);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20top%20=%20e.clientY%20-%20(height)%20-%206;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(top%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20top%20=%20e.clientY%20+%206;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(left%20%3C%20width)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20left%20=%20width;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(left%20+%20width%20%3E%20Elements.screenWidth)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20left%20=%20Elements.screenWidth%20-%20width;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20hoverbox.style.left%20=%20Math.round(left)%20+%20%22px%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20hoverbox.style.top%20=%20Math.round(top)%20+%20%22px%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20HoverInfo.hoverMove%20=%20hoverMove;%0A%20%20%20%20%20%20%20%20function%20hoverEnd()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20hoverbox.style.display%20=%20%22none%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20HoverInfo.hoverEnd%20=%20hoverEnd;%0A%20%20%20%20%7D)(HoverInfo%20=%20Elements.HoverInfo%20%7C%7C%20(Elements.HoverInfo%20=%20%7B%7D));%0A%7D)(Elements%20%7C%7C%20(Elements%20=%20%7B%7D));%0Avar%20Elements;%0A(function%20(Elements)%20%7B%0A%20%20%20%20var%20HyperlinkHandler;%0A%20%20%20%20(function%20(HyperlinkHandler)%20%7B%0A%20%20%20%20%20%20%20%20HyperlinkHandler.linkedActionsTab%20=%20document.getElementById(%22linkActions%22);%0A%20%20%20%20%20%20%20%20HyperlinkHandler.commonActionsTab%20=%20document.getElementById(%22commonActionsTab%22);%0A%20%20%20%20%20%20%20%20var%20currentCommand%20=%20document.createTextNode(%22%22);%0A%20%20%20%20%20%20%20%20document.getElementById(%22currentCommand%22).appendChild(currentCommand);%0A%20%20%20%20%20%20%20%20var%20currentActionTarget%20=%20document.createTextNode(%22%22);%0A%20%20%20%20%20%20%20%20document.getElementById(%22linkTarget%22).appendChild(currentActionTarget);%0A%20%20%20%20%20%20%20%20var%20commonActions%20=%20[];%0A%20%20%20%20%20%20%20%20var%20availableActions%20=%20[];%0A%20%20%20%20%20%20%20%20function%20resetCommonActions()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20commonActions.splice(0,%20commonActions.length);%0A%20%20%20%20%20%20%20%20%20%20%20%20while%20(HyperlinkHandler.commonActionsTab.firstChild)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20HyperlinkHandler.commonActionsTab.removeChild(HyperlinkHandler.commonActionsTab.firstChild);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20HyperlinkHandler.resetCommonActions%20=%20resetCommonActions;%0A%20%20%20%20%20%20%20%20function%20addCommonAction(name,%20action)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20commonActions.push([name,%20action]);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20HyperlinkHandler.addCommonAction%20=%20addCommonAction;%0A%20%20%20%20%20%20%20%20function%20resetAvailableActions()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20availableActions%20=%20[];%0A%20%20%20%20%20%20%20%20%20%20%20%20currentActionTarget.nodeValue%20=%20%22%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20while%20(HyperlinkHandler.linkedActionsTab.firstChild)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20HyperlinkHandler.linkedActionsTab.removeChild(HyperlinkHandler.linkedActionsTab.firstChild);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20function%20addAvailableAction(name,%20action)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20availableActions.push([name,%20action]);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20HyperlinkHandler.addAvailableAction%20=%20addAvailableAction;%0A%20%20%20%20%20%20%20%20function%20hoverAction(action)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20currentCommand.nodeValue%20=%20action.getCommandText().toLowerCase();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20HyperlinkHandler.hoverAction%20=%20hoverAction;%0A%20%20%20%20%20%20%20%20function%20unhoverAction()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20currentCommand.nodeValue%20=%20%22%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20HyperlinkHandler.unhoverAction%20=%20unhoverAction;%0A%20%20%20%20%20%20%20%20async%20function%20hyperlinkObject(thing)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20resetAvailableActions();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(thing%20instanceof%20Thing%20&&%20thing%20!=%20WorldState.player%20&&%20thing.isVisibleTo(WorldState.player))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20HyperlinkHandler.HyperlinkingRulebook.execute(%7B%20noun:%20thing%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20currentActionTarget.nodeValue%20=%20thing.getPrintedName()%20+%20%22:%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200,%20value%20=%20availableActions[i];%20value%20!=%20undefined;%20value%20=%20availableActions[++i])%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20link%20=%20createLink(value);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20link.classList.add(%22columnLink%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Controls.KeyHandler.applyCode(link,%20Controls.KeyHandler.getSecondKeyCode());%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20HyperlinkHandler.linkedActionsTab.appendChild(link);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20HyperlinkHandler.hyperlinkObject%20=%20hyperlinkObject;%0A%20%20%20%20%20%20%20%20function%20createLink(value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20link%20=%20document.createElement(%22a%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20link.appendChild(document.createTextNode(value[0]));%0A%20%20%20%20%20%20%20%20%20%20%20%20Controls.Links.makeLink(link,%20value[1]);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20link;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20async%20function%20hyperlinkCommonActions()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20resetCommonActions();%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20HyperlinkHandler.CommonActionsRulebook.execute(%7B%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200,%20value%20=%20commonActions[i];%20value%20!=%20undefined;%20value%20=%20commonActions[++i])%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20link%20=%20createLink(value);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20link.classList.add(%22lineLink%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Controls.KeyHandler.applyCode(link,%20Controls.KeyHandler.getThirdKeyCode());%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20HyperlinkHandler.commonActionsTab.appendChild(link);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20HyperlinkHandler.hyperlinkCommonActions%20=%20hyperlinkCommonActions;%0A%20%20%20%20%20%20%20%20HyperlinkHandler.HyperlinkingRulebook%20=%20new%20Rulebook(%22Hyperlinking%20something%22);%0A%20%20%20%20%20%20%20%20HyperlinkHandler.CommonActionsRulebook%20=%20new%20Rulebook(%22Common%20Actions%20Rulebook%22);%0A%20%20%20%20%7D)(HyperlinkHandler%20=%20Elements.HyperlinkHandler%20%7C%7C%20(Elements.HyperlinkHandler%20=%20%7B%7D));%0A%7D)(Elements%20%7C%7C%20(Elements%20=%20%7B%7D));%0Aclass%20Action%20%7B%0A%20%20%20%20constructor(actor,%20...nouns)%20%7B%0A%20%20%20%20%20%20%20%20this.extraChecks%20=%20[];%0A%20%20%20%20%20%20%20%20this.extraCarries%20=%20[];%0A%20%20%20%20%20%20%20%20this.nouns%20=%20[];%0A%20%20%20%20%20%20%20%20this.say%20=%20new%20Say();%0A%20%20%20%20%20%20%20%20this.actingAgressively%20=%20false;%0A%20%20%20%20%20%20%20%20this.actingSubmissively%20=%20false;%0A%20%20%20%20%20%20%20%20this.requiresTurn%20=%20true;%0A%20%20%20%20%20%20%20%20this.requiresNoun%20=%20true;%0A%20%20%20%20%20%20%20%20this.requiresVisibility%20=%20true;%0A%20%20%20%20%20%20%20%20this.actor%20=%20actor;%0A%20%20%20%20%20%20%20%20nouns.forEach((value,%20index,%20array)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.setNoun(index,%20value);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20async%20execute()%20%7B%0A%20%20%20%20%20%20%20%20this.say%20=%20new%20Say();%0A%20%20%20%20%20%20%20%20let%20checkRulebooks%20=%20[];%0A%20%20%20%20%20%20%20%20let%20carryRulebooks%20=%20[];%0A%20%20%20%20%20%20%20%20let%20cClass%20=%20this.constructor;%0A%20%20%20%20%20%20%20%20while%20(cClass%20!=%20Action)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(cClass.check%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20checkRulebooks.push(cClass.check);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(cClass.carry%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20carryRulebooks.push(cClass.carry);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20cClass%20=%20Object.getPrototypeOf(cClass);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20result%20=%20await%20Action.check.execute(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20noun:%20this%0A%20%20%20%20%20%20%20%20%7D,%20...checkRulebooks);%0A%20%20%20%20%20%20%20%20if%20(result%20==%20false)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(result%20instanceof%20Action)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20//Rulebook.getIndentation()%20+%20%22[ACTION]%20Instead%20of...%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20result.execute();%0A%20%20%20%20%20%20%20%20%20%20%20%20this.say.add(result.say);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.nouns%20=%20result.nouns;%0A%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20await%20Action.carry.execute(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20noun:%20this%0A%20%20%20%20%20%20%20%20%7D,%20...carryRulebooks);%0A%20%20%20%20%20%20%20%20return%20this.say;%0A%20%20%20%20%7D%0A%20%20%20%20get%20actor()%20%7B%0A%20%20%20%20%20%20%20%20return%20this._actor;%0A%20%20%20%20%7D%0A%20%20%20%20set%20actor(value)%20%7B%0A%20%20%20%20%20%20%20%20this._actor%20=%20value;%0A%20%20%20%20%7D%0A%20%20%20%20getNoun(n)%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.nouns.length%20%3E%20n)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.nouns[n];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20undefined;%0A%20%20%20%20%7D%0A%20%20%20%20setNoun(n,%20noun)%20%7B%0A%20%20%20%20%20%20%20%20while%20(this.nouns.length%20%3C%20n)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.nouns.push(undefined);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.nouns[n]%20=%20noun;%0A%20%20%20%20%7D%0A%20%20%20%20getCommandText()%20%7B%0A%20%20%20%20%20%20%20%20return%20%22do%22;%0A%20%20%20%20%7D%0A%20%20%20%20stop()%20%7B%0A%20%20%20%20%20%20%20%20this.requiresTurn%20=%20false;%0A%20%20%20%20%7D%0A%7D%0AAction.check%20=%20new%20Rulebook(%22Check%20any%20Action%22);%0AAction.carry%20=%20new%20Rulebook(%22Carry%20out%20any%20Action%22);%0AAction.check.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Check%20any%20Action%20-%20Requires%20Noun%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20if%20(action.getNoun(0)%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D,%0A%20%20%20%20conditions:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20return%20runner.noun.requiresNoun;%0A%20%20%20%20%7D%0A%7D));%0AAction.check.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Check%20any%20Action%20-%20Requires%20Visibility%22,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20let%20actor%20=%20action.actor;%0A%20%20%20%20%20%20%20%20if%20(!action.getNoun(0).isVisibleTo(actor))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D,%0A%20%20%20%20conditions:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20return%20runner.noun.requiresVisibility;%0A%20%20%20%20%7D%0A%7D));%0Aclass%20ActionExamine%20extends%20Action%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.requiresTurn%20=%20false;%0A%20%20%20%20%7D%0A%20%20%20%20getCommandText()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.getNoun(0)%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22examine%20myself%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20%22examine%20%22%20+%20(this.getNoun(0)%20!=%20undefined%20?%20this.getNoun(0).getPrintedName()%20:%20%22%22);%0A%20%20%20%20%7D%0A%7D%0AActionExamine.check%20=%20new%20Rulebook(%22Check%20Examining%22);%0AActionExamine.carry%20=%20new%20Rulebook(%22Carry%20out%20Examining%22);%0AActionExamine.PrintDescriptionOfExaminedThingRule%20=%20ActionExamine.carry.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Examine%20-%20Print%20Description%20of%20Examined%20Thing%22,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20let%20noun%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20if%20(noun%20instanceof%20Thing%20&&%20noun.image%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(noun.image,%20Say.PARAGRAPH_BREAK);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20action.say.add(action.getNoun(0).getPrintedDescription());%0A%20%20%20%20%7D%0A%7D);%0AElements.HyperlinkHandler.CommonActionsRulebook.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Look%20at%20me!%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20priority:%20Rule.PRIORITY_HIGH,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20Elements.HyperlinkHandler.addCommonAction(%22Inspect%22,%20new%20ActionExamine(WorldState.player,%20WorldState.player));%0A%20%20%20%20%7D%0A%7D));%0Aclass%20RelationHandler%20%7B%0A%20%20%20%20constructor(...relations)%20%7B%0A%20%20%20%20%20%20%20%20relations.forEach(relation%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20relation.setHandler(this);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.relations%20=%20relations;%0A%20%20%20%20%7D%0A%20%20%20%20addRelation(relation)%20%7B%0A%20%20%20%20%20%20%20%20this.relations.push(relation);%0A%20%20%20%20%20%20%20%20relation.setHandler(this);%0A%20%20%20%20%7D%0A%7D%0Aclass%20Relation%20%7B%0A%20%20%20%20setHandler(handler)%20%7B%0A%20%20%20%20%20%20%20%20this.handler%20=%20handler;%0A%20%20%20%20%7D%0A%20%20%20%20hasHandler()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.handler%20!=%20undefined;%0A%20%20%20%20%7D%0A%20%20%20%20static%20createString(obj1,%20obj2)%20%7B%0A%20%20%20%20%20%20%20%20if%20(obj1%20instanceof%20Object%20&&%20obj2%20instanceof%20Object)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20id1%20=%20Relation.getId(obj1);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20id2%20=%20Relation.getId(obj2);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20id1%20%3C%20id2%20?%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(id1%20+%20%22;%22%20+%20id2)%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(id2%20+%20%22;%22%20+%20id1);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20static%20getId(obj)%20%7B%0A%20%20%20%20%20%20%20%20if%20(obj[Relation.objectIdField]%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20obj[Relation.objectIdField]%20=%20Relation.objectCount++;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20obj[Relation.objectIdField];%0A%20%20%20%20%7D%0A%7D%0ARelation.objectCount%20=%200;%0ARelation.objectIdField%20=%20%22_RELATIONINTERNALID%22;%0Aclass%20RelationHandlerStrictOneToMany%20extends%20RelationHandler%20%7B%0A%20%20%20%20setRelation(relation,%20left,%20right,%20value)%20%7B%0A%20%20%20%20%20%20%20%20let%20parents%20=%20this.getAllLeft(left);%0A%20%20%20%20%20%20%20%20if%20(parents.indexOf(right)%20!=%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.warn(%22[Relation]%20Attempt%20to%20create%20a%20circular%20relation:%22,%20this,%20left,%20right);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.unsetRight(right);%0A%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%7D%0A%20%20%20%20unset(thing)%20%7B%0A%20%20%20%20%20%20%20%20this.unsetLeft(thing);%0A%20%20%20%20%20%20%20%20this.unsetRight(thing);%0A%20%20%20%20%7D%0A%20%20%20%20unsetLeft(left)%20%7B%0A%20%20%20%20%20%20%20%20this.relations.forEach(relation%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20relation.unsetLeft(left);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20unsetRight(right)%20%7B%0A%20%20%20%20%20%20%20%20this.relations.forEach(relation%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20relation.unsetRight(right);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20getLeft(right)%20%7B%0A%20%20%20%20%20%20%20%20let%20result;%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20this.relations.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20result%20=%20this.relations[i].getLeft(right);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(result%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20result;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getAllLeft(right)%20%7B%0A%20%20%20%20%20%20%20%20let%20newParent%20=%20this.getLeft(right);%0A%20%20%20%20%20%20%20%20let%20parents%20=%20[];%0A%20%20%20%20%20%20%20%20while%20(newParent%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20parents.push(newParent);%0A%20%20%20%20%20%20%20%20%20%20%20%20newParent%20=%20this.getLeft(newParent);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20parents;%0A%20%20%20%20%7D%0A%20%20%20%20getAllLeftType(right,%20type)%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getAllLeft(right).filter(left%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20left%20instanceof%20type;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20getLastLeft(right)%20%7B%0A%20%20%20%20%20%20%20%20let%20parent%20=%20this.getLeft(right);%0A%20%20%20%20%20%20%20%20let%20newParent%20=%20this.getLeft(parent);%0A%20%20%20%20%20%20%20%20while%20(newParent%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20parent%20=%20newParent;%0A%20%20%20%20%20%20%20%20%20%20%20%20newParent%20=%20this.getLeft(parent);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20parent;%0A%20%20%20%20%7D%0A%20%20%20%20getAllRight(left)%20%7B%0A%20%20%20%20%20%20%20%20let%20rights%20=%20[];%0A%20%20%20%20%20%20%20%20this.relations.forEach(relation%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20rights.push(...relation.getRight(left));%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20arrayUnique(rights);%0A%20%20%20%20%20%20%20%20return%20rights;%0A%20%20%20%20%7D%0A%20%20%20%20getAllRightTypes(left,%20rightType)%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getAllRight(left).filter(right%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20right%20instanceof%20rightType;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%7D%0Aclass%20RelationOneToMany%20extends%20Relation%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.valuesHash%20=%20%7B%7D;%0A%20%20%20%20%20%20%20%20this.oneMap%20=%20new%20Map();%0A%20%20%20%20%20%20%20%20this.manyMap%20=%20new%20Map();%0A%20%20%20%20%7D%0A%20%20%20%20getValue(left,%20right)%20%7B%0A%20%20%20%20%20%20%20%20return%20this.valuesHash[Relation.createString(left,%20right)];%0A%20%20%20%20%7D%0A%20%20%20%20setValue(left,%20right,%20value)%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.manyMap.get(right)%20==%20left)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20string%20=%20Relation.createString(left,%20right);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(string%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.valuesHash[string]%20=%20value;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20setRelation(left,%20right,%20value)%20%7B%0A%20%20%20%20%20%20%20%20let%20proceed;%0A%20%20%20%20%20%20%20%20if%20(this.handler%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20proceed%20=%20this.handler.setRelation(this,%20left,%20right,%20value);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(proceed)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.unsetRight(left);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.unsetLeft(right);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.unsetRight(right);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20string%20=%20Relation.createString(left,%20right);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(string%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.valuesHash[string]%20=%20value;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.manyMap.set(right,%20left);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.oneMap.get(left)%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.oneMap.set(left,%20[right]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.oneMap.get(left).push(right);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getLeft(right)%20%7B%0A%20%20%20%20%20%20%20%20return%20this.manyMap.get(right);%0A%20%20%20%20%7D%0A%20%20%20%20getAnyLeft()%20%7B%0A%20%20%20%20%20%20%20%20let%20left%20=%20[];%0A%20%20%20%20%20%20%20%20this.oneMap.forEach((value,%20key)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20left.push(key);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20arrayUnique(left);%0A%20%20%20%20%20%20%20%20return%20left;%0A%20%20%20%20%7D%0A%20%20%20%20getAnyRight()%20%7B%0A%20%20%20%20%20%20%20%20let%20rights%20=%20[];%0A%20%20%20%20%20%20%20%20this.oneMap.forEach((value)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20rights.push(...value);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20arrayUnique(rights);%0A%20%20%20%20%20%20%20%20return%20rights;%0A%20%20%20%20%7D%0A%20%20%20%20getAnyRightType(type)%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getAnyRight().filter(value%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20value%20instanceof%20type;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20isRight(left,%20needle)%20%7B%0A%20%20%20%20%20%20%20%20let%20right%20=%20this.oneMap.get(left);%0A%20%20%20%20%20%20%20%20if%20(right%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20right.indexOf(needle)%20!=%20-1;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%7D%0A%20%20%20%20getRight(left)%20%7B%0A%20%20%20%20%20%20%20%20let%20right%20=%20this.oneMap.get(left);%0A%20%20%20%20%20%20%20%20if%20(right%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20[].concat(...right);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20[];%0A%20%20%20%20%7D%0A%20%20%20%20getRightType(left,%20type)%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getRight(left).filter(right%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20right%20instanceof%20type;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20getRightTypeOne(left,%20type)%20%7B%0A%20%20%20%20%20%20%20%20let%20rights%20=%20this.getRightType(left,%20type);%0A%20%20%20%20%20%20%20%20if%20(rights.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20rights[0];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getRelationValue(left,%20right)%20%7B%0A%20%20%20%20%20%20%20%20return%20this.valuesHash[Relation.createString(left,%20right)];%0A%20%20%20%20%7D%0A%20%20%20%20unsetRight(right)%20%7B%0A%20%20%20%20%20%20%20%20let%20left%20=%20this.manyMap.get(right);%0A%20%20%20%20%20%20%20%20if%20(left%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20allRight%20=%20this.oneMap.get(left);%0A%20%20%20%20%20%20%20%20%20%20%20%20allRight.splice(allRight.indexOf(right),%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.manyMap.delete(right);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(allRight.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.oneMap.delete(left);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20string%20=%20Relation.createString(left,%20right);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(string%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20delete%20(this.valuesHash[string]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20unsetLeft(left)%20%7B%0A%20%20%20%20%20%20%20%20let%20allRight%20=%20this.oneMap.get(left);%0A%20%20%20%20%20%20%20%20if%20(allRight%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20allRight.forEach((right)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.manyMap.delete(right);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20string%20=%20Relation.createString(left,%20right);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(string%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20delete%20(this.valuesHash[string]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.oneMap.delete(left);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0Aclass%20Thing%20%7B%0A%20%20%20%20constructor(options)%20%7B%0A%20%20%20%20%20%20%20%20this.properlyNamed%20=%20false;%0A%20%20%20%20%20%20%20%20this.scenery%20=%20false;%0A%20%20%20%20%20%20%20%20this.fixedInPlace%20=%20false;%0A%20%20%20%20%20%20%20%20this.animated%20=%20false;%0A%20%20%20%20%20%20%20%20this.visible%20=%20true;%0A%20%20%20%20%20%20%20%20this.unique%20=%20false;%0A%20%20%20%20%20%20%20%20this.shiny%20=%20false;%0A%20%20%20%20%20%20%20%20this.setAlterations%20=%20[];%0A%20%20%20%20%20%20%20%20this.getAlterations%20=%20[];%0A%20%20%20%20%20%20%20%20this.clone%20=%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20Error(%22Non-unique%20Objects%20can't%20be%20cloned.%22);%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20options%20=%20options%20==%20undefined%20?%20%7B%7D%20:%20options;%0A%20%20%20%20%20%20%20%20if%20(options.properName%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.name%20=%20options.properName;%0A%20%20%20%20%20%20%20%20%20%20%20%20this.properlyNamed%20=%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(options.name%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.name%20=%20options.name;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.name%20=%20this.constructor.name;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(options.description%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(options.description%20instanceof%20Say)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.description%20=%20options.description;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.description%20=%20new%20Say(options.description);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(options.unique)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Thing.storeUnique(this);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.unique%20=%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Thing.storeNonUnique(this);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.cloneOptions%20=%20options;%0A%20%20%20%20%20%20%20%20%20%20%20%20this.clone%20=%20(includeChanges)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20cons%20=%20eval(this.constructor.name);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20newThing%20=%20new%20cons(this.cloneOptions);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(includeChanges%20==%20undefined%20%7C%7C%20includeChanges)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20newThing.setChanges(this.getChanges());%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20newThing;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(options.image%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(options.image%20instanceof%20SayImage)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.image%20=%20options.image;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.image%20=%20new%20SayImage(options.image);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.shiny%20=%20options.shiny%20==%20true;%0A%20%20%20%20%20%20%20%20this.addGetAlterations((thing)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20function%20getClosestRoom(currentRoom,%20rooms)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(currentRoom%20instanceof%20RoomRandom%20&&%20rooms.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rooms.sort((a,%20b)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!(a%20instanceof%20RoomRandom))%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20-1;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!(b%20instanceof%20RoomRandom))%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%201;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20da%20=%20a.getDistanceTo(currentRoom);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20db%20=%20b.getDistanceTo(currentRoom);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20da%20-%20db;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Location:%20rooms[0].getName()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(Thing.EnclosedRelation.getLeft(thing)%20==%20thing.getRoom()%20&&%20thing.getRoom()%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(thing.getRoom().fodder)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(thing.isPlayer())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20rooms%20=%20WorldState.getRememberedRoomsAsRooms();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20currentRoom%20=%20thing.getRoom();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20getClosestRoom(currentRoom,%20rooms);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20rooms%20=%20thing.getRoom().getConnectedRooms();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20currentRoom%20=%20thing.getRoom();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20foundRoom%20=%20getClosestRoom(currentRoom,%20rooms);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(foundRoom%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20foundRoom;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rooms%20=%20Region.InRelation.getLeft(thing.getRoom()).getRooms();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20getClosestRoom(currentRoom,%20rooms);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Location:%20thing.getRoom().getName()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.addSetAlterations((thing,%20changes)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(changes.Location%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20room%20=%20Room.getRoom(changes.Location);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(room%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20room.place(thing);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.error(%22Unable%20to%20place%20%22,%20thing,%20%22%20at%20room%20%22,%20changes.Location);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20addGetAlterations(newGet)%20%7B%0A%20%20%20%20%20%20%20%20this.getAlterations.push(newGet);%0A%20%20%20%20%7D%0A%20%20%20%20addSetAlterations(newSet)%20%7B%0A%20%20%20%20%20%20%20%20this.setAlterations.push(newSet);%0A%20%20%20%20%7D%0A%20%20%20%20getChanges()%20%7B%0A%20%20%20%20%20%20%20%20let%20changes%20=%20%7B%7D;%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20this.getAlterations.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20change%20=%20this.getAlterations[i](this);%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20key%20in%20change)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20changes[key]%20=%20change[key];%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20changes;%0A%20%20%20%20%7D%0A%20%20%20%20setChanges(simpleAlterationObject)%20%7B%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20this.setAlterations.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.setAlterations[i](this,%20simpleAlterationObject);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getShiny()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.shiny;%0A%20%20%20%20%7D%0A%20%20%20%20setName(name)%20%7B%0A%20%20%20%20%20%20%20%20this.name%20=%20name;%0A%20%20%20%20%7D%0A%20%20%20%20getName()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.name;%0A%20%20%20%20%7D%0A%20%20%20%20static%20storeNonUnique(thing)%20%7B%0A%20%20%20%20%20%20%20%20if%20(Thing.things[thing.name]%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Thing.things[thing.name]%20=%20[thing];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Thing.things[thing.name].push(thing);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20static%20getNonUnique(name)%20%7B%0A%20%20%20%20%20%20%20%20return%20Thing.things[name]%20==%20undefined%20?%20[]%20:%20Thing.things[name];%0A%20%20%20%20%7D%0A%20%20%20%20static%20getOneThing(name)%20%7B%0A%20%20%20%20%20%20%20%20let%20thing%20=%20Thing.getUnique(name);%0A%20%20%20%20%20%20%20%20if%20(thing%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20things%20=%20Thing.getNonUnique(name);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(things.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20thing%20=%20things[0];%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20thing;%0A%20%20%20%20%7D%0A%20%20%20%20static%20storeUnique(unique)%20%7B%0A%20%20%20%20%20%20%20%20if%20(Thing.uniqueThings[unique.name]%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.warn(unique.name,%20Thing.uniqueThings[unique.name],%20new%20Error(%22Unique%20Thing%20Already%20Exists%22));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Thing.uniqueThings[unique.name]%20=%20unique;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20static%20getUnique(name)%20%7B%0A%20%20%20%20%20%20%20%20return%20Thing.uniqueThings[name];%0A%20%20%20%20%7D%0A%20%20%20%20static%20getUniques()%20%7B%0A%20%20%20%20%20%20%20%20let%20things%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20name%20in%20Thing.uniqueThings)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20things.push(Thing.uniqueThings[name]);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20things;%0A%20%20%20%20%7D%0A%20%20%20%20getPrintedName()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.name;%0A%20%20%20%20%7D%0A%20%20%20%20getPrintedDescription()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.description%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20new%20Say(%22You%20see%20nothing%20special%20about%20%22,%20new%20SayThe(),%20this,%20%22.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.description;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getPartOne()%20%7B%0A%20%20%20%20%20%20%20%20return%20Thing.PartRelation.getLeft(this);%0A%20%20%20%20%7D%0A%20%20%20%20getCarryOne()%20%7B%0A%20%20%20%20%20%20%20%20return%20Thing.CarryRelation.getLeft(this);%0A%20%20%20%20%7D%0A%20%20%20%20getWieldOne()%20%7B%0A%20%20%20%20%20%20%20%20return%20Thing.WieldRelation.getLeft(this);%0A%20%20%20%20%7D%0A%20%20%20%20getWearOne()%20%7B%0A%20%20%20%20%20%20%20%20return%20Thing.WearRelation.getLeft(this);%0A%20%20%20%20%7D%0A%20%20%20%20getEnclosedOne()%20%7B%0A%20%20%20%20%20%20%20%20return%20Thing.EnclosedRelation.getLeft(this);%0A%20%20%20%20%7D%0A%20%20%20%20removeParts(partType)%20%7B%0A%20%20%20%20%20%20%20%20let%20parts%20=%20this.getParts(partType);%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20parts.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Thing.PartRelation.unsetRight(parts[i]);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getParts(partType)%20%7B%0A%20%20%20%20%20%20%20%20if%20(partType%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20Thing.PartRelation.getRightType(this,%20partType);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20Thing.PartRelation.getRight(this);%0A%20%20%20%20%7D%0A%20%20%20%20getPartsByName(name)%20%7B%0A%20%20%20%20%20%20%20%20let%20parts%20=%20this.getParts();%0A%20%20%20%20%20%20%20%20return%20parts.filter((part)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20(part.getName()%20==%20name);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20getPart(partType)%20%7B%0A%20%20%20%20%20%20%20%20if%20(partType%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20Thing.PartRelation.getRightTypeOne(this,%20partType);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20Thing.PartRelation.getRight(this);%0A%20%20%20%20%7D%0A%20%20%20%20getHighestEnclosedOne()%20%7B%0A%20%20%20%20%20%20%20%20return%20Thing.EnclosedRelation.getLastLeft(this);%0A%20%20%20%20%7D%0A%20%20%20%20getHighestEnclosedOneNotRoom()%20%7B%0A%20%20%20%20%20%20%20%20let%20parent%20=%20Thing.EnclosedRelation.getLeft(this);%0A%20%20%20%20%20%20%20%20if%20(parent%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20newParent%20=%20Thing.EnclosedRelation.getLeft(parent);%0A%20%20%20%20%20%20%20%20%20%20%20%20while%20(newParent%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20parent%20=%20newParent;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20newParent%20=%20Thing.EnclosedRelation.getLeft(parent);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20parent;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20this;%0A%20%20%20%20%7D%0A%20%20%20%20getRoom()%20%7B%0A%20%20%20%20%20%20%20%20var%20partOf%20=%20Thing.EnclosedRelation.getLeft(this);%0A%20%20%20%20%20%20%20%20if%20(partOf%20instanceof%20Room)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20partOf;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(partOf%20instanceof%20Thing)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20partOf.getRoom();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20removeFromRoom()%20%7B%0A%20%20%20%20%20%20%20%20this.getRoom().remove(this);%0A%20%20%20%20%7D%0A%20%20%20%20isVisibleTo(thing)%20%7B%0A%20%20%20%20%20%20%20%20return%20(this.getRoom()%20==%20thing.getRoom()%20&&%20this.visible);%0A%20%20%20%20%7D%0A%20%20%20%20isPlayer()%20%7B%0A%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%7D%0A%20%20%20%20addParts(...parts)%20%7B%0A%20%20%20%20%20%20%20%20parts.forEach(part%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Thing.PartRelation.setRelation(this,%20part);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20isUnique()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.unique;%0A%20%20%20%20%7D%0A%20%20%20%20setCarried(thing)%20%7B%0A%20%20%20%20%20%20%20%20Thing.CarryRelation.setRelation(this,%20thing);%0A%20%20%20%20%7D%0A%20%20%20%20setWorn(thing)%20%7B%0A%20%20%20%20%20%20%20%20Thing.WearRelation.setRelation(this,%20thing);%0A%20%20%20%20%7D%0A%20%20%20%20setWielded(thing)%20%7B%0A%20%20%20%20%20%20%20%20Thing.WieldRelation.setRelation(this,%20thing);%0A%20%20%20%20%7D%0A%20%20%20%20unsetCarried(thing)%20%7B%0A%20%20%20%20%20%20%20%20if%20(Thing.EnclosedRelation.getAllRight(this).indexOf(thing)%20!=%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Thing.EnclosedRelation.unsetRight(thing);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.getRoom().place(thing);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20destroy()%20%7B%0A%20%20%20%20%20%20%20%20let%20relatedRight%20=%20Thing.EnclosedRelation.getAllRight(this);%0A%20%20%20%20%20%20%20%20relatedRight.push(this);%0A%20%20%20%20%20%20%20%20relatedRight.forEach(related%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Thing.EnclosedRelation.unset(related);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%7D%0AThing.uniqueThings%20=%20%7B%7D;%0AThing.things%20=%20%7B%7D;%0AThing.InsideRoomRelation%20=%20new%20RelationOneToMany();%0AThing.PartRelation%20=%20new%20RelationOneToMany();%0AThing.CarryRelation%20=%20new%20RelationOneToMany();%0AThing.WieldRelation%20=%20new%20RelationOneToMany();%0AThing.WearRelation%20=%20new%20RelationOneToMany();%0AThing.EnclosedRelation%20=%20new%20RelationHandlerStrictOneToMany(Thing.InsideRoomRelation,%20Thing.PartRelation,%20Thing.CarryRelation,%20Thing.WieldRelation,%20Thing.WearRelation);%0Aclass%20ActionTake%20extends%20Action%20%7B%0A%20%20%20%20getCommandText()%20%7B%0A%20%20%20%20%20%20%20%20return%20%22take%20%22%20+%20(this.getNoun(0)%20!=%20undefined%20?%20this.getNoun(0).getPrintedName()%20:%20%22%22);%0A%20%20%20%20%7D%0A%7D%0AActionTake.check%20=%20new%20Rulebook(%22Check%20Taking%22);%0AActionTake.carry%20=%20new%20Rulebook(%22Carry%20out%20Taking%22);%0AActionTake.defaultCarryTakingRule%20=%20new%20Rule(%7B%0A%20%20%20%20name:%20%22Taking%20-%20Add%20the%20thing%20to%20your%20inventory%22,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20let%20actor%20=%20action.actor;%0A%20%20%20%20%20%20%20%20let%20thing%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20if%20(thing.getEnclosedOne()%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Thing.EnclosedRelation.unsetRight(thing);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20thing.removeFromRoom();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20Thing.CarryRelation.setRelation(actor,%20action.getNoun(0));%0A%20%20%20%20%20%20%20%20if%20(actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(new%20SayBold(action.getNoun(0).getPrintedName()%20+%20%22:%20%22),%20%22Taken.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(new%20SayThe(),%20actor,%20%22%20takes%20%22,%20new%20SayThe(undefined,%20true),%20action.getNoun(0),%20%22.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D);%0AActionTake.check.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Check%20Taking%20-%20Who%20has%20it,%20really?%22,%0A%20%20%20%20priority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20let%20actor%20=%20action.actor;%0A%20%20%20%20%20%20%20%20let%20thing%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20let%20owner%20=%20thing.getEnclosedOne();%0A%20%20%20%20%20%20%20%20if%20(owner%20==%20actor)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(owner%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22You%20already%20have%20it.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0AActionTake.check.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Check%20Taking%20-%20Donut%20steal%22,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20let%20actor%20=%20action.actor;%0A%20%20%20%20%20%20%20%20let%20thing%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20let%20owner%20=%20thing.getEnclosedOne();%0A%20%20%20%20%20%20%20%20if%20(owner%20!=%20undefined%20&&%20owner.animated)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(owner.getPrintedName()%20+%20%22%20wouldn't%20like%20that.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0AActionTake.check.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Check%20Taking%20-%20Can't%20take%20fixed%20in%20place%22,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20let%20actor%20=%20action.actor;%0A%20%20%20%20%20%20%20%20let%20thing%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20if%20(thing.fixedInPlace)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22You%20can't%20take%20that.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0AActionTake.carry.addRule(ActionTake.defaultCarryTakingRule);%0AElements.HyperlinkHandler.HyperlinkingRulebook.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Hyperlink%20-%20Take%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20thing%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20if%20(!thing.animated%20&&%20!thing.fixedInPlace%20&&%20thing.getRoom()%20==%20WorldState.player.getRoom()%20&&%20thing.getEnclosedOne()%20instanceof%20Room)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.HyperlinkHandler.addAvailableAction(%22Take%22,%20new%20ActionTake(WorldState.player,%20thing));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0Aclass%20ActionGo%20extends%20Action%20%7B%0A%20%20%20%20constructor(actor,%20...nouns)%20%7B%0A%20%20%20%20%20%20%20%20super(actor,%20...nouns);%0A%20%20%20%20%20%20%20%20this.originalTarget%20=%20nouns[0];%0A%20%20%20%20%20%20%20%20this.requiresNoun%20=%20false;%0A%20%20%20%20%20%20%20%20this.requiresVisibility%20=%20false;%0A%20%20%20%20%7D%0A%20%20%20%20getCommandText()%20%7B%0A%20%20%20%20%20%20%20%20let%20name;%0A%20%20%20%20%20%20%20%20if%20(typeof%20this.originalTarget%20==%20%22number%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20name%20=%20DirectionNames[Direction[this.originalTarget]];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(this.originalTarget%20instanceof%20Room)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20name%20=%20%22to%20%22%20+%20this.originalTarget.getPrintedName();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20%22go%20%22%20+%20name;%0A%20%20%20%20%7D%0A%7D%0AActionGo.check%20=%20new%20Rulebook(%22Check%20Going%22);%0AActionGo.carry%20=%20new%20Rulebook(%22Carry%20out%20Going%22);%0AActionGo.ruleCheckRestoreOriginalNoun%20=%20ActionGo.check.createAndAddRule(%7B%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20priority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20name:%20%22Check%20Going%20-%20Restore%20original%20noun%22,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20action.setNoun(0,%20action.originalTarget);%0A%20%20%20%20%7D%0A%7D);%0AActionGo.ruleCheckIsthereactor%20=%20ActionGo.check.createAndAddRule(%7B%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20priority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20name:%20%22Check%20Going%20-%20Is%20there%20an%20actor?%22,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20if%20(action.actor%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D);%0AActionGo.ruleCheckConvertRoomToDirection%20=%20ActionGo.check.createAndAddRule(%7B%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20priority:%20Rule.PRIORITY_HIGH,%0A%20%20%20%20name:%20%22Change%20Room%20to%20Direction%22,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20if%20(action.getNoun(0)%20instanceof%20RoomRandom)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20actor%20=%20action.actor;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20cRoom%20=%20actor.getRoom();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(cRoom%20instanceof%20RoomRandom)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20dRoom%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(cRoom%20==%20dRoom)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(actor.isPlayer())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22You%20are%20already%20there!%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.stop();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20code;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20code%20=%20(room)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20WorldState.isRoomRemembered(room);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20direction%20=%20cRoom.getAStarBestDirectionTo(dRoom,%20code);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(direction%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(actor.isPlayer())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22You%20don't%20remember%20how%20to%20get%20there.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.setNoun(0,%20direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D);%0AActionGo.ruleCheckIstheredirectionandroom%20=%20ActionGo.check.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Check%20Going%20-%20is%20there%20a%20direction?%20Does%20it%20lead%20anywhere?%22,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20let%20cRoom%20=%20action.actor.getRoom();%0A%20%20%20%20%20%20%20%20if%20(cRoom%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20direction%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20if%20(direction%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20nextRoom%20=%20cRoom.connections[direction];%0A%20%20%20%20%20%20%20%20if%20(nextRoom%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20action.roomGoneFrom%20=%20action.actor.getRoom();%0A%20%20%20%20%20%20%20%20action.roomGoneTo%20=%20nextRoom;%0A%20%20%20%20%7D%0A%7D);%0AActionGo.ruleCarryMove%20=%20ActionGo.carry.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Going%20-%20Move%20Actor%20to%20Next%20Room%22,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20let%20roomGoneFrom%20=%20action.actor.getRoom();%0A%20%20%20%20%20%20%20%20let%20direction%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20let%20roomGoneInto%20=%20roomGoneFrom.connections[direction];%0A%20%20%20%20%20%20%20%20roomGoneInto.place(action.actor);%0A%20%20%20%20%20%20%20%20let%20actor%20=%20action.actor;%0A%20%20%20%20%20%20%20%20if%20(actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22You%20go%20%22%20+%20DirectionNames[Direction[direction]].toLowerCase()%20+%20%22.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(roomGoneFrom%20==%20WorldState.player.getRoom())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(new%20SayThe(),%20actor,%20%22%20goes%20%22%20+%20DirectionNames[Direction[direction]].toLowerCase()%20+%20%22.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20oppositeName%20=%20DirectionNames[OppositeDirection[direction]];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(new%20SayThe(),%20actor,%20%22%20arrives%20from%20the%20%22%20+%20oppositeName.toLowerCase()%20+%20%22.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D);%0AActionGo.ruleCarryRememberRooms%20=%20ActionGo.carry.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Going%20-%20Remember%20the%20involved%20rooms%22,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20let%20actor%20=%20action.actor;%0A%20%20%20%20%20%20%20%20let%20roomGoneInto%20=%20action.actor.getRoom();%0A%20%20%20%20%20%20%20%20let%20direction%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20let%20roomGoneFrom%20=%20roomGoneInto.connections[OppositeDirection[Direction[direction]]];%0A%20%20%20%20%20%20%20%20if%20(actor.isPlayer())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20WorldState.rememberRoom(roomGoneFrom,%20roomGoneInto);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D);%0Avar%20Elements;%0A(function%20(Elements)%20%7B%0A%20%20%20%20var%20RoomHandler;%0A%20%20%20%20(function%20(RoomHandler)%20%7B%0A%20%20%20%20%20%20%20%20RoomHandler.currentRoomTab%20=%20document.getElementById(%22currentRoomTab%22);%0A%20%20%20%20%20%20%20%20RoomHandler.currentRoomDescription%20=%20document.getElementById(%22roomDescription%22);%0A%20%20%20%20%20%20%20%20RoomHandler.currentRoomExits%20=%20document.getElementById(%22roomExits%22);%0A%20%20%20%20%20%20%20%20RoomHandler.currentRoomName%20=%20document.createTextNode(%22%22);%0A%20%20%20%20%20%20%20%20document.getElementById(%22roomName%22).appendChild(RoomHandler.currentRoomName);%0A%20%20%20%20%20%20%20%20function%20linkObjects()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20objs%20=%20RoomHandler.currentRoomTab.getElementsByClassName(%22roomObject%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20objs.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20linkKeyCode%20=%20Controls.KeyHandler.getFirstKeyCode();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Controls.KeyHandler.applyCode(objs[i],%20linkKeyCode);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20RoomHandler.linkObjects%20=%20linkObjects;%0A%20%20%20%20%20%20%20%20function%20emptyRoom()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20while%20(RoomHandler.currentRoomDescription.firstChild)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20RoomHandler.currentRoomDescription.removeChild(RoomHandler.currentRoomDescription.firstChild);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20while%20(RoomHandler.currentRoomExits.firstChild)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20RoomHandler.currentRoomExits.removeChild(RoomHandler.currentRoomExits.firstChild);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20RoomHandler.currentRoomName.nodeValue%20=%20%22%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20RoomHandler.emptyRoom%20=%20emptyRoom;%0A%20%20%20%20%20%20%20%20async%20function%20updateRoom()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20emptyRoom();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20room%20=%20WorldState.player.getRoom();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(room%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20RoomHandler.currentRoomName.nodeValue%20=%20room.getPrintedName();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20description%20=%20room.description.getHTML(%22p%22,%20[%22roomDescription%22]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20description.then(value%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200,%20p%20=%20value[i];%20p%20!=%20undefined;%20p%20=%20value[++i])%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20RoomHandler.currentRoomDescription.appendChild(p);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20things%20=%20room.getContainedAndVisible();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(things.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20thingList%20=%20document.createElement(%22p%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20thingList.classList.add(%22roomDescription%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20RoomHandler.PrintingVisibleThingsRulebook.execute(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20noun:%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20things:%20things,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20container:%20thingList%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20RoomHandler.currentRoomDescription.appendChild(thingList);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20index%20=%200,%20value%20=%20room.connections[index];%20index%20%3C%20room.connections.length;%20value%20=%20room.connections[++index])%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(value%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20p%20=%20document.createElement(%22p%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20p.classList.add(%22roomExit%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20link%20=%20document.createElement(%22a%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20link.classList.add(%22roomDirection%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20link.appendChild(document.createTextNode(DirectionNames[Direction[index]]));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Controls.Links.makeLink(link,%20new%20ActionGo(WorldState.player,%20index));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Controls.KeyHandler.applyCode(link,%20Controls.KeyHandler.getDirectionCodeByIndex(index));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20p.appendChild(link);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20directionResult%20=%20%22:%20%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(WorldState.isRoomRemembered(value))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20directionResult%20+=%20value.getPrintedName();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20directionResult%20+=%20%22A%20new%20place%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20p.appendChild(document.createTextNode(directionResult));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20RoomHandler.currentRoomExits.appendChild(p);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20RoomHandler.updateRoom%20=%20updateRoom;%0A%20%20%20%20%20%20%20%20RoomHandler.PrintingVisibleThingsRulebook%20=%20new%20Rulebook(%22Printing%20the%20name%20of%20visible%20things%20in%20a%20room%22);%0A%20%20%20%20%20%20%20%20RoomHandler.PrintIntroToVisibleThingsRule%20=%20new%20Rule(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20name:%20%22Print%20%5C%22You%20can%20see%5C%22%20text%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGH,%0A%20%20%20%20%20%20%20%20%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20noun%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20noun.container.appendChild(document.createTextNode(%22You%20can%20see%20%22));%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20RoomHandler.PrintingVisibleThingsRulebook.addRule(RoomHandler.PrintIntroToVisibleThingsRule);%0A%20%20%20%20%20%20%20%20RoomHandler.PrintVisibleThingsRule%20=%20new%20Rule(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20name:%20%22Print%20all%20visible%20things%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20code:%20async%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20noun%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20noun.things.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20value%20=%20noun.things[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20link%20=%20document.createElement(%22a%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20link.classList.add(%22roomObject%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20say;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(value%20instanceof%20Thing%20&&%20value.unique)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say%20=%20new%20Say(new%20SayThe(false),%20value);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say%20=%20new%20Say(new%20SayAn(false),%20value);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20say.getPureElements().then(value2%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200,%20element%20=%20value2[i];%20element%20!=%20undefined;%20element%20=%20value2[++i])%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20link.appendChild(element);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Controls.Links.makeLink(link,%20new%20ActionExamine(WorldState.player,%20value));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Controls.KeyHandler.applyCode(link,%20Controls.KeyHandler.getFirstKeyCode());%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20noun.container.appendChild(link);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20((i%20+%201)%20%3C%20noun.things.length)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20noun.container.appendChild(document.createTextNode(%22,%20%22));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20RoomHandler.PrintingVisibleThingsRulebook.addRule(RoomHandler.PrintVisibleThingsRule);%0A%20%20%20%20%20%20%20%20RoomHandler.PrintOutroToVisibleThingsRule%20=%20new%20Rule(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20name:%20%22Print%20%5C%22...%20here%5C%22%20text%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_LOW,%0A%20%20%20%20%20%20%20%20%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20noun%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20noun.container.appendChild(document.createTextNode(%22%20here.%22));%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20RoomHandler.PrintingVisibleThingsRulebook.addRule(RoomHandler.PrintOutroToVisibleThingsRule);%0A%20%20%20%20%7D)(RoomHandler%20=%20Elements.RoomHandler%20%7C%7C%20(Elements.RoomHandler%20=%20%7B%7D));%0A%7D)(Elements%20%7C%7C%20(Elements%20=%20%7B%7D));%0Aclass%20CoinPouch%20extends%20Thing%20%7B%0A%20%20%20%20constructor(options)%20%7B%0A%20%20%20%20%20%20%20%20super(options);%0A%20%20%20%20%20%20%20%20this.coins%20=%200;%0A%20%20%20%20%20%20%20%20this.addGetAlterations((purse)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20coins:%20purse.getCoins()%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.addSetAlterations((purse,%20changeObj)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20purse.coins%20=%20(changeObj.coins);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20addCoins(coins)%20%7B%0A%20%20%20%20%20%20%20%20this.coins%20+=%20coins;%0A%20%20%20%20%7D%0A%20%20%20%20removeCoins(coins)%20%7B%0A%20%20%20%20%20%20%20%20this.coins%20-=%20coins;%0A%20%20%20%20%7D%0A%20%20%20%20getCoins()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.coins;%0A%20%20%20%20%7D%0A%20%20%20%20getShiny()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.coins%20%3E%200;%0A%20%20%20%20%7D%0A%7D%0ACoinPouch.carryOutTakingCoinPouches%20=%20new%20Rule(%7B%0A%20%20%20%20name:%20%22Carry%20out%20taking%20coin%20pouches%22,%0A%20%20%20%20firstPriority:%20ActionTake.defaultCarryTakingRule.firstPriority,%0A%20%20%20%20priority:%20ActionTake.defaultCarryTakingRule.priority%20+%201,%0A%20%20%20%20code:%20async%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20let%20actor%20=%20action.actor;%0A%20%20%20%20%20%20%20%20let%20thing%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20let%20actorPouches%20=%20Thing.CarryRelation.getRightType(actor,%20CoinPouch);%0A%20%20%20%20%20%20%20%20if%20(actorPouches.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20thingCoins%20=%20thing.getCoins();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(thingCoins%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rulebook.skipRule(ActionTake.defaultCarryTakingRule);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20actorPouches[0].addCoins(thingCoins);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20thing.removeCoins(thing.getCoins());%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22You%20empty%20%22,%20new%20SayThe(),%20thing,%20%22%20into%20your%20%22,%20actorPouches[0],%20%22.%20Your%20%22,%20actorPouches[0],%20%22%20now%20has%20%22%20+%20actorPouches[0].getCoins().toString()%20+%20%22%20coins.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(new%20SayThe(),%20actor,%20%22%20empties%20%22,%20new%20SayThe(),%20thing,%20%22%20into%20%22,%20Say.hisHersIts(actor),%20actorPouches[0],%20%22.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20myCoins%20=%20actorPouches[0].getCoins();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20actorPouches[0].removeCoins(myCoins);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20thing.addCoins(myCoins);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22You%20empty%20your%20%22,%20actorPouches[0],%20%22%20into%20%22,%20new%20SayThe(),%20thing,%20%22.%22,%20Say.PARAGRAPH_BREAK);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20drop%20=%20new%20ActionDrop(actor,%20actorPouches[0]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20drop.execute();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(Thing.EnclosedRelation.getLeft(actorPouches[0])%20==%20actor)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22You%20can't%20get%20rid%20of%20your%20%22,%20actorPouches[0],%20%22!%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D,%0A%20%20%20%20conditions:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20return%20(rulebook.noun.getNoun(0)%20instanceof%20CoinPouch);%0A%20%20%20%20%7D%0A%7D);%0AActionTake.carry.addRule(CoinPouch.carryOutTakingCoinPouches);%0ASay.afterPrinting.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Include%20contents%20of%20Coin%20Pouch%20while%20Printing%20Visible%20Things%20in%20a%20Room%22,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20say%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20let%20pouch%20=%20say.currentNoun;%0A%20%20%20%20%20%20%20%20say.currentNounElements.push(document.createTextNode(%22%20with%20%22%20+%20pouch.getCoins().toString()%20+%20%22%20coins%22));%0A%20%20%20%20%7D,%0A%20%20%20%20conditions:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20return%20Elements.RoomHandler.PrintingVisibleThingsRulebook.isRunning()%0A%20%20%20%20%20%20%20%20%20%20%20%20&&%20rulebook.noun.currentNoun%20instanceof%20CoinPouch%0A%20%20%20%20%20%20%20%20%20%20%20%20&&%20rulebook.noun.currentNoun.getCoins()%20%3E%200;%0A%20%20%20%20%7D%0A%7D));%0AActionExamine.carry.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Print%20description%20of%20coins%20in%20Coin%20Pouch%22,%0A%20%20%20%20firstPriority:%20ActionExamine.PrintDescriptionOfExaminedThingRule.firstPriority,%0A%20%20%20%20priority:%20ActionExamine.PrintDescriptionOfExaminedThingRule.priority%20-%201,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20let%20thing%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20if%20(thing.getCoins()%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22%20There%20are%20%22%20+%20thing.getCoins().toString()%20+%20%22%20coins%20in%20it.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22%20There%20are%20no%20coins%20in%20it.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D,%0A%20%20%20%20conditions:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20return%20(rulebook.noun.getNoun(0)%20instanceof%20CoinPouch);%0A%20%20%20%20%7D%0A%7D));%0Avar%20Elements;%0A(function%20(Elements)%20%7B%0A%20%20%20%20var%20InventoryHandler;%0A%20%20%20%20(function%20(InventoryHandler)%20%7B%0A%20%20%20%20%20%20%20%20var%20container%20=%20document.getElementById(%22inventoryTarget%22);%0A%20%20%20%20%20%20%20%20function%20empty()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20while%20(container.firstChild)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20container.removeChild(container.firstChild);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20function%20printHeader(header)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20p%20=%20document.createElement(%22p%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20p.classList.add(%22inventoryHeader%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20p.appendChild(document.createTextNode(header%20+%20%22:%22));%0A%20%20%20%20%20%20%20%20%20%20%20%20container.appendChild(p);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20currentRow;%0A%20%20%20%20%20%20%20%20InventoryHandler.LinkingThing%20=%20new%20Rulebook(%22Inventory%20-%20Links%20for%20a%20Thing%22);%0A%20%20%20%20%20%20%20%20function%20printThingLink(shortcut,%20action)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20nameLink%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20nameLink.classList.add(%22inventoryLink%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20nameLink.appendChild(document.createTextNode(shortcut));%0A%20%20%20%20%20%20%20%20%20%20%20%20currentRow.appendChild(nameLink);%0A%20%20%20%20%20%20%20%20%20%20%20%20Controls.Links.makeLink(nameLink,%20action);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20InventoryHandler.printThingLink%20=%20printThingLink;%0A%20%20%20%20%20%20%20%20async%20function%20printThing(thing)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20currentRow%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20currentRow.classList.add(%22inventoryRow%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20nameLink%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20nameLink.classList.add(%22inventoryLink%22,%20%22name%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20nameLink.appendChild(document.createTextNode(thing.getPrintedName()));%0A%20%20%20%20%20%20%20%20%20%20%20%20currentRow.appendChild(nameLink);%0A%20%20%20%20%20%20%20%20%20%20%20%20Controls.Links.makeLink(nameLink,%20new%20ActionExamine(WorldState.player,%20thing));%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20InventoryHandler.LinkingThing.execute(%7B%20noun:%20thing%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20container.appendChild(currentRow);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20function%20thingSort(a,%20b)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20na%20=%20a.getPrintedName().toLowerCase();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20nb%20=%20b.getPrintedName().toLowerCase();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(na%20%3C%20nb)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20-1;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(na%20%3E%20nb)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%201;%0A%20%20%20%20%20%20%20%20%20%20%20%20return%200;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20InventoryHandler.thingSort%20=%20thingSort;%0A%20%20%20%20%20%20%20%20async%20function%20updateInventory()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20player%20=%20WorldState.player;%0A%20%20%20%20%20%20%20%20%20%20%20%20empty();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20wielded%20=%20Thing.WieldRelation.getRight(player).sort(thingSort);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20worn%20=%20Thing.WearRelation.getRight(player).sort(thingSort);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20carried%20=%20Thing.CarryRelation.getRight(player).sort(thingSort);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(wielded.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20printHeader(%22Wielded%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20wielded.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20printThing(wielded[i]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(worn.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20printHeader(%22Worn%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20worn.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20printThing(worn[i]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(carried.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20printHeader(%22Carried%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20carried.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20printThing(carried[i]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20pouch%20=%20Thing.CarryRelation.getRightType(WorldState.player,%20CoinPouch);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(pouch.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20p%20=%20document.createElement(%22p%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20p.classList.add(%22inventoryGold%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20s;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(pouch[0].getCoins()%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20s%20=%20new%20Say(%22There%20are%20%22%20+%20pouch[0].getCoins().toString()%20+%20%22%20coins%20in%20your%20%22,%20pouch[0],%20%22.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20s%20=%20new%20Say(%22There%20are%20no%20coins%20in%20your%20%22,%20pouch[0],%20%22.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20s.getPureElements().then(elements%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20elements.forEach(element%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20p.appendChild(element);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20container.appendChild(p);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20InventoryHandler.updateInventory%20=%20updateInventory;%0A%20%20%20%20%7D)(InventoryHandler%20=%20Elements.InventoryHandler%20%7C%7C%20(Elements.InventoryHandler%20=%20%7B%7D));%0A%7D)(Elements%20%7C%7C%20(Elements%20=%20%7B%7D));%0Aclass%20ActionRetrace%20extends%20Action%20%7B%0A%20%20%20%20constructor(actor,%20...nouns)%20%7B%0A%20%20%20%20%20%20%20%20super(actor,%20...nouns);%0A%20%20%20%20%20%20%20%20this.requiresNoun%20=%20false;%0A%20%20%20%20%20%20%20%20this.requiresVisibility%20=%20false;%0A%20%20%20%20%20%20%20%20this.requiresTurn%20=%20false;%0A%20%20%20%20%7D%0A%20%20%20%20getCommandText()%20%7B%0A%20%20%20%20%20%20%20%20let%20name;%0A%20%20%20%20%20%20%20%20if%20(typeof%20this.getNoun(0)%20==%20%22number%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20name%20=%20DirectionNames[Direction[this.getNoun(0)]];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(this.getNoun(0)%20instanceof%20Room)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20name%20=%20this.getNoun(0).getPrintedName();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20%22think%20about%20how%20to%20get%20to%20%22%20+%20name;%0A%20%20%20%20%7D%0A%7D%0AActionRetrace.check%20=%20new%20Rulebook(%22Check%20Retracing%22);%0AActionRetrace.carry%20=%20new%20Rulebook(%22Carry%20out%20Retracing%22);%0AActionRetrace.check.addRule(new%20Rule(%7B%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20priority:%20Rule.PRIORITY_HIGH,%0A%20%20%20%20name:%20%22Change%20Room%20to%20Direction%22,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20if%20(action.getNoun(0)%20instanceof%20Room)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20actor%20=%20action.actor;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20cRoom%20=%20actor.getRoom();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(cRoom%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20dRoom%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(cRoom%20==%20dRoom)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(actor.isPlayer())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22You%20are%20already%20there!%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.stop();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20code;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20code%20=%20(room)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20WorldState.isRoomRemembered(room);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20direction%20=%20cRoom.bestDirectionTo(dRoom,%20code);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(direction%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(actor.isPlayer())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22You%20don't%20remember%20how%20to%20get%20there.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.setNoun(0,%20direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0AActionRetrace.carry.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Retracing%20-%20Find%20Direction%22,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20action.say.add(%22To%20get%20there,%20you%20should%20go%20%22%20+%20DirectionNames[Direction[action.getNoun(0)]]%20+%20%22.%22);%0A%20%20%20%20%7D%0A%7D));%0Avar%20Elements;%0A(function%20(Elements)%20%7B%0A%20%20%20%20var%20RememberedHandler;%0A%20%20%20%20(function%20(RememberedHandler)%20%7B%0A%20%20%20%20%20%20%20%20var%20mapTarget%20=%20document.getElementById(%22mapTarget%22);%0A%20%20%20%20%20%20%20%20var%20lastMap;%0A%20%20%20%20%20%20%20%20var%20elements;%0A%20%20%20%20%20%20%20%20function%20empty()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20elements%20=%20%7B%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20lastMap%20=%20undefined;%0A%20%20%20%20%20%20%20%20%20%20%20%20while%20(mapTarget.firstChild)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mapTarget.removeChild(mapTarget.firstChild);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20RememberedHandler.empty%20=%20empty;%0A%20%20%20%20%20%20%20%20async%20function%20updateMap()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20//Rulebook.getIndentation()%20+%20%22[MAP]%20Creating%20Map%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20regions%20=%20Region.InRelation.getAllLeftType(WorldState.player.getRoom(),%20RegionRandom);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20biggestRegion%20=%20regions[regions.length%20-%201];%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(biggestRegion%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20empty();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(biggestRegion.map%20!=%20lastMap)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20empty();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20updateOldMap();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20map%20=%20biggestRegion.map;%0A%20%20%20%20%20%20%20%20%20%20%20%20lastMap%20=%20map;%0A%20%20%20%20%20%20%20%20%20%20%20%20map.updateAllLimits();%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20y%20=%20map.highestY;%20y%20%3E=%20map.lowestY;%20y--)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20row%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20row.classList.add(%22mapRow%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20x%20=%20map.lowestX;%20x%20%3C=%20map.highestX;%20x++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20room%20=%20map.getRoom(x,%20y);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20roomNode%20=%20new%20RoomNode(room);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20roomNode.createRoomNameFloater();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20roomDiv%20=%20roomNode.getElement();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20row.appendChild(roomDiv);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20elements[x.toString()%20+%20%22;%22%20+%20y.toString()]%20=%20roomNode;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mapTarget.appendChild(row);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20updateOldMap();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20RememberedHandler.updateMap%20=%20updateMap;%0A%20%20%20%20%20%20%20%20async%20function%20updateOldMap()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20map%20=%20lastMap;%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20y%20=%20map.highestY;%20y%20%3E=%20map.lowestY;%20y--)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20x%20=%20map.lowestX;%20x%20%3C=%20map.highestX;%20x++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20elements[x.toString()%20+%20%22;%22%20+%20y.toString()].update();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20RememberedHandler.updateOldMap%20=%20updateOldMap;%0A%20%20%20%20%7D)(RememberedHandler%20=%20Elements.RememberedHandler%20%7C%7C%20(Elements.RememberedHandler%20=%20%7B%7D));%0A%7D)(Elements%20%7C%7C%20(Elements%20=%20%7B%7D));%0Avar%20Debug;%0A(function%20(Debug)%20%7B%0A%20%20%20%20function%20knowdewae()%20%7B%0A%20%20%20%20%20%20%20%20let%20map%20=%20new%20MapNote(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20name:%20%22De%20Wae%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20description:%20%22This%20map%20shows%20de%20wae%20all%20de%20wae%20to%20Zimbabwe.%22%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20map.addRoom(...Region.RegionRoom.getAnyRightType(RoomRandom));%0A%20%20%20%20%20%20%20%20WorldState.player.setCarried(map);%0A%20%20%20%20%7D%0A%20%20%20%20Debug.knowdewae%20=%20knowdewae;%0A%20%20%20%20function%20hurt(target,%20amount)%20%7B%0A%20%20%20%20%20%20%20%20let%20bp;%0A%20%20%20%20%20%20%20%20if%20(target%20instanceof%20Person)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20bp%20=%20target.getPart(HumanoidTorso);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(bp%20==%20undefined)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(target%20instanceof%20Bodypart)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20bp%20=%20target;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20bp.changeSoreness(amount);%0A%20%20%20%20%7D%0A%20%20%20%20Debug.hurt%20=%20hurt;%0A%20%20%20%20function%20goTo(str)%20%7B%0A%20%20%20%20%7D%0A%20%20%20%20Debug.goTo%20=%20goTo;%0A%7D)(Debug%20%7C%7C%20(Debug%20=%20%7B%7D));%0Aclass%20AI%20%7B%0A%20%20%20%20constructor(options)%20%7B%0A%20%20%20%20%20%20%20%20this.wanderer%20=%20true;%0A%20%20%20%20%20%20%20%20this.wanderChance%20=%2050;%0A%20%20%20%20%20%20%20%20this.picksShinies%20=%20true;%0A%20%20%20%20%20%20%20%20this.extraRules%20=%20[];%0A%20%20%20%20%20%20%20%20this.extraCombatRules%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20key%20in%20options)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this[key]%20=%20options[key];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20async%20execute(actor)%20%7B%0A%20%20%20%20%20%20%20%20let%20promise;%0A%20%20%20%20%20%20%20%20if%20(promise%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20promise%20=%20AI.combatRules.execute(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20noun:%20actor%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D,%20...this.extraCombatRules);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20promise%20=%20AI.rules.execute(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20noun:%20actor%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D,%20...this.extraRules);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20result%20=%20await%20promise;%0A%20%20%20%20%20%20%20%20return%20result;%0A%20%20%20%20%7D%0A%20%20%20%20addRulesBook(...books)%20%7B%0A%20%20%20%20%20%20%20%20this.extraRules.push(...books);%0A%20%20%20%20%20%20%20%20arrayUnique(this.extraRules);%0A%20%20%20%20%7D%0A%20%20%20%20addCombatRulesBook(...books)%20%7B%0A%20%20%20%20%20%20%20%20this.extraCombatRules.push(...books);%0A%20%20%20%20%20%20%20%20arrayUnique(this.extraCombatRules);%0A%20%20%20%20%7D%0A%7D%0AAI.rules%20=%20new%20Rulebook(%22Default%20AI%20Rules%22);%0AAI.combatRules%20=%20new%20Rulebook(%22Default%20AI%20Combat%20Rules%22);%0Avar%20AIRules;%0A(function%20(AIRules)%20%7B%0A%20%20%20%20AIRules.PRIORITY_ACTING_ON_SITUATION%20=%205;%0A%20%20%20%20AIRules.PRIORITY_ACTING_ON_PLACE%20=%203;%0A%20%20%20%20AIRules.PRIORITY_ACTING_ON_IDLE%20=%201;%0A%7D)(AIRules%20%7C%7C%20(AIRules%20=%20%7B%7D));%0Aclass%20PersonStat%20%7B%0A%20%20%20%20constructor(id,%20description)%20%7B%0A%20%20%20%20%20%20%20%20this.defaultValue%20=%200;%0A%20%20%20%20%20%20%20%20this.maxValue%20=%2010;%0A%20%20%20%20%20%20%20%20this.id%20=%20id;%0A%20%20%20%20%20%20%20%20this.description%20=%20description%20==%20undefined%20?%20%22Not%20defined%22%20:%20description;%0A%20%20%20%20%7D%0A%20%20%20%20getDescription(value)%20%7B%0A%20%20%20%20%20%20%20%20if%20(typeof%20this.description%20==%20%22string%22%20%7C%7C%20this.description%20instanceof%20Say)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.description;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.description(value);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0Aclass%20Attribute%20extends%20PersonStat%20%7B%0A%20%20%20%20constructor(id,%20description,%20defValue,%20maxValue)%20%7B%0A%20%20%20%20%20%20%20%20super(id,%20description);%0A%20%20%20%20%20%20%20%20this.defaultValue%20=%202;%0A%20%20%20%20%20%20%20%20this.maxValue%20=%205;%0A%20%20%20%20%20%20%20%20if%20(defValue%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.defaultValue%20=%20defValue;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(maxValue%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.maxValue%20=%20maxValue;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20Attribute.Attributes[id]%20=%20this;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getAttributes()%20%7B%0A%20%20%20%20%20%20%20%20let%20attributes%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20key%20in%20Attribute.Attributes)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20attributes.push(Attribute.Attributes[key]);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20attributes;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getAttribute(id)%20%7B%0A%20%20%20%20%20%20%20%20return%20Attribute.Attributes[id];%0A%20%20%20%20%7D%0A%7D%0AAttribute.Attributes%20=%20%7B%7D;%0Avar%20Attributes;%0A(function%20(Attributes)%20%7B%0A%20%20%20%20Attributes.Strength%20=%20new%20Attribute(%22Strength%22,%20value%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20switch%20(value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%205:%20return%20%22Hercules'%20Bigger%20Cousin%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20case%204:%20return%20(%22Circus%20Strong%22%20+%20(WorldState.player.isMale()%20?%20%22man%22%20:%20%22woman%22));%0A%20%20%20%20%20%20%20%20%20%20%20%20case%203:%20return%20%22Beach%20Bully%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20case%202:%20return%20(%22Average%20%22%20+%20(WorldState.player.isMale()%20?%20%22Joe%22%20:%20%22Jane%22));%0A%20%20%20%20%20%20%20%20%20%20%20%20case%201:%20return%20%22Wet%20Noodle%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20default:%20return%20%22Out%20of%20bounds.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%20%20%20%20Attributes.Agility%20=%20new%20Attribute(%22Agility%22,%20value%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20switch%20(value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%205:%20return%20%22Catlike%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20case%204:%20return%20%22Gymnast%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20case%203:%20return%20%22Accurate%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20case%202:%20return%20%22Common%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20case%201:%20return%20%22Accident-prone%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20default:%20return%20%22Out%20of%20bounds.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%20%20%20%20Attributes.Intelligence%20=%20new%20Attribute(%22Intelligence%22,%20value%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20switch%20(value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%205:%20return%20%22Genius%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20case%204:%20return%20%22Gifted%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20case%203:%20return%20%22Knowledgeable%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20case%202:%20return%20%22Normal%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20case%201:%20return%20%22Door%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20default:%20return%20%22Out%20of%20bounds.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%20%20%20%20Attributes.Charm%20=%20new%20Attribute(%22Charm%22,%20value%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20switch%20(value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%205:%20return%20(WorldState.player.isMale()%20?%20%22Casanova%22%20:%20%22Seductress%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20case%204:%20return%20%22Diplomat%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20case%203:%20return%20(%22Cheery%20Sales%22%20+%20(WorldState.player.isMale()%20?%20%22man%22%20:%20%22woman%22));%0A%20%20%20%20%20%20%20%20%20%20%20%20case%202:%20return%20%22Not%20even%20trying%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20case%201:%20return%20%22Unpleasant%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20default:%20return%20%22Out%20of%20bounds.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%20%20%20%20Attributes.Corruption%20=%20new%20Attribute(%22Corruption%22,%20value%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20return%20%22Not%20defined%22;%0A%20%20%20%20%7D,%200,%20100);%0A%20%20%20%20Attributes.GenderIdentity%20=%20new%20Attribute(%22Gender%20Identity%22,%20value%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20if%20(value%20%3E=%2075)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22You%20strongly%20feel,%20and%20act,%20like%20a%20woman.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(value%20%3E=%2060)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22You%20feel,%20and%20act,%20like%20a%20woman.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(value%20%3E=%2040)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22You%20don't%20feel%20nor%20act%20like%20any%20particular%20gender.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(value%20%3E=%2020)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22You%20feel,%20and%20act,%20like%20a%20man.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22You%20strongly%20feel,%20and%20act,%20like%20a%20man.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D,%2050,%20100);%0A%20%20%20%20Attributes.Degeneration%20=%20new%20Attribute(%22Degeneration%22,%20value%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20if%20(value%20%3E=%2075)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22Sex%20is%20about%20the%20only%20thing%20on%20your%20mind,%20and%20you%20don't%20even%20try%20to%20hide%20it%20anymore.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(value%20%3E=%2060)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22Sometimes%20you%20can't%20hide%20how%20naughty%20you'd%20like%20to%20be.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(value%20%3E=%2040)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(value%20%3E=%2020)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22Your%20composure%20is%20prudish%20and%20calm.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22You%20have%20the%20composure%20of%20a%20saint.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D,%2030,%20100);%0A%7D)(Attributes%20%7C%7C%20(Attributes%20=%20%7B%7D));%0Aclass%20Skill%20extends%20PersonStat%20%7B%0A%20%20%20%20constructor(id,%20description)%20%7B%0A%20%20%20%20%20%20%20%20super(id,%20description);%0A%20%20%20%20%20%20%20%20this.defaultValue%20=%200;%0A%20%20%20%20%20%20%20%20this.maxValue%20=%205;%0A%20%20%20%20%20%20%20%20Skill.Skills[id]%20=%20this;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getSkills()%20%7B%0A%20%20%20%20%20%20%20%20let%20skills%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20key%20in%20Skill.Skills)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20skills.push(Skill.Skills[key]);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20skills.sort((a,%20b)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20na%20=%20a.id.toUpperCase();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20nb%20=%20b.id.toUpperCase();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(na%20%3E%20nb)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%201;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(na%20%3C%20nb)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20-1;%0A%20%20%20%20%20%20%20%20%20%20%20%20return%200;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20skills;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getSkill(id)%20%7B%0A%20%20%20%20%20%20%20%20return%20Skill.Skills[id];%0A%20%20%20%20%7D%0A%7D%0ASkill.Skills%20=%20%7B%7D;%0Avar%20Skills;%0A(function%20(Skills)%20%7B%0A%20%20%20%20Skills.Survival%20=%20new%20Skill(%22Survival%22,%20(value)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20switch%20(value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%205:%20return%20%22%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20case%204:%20return%20%22%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20case%203:%20return%20%22%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20case%202:%20return%20%22%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20case%201:%20return%20%22Alert%20Chihuahua%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%7D)(Skills%20%7C%7C%20(Skills%20=%20%7B%7D));%0Aclass%20Container%20extends%20Thing%20%7B%0A%20%20%20%20put(...things)%20%7B%0A%20%20%20%20%7D%0A%7D%0Aclass%20Corpse%20extends%20Container%20%7B%0A%7D%0Aclass%20Person%20extends%20Thing%20%7B%0A%20%20%20%20constructor(options)%20%7B%0A%20%20%20%20%20%20%20%20super(options);%0A%20%20%20%20%20%20%20%20this.AI%20=%20new%20AI(%7B%7D);%0A%20%20%20%20%20%20%20%20this.animated%20=%20true;%0A%20%20%20%20%20%20%20%20this.soreness%20=%200;%0A%20%20%20%20%20%20%20%20this.lastHealthUpdate%20=%200;%0A%20%20%20%20%20%20%20%20this.stamina%20=%2010;%0A%20%20%20%20%20%20%20%20this.lastStaminaUpdate%20=%200;%0A%20%20%20%20%20%20%20%20this.staminaPerTurn%20=%201;%0A%20%20%20%20%20%20%20%20this.attributeValue%20=%20%7B%7D;%0A%20%20%20%20%20%20%20%20this.skillValue%20=%20%7B%7D;%0A%20%20%20%20%20%20%20%20this.addGetAlterations((person)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(person.isPlayer())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Stats:%20this.attributeValue,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Skills:%20this.skillValue%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.addSetAlterations((person,%20changes)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(person.isPlayer())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(changes.Stats%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20name%20in%20changes.Stats)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20attr%20=%20Attribute.getAttribute(name);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(attr%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.setStat(attr,%20changes.Stats[name]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(changes.Skills%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20name%20in%20changes.Skills)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20attr%20=%20Skill.getSkill(name);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(attr%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.setSkill(attr,%20changes.Skills[name]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20changeHealth(n)%20%7B%0A%20%20%20%20%20%20%20%20let%20bodyparts%20=%20this.getParts(Bodypart);%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20bodyparts.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20bodyparts[i].changeSoreness(n);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.updateHealth();%0A%20%20%20%20%7D%0A%20%20%20%20getHealthOnScale()%20%7B%0A%20%20%20%20%20%20%20%20return%20Math.round(((this.getHealth()%20*%2010)%20/%20(this.getStat(Attributes.Strength)%20*%202)));%0A%20%20%20%20%7D%0A%20%20%20%20getHealth(important)%20%7B%0A%20%20%20%20%20%20%20%20if%20(important%20===%20true%20%7C%7C%20this.lastHealthUpdate%20!=%20WorldState.getCurrentTurn())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.updateHealth();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20this.soreness%20/%20(this.getStat(Attributes.Strength)%20*%20Person.STRENGTH_SORENESS_MULTIPLIER);%0A%20%20%20%20%7D%0A%20%20%20%20updateHealth()%20%7B%0A%20%20%20%20%20%20%20%20let%20health%20=%200;%0A%20%20%20%20%20%20%20%20let%20bodyparts%20=%20this.getParts(Bodypart);%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20bodyparts.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20health%20+=%20bodyparts[i].getWeightedSoreness();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.soreness%20=%20health;%0A%20%20%20%20%20%20%20%20this.lastHealthUpdate%20=%20WorldState.getCurrentTurn();%0A%20%20%20%20%7D%0A%20%20%20%20changeStamina(n)%20%7B%0A%20%20%20%20%20%20%20%20this.updateStamina();%0A%20%20%20%20%20%20%20%20this.stamina%20+=%20n;%0A%20%20%20%20%20%20%20%20if%20(this.stamina%20%3E%20Person.MAX_STAMINA)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.stamina%20=%20Person.MAX_STAMINA;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(this.stamina%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.stamina%20=%200;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getStaminaOnScale()%20%7B%0A%20%20%20%20%20%20%20%20return%20Math.round(((this.stamina%20*%2010)%20/%20Person.MAX_STAMINA));%0A%20%20%20%20%7D%0A%20%20%20%20updateStamina()%20%7B%0A%20%20%20%20%20%20%20%20var%20nTurns%20=%20WorldState.getCurrentTurn()%20-%20this.lastStaminaUpdate;%0A%20%20%20%20%20%20%20%20this.stamina%20+=%20this.staminaPerTurn%20*%20nTurns;%0A%20%20%20%20%20%20%20%20if%20(this.stamina%20%3E%20Person.MAX_STAMINA)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.stamina%20=%20Person.MAX_STAMINA;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20isPlayer()%20%7B%0A%20%20%20%20%20%20%20%20return%20this%20==%20WorldState.player;%0A%20%20%20%20%7D%0A%20%20%20%20getStat(stat)%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.attributeValue[stat.id]%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.attributeValue[stat.id]%20=%20stat.defaultValue;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20this.attributeValue[stat.id];%0A%20%20%20%20%7D%0A%20%20%20%20setStat(stat,%20value)%20%7B%0A%20%20%20%20%20%20%20%20this.attributeValue[stat.id]%20=%20value;%0A%20%20%20%20%7D%0A%20%20%20%20getSkill(stat)%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.skillValue[stat.id]%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.skillValue[stat.id]%20=%20stat.defaultValue;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20this.skillValue[stat.id];%0A%20%20%20%20%7D%0A%20%20%20%20setSkill(stat,%20value)%20%7B%0A%20%20%20%20%20%20%20%20this.skillValue[stat.id]%20=%20value;%0A%20%20%20%20%7D%0A%20%20%20%20die()%20%7B%0A%20%20%20%20%20%20%20%20let%20corpse%20=%20new%20Corpse(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20name:%20this.name%20+%20%22's%20corpse%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20unique:%20false,%0A%20%20%20%20%20%20%20%20%20%20%20%20description:%20new%20Say(%22The%20lifeless%20body%20of%20%22,%20this,%20%22.%20May%20%22,%20new%20SayHeSheIt(this),%20%22%20rest%20in%20peace.%22)%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20corpse.put(...Thing.CarryRelation.getRight(this));%0A%20%20%20%20%20%20%20%20corpse.put(...Thing.WearRelation.getRight(this));%0A%20%20%20%20%20%20%20%20this.getRoom().place(corpse);%0A%20%20%20%20%20%20%20%20OutOfPlay.removeFromPlay(this);%0A%20%20%20%20%7D%0A%7D%0APerson.MAX_STAMINA%20=%2010;%0APerson.STRENGTH_SORENESS_MULTIPLIER%20=%204;%0Avar%20EveryTurn;%0A(function%20(EveryTurn_1)%20%7B%0A%20%20%20%20EveryTurn_1.EveryTurn%20=%20new%20Rulebook(%22Every%20Turn%22);%0A%20%20%20%20EveryTurn_1.RunAIRule%20=%20EveryTurn_1.EveryTurn.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20name:%20%22Run%20NPC%20AI%20Rule%22,%0A%20%20%20%20%20%20%20%20code:%20async%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20function%20isAIAvailable(person)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20(person%20!=%20WorldState.player%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20&&%20((person.getRoom()%20instanceof%20RoomRandom%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20&&%20person.getRoom().placed)));%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20people%20=%20Thing.InsideRoomRelation.getAnyRightType(Person).filter(isAIAvailable);%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20people.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20action%20=%20await%20people[i].AI.execute(people[i]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20person%20=%20people[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20visible%20=%20people[i].isVisibleTo(WorldState.player);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(action%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20printValue%20=%20await%20action.execute();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20((visible%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20person.isVisibleTo(WorldState.player))%20&&%20printValue%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.printAsContent(printValue);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%20%20%20%20EveryTurn_1.incrementTurnCounterRule%20=%20EveryTurn_1.EveryTurn.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20%20%20%20%20priority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20%20%20%20%20name:%20%22Increment%20Turn%20Counter%22,%0A%20%20%20%20%20%20%20%20code:%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20WorldState.incrementWorldTurn();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%7D)(EveryTurn%20%7C%7C%20(EveryTurn%20=%20%7B%7D));%0Avar%20Direction;%0A(function%20(Direction)%20%7B%0A%20%20%20%20Direction[Direction[%22NORTH%22]%20=%200]%20=%20%22NORTH%22;%0A%20%20%20%20Direction[Direction[%22NORTHEAST%22]%20=%201]%20=%20%22NORTHEAST%22;%0A%20%20%20%20Direction[Direction[%22EAST%22]%20=%202]%20=%20%22EAST%22;%0A%20%20%20%20Direction[Direction[%22SOUTHEAST%22]%20=%203]%20=%20%22SOUTHEAST%22;%0A%20%20%20%20Direction[Direction[%22SOUTH%22]%20=%204]%20=%20%22SOUTH%22;%0A%20%20%20%20Direction[Direction[%22SOUTHWEST%22]%20=%205]%20=%20%22SOUTHWEST%22;%0A%20%20%20%20Direction[Direction[%22WEST%22]%20=%206]%20=%20%22WEST%22;%0A%20%20%20%20Direction[Direction[%22NORTHWEST%22]%20=%207]%20=%20%22NORTHWEST%22;%0A%20%20%20%20Direction[Direction[%22UP%22]%20=%208]%20=%20%22UP%22;%0A%20%20%20%20Direction[Direction[%22DOWN%22]%20=%209]%20=%20%22DOWN%22;%0A%7D)(Direction%20%7C%7C%20(Direction%20=%20%7B%7D));%0Avar%20DirectionNames%20=%20(()%20=%3E%20%7B%0A%20%20%20%20let%20names;%0A%20%20%20%20(function%20(names)%20%7B%0A%20%20%20%20%20%20%20%20names[%22NORTH%22]%20=%20%22North%22;%0A%20%20%20%20%20%20%20%20names[%22SOUTH%22]%20=%20%22South%22;%0A%20%20%20%20%20%20%20%20names[%22EAST%22]%20=%20%22East%22;%0A%20%20%20%20%20%20%20%20names[%22WEST%22]%20=%20%22West%22;%0A%20%20%20%20%20%20%20%20names[%22SOUTHEAST%22]%20=%20%22Southeast%22;%0A%20%20%20%20%20%20%20%20names[%22NORTHWEST%22]%20=%20%22Northwest%22;%0A%20%20%20%20%20%20%20%20names[%22SOUTHWEST%22]%20=%20%22Southwest%22;%0A%20%20%20%20%20%20%20%20names[%22NORTHEAST%22]%20=%20%22Northeast%22;%0A%20%20%20%20%20%20%20%20names[%22UP%22]%20=%20%22Down%22;%0A%20%20%20%20%20%20%20%20names[%22DOWN%22]%20=%20%22Up%22;%0A%20%20%20%20%7D)(names%20%7C%7C%20(names%20=%20%7B%7D));%0A%20%20%20%20;%0A%20%20%20%20let%20obj%20=%20%7B%7D;%0A%20%20%20%20for%20(let%20name%20in%20names)%20%7B%0A%20%20%20%20%20%20%20%20obj[name]%20=%20names[name];%0A%20%20%20%20%20%20%20%20obj[Direction[name]]%20=%20names[name];%0A%20%20%20%20%7D%0A%20%20%20%20return%20obj;%0A%7D)();%0Avar%20OppositeDirection%20=%20(()%20=%3E%20%7B%0A%20%20%20%20let%20obj%20=%20%7B%7D;%0A%20%20%20%20obj[Direction.NORTH]%20=%20Direction.SOUTH;%0A%20%20%20%20obj[Direction.SOUTH]%20=%20Direction.NORTH;%0A%20%20%20%20obj[Direction.EAST]%20=%20Direction.WEST;%0A%20%20%20%20obj[Direction.WEST]%20=%20Direction.EAST;%0A%20%20%20%20obj[Direction.SOUTHEAST]%20=%20Direction.NORTHWEST;%0A%20%20%20%20obj[Direction.NORTHWEST]%20=%20Direction.SOUTHEAST;%0A%20%20%20%20obj[Direction.SOUTHWEST]%20=%20Direction.NORTHEAST;%0A%20%20%20%20obj[Direction.NORTHEAST]%20=%20Direction.SOUTHWEST;%0A%20%20%20%20obj[Direction.UP]%20=%20Direction.DOWN;%0A%20%20%20%20obj[Direction.DOWN]%20=%20Direction.UP;%0A%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20Object.keys(Direction).length%20/%202;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20obj[Direction[i]]%20=%20obj[i];%0A%20%20%20%20%7D%0A%20%20%20%20return%20obj;%0A%7D)();%0Aclass%20Room%20%7B%0A%20%20%20%20constructor(id,%20fodder)%20%7B%0A%20%20%20%20%20%20%20%20this.description%20=%20new%20Say();%0A%20%20%20%20%20%20%20%20this.name%20=%20id%20==%20undefined%20?%20%22Room%22%20:%20id;%0A%20%20%20%20%20%20%20%20this.connections%20=%20new%20Array(Room.DIRECTIONS.length);%0A%20%20%20%20%20%20%20%20this.fodder%20=%20fodder;%0A%20%20%20%20%20%20%20%20if%20(fodder%20!=%20true)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Room.addRoom(this);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getName()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.name;%0A%20%20%20%20%7D%0A%20%20%20%20place(thing)%20%7B%0A%20%20%20%20%20%20%20%20Thing.InsideRoomRelation.setRelation(this,%20thing);%0A%20%20%20%20%7D%0A%20%20%20%20remove(thing)%20%7B%0A%20%20%20%20%20%20%20%20if%20(Thing.InsideRoomRelation.getLeft(thing)%20==%20this)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Thing.InsideRoomRelation.unsetRight(thing);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getContained()%20%7B%0A%20%20%20%20%20%20%20%20return%20Thing.InsideRoomRelation.getRight(this);%0A%20%20%20%20%7D%0A%20%20%20%20getContainedAndVisibleTo(observer)%20%7B%0A%20%20%20%20%20%20%20%20let%20contained%20=%20this.getContained();%0A%20%20%20%20%20%20%20%20let%20result%20=%20[];%0A%20%20%20%20%20%20%20%20contained.forEach((value)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(value.visible%20&&%20value%20!==%20observer)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20result.push(value);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20result;%0A%20%20%20%20%7D%0A%20%20%20%20getContainedAndVisible()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getContainedAndVisibleTo(WorldState.player);%0A%20%20%20%20%7D%0A%20%20%20%20mapRoom(r,%20direction)%20%7B%0A%20%20%20%20%20%20%20%20let%20oppositeDirection%20=%20OppositeDirection[direction];%0A%20%20%20%20%20%20%20%20if%20(this.connections[direction]%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.warn(%22Replacing%20a%20connected%20room.%22,%20this,%20%22%20connected%20through%20%22,%20direction,%20%22%20to%20%22,%20this.connections[direction]);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.connections[direction].unmapRoom(oppositeDirection);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.connections[direction]%20=%20r;%0A%20%20%20%20%20%20%20%20if%20(r.connections[oppositeDirection]%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.warn(%22Replacing%20a%20connected%20room.%22,%20r,%20%22%20connected%20through%20%22,%20oppositeDirection,%20%22%20to%20%22,%20r.connections[oppositeDirection]);%0A%20%20%20%20%20%20%20%20%20%20%20%20r.unmapRoom(oppositeDirection);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20r.connections[oppositeDirection]%20=%20this;%0A%20%20%20%20%7D%0A%20%20%20%20unmapRoom(direction)%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.connections[direction]%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20r%20=%20this.connections[direction];%0A%20%20%20%20%20%20%20%20%20%20%20%20this.connections[direction]%20=%20undefined;%0A%20%20%20%20%20%20%20%20%20%20%20%20r.unmapRoom(OppositeDirection[direction]);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getPrintedName()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.name;%0A%20%20%20%20%7D%0A%20%20%20%20getConnectedRooms()%20%7B%0A%20%20%20%20%20%20%20%20let%20rooms%20=%20[];%0A%20%20%20%20%20%20%20%20this.connections.forEach(room%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(room%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rooms.push(room);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20rooms;%0A%20%20%20%20%7D%0A%20%20%20%20bestDirectionTo(room,%20validityCode)%20%7B%0A%20%20%20%20%20%20%20%20if%20(validityCode%20==%20undefined)%0A%20%20%20%20%20%20%20%20%20%20%20%20validityCode%20=%20()%20=%3E%20%7B%20return%20true;%20%7D;%0A%20%20%20%20%20%20%20%20let%20maxSteps%20=%2010;%0A%20%20%20%20%20%20%20%20maxSteps%20=%20maxSteps%20%3E%20WorldState.getMaximumRememberedRooms()%20?%20maxSteps%20:%20WorldState.getMaximumRememberedRooms();%0A%20%20%20%20%20%20%20%20let%20recursiveBestPath%20=%20(cPath,%20cRoom,%20destination)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!validityCode(cRoom))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(cRoom%20==%20destination)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20maxSteps%20=%20maxSteps%20%3E%20cPath.length%20?%20cPath.length%20:%20maxSteps;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20cPath;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(cPath.length%20%3E%20maxSteps)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20undefined;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20paths%20=%20[];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20index%20in%20Room.DIRECTIONS)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20direction%20=%20Room.DIRECTIONS[index];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20nextRoom%20=%20cRoom.connections[direction];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(nextRoom%20!=%20undefined%20&&%20cPath.indexOf(nextRoom)%20==%20-1%20&&%20validityCode(nextRoom))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20path%20=%20recursiveBestPath(cPath.concat([nextRoom]),%20nextRoom,%20destination);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(path%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20paths.push(path);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20shortestIndex%20=%200;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20paths.forEach((value,%20index,%20array)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(value.length%20%3C%20paths[shortestIndex].length)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20shortestIndex%20=%20index;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20paths[shortestIndex];%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20let%20paths%20=%20Array(Room.DIRECTIONS.length);%0A%20%20%20%20%20%20%20%20let%20shortestIndex;%0A%20%20%20%20%20%20%20%20for%20(let%20index%20in%20Room.DIRECTIONS)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20direction%20=%20Room.DIRECTIONS[index];%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20nextRoom%20=%20this.connections[direction];%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(nextRoom%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20paths[direction]%20=%20recursiveBestPath([this,%20nextRoom],%20nextRoom,%20room);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(paths[direction]%20!=%20undefined%20&&%20(shortestIndex%20==%20undefined%20%7C%7C%20paths[shortestIndex].length%20%3E%20paths[direction].length))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20shortestIndex%20=%20direction;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20shortestIndex;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getDirectionXYZ(direction)%20%7B%0A%20%20%20%20%20%20%20%20var%20y%20=%200;%0A%20%20%20%20%20%20%20%20if%20([Direction.NORTH,%20Direction.NORTHEAST,%20Direction.NORTHWEST].indexOf(direction)%20!=%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20y%20=%201;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20([Direction.SOUTH,%20Direction.SOUTHEAST,%20Direction.SOUTHWEST].indexOf(direction)%20!=%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20y%20=%20-1;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20var%20x%20=%200;%0A%20%20%20%20%20%20%20%20if%20([Direction.EAST,%20Direction.SOUTHEAST,%20Direction.NORTHEAST].indexOf(direction)%20!=%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20x%20=%201;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20([Direction.WEST,%20Direction.SOUTHWEST,%20Direction.NORTHWEST].indexOf(direction)%20!=%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20x%20=%20-1;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20var%20z%20=%20direction%20==%20Direction.UP%20?%201%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20direction%20==%20Direction.DOWN%20?%20-1%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%200;%0A%20%20%20%20%20%20%20%20return%20[x,%20y,%20z];%0A%20%20%20%20%7D%0A%20%20%20%20static%20shift(coordinates,%20direction)%20%7B%0A%20%20%20%20%20%20%20%20let%20coordinatesVector%20=%20Room.getDirectionXYZ(direction);%0A%20%20%20%20%20%20%20%20coordinates.forEach((value,%20index,%20array)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20coordinatesVector[index]%20+=%20coordinates[index];%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20coordinatesVector;%0A%20%20%20%20%7D%0A%20%20%20%20static%20addRoom(room)%20%7B%0A%20%20%20%20%20%20%20%20Room.rooms[room.name]%20=%20room;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getRooms()%20%7B%0A%20%20%20%20%20%20%20%20let%20rooms%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20name%20in%20Room.rooms)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20rooms.push(Room.rooms[name]);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20rooms;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getRoom(id)%20%7B%0A%20%20%20%20%20%20%20%20return%20Room.rooms[id];%0A%20%20%20%20%7D%0A%7D%0ARoom.DIRECTIONS%20=%20(()%20=%3E%20%7B%0A%20%20%20%20let%20directions%20=%20[];%0A%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20Object.keys(Direction).length%20/%202;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20directions.push(i);%0A%20%20%20%20%7D%0A%20%20%20%20return%20directions;%0A%7D)();%0ARoom.rooms%20=%20%7B%7D;%0Avar%20OutOfPlay;%0A(function%20(OutOfPlay)%20%7B%0A%20%20%20%20OutOfPlay.Heaven%20=%20new%20Room(%22__Heaven__RIP__%22);%0A%20%20%20%20function%20removeFromPlay(thing)%20%7B%0A%20%20%20%20%20%20%20%20OutOfPlay.Heaven.place(thing);%0A%20%20%20%20%7D%0A%20%20%20%20OutOfPlay.removeFromPlay%20=%20removeFromPlay;%0A%7D)(OutOfPlay%20%7C%7C%20(OutOfPlay%20=%20%7B%7D));%0Avar%20PlayBegins;%0A(function%20(PlayBegins)%20%7B%0A%20%20%20%20PlayBegins.rulebook%20=%20new%20Rulebook(%22Play%20Begins%22);%0A%20%20%20%20PlayBegins.LOAD_FAILED%20=%20false;%0A%20%20%20%20let%20startingRoom;%0A%20%20%20%20function%20execute()%20%7B%0A%20%20%20%20%20%20%20%20PlayBegins.rulebook.execute(%7B%7D);%0A%20%20%20%20%7D%0A%20%20%20%20PlayBegins.execute%20=%20execute;%0A%20%20%20%20function%20setStartingRoom(room)%20%7B%0A%20%20%20%20%20%20%20%20if%20(startingRoom%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.warn(%22[InitialRoom]%20Multiple%20requests%20for%20starting%20room,%20please%20check.%22,%20startingRoom,%20room);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20startingRoom%20=%20room;%0A%20%20%20%20%7D%0A%20%20%20%20PlayBegins.setStartingRoom%20=%20setStartingRoom;%0A%20%20%20%20PlayBegins.PutPlayerIntoFirstRoom%20=%20PlayBegins.rulebook.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20name:%20%22Place%20player%20into%20initial%20room%22,%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20%20%20%20%20priority:%20Rule.PRIORITY_MEDIUM,%0A%20%20%20%20%20%20%20%20code:%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(WorldState.player.getRoom()%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//Rulebook.getIndentation()%20+%20%22[InitialRoom]%20Player%20already%20in%20a%20room.%22,%20WorldState.player.getRoom());%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20startingRoom.place(WorldState.player);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%20%20%20%20PlayBegins.RunEmptyTurnSequenceRule%20=%20new%20Rule(%7B%0A%20%20%20%20%20%20%20%20name:%20%22Run%20Empty%20Turn%20Sequence%20Rule%22,%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20%20%20%20%20priority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20%20%20%20%20code:%20(rulebook2)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20TurnSequence.execute();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%20%20%20%20PlayBegins.rulebook.addRule(PlayBegins.RunEmptyTurnSequenceRule);%0A%7D)(PlayBegins%20%7C%7C%20(PlayBegins%20=%20%7B%7D));%0Avar%20MachineBegins;%0A(function%20(MachineBegins)%20%7B%0A%20%20%20%20MachineBegins.RunPlayBegins%20=%20MachineBegins.rulebook.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_LOW,%0A%20%20%20%20%20%20%20%20name:%20%22Run%20Play%20Begins%22,%0A%20%20%20%20%20%20%20%20code:%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20PlayBegins.execute();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%7D)(MachineBegins%20%7C%7C%20(MachineBegins%20=%20%7B%7D));%0Avar%20Tests;%0A(function%20(Tests)%20%7B%0A%20%20%20%20Tests.MIN_DICE%20=%200;%0A%20%20%20%20Tests.MAX_DICE%20=%203;%0A%20%20%20%20function%20rollDice()%20%7B%0A%20%20%20%20%20%20%20%20return%20Math.floor(Math.random()%20*%20(Tests.MAX_DICE%20-%20Tests.MIN_DICE))%20+%201%20+%20Tests.MIN_DICE;%0A%20%20%20%20%7D%0A%20%20%20%20Tests.rollDice%20=%20rollDice;%0A%20%20%20%20function%20test(attr,%20difficulty)%20%7B%0A%20%20%20%20%20%20%20%20return%20(attr%20+%20rollDice())%20%3E=%20difficulty;%0A%20%20%20%20%7D%0A%20%20%20%20Tests.test%20=%20test;%0A%7D)(Tests%20%7C%7C%20(Tests%20=%20%7B%7D));%0Aclass%20MapNote%20extends%20Thing%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.rooms%20=%20[];%0A%20%20%20%20%20%20%20%20this.regions%20=%20[];%0A%20%20%20%20%7D%0A%20%20%20%20addRoom(...rooms)%20%7B%0A%20%20%20%20%20%20%20%20rooms.forEach((room)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.rooms.push(room);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20addRegion(...regions)%20%7B%0A%20%20%20%20%20%20%20%20regions.forEach(region%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.regions.push(region);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20contains(room)%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.rooms.indexOf(room)%20!=%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(var%20i%20=%200;%20i%20%3C%20this.regions.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.regions[i].getRooms().indexOf(room)%20!=%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0Aclass%20Bodypart%20extends%20Thing%20%7B%0A%20%20%20%20constructor(options)%20%7B%0A%20%20%20%20%20%20%20%20super(options);%0A%20%20%20%20%20%20%20%20this.sorenessWeight%20=%201;%0A%20%20%20%20%20%20%20%20this.soreness%20=%200;%0A%20%20%20%20%20%20%20%20this.sorenessPerTurn%20=%200.05;%0A%20%20%20%20%20%20%20%20this.lastSorenessUpdate%20=%200;%0A%20%20%20%20%20%20%20%20this.slots%20=%20[];%0A%20%20%20%20%20%20%20%20this.visibleSlots%20=%20[];%0A%20%20%20%20%20%20%20%20this.genderValue%20=%20Bodypart.GENDER_MEDIUM_ANDROGYNE;%0A%20%20%20%20%20%20%20%20this.genderWeight%20=%201;%0A%20%20%20%20%20%20%20%20this.sluttiness%20=%2010;%0A%20%20%20%20%20%20%20%20this.sluttinessWeight%20=%20Bodypart.WEIGHT_LOWEST;%0A%20%20%20%20%20%20%20%20this.addGetAlterations((bp)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Soreness:%20bp.soreness,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20GenderValue:%20bp.genderValue,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Sluttiness:%20bp.getSluttiness()%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.addSetAlterations((bp,%20changes)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.soreness%20=%20changes.Soreness;%0A%20%20%20%20%20%20%20%20%20%20%20%20this.genderValue%20=%20changes.GenderValue;%0A%20%20%20%20%20%20%20%20%20%20%20%20this.sluttiness%20=%20changes.Sluttiness;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20updateSoreness()%20%7B%0A%20%20%20%20%20%20%20%20let%20cTurn%20=%20WorldState.getCurrentTurn();%0A%20%20%20%20%20%20%20%20if%20(cTurn%20%3E%20this.lastSorenessUpdate)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.soreness%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.soreness%20-=%20(this.sorenessPerTurn%20*%20(cTurn%20-%20this.lastSorenessUpdate));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.soreness%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.soreness%20=%200;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.lastSorenessUpdate%20=%20cTurn;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20changeSoreness(soreness)%20%7B%0A%20%20%20%20%20%20%20%20this.updateSoreness();%0A%20%20%20%20%20%20%20%20this.soreness%20+=%20soreness;%0A%20%20%20%20%20%20%20%20if%20(this.soreness%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.soreness%20=%200;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getSoreness()%20%7B%0A%20%20%20%20%20%20%20%20this.updateSoreness();%0A%20%20%20%20%20%20%20%20return%20this.soreness;%0A%20%20%20%20%7D%0A%20%20%20%20getWeightedSoreness()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getSoreness()%20*%20this.sorenessWeight;%0A%20%20%20%20%7D%0A%20%20%20%20getSorenessWeight()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.sorenessWeight;%0A%20%20%20%20%7D%0A%20%20%20%20getGenderWeight()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.slots.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%200;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20this.genderWeight%20*%20(this.visibleSlots.length%20/%20this.slots.length);%0A%20%20%20%20%7D%0A%20%20%20%20getGenderValue()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.genderValue;%0A%20%20%20%20%7D%0A%20%20%20%20getWeightedGenderValue()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getGenderValue()%20*%20this.getGenderWeight();%0A%20%20%20%20%7D%0A%20%20%20%20getSluttiness()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.sluttiness;%0A%20%20%20%20%7D%0A%20%20%20%20getSluttinessWeight()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.slots.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%200;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20this.sluttinessWeight%20*%20(this.visibleSlots.length%20/%20this.slots.length);%0A%20%20%20%20%7D%0A%20%20%20%20getWeightedSluttinessValue()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getSluttiness()%20*%20this.getSluttinessWeight();%0A%20%20%20%20%7D%0A%20%20%20%20updateVisibility()%20%7B%0A%20%20%20%20%20%20%20%20this.visibleSlots%20=%20this.slots.slice(0);%0A%20%20%20%20%20%20%20%20let%20parent%20=%20Thing.PartRelation.getLeft(this);%0A%20%20%20%20%20%20%20%20if%20(parent%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20clothing%20=%20Thing.WearRelation.getRight(parent);%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20clothing.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20covering%20=%20clothing[i].getCoveringSlots();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20k%20=%200;%20k%20%3C%20covering.length;%20k++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20idx%20=%20this.visibleSlots.indexOf(covering[k]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(idx%20%3E=%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.visibleSlots.splice(idx,%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.visibleSlots.length%20==%200)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20isUncovered()%20%7B%0A%20%20%20%20%20%20%20%20this.updateVisibility();%0A%20%20%20%20%20%20%20%20return%20this.visibleSlots.length%20==%20this.slots.length%20&&%20this.slots.length%20%3E%200;%0A%20%20%20%20%7D%0A%20%20%20%20updateStatus()%20%7B%0A%20%20%20%20%20%20%20%20this.updateVisibility();%0A%20%20%20%20%7D%0A%20%20%20%20static%20getSoreness(thing)%20%7B%0A%20%20%20%20%20%20%20%20let%20bodyparts%20=%20Thing.PartRelation.getRightType(thing,%20Bodypart);%0A%20%20%20%20%20%20%20%20let%20soreness%20=%200;%0A%20%20%20%20%20%20%20%20bodyparts.forEach((bodypart)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20soreness%20+=%20bodypart.getWeightedSoreness();%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20soreness;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getGenderValueOn(thing)%20%7B%0A%20%20%20%20%20%20%20%20let%20weight%20=%200;%0A%20%20%20%20%20%20%20%20let%20value%20=%200;%0A%20%20%20%20%20%20%20%20let%20bodyparts%20=%20Thing.PartRelation.getRightType(thing,%20Bodypart);%0A%20%20%20%20%20%20%20%20bodyparts.forEach((bodypart)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20weight%20+=%20bodypart.getGenderWeight();%0A%20%20%20%20%20%20%20%20%20%20%20%20value%20+=%20bodypart.getWeightedGenderValue();%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20weight:%20weight,%0A%20%20%20%20%20%20%20%20%20%20%20%20value:%20value%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getSluttinessValueOn(thing)%20%7B%0A%20%20%20%20%20%20%20%20let%20weight%20=%200;%0A%20%20%20%20%20%20%20%20let%20value%20=%200;%0A%20%20%20%20%20%20%20%20let%20bodyparts%20=%20Thing.PartRelation.getRightType(thing,%20Bodypart);%0A%20%20%20%20%20%20%20%20bodyparts.forEach((bodypart)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20weight%20+=%20bodypart.getSluttinessWeight();%0A%20%20%20%20%20%20%20%20%20%20%20%20value%20+=%20bodypart.getWeightedSluttinessValue();%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20weight:%20weight,%0A%20%20%20%20%20%20%20%20%20%20%20%20value:%20value%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%7D%0A%20%20%20%20arrangeGenderValue(genderValue)%20%7B%0A%20%20%20%20%20%20%20%20this.genderValue%20=%20genderValue;%0A%20%20%20%20%20%20%20%20this.getPartOne().invalidateCaches();%0A%20%20%20%20%7D%0A%20%20%20%20increaseFemininity(amount)%20%7B%0A%20%20%20%20%20%20%20%20let%20currentGV%20=%20this.getGenderValue();%0A%20%20%20%20%20%20%20%20this.arrangeGenderValue(currentGV%20+%20(5%20*%20amount));%0A%20%20%20%20%7D%0A%20%20%20%20increaseMasculinity(amount)%20%7B%0A%20%20%20%20%20%20%20%20let%20currentGV%20=%20this.getGenderValue();%0A%20%20%20%20%20%20%20%20this.arrangeGenderValue(currentGV%20-%20(5%20*%20amount));%0A%20%20%20%20%7D%0A%7D%0ABodypart.WEIGHT_LOWEST%20=%201;%0ABodypart.WEIGHT_LOW%20=%203;%0ABodypart.WEIGHT_MEDIUM%20=%205;%0ABodypart.WEIGHT_HIGH%20=%207;%0ABodypart.WEIGHT_HIGHEST%20=%209;%0ABodypart.SLUTTINESS_LOWEST_SAINTLY%20=%200;%0ABodypart.SLUTTINESS_LOW_PRUDE%20=%2025;%0ABodypart.SLUTTINESS_MEDIUM_AVERAGE%20=%2050;%0ABodypart.SLUTTINESS_HIGH_SLUT%20=%2075;%0ABodypart.SLUTTINESS_HIGHEST_WHORE%20=%20100;%0ABodypart.GENDER_LOWEST_MANLIEST%20=%200;%0ABodypart.GENDER_LOW_MANLY%20=%2025;%0ABodypart.GENDER_MEDIUM_ANDROGYNE%20=%2050;%0ABodypart.GENDER_HIGH_FEMININE%20=%2075;%0ABodypart.GENDER_HIGHEST_FEMININEST%20=%20100;%0Aclass%20SexStick%20extends%20Bodypart%20%7B%0A%20%20%20%20getWide()%20%7B%0A%20%20%20%20%20%20%20%20return%20new%20Measure();%0A%20%20%20%20%7D%0A%20%20%20%20getLong()%20%7B%0A%20%20%20%20%20%20%20%20return%20new%20Measure();%0A%20%20%20%20%7D%0A%7D%0Aclass%20SexHole%20extends%20Bodypart%20%7B%0A%7D%0Aclass%20Measure%20%7B%0A%20%20%20%20constructor(...sides)%20%7B%0A%20%20%20%20%20%20%20%20this.superscript%20=%20[%22%22,%20%22%22,%20%22%C2%B2%22,%20%22%C2%B3%22,%20%22%E2%81%B4%22,%20%22%E2%81%B5%22,%20%22%E2%81%B6%22,%20%22%E2%81%B7%22,%20%22%E2%81%B8%22,%20%22%E2%81%B9%22];%0A%20%20%20%20%20%20%20%20this.units%20=%201;%0A%20%20%20%20%20%20%20%20sides.forEach((side)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.units%20*=%20side;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.sides%20=%20sides.length;%0A%20%20%20%20%7D%0A%20%20%20%20getText()%20%7B%0A%20%20%20%20%20%20%20%20let%20meters%20=%20Math.pow(this.sides,%20100);%0A%20%20%20%20%20%20%20%20if%20(this.units%20%3E%20meters)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20(+(this.units%20/%20meters).toFixed(2)).toString()%20+%20%22m%22%20+%20this.superscript[this.sides];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.units.toString()%20+%20%22cm%22%20+%20this.superscript[this.sides];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getNumber()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.units;%0A%20%20%20%20%7D%0A%20%20%20%20getSides()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.sides;%0A%20%20%20%20%7D%0A%20%20%20%20static%20fromInches(inches)%20%7B%0A%20%20%20%20%20%20%20%20return%20inches%20*%202.54;%0A%20%20%20%20%7D%0A%20%20%20%20static%20fromFeet(feet)%20%7B%0A%20%20%20%20%20%20%20%20return%20feet%20*%2030.48;%0A%20%20%20%20%7D%0A%7D%0Aclass%20MeasureLiquid%20%7B%0A%20%20%20%20constructor(milliliters)%20%7B%0A%20%20%20%20%20%20%20%20this.units%20=%20milliliters;%0A%20%20%20%20%7D%0A%20%20%20%20getText()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.units%20%3E%201000)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20(+(this.units%20/%201000).toFixed(2)).toString()%20+%20%22L%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.units.toString()%20+%20%22mL%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20static%20fromLiters(liters)%20%7B%0A%20%20%20%20%20%20%20%20return%20liters%20*%201000;%0A%20%20%20%20%7D%0A%7D%0Aclass%20HumanoidArms%20extends%20Bodypart%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.sorenessWeight%20=%20Bodypart.WEIGHT_LOW;%0A%20%20%20%20%20%20%20%20this.genderWeight%20=%20Bodypart.WEIGHT_MEDIUM;%0A%20%20%20%20%20%20%20%20this.slots%20=%20[Humanoid.SLOT_ARMS];%0A%20%20%20%20%7D%0A%20%20%20%20get%20sluttinessWeight()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.getPartOne().isMale())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20Bodypart.WEIGHT_HIGHEST;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20Bodypart.WEIGHT_MEDIUM;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20set%20sluttinessWeight(val)%20%7B%20%7D%0A%20%20%20%20getSluttiness()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.getPartOne().isMale())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.getGenderValue();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20100%20-%20this.getGenderValue();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getDescription()%20%7B%0A%20%20%20%20%20%20%20%20let%20humanoid%20=%20this.getPartOne();%0A%20%20%20%20%20%20%20%20let%20str%20=%20humanoid.getStat(Attributes.Strength);%0A%20%20%20%20%20%20%20%20if%20(str%20%3E%204)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22Your%20arms%20and%20legs%20are%20ridiculously%20huge,%20showing%20off%20just%20how%20strong%20you%20are.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(str%20%3E%202)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22Your%20arms%20and%20legs%20are%20pretty%20big%20because%20of%20your%20muscles.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(str%20==%202)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22You%20look%20like%20you%20don't%20even%20lift.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getGenderValue()%20%7B%0A%20%20%20%20%20%20%20%20let%20humanoid%20=%20this.getPartOne();%0A%20%20%20%20%20%20%20%20let%20str%20=%20humanoid.getStat(Attributes.Strength);%0A%20%20%20%20%20%20%20%20return%2020%20*%20str;%0A%20%20%20%20%7D%0A%7D%0Aclass%20HumanoidBreasts%20extends%20Bodypart%20%7B%0A%20%20%20%20constructor(options)%20%7B%0A%20%20%20%20%20%20%20%20super(options);%0A%20%20%20%20%20%20%20%20this.size%20=%200;%0A%20%20%20%20%20%20%20%20this.silicone%20=%200;%0A%20%20%20%20%20%20%20%20this.milk%20=%200;%0A%20%20%20%20%20%20%20%20this.sorenessWeight%20=%20Bodypart.WEIGHT_MEDIUM;%0A%20%20%20%20%20%20%20%20this.genderWeight%20=%20Bodypart.WEIGHT_HIGH;%0A%20%20%20%20%20%20%20%20this.slots%20=%20[Humanoid.SLOT_BREASTS];%0A%20%20%20%20%20%20%20%20this.sluttiness%20=%20Bodypart.SLUTTINESS_HIGH_SLUT;%0A%20%20%20%20%20%20%20%20this.sluttinessWeight%20=%20Bodypart.WEIGHT_MEDIUM;%0A%20%20%20%20%20%20%20%20this.addGetAlterations((thing)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Size:%20this.size,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Silicone:%20this.silicone,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Milk:%20this.milk%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.addSetAlterations((thing,%20changes)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.size%20=%20changes.Size;%0A%20%20%20%20%20%20%20%20%20%20%20%20this.silicone%20=%20changes.Silicone;%0A%20%20%20%20%20%20%20%20%20%20%20%20this.milk%20=%20changes.Milk;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20getSize()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.size%20+%20this.silicone%20+%20this.milk;%0A%20%20%20%20%7D%0A%20%20%20%20getSizeText()%20%7B%0A%20%20%20%20%20%20%20%20return%20HumanoidBreasts.getSizeText(this.getSize());%0A%20%20%20%20%7D%0A%20%20%20%20static%20getSizeText(size)%20%7B%0A%20%20%20%20%20%20%20%20let%20names%20=%20[%22flat%22,%20%22AA-cup%22,%20%22A-cup%22,%20%22B-cup%22,%20%22C-cup%22,%20%22D-cup%22,%20%22E-cup%22,%20%22F-cup%22,%20%22G-cup%22,%20%22H-cup%22];%0A%20%20%20%20%20%20%20%20if%20(size%20%3E=%20names.length)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22HUGE%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20names[size];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getGenderValue()%20%7B%0A%20%20%20%20%20%20%20%20return%20HumanoidBreasts.getGenderFromSize(this.getSize());%0A%20%20%20%20%7D%0A%20%20%20%20getSluttiness()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getGenderValue();%0A%20%20%20%20%7D%0A%20%20%20%20static%20getGenderFromSize(size)%20%7B%0A%20%20%20%20%20%20%20%20if%20(size%20%3C=%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%2020;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(size%20%3C=%203)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%2020%20*%20size;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%2080;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20arrangeGenderValue(gv)%20%7B%0A%20%20%20%20%20%20%20%20if%20(gv%20%3C=%2020)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.size%20=%200;%0A%20%20%20%20%20%20%20%20%20%20%20%20this.silicone%20=%200;%0A%20%20%20%20%20%20%20%20%20%20%20%20this.milk%20=%200;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(gv%20%3C%2080)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.size%20=%20Math.round(gv%20/%2020);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.size%20=%204;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0Aclass%20HumanoidButt%20extends%20Bodypart%20%7B%0A%20%20%20%20constructor(options)%20%7B%0A%20%20%20%20%20%20%20%20super(options);%0A%20%20%20%20%20%20%20%20this.size%20=%200;%0A%20%20%20%20%20%20%20%20this.silicone%20=%200;%0A%20%20%20%20%20%20%20%20this.sorenessWeight%20=%20Bodypart.WEIGHT_MEDIUM;%0A%20%20%20%20%20%20%20%20this.genderWeight%20=%20Bodypart.WEIGHT_MEDIUM;%0A%20%20%20%20%20%20%20%20this.slots%20=%20[Humanoid.SLOT_BUTT];%0A%20%20%20%20%20%20%20%20this.sluttiness%20=%20Bodypart.SLUTTINESS_HIGH_SLUT;%0A%20%20%20%20%20%20%20%20this.sluttinessWeight%20=%20Bodypart.WEIGHT_MEDIUM;%0A%20%20%20%20%20%20%20%20this.addGetAlterations((thing)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Size:%20this.size,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Silicone:%20this.silicone%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.addSetAlterations((thing,%20changes)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.size%20=%20changes.Size;%0A%20%20%20%20%20%20%20%20%20%20%20%20this.silicone%20=%20changes.Silicone;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20getSluttiness()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getSize()%20*%2033;%0A%20%20%20%20%7D%0A%20%20%20%20getSize()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.size%20+%20this.silicone;%0A%20%20%20%20%7D%0A%20%20%20%20getSizeText()%20%7B%0A%20%20%20%20%20%20%20%20return%20HumanoidButt.getSizeText(this.getSize());%0A%20%20%20%20%7D%0A%20%20%20%20static%20getSizeText(size)%20%7B%0A%20%20%20%20%20%20%20%20let%20names%20=%20[%22flat%22,%20%22tiny%22,%20%22round%22,%20%22plump%22];%0A%20%20%20%20%20%20%20%20if%20(size%20%3E=%20names.length)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22gargantuan%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20names[size];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getGenderValue()%20%7B%0A%20%20%20%20%20%20%20%20return%20HumanoidBreasts.getGenderFromSize(this.getSize());%0A%20%20%20%20%7D%0A%20%20%20%20static%20getGenderFromSize(size)%20%7B%0A%20%20%20%20%20%20%20%20if%20(size%20%3C=%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%2020;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(size%20%3C=%202)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%2030%20*%20size;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%2080;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20arrangeGenderValue(gv)%20%7B%0A%20%20%20%20%20%20%20%20if%20(gv%20%3C=%2020)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.size%20=%200;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(gv%20%3C=%2060)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.size%20=%201;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.size%20=%203;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0Aclass%20HumanoidExtremity%20extends%20Bodypart%20%7B%0A%20%20%20%20constructor(options)%20%7B%0A%20%20%20%20%20%20%20%20super(options);%0A%20%20%20%20%20%20%20%20this.nailsPainted%20=%20false;%0A%20%20%20%20%20%20%20%20this.nailColor%20=%200;%0A%20%20%20%20%20%20%20%20this.addGetAlterations((thing)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Painted:%20this.nailsPainted,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Color:%20this.nailColor%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.addSetAlterations((thing,%20changes)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.nailsPainted%20=%20changes.Painted;%0A%20%20%20%20%20%20%20%20%20%20%20%20this.nailColor%20=%20changes.Color;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20static%20getColor(index)%20%7B%0A%20%20%20%20%20%20%20%20return%20HumanoidExtremity.nailColorNames[index];%0A%20%20%20%20%7D%0A%20%20%20%20getSluttiness()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getGenderValue();%0A%20%20%20%20%7D%0A%20%20%20%20getGenderValue()%20%7B%0A%20%20%20%20%20%20%20%20let%20nailPaintedCorrection%20=%20this.nailColor%20*%2050;%0A%20%20%20%20%20%20%20%20let%20nailPaintedCorrectionWeight%20=%20this.nailsPainted%20?%203%20:%200;%0A%20%20%20%20%20%20%20%20let%20gv%20=%20this.genderValue;%0A%20%20%20%20%20%20%20%20let%20gw%20=%20this.genderWeight;%0A%20%20%20%20%20%20%20%20return%20((gv%20*%20gw)%20+%20(nailPaintedCorrection%20*%20nailPaintedCorrectionWeight))%20/%20(gw%20+%20nailPaintedCorrectionWeight);%0A%20%20%20%20%7D%0A%20%20%20%20arrangeGenderValue(gv)%20%7B%0A%20%20%20%20%20%20%20%20this.genderValue%20=%20gv;%0A%20%20%20%20%20%20%20%20this.nailsPainted%20=%20gv%20%3E%2060;%0A%20%20%20%20%20%20%20%20if%20(this.nailsPainted)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(gv%20%3E%2070)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.nailColor%20=%202;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.nailColor%20=%201;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.getPartOne().invalidateCaches();%0A%20%20%20%20%7D%0A%7D%0AHumanoidExtremity.nailColorNames%20=%20['none',%20'red',%20'pink'];%0Aclass%20HumanoidFeet%20extends%20HumanoidExtremity%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.sorenessWeight%20=%20Bodypart.WEIGHT_LOW;%0A%20%20%20%20%20%20%20%20this.genderWeight%20=%20Bodypart.WEIGHT_LOW;%0A%20%20%20%20%20%20%20%20this.slots%20=%20[Humanoid.SLOT_FEET];%0A%20%20%20%20%7D%0A%20%20%20%20getDescription()%20%7B%0A%20%20%20%20%20%20%20%20let%20say%20=%20new%20Say();%0A%20%20%20%20%20%20%20%20if%20(this.genderValue%20%3E%2055)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22Your%20feet%20are%20small%20and%20cute.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(this.genderValue%20%3C%2045)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22Your%20feet%20are%20big%20and%20mannish.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(this.nailsPainted)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22%20Your%20toenails%20are%20painted%20%22%20+%20HumanoidExtremity.getColor(this.nailColor)%20+%20%22.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20say;%0A%20%20%20%20%7D%0A%7D%0Aclass%20HumanoidHands%20extends%20HumanoidExtremity%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.sorenessWeight%20=%20Bodypart.WEIGHT_LOW;%0A%20%20%20%20%20%20%20%20this.genderWeight%20=%20Bodypart.WEIGHT_MEDIUM;%0A%20%20%20%20%20%20%20%20this.slots%20=%20[Humanoid.SLOT_HANDS];%0A%20%20%20%20%7D%0A%20%20%20%20getDescription()%20%7B%0A%20%20%20%20%20%20%20%20let%20say%20=%20new%20Say();%0A%20%20%20%20%20%20%20%20if%20(this.genderValue%20%3E%2055)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22Your%20hands%20are%20delicate%20and%20slender.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(this.genderValue%20%3C%2045)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22Your%20hands%20are%20rough%20and%20large.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(this.nailsPainted)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22%20Your%20toenails%20are%20painted%20%22%20+%20HumanoidExtremity.getColor(this.nailColor)%20+%20%22.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20say;%0A%20%20%20%20%7D%0A%7D%0Aclass%20HumanoidHead%20extends%20Bodypart%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.sorenessWeight%20=%20Bodypart.WEIGHT_MEDIUM;%0A%20%20%20%20%20%20%20%20this.genderWeight%20=%20Bodypart.WEIGHT_LOW;%0A%20%20%20%20%20%20%20%20this.slots%20=%20[Humanoid.SLOT_HEADGEAR,%20Humanoid.SLOT_HAIR,%20Humanoid.SLOT_EARS,%20Humanoid.SLOT_FACE,%20Humanoid.SLOT_EYES,%20,%20Humanoid.SLOT_NOSE,%20Humanoid.SLOT_MOUTH];%0A%20%20%20%20%7D%0A%7D%0Aclass%20HumanoidPenis%20extends%20SexStick%20%7B%0A%20%20%20%20constructor(options)%20%7B%0A%20%20%20%20%20%20%20%20super(options);%0A%20%20%20%20%20%20%20%20this.sorenessWeight%20=%20Bodypart.WEIGHT_HIGH;%0A%20%20%20%20%20%20%20%20this.genderValue%20=%2025;%0A%20%20%20%20%20%20%20%20this.genderWeight%20=%20Bodypart.WEIGHT_HIGHEST;%0A%20%20%20%20%20%20%20%20this.slots%20=%20[Humanoid.SLOT_CROTCH_FRONT];%0A%20%20%20%20%20%20%20%20this.sluttiness%20=%20Bodypart.SLUTTINESS_HIGH_SLUT;%0A%20%20%20%20%20%20%20%20this.sluttinessWeight%20=%20Bodypart.WEIGHT_MEDIUM;%0A%20%20%20%20%20%20%20%20this.flaccidSize%20=%20new%20Measure(6);%0A%20%20%20%20%20%20%20%20this.flaccidWidth%20=%20new%20Measure(3);%0A%20%20%20%20%20%20%20%20this.erectSize%20=%20new%20Measure(15);%0A%20%20%20%20%20%20%20%20this.erectWidth%20=%20new%20Measure(6);%0A%20%20%20%20%20%20%20%20this.arousalMinimum%20=%205;%0A%20%20%20%20%20%20%20%20this.arousalErect%20=%2025;%0A%20%20%20%20%20%20%20%20if%20(Math.random()%20%3E=%200.5)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.flaccidMult%20=%200.33;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.flaccidMult%20=%200.77;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.addGetAlterations((thing)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20FSize:%20this.flaccidSize.getNumber(),%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20FWidth:%20this.flaccidWidth.getNumber(),%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ESize:%20this.erectSize.getNumber(),%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20EWidth:%20this.erectWidth.getNumber(),%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20AMin:%20this.arousalMinimum,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20AErect:%20this.arousalErect,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20FMult:%20this.flaccidMult%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.addSetAlterations((thing,%20changes)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.flaccidSize%20=%20new%20Measure(changes.FSize);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.flaccidWidth%20=%20new%20Measure(changes.FWidth);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.erectSize%20=%20new%20Measure(changes.ESize);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.erectWidth%20=%20new%20Measure(changes.EWidth);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.arousalMinimum%20=%20changes.AMin;%0A%20%20%20%20%20%20%20%20%20%20%20%20this.arousalErect%20=%20changes.AErect;%0A%20%20%20%20%20%20%20%20%20%20%20%20this.flaccidMult%20=%20changes.FMult;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20getSluttiness()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getBulgeSize()%20*%203;%0A%20%20%20%20%7D%0A%20%20%20%20isGrower()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.flaccidMult%20%3C%200.5;%0A%20%20%20%20%7D%0A%20%20%20%20getActualSize()%20%7B%0A%20%20%20%20%20%20%20%20let%20min%20=%20this.flaccidSize.getNumber();%0A%20%20%20%20%20%20%20%20let%20max%20=%20this.erectSize.getNumber();%0A%20%20%20%20%20%20%20%20let%20variableSize%20=%20(max%20-%20min);%0A%20%20%20%20%20%20%20%20let%20finalSize%20=%20min%20+%20(variableSize%20*%20this.getArousalPerc());%0A%20%20%20%20%20%20%20%20return%20finalSize;%0A%20%20%20%20%7D%0A%20%20%20%20isBig()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getBulgeSize()%20%3E%2022;%0A%20%20%20%20%7D%0A%20%20%20%20getArousalPerc()%20%7B%0A%20%20%20%20%20%20%20%20let%20arousal%20=%200;%0A%20%20%20%20%20%20%20%20let%20numSteps%20=%20this.arousalErect%20-%20this.arousalMinimum;%0A%20%20%20%20%20%20%20%20let%20arousalPerc%20=%20(arousal%20-%20this.arousalMinimum)%20/%20numSteps;%0A%20%20%20%20%20%20%20%20arousalPerc%20=%20arousalPerc%20%3C%200%20?%200%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20arousalPerc%20%3E%201%20?%201%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20arousalPerc;%0A%20%20%20%20%20%20%20%20return%20arousalPerc;%0A%20%20%20%20%7D%0A%20%20%20%20isFlaccid()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getArousalPerc()%20%3C%200.6;%0A%20%20%20%20%7D%0A%20%20%20%20isErect()%20%7B%0A%20%20%20%20%20%20%20%20return%20!this.isFlaccid();%0A%20%20%20%20%7D%0A%20%20%20%20getActualWidth()%20%7B%0A%20%20%20%20%20%20%20%20let%20min%20=%20this.flaccidWidth.getNumber();%0A%20%20%20%20%20%20%20%20let%20max%20=%20this.erectWidth.getNumber();%0A%20%20%20%20%20%20%20%20let%20variableSize%20=%20(max%20-%20min);%0A%20%20%20%20%20%20%20%20let%20numSteps%20=%20this.arousalErect%20-%20this.arousalMinimum;%0A%20%20%20%20%20%20%20%20let%20arousal%20=%200;%0A%20%20%20%20%20%20%20%20let%20arousalPerc%20=%20(arousal%20-%20this.arousalMinimum)%20/%20numSteps;%0A%20%20%20%20%20%20%20%20arousalPerc%20=%20arousalPerc%20%3C%200%20?%200%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20arousalPerc%20%3E%201%20?%201%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20arousalPerc;%0A%20%20%20%20%20%20%20%20let%20finalSize%20=%20min%20+%20(variableSize%20*%20arousalPerc);%0A%20%20%20%20%20%20%20%20return%20finalSize;%0A%20%20%20%20%7D%0A%20%20%20%20getLong()%20%7B%0A%20%20%20%20%20%20%20%20return%20new%20Measure(this.getActualSize());%0A%20%20%20%20%7D%0A%20%20%20%20getWide()%20%7B%0A%20%20%20%20%20%20%20%20return%20new%20Measure(this.getActualWidth());%0A%20%20%20%20%7D%0A%20%20%20%20getBulgeSize()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getActualSize()%20+%20(3%20*%20this.getActualWidth());%0A%20%20%20%20%7D%0A%20%20%20%20getSizeText()%20%7B%0A%20%20%20%20%20%20%20%20return%20HumanoidPenis.getSizeText(this.getBulgeSize());%0A%20%20%20%20%7D%0A%20%20%20%20static%20getSizeText(size)%20%7B%0A%20%20%20%20%20%20%20%20let%20sizeTable%20=%20[%0A%20%20%20%20%20%20%20%20%20%20%20%20[0,%20%22nonexistent%22],%0A%20%20%20%20%20%20%20%20%20%20%20%20[1,%20%22tiny%22],%0A%20%20%20%20%20%20%20%20%20%20%20%20[20,%20%22small%22],%0A%20%20%20%20%20%20%20%20%20%20%20%20[23,%20%22medium%22],%0A%20%20%20%20%20%20%20%20%20%20%20%20[27,%20%22big%22],%0A%20%20%20%20%20%20%20%20%20%20%20%20[32,%20%22huge%22],%0A%20%20%20%20%20%20%20%20%20%20%20%20[36,%20%22monstrous%22]%0A%20%20%20%20%20%20%20%20];%0A%20%20%20%20%20%20%20%20let%20i;%0A%20%20%20%20%20%20%20%20for%20(i%20=%201;%20i%20%3C%20sizeTable.length%20&&%20sizeTable[i][0]%20%3C%20size;%20i++)%20%7B%20%7D%0A%20%20%20%20%20%20%20%20return%20sizeTable[i%20-%201][1];%0A%20%20%20%20%7D%0A%20%20%20%20getGenderValue()%20%7B%0A%20%20%20%20%20%20%20%20let%20sizeTable%20=%20[%0A%20%20%20%20%20%20%20%20%20%20%20%20[10,%2060],%0A%20%20%20%20%20%20%20%20%20%20%20%20[20,%2045],%0A%20%20%20%20%20%20%20%20%20%20%20%20[23,%2035],%0A%20%20%20%20%20%20%20%20%20%20%20%20[27,%2028],%0A%20%20%20%20%20%20%20%20%20%20%20%20[32,%2024],%0A%20%20%20%20%20%20%20%20%20%20%20%20[36,%2018]%0A%20%20%20%20%20%20%20%20];%0A%20%20%20%20%20%20%20%20let%20i;%0A%20%20%20%20%20%20%20%20for%20(i%20=%201;%20i%20%3C%20sizeTable.length%20&&%20sizeTable[i][0]%20%3C%20this.getActualSize();%20i++)%20%7B%20%7D%0A%20%20%20%20%20%20%20%20return%20sizeTable[i%20-%201][1];%0A%20%20%20%20%7D%0A%20%20%20%20arrangeGenderValue(gv)%20%7B%0A%20%20%20%20%20%20%20%20let%20sizeTable%20=%20[%0A%20%20%20%20%20%20%20%20%20%20%20%20[60,%203,%202],%0A%20%20%20%20%20%20%20%20%20%20%20%20[45,%2010,%203],%0A%20%20%20%20%20%20%20%20%20%20%20%20[35,%2014,%203],%0A%20%20%20%20%20%20%20%20%20%20%20%20[28,%2017,%203],%0A%20%20%20%20%20%20%20%20%20%20%20%20[24,%2019,%204],%0A%20%20%20%20%20%20%20%20%20%20%20%20[18,%2022,%204.5]%0A%20%20%20%20%20%20%20%20];%0A%20%20%20%20%20%20%20%20let%20i;%0A%20%20%20%20%20%20%20%20for%20(i%20=%201;%20i%20%3C%20sizeTable.length%20&&%20sizeTable[i][0]%20%3E%20gv;%20i++)%20%7B%20%7D%0A%20%20%20%20%20%20%20%20this.flaccidSize%20=%20new%20Measure(this.flaccidMult%20*%20sizeTable[i%20-%201][1]);%0A%20%20%20%20%20%20%20%20this.flaccidWidth%20=%20new%20Measure(this.flaccidMult%20*%20sizeTable[i%20-%201][2]);%0A%20%20%20%20%20%20%20%20this.erectSize%20=%20new%20Measure(sizeTable[i%20-%201][1]);%0A%20%20%20%20%20%20%20%20this.erectWidth%20=%20new%20Measure(sizeTable[i%20-%201][2]);%0A%20%20%20%20%20%20%20%20this.getPartOne().invalidateCaches();%0A%20%20%20%20%7D%0A%20%20%20%20static%20getSynonym()%20%7B%0A%20%20%20%20%20%20%20%20let%20cockNames%20=%20[%0A%20%20%20%20%20%20%20%20%20%20%20%20%22cock%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22dick%22%0A%20%20%20%20%20%20%20%20];%0A%20%20%20%20%20%20%20%20return%20(new%20OneOf(OneOf.PURELY_AT_RANDOM,%20...cockNames).getOne());%0A%20%20%20%20%7D%0A%7D%0Aclass%20HumanoidSkin%20extends%20Bodypart%20%7B%0A%20%20%20%20constructor(options)%20%7B%0A%20%20%20%20%20%20%20%20super(options);%0A%20%20%20%20%20%20%20%20this.sorenessWeight%20=%200;%0A%20%20%20%20%20%20%20%20this.genderWeight%20=%20Bodypart.WEIGHT_MEDIUM;%0A%20%20%20%20%20%20%20%20this.slots%20=%20[%0A%20%20%20%20%20%20%20%20%20%20%20%20Humanoid.SLOT_FACE,%20Humanoid.SLOT_NECK,%20Humanoid.SLOT_SHOULDERS,%0A%20%20%20%20%20%20%20%20%20%20%20%20Humanoid.SLOT_ARMS,%20Humanoid.SLOT_HANDS,%20Humanoid.SLOT_UPPER_CHEST,%0A%20%20%20%20%20%20%20%20%20%20%20%20Humanoid.SLOT_MIDRIFF,%20Humanoid.SLOT_WAIST,%20Humanoid.SLOT_BACK,%0A%20%20%20%20%20%20%20%20%20%20%20%20Humanoid.SLOT_HIPS,%20Humanoid.SLOT_BUTT,%20Humanoid.SLOT_LEG_UPPER,%0A%20%20%20%20%20%20%20%20%20%20%20%20Humanoid.SLOT_LEG_LOWER%0A%20%20%20%20%20%20%20%20];%0A%20%20%20%20%20%20%20%20this.skinSoftness%20=%205;%0A%20%20%20%20%20%20%20%20this.skinHairiness%20=%202;%0A%20%20%20%20%20%20%20%20this.addGetAlterations((thing)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Softness:%20this.skinSoftness,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Hairiness:%20this.skinHairiness%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.addSetAlterations((thing,%20changes)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.skinSoftness%20=%20changes.Softness;%0A%20%20%20%20%20%20%20%20%20%20%20%20this.skinHairiness%20=%20changes.Hairiness;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20getSluttiness()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getGenderValue();%0A%20%20%20%20%7D%0A%20%20%20%20getDescription()%20%7B%0A%20%20%20%20%20%20%20%20let%20owner%20=%20this.getPartOne();%0A%20%20%20%20%20%20%20%20let%20green%20=%20(owner.getStat(Attributes.Corruption)%20%3E%2050);%0A%20%20%20%20%20%20%20%20let%20say%20=%20new%20Say(%22Your%20skin%20is%20%22);%0A%20%20%20%20%20%20%20%20if%20(this.skinSoftness%20%3E%207)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22perfectly%20smooth%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(this.skinSoftness%20%3E%204)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22smooth%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22rough%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20say.add(%22%20and%20%22);%0A%20%20%20%20%20%20%20%20if%20(this.skinHairiness%20%3E%208)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22hairy,%20like%20a%20gorilla's%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(this.skinHairiness%20%3E%206)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22hairy%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(this.skinHairiness%20%3E%203)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22somewhat%20hairless%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22completely%20hairless%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20say.add(%22.%22);%0A%20%20%20%20%20%20%20%20if%20(green)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22%20The%20taint%20of%20your%20corruption%20has%20turned%20your%20skin%20green,%20like%20an%20orc's.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20say;%0A%20%20%20%20%7D%0A%20%20%20%20getGenderValue()%20%7B%0A%20%20%20%20%20%20%20%20let%20softnessRank%20=%20this.skinSoftness%20*%20100;%0A%20%20%20%20%20%20%20%20let%20hairinessRank%20=%201000%20-%20(this.skinHairiness%20*%20100);%0A%20%20%20%20%20%20%20%20return%20(softnessRank%20+%20hairinessRank)%20/%2020;%0A%20%20%20%20%7D%0A%20%20%20%20arrangeGenderValue(genderValue)%20%7B%0A%20%20%20%20%20%20%20%20let%20ideal%20=%20genderValue%20/%2010;%0A%20%20%20%20%20%20%20%20this.skinHairiness%20=%2010%20-%20Math.round(ideal);%0A%20%20%20%20%20%20%20%20this.skinSoftness%20=%20Math.round(ideal);%0A%20%20%20%20%20%20%20%20this.getPartOne().invalidateCaches();%0A%20%20%20%20%7D%0A%7D%0Aclass%20HumanoidTesticles%20extends%20Bodypart%20%7B%0A%20%20%20%20constructor(options)%20%7B%0A%20%20%20%20%20%20%20%20super(options);%0A%20%20%20%20%20%20%20%20this.size%20=%201;%0A%20%20%20%20%20%20%20%20this.sorenessWeight%20=%20Bodypart.WEIGHT_HIGH;%0A%20%20%20%20%20%20%20%20this.genderWeight%20=%20Bodypart.WEIGHT_HIGHEST;%0A%20%20%20%20%20%20%20%20this.slots%20=%20[Humanoid.SLOT_CROTCH_FRONT];%0A%20%20%20%20%20%20%20%20this.sluttiness%20=%20Bodypart.SLUTTINESS_MEDIUM_AVERAGE;%0A%20%20%20%20%20%20%20%20this.sluttinessWeight%20=%20Bodypart.WEIGHT_MEDIUM;%0A%20%20%20%20%20%20%20%20this.addGetAlterations((thing)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Size:%20this.size%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.addSetAlterations((thing,%20changes)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.size%20=%20changes.Size;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20getBulgeSize()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.size;%0A%20%20%20%20%7D%0A%20%20%20%20getGenderWeight()%20%7B%0A%20%20%20%20%20%20%20%20return%2080;%0A%20%20%20%20%7D%0A%7D%0Aclass%20HumanoidVagina%20extends%20SexHole%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.genderValue%20=%2085;%0A%20%20%20%20%20%20%20%20this.genderWeight%20=%20Bodypart.WEIGHT_HIGHEST;%0A%20%20%20%20%20%20%20%20this.slots%20=%20[Humanoid.SLOT_CROTCH_FRONT];%0A%20%20%20%20%20%20%20%20this.sluttiness%20=%2050;%0A%20%20%20%20%20%20%20%20this.sluttinessWeight%20=%20Bodypart.WEIGHT_MEDIUM;%0A%20%20%20%20%7D%0A%20%20%20%20getSluttiness()%20%7B%0A%20%20%20%20%20%20%20%20let%20slut%20=%20100%20-%20this.genderValue;%0A%20%20%20%20%20%20%20%20let%20obscenelyOpen%20=%20false;%0A%20%20%20%20%20%20%20%20slut%20+=%20obscenelyOpen%20?%2025%20:%200;%0A%20%20%20%20%20%20%20%20return%20slut;%0A%20%20%20%20%7D%0A%20%20%20%20getDescription()%20%7B%0A%20%20%20%20%20%20%20%20let%20say%20=%20new%20Say(%22Your%20%22);%0A%20%20%20%20%20%20%20%20let%20hairless%20=%20this.genderValue%20%3E=%2080;%0A%20%20%20%20%20%20%20%20let%20smallClit%20=%20this.genderValue%20%3E=%2055;%0A%20%20%20%20%20%20%20%20let%20innie%20=%20this.genderValue%20%3E%2070;%0A%20%20%20%20%20%20%20%20let%20obscenelyOpen%20=%20false;%0A%20%20%20%20%20%20%20%20if%20(hairless)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22hairless%20%22,%20Say.PUSSY);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22hairy%20%22,%20Say.PUSSY);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20say.add(%22%20%22);%0A%20%20%20%20%20%20%20%20if%20(innie)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22is%20usually%20completely%20covered%20by%20its%20lips%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22has%20some%20curtains%20escaping%20its%20lips%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(!smallClit)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22%20and%20has%20an%20oversized%20clit%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20say.add(%22.%22);%0A%20%20%20%20%20%20%20%20if%20(obscenelyOpen)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22%20It%20is%20currently%20stretched%20open%20obscenely.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20say;%0A%20%20%20%20%7D%0A%20%20%20%20arrangeGenderValue(gv)%20%7B%0A%20%20%20%20%20%20%20%20gv%20=%20(gv%20/%202)%20+%2050;%0A%20%20%20%20%20%20%20%20this.genderValue%20=%20gv;%0A%20%20%20%20%20%20%20%20this.getPartOne().invalidateCaches();%0A%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getSynonym()%20%7B%0A%20%20%20%20%20%20%20%20let%20cockNames%20=%20[%0A%20%20%20%20%20%20%20%20%20%20%20%20%22pussy%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%22womanhood%22%0A%20%20%20%20%20%20%20%20];%0A%20%20%20%20%20%20%20%20return%20(new%20OneOf(OneOf.PURELY_AT_RANDOM,%20...cockNames).getOne());%0A%20%20%20%20%7D%0A%7D%0Aclass%20HumanoidTorso%20extends%20Bodypart%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.genderWeight%20=%200;%0A%20%20%20%20%20%20%20%20this.sluttinessWeight%20=%200;%0A%20%20%20%20%7D%0A%7D%0Aclass%20Clothing%20extends%20Thing%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.slots%20=%20[];%0A%20%20%20%20%20%20%20%20this.transparentSlots%20=%20[];%0A%20%20%20%20%20%20%20%20this.layer%20=%20Clothing.LAYER_MEDIUM;%0A%20%20%20%20%20%20%20%20this.isVisible%20=%20false;%0A%20%20%20%20%20%20%20%20this.visibleOn%20=%20[];%0A%20%20%20%20%20%20%20%20this.breastPadding%20=%200;%0A%20%20%20%20%20%20%20%20this.maxBreastSize%20=%20-1;%0A%20%20%20%20%20%20%20%20this.tightBreastSize%20=%20-1;%0A%20%20%20%20%20%20%20%20this.looseBreastSize%20=%200;%0A%20%20%20%20%20%20%20%20this.crotchPadding%20=%200;%0A%20%20%20%20%20%20%20%20this.maxCrotchSize%20=%20-1;%0A%20%20%20%20%20%20%20%20this.tightCrotchSize%20=%20-1;%0A%20%20%20%20%20%20%20%20this.looseCrotchSize%20=%200;%0A%20%20%20%20%20%20%20%20this.buttPadding%20=%200;%0A%20%20%20%20%20%20%20%20this.maxButtSize%20=%20-1;%0A%20%20%20%20%20%20%20%20this.tightButtSize%20=%20-1;%0A%20%20%20%20%20%20%20%20this.looseButtSize%20=%200;%0A%20%20%20%20%20%20%20%20this.genderValue%20=%2050;%0A%20%20%20%20%20%20%20%20this.sluttinessValue%20=%2040;%0A%20%20%20%20%7D%0A%20%20%20%20updateStatus()%20%7B%0A%20%20%20%20%20%20%20%20this.visibleOn%20=%20[];%0A%20%20%20%20%20%20%20%20this.visibleOn.push(...this.slots);%0A%20%20%20%20%20%20%20%20let%20wearer%20=%20Thing.WearRelation.getLeft(this);%0A%20%20%20%20%20%20%20%20if%20(wearer%20==%20undefined)%0A%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20let%20cloths%20=%20Thing.WearRelation.getRight(wearer);%0A%20%20%20%20%20%20%20%20let%20coveredSlots%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20cloths.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20worn%20=%20cloths[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20((worn%20!=%20this)%20&&%20worn.layer%20%3E%20this.layer)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20coveredSlots.push(...worn.getCoveringSlots());%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.visibleOn%20=%20this.visibleOn.filter(visible%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20coveredSlots.indexOf(visible)%20==%20-1;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.isVisible%20=%20this.visibleOn.length%20%3E%200;%0A%20%20%20%20%7D%0A%20%20%20%20getCoveringSlots()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.transparentSlots.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.slots.slice(0);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20this.slots.filter((value,%20index,%20array)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.transparentSlots.indexOf(value)%20==%20-1;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20getGenderWeight()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.visibleOn.length;%0A%20%20%20%20%7D%0A%20%20%20%20getGenderValue()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.genderValue;%0A%20%20%20%20%7D%0A%20%20%20%20getSluttinessWeight()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.visibleOn.length;%0A%20%20%20%20%7D%0A%20%20%20%20getSluttinessValue()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.sluttinessValue;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getGenderValueOn(p)%20%7B%0A%20%20%20%20%20%20%20%20let%20weight%20=%200;%0A%20%20%20%20%20%20%20%20let%20value%20=%200;%0A%20%20%20%20%20%20%20%20let%20clothes%20=%20Thing.WearRelation.getRight(p);%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20clothes.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20weight%20+=%20clothes[i].getGenderWeight();%0A%20%20%20%20%20%20%20%20%20%20%20%20value%20+=%20clothes[i].getGenderWeight()%20*%20clothes[i].getGenderValue();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20weight:%20weight,%0A%20%20%20%20%20%20%20%20%20%20%20%20value:%20value%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getSluttinessValueOn(p)%20%7B%0A%20%20%20%20%20%20%20%20let%20weight%20=%200;%0A%20%20%20%20%20%20%20%20let%20value%20=%200;%0A%20%20%20%20%20%20%20%20let%20clothes%20=%20Thing.WearRelation.getRight(p);%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20clothes.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20weight%20+=%20clothes[i].getSluttinessWeight();%0A%20%20%20%20%20%20%20%20%20%20%20%20value%20+=%20clothes[i].getSluttinessWeight()%20*%20clothes[i].getSluttinessValue();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20weight:%20weight,%0A%20%20%20%20%20%20%20%20%20%20%20%20value:%20value%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%7D%0A%7D%0AClothing.LAYER_LOWEST%20=%200;%0AClothing.LAYER_LOW%20=%205;%0AClothing.LAYER_MEDIUM%20=%2010;%0AClothing.LAYER_HIGH%20=%2015;%0AClothing.LAYER_HIGHEST%20=%2020;%0Aclass%20ActionRemove%20extends%20Action%20%7B%0A%20%20%20%20getCommandText()%20%7B%0A%20%20%20%20%20%20%20%20return%20%22take%20off%20%22%20+%20(this.getNoun(0)%20!=%20undefined%20?%20this.getNoun(0).getPrintedName()%20:%20%22%22);%0A%20%20%20%20%7D%0A%20%20%20%20getClothing()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getNoun(0);%0A%20%20%20%20%7D%0A%7D%0AActionRemove.check%20=%20new%20Rulebook(%22Check%20Removing%22);%0AActionRemove.carry%20=%20new%20Rulebook(%22Carry%20out%20Removing%22);%0AActionRemove.checkIsWearable%20=%20ActionRemove.check.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Is%20noun%20a%20clothing%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20code:%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20let%20noun%20=%20action.getClothing();%0A%20%20%20%20%20%20%20%20if%20(!(noun%20instanceof%20Clothing))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(action.actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22You%20can%20only%20remove%20Clothing.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D);%0AActionRemove.checkIsHeld%20=%20ActionRemove.check.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Is%20noun%20worn%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGH,%0A%20%20%20%20code:%20async%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20let%20noun%20=%20action.getClothing();%0A%20%20%20%20%20%20%20%20if%20(!Thing.WearRelation.isRight(action.actor,%20noun))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(action.actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22You%20are%20not%20wearing%20it.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D);%0AActionRemove.carryDefault%20=%20ActionRemove.carry.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Set%20Clothing%20as%20Carried%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_MEDIUM,%0A%20%20%20%20code:%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20let%20noun%20=%20action.getClothing();%0A%20%20%20%20%20%20%20%20Thing.CarryRelation.setRelation(action.actor,%20noun);%0A%20%20%20%20%20%20%20%20let%20actor%20=%20action.actor;%0A%20%20%20%20%20%20%20%20let%20thing%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20if%20(actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(new%20SayBold(thing,%20%22:%20%22),%20%22Removed.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(new%20SayThe(),%20actor,%20%22%20takes%20off%20%22,%20new%20SayThe(),%20thing,%20%22.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D);%0AElements.HyperlinkHandler.HyperlinkingRulebook.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Hyperlink%20-%20Remove%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20thing%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20if%20(thing%20instanceof%20Clothing%20&&%20(Thing.WearRelation.isRight(WorldState.player,%20thing)))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.HyperlinkHandler.addAvailableAction(%22Remove%22,%20new%20ActionRemove(WorldState.player,%20thing));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0AElements.InventoryHandler.LinkingThing.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Inventory%20-%20Remove%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20thing%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20if%20(thing%20instanceof%20Clothing%20&&%20(Thing.WearRelation.isRight(WorldState.player,%20thing)))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.InventoryHandler.printThingLink(%22R%22,%20new%20ActionRemove(WorldState.player,%20thing));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0Aclass%20ActionWear%20extends%20Action%20%7B%0A%20%20%20%20getCommandText()%20%7B%0A%20%20%20%20%20%20%20%20return%20%22wear%20%22%20+%20(this.getNoun(0)%20!=%20undefined%20?%20this.getNoun(0).getPrintedName()%20:%20%22%22);%0A%20%20%20%20%7D%0A%20%20%20%20getClothing()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getNoun(0);%0A%20%20%20%20%7D%0A%7D%0AActionWear.check%20=%20new%20Rulebook(%22Check%20Wearing%22);%0AActionWear.carry%20=%20new%20Rulebook(%22Carry%20out%20Wearing%22);%0AActionWear.checkIsWearable%20=%20ActionWear.check.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Is%20noun%20a%20clothing%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20code:%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20let%20noun%20=%20action.getClothing();%0A%20%20%20%20%20%20%20%20if%20(!(noun%20instanceof%20Clothing))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(action.actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22You%20can%20only%20wear%20Clothing.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D);%0AActionWear.checkIsHeld%20=%20ActionWear.check.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Is%20noun%20held%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGH,%0A%20%20%20%20code:%20async%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20let%20noun%20=%20action.getClothing();%0A%20%20%20%20%20%20%20%20if%20(!Thing.CarryRelation.isRight(action.actor,%20noun))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(action.actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22(first%20taking%20the%20%22,%20noun,%20%22)%22,%20Say.LINE_BREAK);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20takingAction%20=%20new%20ActionTake(action.actor,%20noun);%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20takingAction.execute();%0A%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(takingAction.say);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!Thing.CarryRelation.isRight(action.actor,%20noun))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D);%0AActionWear.carryDefault%20=%20ActionWear.carry.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Set%20Clothing%20as%20Worn%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_MEDIUM,%0A%20%20%20%20code:%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20let%20noun%20=%20action.getClothing();%0A%20%20%20%20%20%20%20%20Thing.WearRelation.setRelation(action.actor,%20noun);%0A%20%20%20%20%20%20%20%20let%20actor%20=%20action.actor;%0A%20%20%20%20%20%20%20%20let%20thing%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20if%20(actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(new%20SayBold(thing,%20%22:%20%22),%20%22Worn.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(new%20SayThe(),%20actor,%20%22%20puts%20on%20%22,%20new%20SayThe(),%20thing,%20%22.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D);%0AElements.HyperlinkHandler.HyperlinkingRulebook.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Hyperlink%20-%20Wear%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20thing%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20if%20(thing%20instanceof%20Clothing%20&&%20!(Thing.WearRelation.isRight(WorldState.player,%20thing)))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.HyperlinkHandler.addAvailableAction(%22Wear%22,%20new%20ActionWear(WorldState.player,%20thing));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0AElements.InventoryHandler.LinkingThing.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Inventory%20-%20Wear%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20thing%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20if%20(thing%20instanceof%20Clothing%20&&%20!(Thing.WearRelation.isRight(WorldState.player,%20thing)))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.InventoryHandler.printThingLink(%22W%22,%20new%20ActionWear(WorldState.player,%20thing));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0Aclass%20Humanoid%20extends%20Person%20%7B%0A%20%20%20%20constructor(options)%20%7B%0A%20%20%20%20%20%20%20%20super(options);%0A%20%20%20%20%20%20%20%20this.breastVisibleSize%20=%200;%0A%20%20%20%20%20%20%20%20this.isBreastVisible%20=%20false;%0A%20%20%20%20%20%20%20%20this.isBreastTight%20=%20false;%0A%20%20%20%20%20%20%20%20this.isBreastLoose%20=%20false;%0A%20%20%20%20%20%20%20%20this.crotchVisibleSize%20=%200;%0A%20%20%20%20%20%20%20%20this.isCrotchVisible%20=%20false;%0A%20%20%20%20%20%20%20%20this.isCrotchTight%20=%20false;%0A%20%20%20%20%20%20%20%20this.buttVisibleSize%20=%200;%0A%20%20%20%20%20%20%20%20this.isButtVisible%20=%20false;%0A%20%20%20%20%20%20%20%20this.isButtTight%20=%20false;%0A%20%20%20%20%20%20%20%20this.isGenderCached%20=%20false;%0A%20%20%20%20%20%20%20%20this.isSluttinessCached%20=%20false;%0A%20%20%20%20%20%20%20%20this.uncoveredSlots%20=%20[];%0A%20%20%20%20%20%20%20%20this.addParts(new%20HumanoidSkin(),%20new%20HumanoidHead(),%20new%20HumanoidArms(),%20new%20HumanoidHands(),%20new%20HumanoidBreasts(),%20new%20HumanoidFeet(),%20new%20HumanoidTorso(),%20new%20HumanoidButt());%0A%20%20%20%20%20%20%20%20if%20(options.isMale)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.addMaleParts();%0A%20%20%20%20%20%20%20%20%20%20%20%20this.setGenderValue(25);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.addFemaleParts();%0A%20%20%20%20%20%20%20%20%20%20%20%20this.setGenderValue(75);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.addGetAlterations((humanoid)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(humanoid.isPlayer())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20HumanoidGender:%20humanoid.isMale()%20?%20Humanoid.SEX_MALE%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20humanoid.isFemale()%20?%20Humanoid.SEX_FEMALE%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Humanoid.SEX_HERM%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.addSetAlterations((humanoid,%20changes)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(humanoid.isPlayer())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20humanoid.removeGenderedParts();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(changes.HumanoidGender%20==%20Humanoid.SEX_MALE)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20humanoid.addMaleParts();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(changes.HumanoidGender%20==%20Humanoid.SEX_FEMALE)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20humanoid.addFemaleParts();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20humanoid.addMaleParts();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20humanoid.addFemaleParts();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20invalidateCaches()%20%7B%0A%20%20%20%20%20%20%20%20this.isGenderCached%20=%20false;%0A%20%20%20%20%20%20%20%20this.isSluttinessCached%20=%20false;%0A%20%20%20%20%7D%0A%20%20%20%20getGenderValue()%20%7B%0A%20%20%20%20%20%20%20%20if%20(!this.isSluttinessCached)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.updateCaches();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20this.cachedGenderValue;%0A%20%20%20%20%7D%0A%20%20%20%20getSluttiness()%20%7B%0A%20%20%20%20%20%20%20%20if%20(!this.isSluttinessCached)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.updateCaches();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20this.cachedSluttiness;%0A%20%20%20%20%7D%0A%20%20%20%20getBulges()%20%7B%0A%20%20%20%20%20%20%20%20if%20(!this.isGenderCached)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.updateCaches();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20this.cachedBulges;%0A%20%20%20%20%7D%0A%20%20%20%20updateCaches()%20%7B%0A%20%20%20%20%20%20%20%20this.updateClothing();%0A%20%20%20%20%20%20%20%20this.updateSlots();%0A%20%20%20%20%20%20%20%20this.updateBodyparts();%0A%20%20%20%20%20%20%20%20this.updateBulges();%0A%20%20%20%20%20%20%20%20this.updateGenderValue();%0A%20%20%20%20%20%20%20%20this.updateSluttiness();%0A%20%20%20%20%7D%0A%20%20%20%20updateSlots()%20%7B%0A%20%20%20%20%20%20%20%20this.uncoveredSlots%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20Humanoid.SLOT_SLOT_COUNT;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.uncoveredSlots.push(i);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20clothing%20=%20Thing.WearRelation.getRightType(this,%20Clothing);%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20clothing.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20covering%20=%20clothing[i].getCoveringSlots();%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20k%20=%200;%20k%20%3C%20covering.length;%20k++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20idx%20=%20this.uncoveredSlots.indexOf(covering[k]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(idx%20%3E=%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.uncoveredSlots.splice(idx,%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.uncoveredSlots.length%20==%200)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20updateGenderValue()%20%7B%0A%20%20%20%20%20%20%20%20let%20clothingGender%20=%20Clothing.getGenderValueOn(this);%0A%20%20%20%20%20%20%20%20let%20bodypartGender%20=%20Bodypart.getGenderValueOn(this);%0A%20%20%20%20%20%20%20%20let%20genderWeight%20=%20clothingGender.weight%20+%20bodypartGender.weight;%0A%20%20%20%20%20%20%20%20let%20genderValue%20=%20clothingGender.value%20+%20bodypartGender.value;%0A%20%20%20%20%20%20%20%20let%20correctionWeight%20=%20Bodypart.WEIGHT_HIGHEST;%0A%20%20%20%20%20%20%20%20let%20correctionValue%20=%20this.getStat(Attributes.GenderIdentity)%20*%20Bodypart.WEIGHT_HIGHEST;%0A%20%20%20%20%20%20%20%20let%20hasPenis%20=%20false;%0A%20%20%20%20%20%20%20%20let%20hasVagina%20=%20false;%0A%20%20%20%20%20%20%20%20if%20(this.isCrotchVisible)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(Thing.PartRelation.getRightTypeOne(this,%20HumanoidPenis)%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20hasPenis%20=%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20hasVagina%20=%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20correctionValue%20+=%200%20*%20Bodypart.WEIGHT_LOWEST;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20correctionWeight%20+=%20Bodypart.WEIGHT_LOWEST;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(Thing.PartRelation.getRightTypeOne(this,%20HumanoidVagina)%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20hasPenis%20=%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20hasVagina%20=%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20correctionValue%20+=%20100%20*%20Bodypart.WEIGHT_LOWEST;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20correctionWeight%20+=%20Bodypart.WEIGHT_LOWEST;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(this.breastVisibleSize%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20correctionValue%20+=%20100%20*%20Bodypart.WEIGHT_LOWEST;%0A%20%20%20%20%20%20%20%20%20%20%20%20correctionWeight%20+=%20Bodypart.WEIGHT_LOWEST;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(this.crotchVisibleSize%20%3E%200%20&&%20!hasVagina)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20correctionValue%20+=%200%20*%20Bodypart.WEIGHT_LOWEST;%0A%20%20%20%20%20%20%20%20%20%20%20%20correctionWeight%20+=%20Bodypart.WEIGHT_LOWEST;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20genderValueFinal%20=%20genderValue%20/%20genderWeight;%0A%20%20%20%20%20%20%20%20let%20genderValueCorrected%20=%20(genderValue%20+%20correctionValue)%20/%20(genderWeight%20+%20correctionWeight);%0A%20%20%20%20%20%20%20%20this.cachedGenderValue%20=%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20hasTits:%20this.breastVisibleSize%20%3E%201,%0A%20%20%20%20%20%20%20%20%20%20%20%20hasPenisBulge:%20this.crotchVisibleSize%20%3E%200%20&&%20!hasVagina,%0A%20%20%20%20%20%20%20%20%20%20%20%20hasPenis:%20hasPenis,%0A%20%20%20%20%20%20%20%20%20%20%20%20hasVagina:%20hasVagina,%0A%20%20%20%20%20%20%20%20%20%20%20%20genderValue:%20genderValueFinal,%0A%20%20%20%20%20%20%20%20%20%20%20%20genderValueCorrected:%20genderValueCorrected%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20this.isGenderCached%20=%20true;%0A%20%20%20%20%7D%0A%20%20%20%20isVisibleOn(slot)%20%7B%0A%20%20%20%20%20%20%20%20return%20this.uncoveredSlots.indexOf(slot)%20!=%20-1;%0A%20%20%20%20%7D%0A%20%20%20%20updateSluttiness()%20%7B%0A%20%20%20%20%20%20%20%20let%20clothingSluttiness%20=%20Clothing.getSluttinessValueOn(this);%0A%20%20%20%20%20%20%20%20let%20bodypartSluttiness%20=%20Bodypart.getSluttinessValueOn(this);%0A%20%20%20%20%20%20%20%20let%20sluttinessWeight%20=%20clothingSluttiness.weight%20+%20bodypartSluttiness.weight;%0A%20%20%20%20%20%20%20%20let%20sluttinessValue%20=%20clothingSluttiness.value%20+%20bodypartSluttiness.value;%0A%20%20%20%20%20%20%20%20let%20correctionWeight%20=%200;%0A%20%20%20%20%20%20%20%20let%20correctionValue%20=%200;%0A%20%20%20%20%20%20%20%20let%20somewhatSlutty%20=%20[Humanoid.SLOT_MIDRIFF,%20Humanoid.SLOT_LEG_UPPER,%20Humanoid.SLOT_WAIST,%20Humanoid.SLOT_HIPS,%20Humanoid.SLOT_BACK];%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20somewhatSlutty.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.isVisibleOn(somewhatSlutty[i]))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20correctionWeight%20+=%201;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20correctionValue%20+=%2075;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20verySlutty%20=%20[Humanoid.SLOT_BREASTS,%20Humanoid.SLOT_CROTCH_FRONT,%20Humanoid.SLOT_CROTCH_BACK,%20Humanoid.SLOT_BUTT];%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20verySlutty.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.isVisibleOn(verySlutty[i]))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20correctionWeight%20+=%203;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20correctionValue%20+=%2075;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20((this.isVisibleOn.length%20/%20Humanoid.SLOT_SLOT_COUNT)%20%3E%200.75)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20extremeSlutty%20=%20[Humanoid.SLOT_BREASTS,%20Humanoid.SLOT_CROTCH_FRONT,%20Humanoid.SLOT_CROTCH_BACK,%20Humanoid.SLOT_BUTT];%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20extremeSlutty.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.isVisibleOn(extremeSlutty[i]))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20correctionWeight%20+=%205;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20correctionValue%20+=%2085;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20halfNaked;%0A%20%20%20%20%20%20%20%20let%20naked;%0A%20%20%20%20%20%20%20%20if%20(!this.isMale())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20halfNaked%20=%20(this.isVisibleOn.length%20/%20Humanoid.SLOT_SLOT_COUNT)%20%3C%200.5%20&&%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20!this.isVisibleOnArray([Humanoid.SLOT_BREASTS,%20Humanoid.SLOT_CROTCH_FRONT,%20Humanoid.SLOT_CROTCH_BACK]);%0A%20%20%20%20%20%20%20%20%20%20%20%20naked%20=%20(this.isVisibleOn.length%20/%20Humanoid.SLOT_SLOT_COUNT)%20%3C%200.3%20&&%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.isVisibleOnArray([Humanoid.SLOT_BREASTS,%20Humanoid.SLOT_CROTCH_FRONT,%20Humanoid.SLOT_CROTCH_BACK,%20Humanoid.SLOT_BUTT]);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.hasBreasts())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20halfNaked%20=%20(this.isVisibleOn.length%20/%20Humanoid.SLOT_SLOT_COUNT)%20%3C%200.5%20&&%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20!this.isVisibleOnArray([Humanoid.SLOT_BREASTS,%20Humanoid.SLOT_CROTCH_FRONT,%20Humanoid.SLOT_CROTCH_BACK]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20naked%20=%20(this.isVisibleOn.length%20/%20Humanoid.SLOT_SLOT_COUNT)%20%3C%200.3%20&&%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.isVisibleOnArray([Humanoid.SLOT_BREASTS,%20Humanoid.SLOT_CROTCH_FRONT,%20Humanoid.SLOT_CROTCH_BACK,%20Humanoid.SLOT_BUTT]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20halfNaked%20=%20(this.isVisibleOn.length%20/%20Humanoid.SLOT_SLOT_COUNT)%20%3C%200.5%20&&%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20!this.isVisibleOnArray([Humanoid.SLOT_CROTCH_FRONT,%20Humanoid.SLOT_CROTCH_BACK]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20naked%20=%20(this.isVisibleOn.length%20/%20Humanoid.SLOT_SLOT_COUNT)%20%3C%200.3%20&&%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.isVisibleOnArray([Humanoid.SLOT_CROTCH_FRONT,%20Humanoid.SLOT_CROTCH_BACK,%20Humanoid.SLOT_BUTT]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20sluttinessValueFinal%20=%20sluttinessValue%20/%20sluttinessWeight;%0A%20%20%20%20%20%20%20%20let%20sluttinessCorrected%20=%20(sluttinessValue%20+%20correctionValue)%20/%20(sluttinessWeight%20+%20correctionWeight);%0A%20%20%20%20%20%20%20%20this.cachedSluttiness%20=%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20halfNaked:%20halfNaked,%0A%20%20%20%20%20%20%20%20%20%20%20%20naked:%20naked,%0A%20%20%20%20%20%20%20%20%20%20%20%20sluttiness:%20sluttinessValueFinal,%0A%20%20%20%20%20%20%20%20%20%20%20%20sluttinessCorrected:%20sluttinessCorrected%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20this.isSluttinessCached%20=%20true;%0A%20%20%20%20%7D%0A%20%20%20%20isVisibleOnArray(arr)%20%7B%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20arr.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!this.isVisibleOn(arr[i]))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%7D%0A%20%20%20%20addMaleParts()%20%7B%0A%20%20%20%20%20%20%20%20if%20(!this.isMale()%20&&%20!this.isHerm())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.addParts(new%20HumanoidTesticles(),%20new%20HumanoidPenis());%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.invalidateCaches();%0A%20%20%20%20%7D%0A%20%20%20%20addFemaleParts()%20%7B%0A%20%20%20%20%20%20%20%20if%20(!this.isFemale()%20&&%20!this.isHerm())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.addParts(new%20HumanoidVagina());%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.invalidateCaches();%0A%20%20%20%20%7D%0A%20%20%20%20removeGenderedParts()%20%7B%0A%20%20%20%20%20%20%20%20this.removeParts(HumanoidVagina);%0A%20%20%20%20%20%20%20%20this.removeParts(HumanoidPenis);%0A%20%20%20%20%20%20%20%20this.removeParts(HumanoidTesticles);%0A%20%20%20%20%20%20%20%20this.invalidateCaches();%0A%20%20%20%20%7D%0A%20%20%20%20setGenderValue(value)%20%7B%0A%20%20%20%20%20%20%20%20let%20bp%20=%20this.getParts(Bodypart);%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20bp.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(bp[i]%20instanceof%20HumanoidBreasts%20&&%20this.isMale())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bp[i].arrangeGenderValue(0);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bp[i].arrangeGenderValue(value);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20updateBodyparts()%20%7B%0A%20%20%20%20%20%20%20%20let%20parts%20=%20Thing.PartRelation.getRightType(this,%20Bodypart);%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20parts.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20parts[i].updateStatus();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20updateClothing()%20%7B%0A%20%20%20%20%20%20%20%20let%20clothes%20=%20Thing.WearRelation.getRightType(this,%20Clothing);%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20clothes.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20clothes[i].updateStatus();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20updateBulges()%20%7B%0A%20%20%20%20%20%20%20%20let%20clothes%20=%20Thing.WearRelation.getRightType(this,%20Clothing).sort(function%20(a,%20b)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20a.layer%20-%20b.layer;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.isBreastVisible%20=%20true;%0A%20%20%20%20%20%20%20%20this.isCrotchVisible%20=%20true;%0A%20%20%20%20%20%20%20%20this.isButtVisible%20=%20true;%0A%20%20%20%20%20%20%20%20let%20bras%20=%20[];%0A%20%20%20%20%20%20%20%20let%20butts%20=%20[];%0A%20%20%20%20%20%20%20%20let%20junks%20=%20[];%0A%20%20%20%20%20%20%20%20clothes.forEach((cloth)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20cloth.updateStatus();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(cloth.slots.indexOf(Humanoid.SLOT_BREASTS)%20!=%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bras.push(cloth);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(cloth.transparentSlots.indexOf(Humanoid.SLOT_BREASTS)%20==%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.isBreastVisible%20=%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(cloth.slots.indexOf(Humanoid.SLOT_BUTT)%20!=%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20butts.push(cloth);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(cloth.transparentSlots.indexOf(Humanoid.SLOT_BUTT)%20==%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.isButtVisible%20=%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(cloth.slots.indexOf(Humanoid.SLOT_CROTCH_FRONT)%20!=%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20junks.push(cloth);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(cloth.transparentSlots.indexOf(Humanoid.SLOT_CROTCH_FRONT)%20==%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.isCrotchVisible%20=%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.updateBreastSizes(bras);%0A%20%20%20%20%20%20%20%20this.updateCrotchSizes(junks);%0A%20%20%20%20%20%20%20%20this.updateButtSizes(butts);%0A%20%20%20%20%20%20%20%20this.cachedBulges%20=%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20breasts:%20this.breastVisibleSize,%0A%20%20%20%20%20%20%20%20%20%20%20%20butt:%20this.buttVisibleSize,%0A%20%20%20%20%20%20%20%20%20%20%20%20crotch:%20this.crotchVisibleSize,%0A%20%20%20%20%20%20%20%20%20%20%20%20waist:%200%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%7D%0A%20%20%20%20getTopClothOn(slot)%20%7B%0A%20%20%20%20%20%20%20%20return%20Thing.WearRelation.getRightType(this,%20Clothing).filter(otherCloth%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20otherCloth.visibleOn.includes(slot);%0A%20%20%20%20%20%20%20%20%7D).sort((a,%20b)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20a.layer%20-%20b.layer;%0A%20%20%20%20%20%20%20%20%7D)[0];%0A%20%20%20%20%7D%0A%20%20%20%20updateBreastSizes(bras)%20%7B%0A%20%20%20%20%20%20%20%20this.isBreastTight%20=%20false;%0A%20%20%20%20%20%20%20%20this.isBreastLoose%20=%20true;%0A%20%20%20%20%20%20%20%20let%20breasts%20=%20Thing.PartRelation.getRightTypeOne(this,%20HumanoidBreasts);%0A%20%20%20%20%20%20%20%20this.breastVisibleSize%20=%20breasts.getSize();%0A%20%20%20%20%20%20%20%20bras.forEach((bra)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(bra.tightBreastSize%20%3E=%200%20&&%20this.breastVisibleSize%20%3E%20bra.tightBreastSize)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.isBreastTight%20=%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(bra.maxBreastSize%20%3E=%200%20&&%20this.breastVisibleSize%20%3E%20bra.maxBreastSize)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.breastVisibleSize%20=%20bra.maxBreastSize;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.breastVisibleSize%20%3E=%20bra.looseBreastSize)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.isBreastLoose%20=%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.breastVisibleSize%20+=%20bra.breastPadding;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.breastVisibleSize%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.breastVisibleSize%20=%200;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20updateCrotchSizes(cloths)%20%7B%0A%20%20%20%20%20%20%20%20this.isCrotchTight%20=%20false;%0A%20%20%20%20%20%20%20%20this.crotchVisibleSize%20=%200;%0A%20%20%20%20%20%20%20%20let%20penis%20=%20Thing.PartRelation.getRightTypeOne(this,%20HumanoidPenis);%0A%20%20%20%20%20%20%20%20let%20testicles%20=%20Thing.PartRelation.getRightTypeOne(this,%20HumanoidTesticles);%0A%20%20%20%20%20%20%20%20this.crotchVisibleSize%20=%200;%0A%20%20%20%20%20%20%20%20if%20(penis%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.crotchVisibleSize%20+=%20penis.getBulgeSize();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(testicles%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.crotchVisibleSize%20+=%20testicles.getBulgeSize();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.crotchVisibleSize%20=%20Math.floor(this.crotchVisibleSize%20*%2010)%20/%2010;%0A%20%20%20%20%20%20%20%20cloths.forEach((worn)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(worn.tightCrotchSize%20%3E=%200%20&&%20this.crotchVisibleSize%20%3E%20worn.tightCrotchSize)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.isCrotchTight%20=%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(worn.maxCrotchSize%20%3E=%200%20&&%20this.crotchVisibleSize%20%3E%20worn.maxCrotchSize)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.crotchVisibleSize%20=%20worn.maxCrotchSize;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.crotchVisibleSize%20+=%20worn.crotchPadding;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.crotchVisibleSize%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.crotchVisibleSize%20=%200;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20updateButtSizes(cloths)%20%7B%0A%20%20%20%20%20%20%20%20this.isButtTight%20=%20false;%0A%20%20%20%20%20%20%20%20let%20butt%20=%20Thing.PartRelation.getRightTypeOne(this,%20HumanoidButt);%0A%20%20%20%20%20%20%20%20this.buttVisibleSize%20=%20butt%20==%20undefined%20?%200%20:%20butt.getSize();%0A%20%20%20%20%20%20%20%20cloths.forEach((worn)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(worn.tightButtSize%20%3E=%200%20&&%20this.buttVisibleSize%20%3E%20worn.tightButtSize)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.isButtTight%20=%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(worn.maxButtSize%20%3E=%200%20&&%20this.buttVisibleSize%20%3E%20worn.maxButtSize)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.buttVisibleSize%20=%20worn.maxButtSize;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.buttVisibleSize%20+=%20worn.buttPadding;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.buttVisibleSize%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.buttVisibleSize%20=%200;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20hasBreasts()%20%7B%0A%20%20%20%20%20%20%20%20let%20breasts%20=%20this.getPart(HumanoidBreasts);%0A%20%20%20%20%20%20%20%20if%20(breasts.size%20%3E%201)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%7D%0A%20%20%20%20isMale()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getParts(HumanoidPenis).length%20%3E%200%20&&%20this.getParts(HumanoidVagina).length%20==%200;%0A%20%20%20%20%7D%0A%20%20%20%20isFemale()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getParts(HumanoidPenis).length%20==%200%20&&%20this.getParts(HumanoidVagina).length%20%3E%200;%0A%20%20%20%20%7D%0A%20%20%20%20isHerm()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.getParts(HumanoidPenis).length%20%3E%200%20&&%20this.getParts(HumanoidVagina).length%20%3E%200;%0A%20%20%20%20%7D%0A%20%20%20%20getShortestDescription()%20%7B%0A%20%20%20%20%20%20%20%20let%20playerGender%20=%20this.getGenderValue();%0A%20%20%20%20%20%20%20%20let%20playerSluttiness%20=%20this.getSluttiness();%0A%20%20%20%20%20%20%20%20let%20presentation%20=%20%22%22;%0A%20%20%20%20%20%20%20%20if%20(playerSluttiness.sluttinessCorrected%20%3E%2075)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20presentation%20+=%20(%22slutty,%20%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(playerSluttiness.sluttinessCorrected%20%3E%2035)%20%7B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(playerSluttiness.sluttinessCorrected%20%3E%2020)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20presentation%20+=%20(%22prude,%20%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20presentation%20+=%20(%22saintly,%20%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(playerGender.genderValueCorrected%20%3C%2040)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20presentation%20+=%20(%22masculine%20%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(playerGender.genderValueCorrected%20%3C%2060)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20presentation%20+=%20(%22androgynous%20%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20presentation%20+=%20(%22feminine%20%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(playerGender.hasTits)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(playerGender.hasPenis%20%7C%7C%20playerGender.hasPenisBulge)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation%20+=%20(%22shemale%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(playerGender.hasVagina)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation%20+=%20(%22woman%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(playerGender.hasPenis)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(playerGender.genderValueCorrected%20%3C%2060)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation%20+=%20(%22man%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation%20+=%20(%22trap%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(playerGender.hasPenisBulge)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(playerGender.genderValueCorrected%20%3C%2060)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation%20+=%20(%22man%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation%20+=%20(%22trap%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(playerGender.hasVagina)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20presentation%20+=%20(%22woman%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20presentation;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getPlayerDescription()%20%7B%0A%20%20%20%20%20%20%20%20let%20say%20=%20new%20Say();%0A%20%20%20%20%20%20%20%20say.add(%22You%20are%20%22);%0A%20%20%20%20%20%20%20%20let%20player%20=%20WorldState.player;%0A%20%20%20%20%20%20%20%20let%20male%20=%20player.getParts(HumanoidPenis).length%20%3E%200;%0A%20%20%20%20%20%20%20%20let%20female%20=%20player.getParts(HumanoidVagina).length%20%3E%200;%0A%20%20%20%20%20%20%20%20if%20(male%20&&%20female)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22hermaphrodite%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(male)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22male%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22female%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20say.add(%22.%20You%20are%20presenting%20as%20%22,%20new%20SayAn(),%20player.getShortestDescription()%20+%20%22.%20%22);%0A%20%20%20%20%20%20%20%20say.add(Attributes.GenderIdentity.getDescription(player.getStat(Attributes.GenderIdentity)));%0A%20%20%20%20%20%20%20%20let%20sv%20=%20player.getSluttiness();%0A%20%20%20%20%20%20%20%20let%20bulges%20=%20player.getBulges();%0A%20%20%20%20%20%20%20%20let%20coveredPerc%20=%201%20-%20(player.uncoveredSlots.length%20/%20Humanoid.SLOT_SLOT_COUNT);%0A%20%20%20%20%20%20%20%20say.add(%22%20%22,%20player.getPart(HumanoidSkin).getDescription());%0A%20%20%20%20%20%20%20%20if%20(sv.halfNaked)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22%20You%20are%20almost%20naked.%20%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(sv.naked)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22%20You%20are%20naked.%20%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(coveredPerc%20%3C%200.2)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22You%20are%20not%20showing%20much%20of%20it,%20though.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20say.add(Attributes.Degeneration.getDescription(player.getStat(Attributes.Degeneration)));%0A%20%20%20%20%20%20%20%20say.add(Say.PARAGRAPH_BREAK);%0A%20%20%20%20%20%20%20%20say.add(player.getPart(HumanoidArms).getDescription(),%20%22%20%22);%0A%20%20%20%20%20%20%20%20say.add(player.getPart(HumanoidHands).getDescription(),%20%22%20%22);%0A%20%20%20%20%20%20%20%20say.add(player.getPart(HumanoidFeet).getDescription(),%20%22%20%22);%0A%20%20%20%20%20%20%20%20let%20penis%20=%20player.getPart(HumanoidPenis);%0A%20%20%20%20%20%20%20%20let%20vagina%20=%20player.getPart(HumanoidVagina);%0A%20%20%20%20%20%20%20%20if%20(penis%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22You%20have%20a%20%22,%20penis.getSizeText(),%20(penis.isFlaccid()%20?%20%22%20flaccid%20%22%20:%20%22%20erect%20%22),%20Say.COCK,%20%22%20between%20your%20legs%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!penis.isBig()%20&&%20penis.isGrower()%20&&%20penis.isFlaccid())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22,%20which%20is%20okay,%20since%20you're%20a%20grower,%20not%20a%20shower%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(penis.isUncovered())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20oneOf%20=%20new%20OneOf(OneOf.PURELY_AT_RANDOM,%20...[%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22,%20it%20is%20not%20covered%20by%20any%20clothing%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22,%20it%20is%20not%20covered%20by%20any%20clothes%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22,%20it%20is%20uncovered%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22,%20it%20is%20visible%20to%20all%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22,%20it%20is%20hanging%20freely%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(oneOf.getOne());%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20testicles%20=%20player.getPart(HumanoidTesticles);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(HumanoidPenis.getSizeText(bulges.crotch)%20!=%20HumanoidPenis.getSizeText(penis.getBulgeSize()%20+%20testicles.getBulgeSize()))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22,%20but%20it%20looks%20like%20it's%20actually%20%22,%20HumanoidPenis.getSizeText(bulges.crotch),%20%22%20due%20to%20your%20clothing%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22.%20%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(testicles%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(vagina.getDescription());%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20say.add(%22%20%22);%0A%20%20%20%20%20%20%20%20let%20breasts%20=%20player.getPart(HumanoidBreasts);%0A%20%20%20%20%20%20%20%20let%20butt%20=%20player.getPart(HumanoidButt);%0A%20%20%20%20%20%20%20%20say.add(%22You%20have%20%22,%20breasts.getSizeText(),%20%22%20breasts%20and%20a%20%22,%20butt.getSizeText(),%20%22%20butt.%22);%0A%20%20%20%20%20%20%20%20if%20(bulges.breasts%20!=%20breasts.getSize()%20&&%20bulges.butt%20!=%20butt.getSize())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22%20Your%20clothing%20makes%20your%20breasts%20look%20like%20they're%20actually%20%22,%20HumanoidBreasts.getSizeText(bulges.breasts),%20%22%20and%20make%20your%20butt%20appear%20%22,%20HumanoidButt.getSizeText(bulges.butt),%20%22.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(bulges.breasts%20!=%20breasts.getSize())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22%20Your%20clothing%20makes%20your%20breasts%20look%20like%20they're%20actually%20%22,%20HumanoidBreasts.getSizeText(bulges.breasts),%20%22.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(bulges.butt%20!=%20butt.getSize())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22%20Your%20clothing%20makes%20your%20butt%20appear%20%22,%20HumanoidButt.getSizeText(bulges.butt),%20%22.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20say.add(Say.PARAGRAPH_BREAK);%0A%20%20%20%20%20%20%20%20let%20clothingSluttiness%20=%20Clothing.getSluttinessValueOn(player);%0A%20%20%20%20%20%20%20%20let%20bodypartSluttiness%20=%20Bodypart.getSluttinessValueOn(player);%0A%20%20%20%20%20%20%20%20if%20(clothingSluttiness.weight%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20clothingSluttinessFinal%20=%20clothingSluttiness.value%20/%20clothingSluttiness.weight;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(clothingSluttinessFinal%20%3E%2075)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22Your%20outfit%20can%20only%20be%20described%20as%20%5C%22whore-ish%5C%22,%20it%20is%20far%20too%20nasty.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(clothingSluttinessFinal%20%3E%2060)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22Your%20clothing%20are%20obviously%20making%20you%20look%20a%20bit%20naughty.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(clothingSluttinessFinal%20%3C%2030%20&&%20sv.sluttinessCorrected%20%3C%2030)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22Your%20clothing%20are%20definitely%20a%20bit%20prude.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(clothingSluttinessFinal%20%3C%2015%20&&%20sv.sluttinessCorrected%20%3C%2030)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22Your%20outfit%20is%20so%20prude%20that%20it%20could%20be%20worn%20by%20a%20saint.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20say.add(%22%20%22);%0A%20%20%20%20%20%20%20%20if%20(bodypartSluttiness.weight%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20bodypartSluttinessFinal%20=%20bodypartSluttiness.value%20/%20bodypartSluttiness.weight;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(bodypartSluttinessFinal%20%3E%2075)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22The%20way%20your%20body%20is%20makes%20you%20look%20like%20you%20were%20made%20purely%20for%20sex%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(coveredPerc%20%3E%200.7)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22,%20thankfully%20it's%20mostly%20covered%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(coveredPerc%20%3C%200.2)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22,%20and%20you%20didn't%20even%20bother%20covering%20it%20up%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(bodypartSluttinessFinal%20%3E%2060)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22Your%20body%20definitely%20has%20a%20lot%20of%20sex-appeal%20going%20on%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(coveredPerc%20%3E%200.7)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22,%20although%20it's%20covered%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(coveredPerc%20%3C%200.2)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22,%20proudly%20displayed%20for%20all%20to%20see%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(bodypartSluttinessFinal%20%3C%2030)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22You%20have%20very%20little%20sex-appeal,%20maybe%20you%20are%20a%20kitchen%20table?%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(coveredPerc%20%3E%200.7)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22%20At%20least%20you%20covered%20it%20up.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(coveredPerc%20%3C%200.2)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22%20Maybe%20you%20could%20cover%20it%20up%20a%20bit.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20say.add(Say.PARAGRAPH_BREAK);%0A%20%20%20%20%20%20%20%20let%20stats%20=%20new%20SayLeftRight();%0A%20%20%20%20%20%20%20%20stats.addLeft(new%20SayBold(%22Strength:%20%22),%20Attributes.Strength.getDescription(player.getStat(Attributes.Strength)));%0A%20%20%20%20%20%20%20%20stats.addLeft(Say.LINE_BREAK);%0A%20%20%20%20%20%20%20%20stats.addLeft(new%20SayBold(%22Agility:%20%22),%20Attributes.Agility.getDescription(player.getStat(Attributes.Agility)));%0A%20%20%20%20%20%20%20%20stats.addLeft(Say.LINE_BREAK);%0A%20%20%20%20%20%20%20%20stats.addLeft(new%20SayBold(%22Charm:%20%22),%20Attributes.Charm.getDescription(player.getStat(Attributes.Charm)));%0A%20%20%20%20%20%20%20%20stats.addLeft(Say.LINE_BREAK);%0A%20%20%20%20%20%20%20%20stats.addLeft(new%20SayBold(%22Intelligence:%20%22),%20Attributes.Intelligence.getDescription(player.getStat(Attributes.Intelligence)));%0A%20%20%20%20%20%20%20%20Skill.getSkills().forEach((skill)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(player.getSkill(skill)%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20stats.addRight(new%20SayBold(skill.id%20+%20%22:%20%22),%20skill.getDescription(player.getSkill(skill)));%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20say.add(stats);%0A%20%20%20%20%20%20%20%20return%20say;%0A%20%20%20%20%7D%0A%7D%0AHumanoid.SEX_MALE%20=%200;%0AHumanoid.SEX_FEMALE%20=%201;%0AHumanoid.SEX_HERM%20=%202;%0AHumanoid.SLOT_HAIR%20=%200;%0AHumanoid.SLOT_HEADGEAR%20=%201;%0AHumanoid.SLOT_FACE%20=%202;%0AHumanoid.SLOT_EARS%20=%203;%0AHumanoid.SLOT_EYES%20=%204;%0AHumanoid.SLOT_NOSE%20=%205;%0AHumanoid.SLOT_MOUTH%20=%206;%0AHumanoid.SLOT_NECK%20=%207;%0AHumanoid.SLOT_SHOULDERS%20=%208;%0AHumanoid.SLOT_ARMS%20=%209;%0AHumanoid.SLOT_HANDS%20=%2010;%0AHumanoid.SLOT_FINGERS%20=%2011;%0AHumanoid.SLOT_FINGERNAILS%20=%2012;%0AHumanoid.SLOT_UPPER_CHEST%20=%2013;%0AHumanoid.SLOT_MIDRIFF%20=%2014;%0AHumanoid.SLOT_WAIST%20=%2015;%0AHumanoid.SLOT_BACK%20=%2016;%0AHumanoid.SLOT_HIPS%20=%2017;%0AHumanoid.SLOT_CROTCH_FRONT%20=%2018;%0AHumanoid.SLOT_CROTCH_BACK%20=%2019;%0AHumanoid.SLOT_BUTT%20=%2020;%0AHumanoid.SLOT_LEG_UPPER%20=%2021;%0AHumanoid.SLOT_LEG_LOWER%20=%2022;%0AHumanoid.SLOT_FEET%20=%2023;%0AHumanoid.SLOT_FEET_NAILS%20=%2024;%0AHumanoid.SLOT_BREASTS%20=%2025;%0AHumanoid.SLOT_SLOT_COUNT%20=%2026;%0AHumanoid.cacheInvalidationActionRule%20=%20new%20Rule(%7B%0A%20%20%20%20name:%20%22Invalidate%20humanoid%20caches%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20code:%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20runner.noun.actor.invalidateCaches();%0A%20%20%20%20%7D,%0A%20%20%20%20conditions:%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20return%20runner.noun.actor%20instanceof%20Humanoid;%0A%20%20%20%20%7D%0A%7D);%0AActionWear.carry.addRule(Humanoid.cacheInvalidationActionRule);%0AActionRemove.carry.addRule(Humanoid.cacheInvalidationActionRule);%0Avar%20WorldState;%0A(function%20(WorldState)%20%7B%0A%20%20%20%20var%20worldTurn%20=%200;%0A%20%20%20%20var%20playerTurn%20=%200;%0A%20%20%20%20WorldState.player%20=%20new%20Humanoid(%7B%20isMale:%20false%20%7D);%0A%20%20%20%20WorldState.player.description%20=%20Humanoid.getPlayerDescription;%0A%20%20%20%20var%20rememberedRooms%20=%20new%20StoredVariable(%7B%0A%20%20%20%20%20%20%20%20id:%20%22Remembered%20Rooms%22,%0A%20%20%20%20%20%20%20%20value:%20[]%0A%20%20%20%20%7D);%0A%20%20%20%20var%20rememberedFodder%20=%20[];%0A%20%20%20%20let%20rememberedRoomsForIntelligence%20=%202;%0A%20%20%20%20let%20rememberedRoomsForSurvival%20=%201;%0A%20%20%20%20WorldState.RememberingRoomRulebook%20=%20new%20Rulebook(%22Remembering%20Room%20something%22);%0A%20%20%20%20function%20isTurnWaiting()%20%7B%0A%20%20%20%20%20%20%20%20return%20worldTurn%20%3C%20playerTurn;%0A%20%20%20%20%7D%0A%20%20%20%20WorldState.isTurnWaiting%20=%20isTurnWaiting;%0A%20%20%20%20function%20incrementWorldTurn()%20%7B%0A%20%20%20%20%20%20%20%20worldTurn++;%0A%20%20%20%20%7D%0A%20%20%20%20WorldState.incrementWorldTurn%20=%20incrementWorldTurn;%0A%20%20%20%20function%20incrementPlayerTurn()%20%7B%0A%20%20%20%20%20%20%20%20playerTurn++;%0A%20%20%20%20%7D%0A%20%20%20%20WorldState.incrementPlayerTurn%20=%20incrementPlayerTurn;%0A%20%20%20%20function%20getCurrentTurn()%20%7B%0A%20%20%20%20%20%20%20%20return%20playerTurn;%0A%20%20%20%20%7D%0A%20%20%20%20WorldState.getCurrentTurn%20=%20getCurrentTurn;%0A%20%20%20%20function%20setCurrentTurn(turn)%20%7B%0A%20%20%20%20%20%20%20%20playerTurn%20=%20turn;%0A%20%20%20%20%20%20%20%20worldTurn%20=%20turn;%0A%20%20%20%20%7D%0A%20%20%20%20WorldState.setCurrentTurn%20=%20setCurrentTurn;%0A%20%20%20%20WorldState.RememberingRoomInList%20=%20WorldState.RememberingRoomRulebook.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20name:%20%22Is%20room%20listed%20in%20remembered%20rooms?%22,%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20%20%20%20%20priority:%20Rule.PRIORITY_LOW,%0A%20%20%20%20%20%20%20%20code:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(rememberedRooms.value.indexOf(runner.noun.getName())%20!=%20-1%20%7C%7C%20rememberedFodder.indexOf(runner.noun)%20!=%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%20%20%20%20WorldState.RememberingRoomInMap%20=%20WorldState.RememberingRoomRulebook.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20name:%20%22Is%20room%20shown%20on%20a%20map?%22,%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20%20%20%20%20priority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20%20%20%20%20code:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20maps%20=%20Thing.CarryRelation.getRightType(WorldState.player,%20MapNote);%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20maps.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(maps[i].contains(runner.noun))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%20%20%20%20async%20function%20isRoomRemembered(room)%20%7B%0A%20%20%20%20%20%20%20%20let%20result%20=%20await%20WorldState.RememberingRoomRulebook.execute(%7B%20noun:%20room%20%7D);%0A%20%20%20%20%20%20%20%20return%20result%20==%20true;%0A%20%20%20%20%7D%0A%20%20%20%20WorldState.isRoomRemembered%20=%20isRoomRemembered;%0A%20%20%20%20function%20getRememberedRooms()%20%7B%0A%20%20%20%20%20%20%20%20return%20rememberedRooms.value;%0A%20%20%20%20%7D%0A%20%20%20%20WorldState.getRememberedRooms%20=%20getRememberedRooms;%0A%20%20%20%20function%20getRememberedRoomsAsRooms()%20%7B%0A%20%20%20%20%20%20%20%20let%20rooms%20=%20[];%0A%20%20%20%20%20%20%20%20rememberedRooms.value.forEach(roomName%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20room%20=%20Room.getRoom(roomName);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(room%20!=%20undefined)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rooms.push(room);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20rooms;%0A%20%20%20%20%7D%0A%20%20%20%20WorldState.getRememberedRoomsAsRooms%20=%20getRememberedRoomsAsRooms;%0A%20%20%20%20function%20getMaximumRememberedRooms()%20%7B%0A%20%20%20%20%20%20%20%20let%20intRooms%20=%20WorldState.player.getStat(Attributes.Intelligence)%20*%20rememberedRoomsForIntelligence;%0A%20%20%20%20%20%20%20%20let%20skillRooms%20=%20WorldState.player.getSkill(Skills.Survival)%20*%20rememberedRoomsForSurvival;%0A%20%20%20%20%20%20%20%20return%20intRooms%20+%20skillRooms;%0A%20%20%20%20%7D%0A%20%20%20%20WorldState.getMaximumRememberedRooms%20=%20getMaximumRememberedRooms;%0A%20%20%20%20function%20truncateRooms()%20%7B%0A%20%20%20%20%20%20%20%20while%20(rememberedRooms.value.length%20%3E%20getMaximumRememberedRooms())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20rememberedRooms.value.pop();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20WorldState.truncateRooms%20=%20truncateRooms;%0A%20%20%20%20function%20rememberRoom(...rooms)%20%7B%0A%20%20%20%20%20%20%20%20rooms.forEach((value)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(value%20instanceof%20Room)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(value.fodder)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(rememberedFodder.indexOf(value)%20==%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rememberedFodder.push(value);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20idx%20=%20rememberedRooms.value.indexOf(value.getName());%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(idx%20!=%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rememberedRooms.value.splice(idx,%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rememberedRooms.value.unshift(value.getName());%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20truncateRooms();%0A%20%20%20%20%7D%0A%20%20%20%20WorldState.rememberRoom%20=%20rememberRoom;%0A%20%20%20%20function%20saveState()%20%7B%0A%20%20%20%20%20%20%20%20let%20things%20=%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20carried:%20[],%0A%20%20%20%20%20%20%20%20%20%20%20%20worn:%20[],%0A%20%20%20%20%20%20%20%20%20%20%20%20wielded:%20[]%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Things:%20things%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%7D%0A%20%20%20%20WorldState.saveState%20=%20saveState;%0A%20%20%20%20WorldState.CorrectRememberedRoomsRule%20=%20PlayBegins.rulebook.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20name:%20%22Correct%20remembered%20rooms%22,%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20%20%20%20%20priority:%20Rule.PRIORITY_MEDIUM,%0A%20%20%20%20%20%20%20%20code:%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20allRooms%20=%20rememberedRooms.value;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20currentRoom%20=%20WorldState.player.getRoom();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(allRooms.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rememberedRooms.value%20=%20[currentRoom.getName()];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20newRooms%20=%20[];%0A%20%20%20%20%20%20%20%20%20%20%20%20function%20recursivelyAddRooms(room)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(room%20instanceof%20RoomRandom)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(room.fodder)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rememberedFodder.push(room);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20room.connections.forEach((newRoom)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20recursivelyAddRooms(newRoom);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(allRooms.indexOf(room.getName())%20!=%20-1%20&&%20newRooms.indexOf(room.getName())%20==%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20newRooms.push(room.getName());%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20room.connections.forEach((newRoom)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20recursivelyAddRooms(newRoom);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20recursivelyAddRooms(currentRoom);%0A%20%20%20%20%20%20%20%20%20%20%20%20rememberedRooms.value%20=%20newRooms;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%7D)(WorldState%20%7C%7C%20(WorldState%20=%20%7B%7D));%0Aclass%20Region%20%7B%0A%20%20%20%20constructor(name)%20%7B%0A%20%20%20%20%20%20%20%20this.name%20=%20name;%0A%20%20%20%20%7D%0A%20%20%20%20place(...rooms)%20%7B%0A%20%20%20%20%20%20%20%20rooms.forEach(room%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(room%20instanceof%20Room)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Region.RegionRoom.setRelation(this,%20room);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Region.RegionRegion.setRelation(this,%20room);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20getRooms()%20%7B%0A%20%20%20%20%20%20%20%20let%20rooms%20=%20Region.RegionRoom.getRight(this);%0A%20%20%20%20%20%20%20%20Region.RegionRegion.getRight(this).forEach((region)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Region.RegionRoom.getRight(region).forEach((room)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rooms.push(room);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20rooms;%0A%20%20%20%20%7D%0A%20%20%20%20containsRoom(room)%20%7B%0A%20%20%20%20%20%20%20%20let%20directlyContained%20=%20Region.RegionRoom.getLeft(room)%20==%20this;%0A%20%20%20%20%20%20%20%20if%20(directlyContained)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(Region.RegionRegion.getLeft(this)%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.getRooms().indexOf(room)%20!=%20-1;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%7D%0A%20%20%20%20contains(thing)%20%7B%0A%20%20%20%20%20%20%20%20let%20room%20=%20thing.getRoom();%0A%20%20%20%20%20%20%20%20if%20(room%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20regions%20=%20Region.InRelation.getAllLeft(room);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20regions.indexOf(this)%20!=%20-1;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0ARegion.RegionRoom%20=%20new%20RelationOneToMany();%0ARegion.RegionRegion%20=%20new%20RelationOneToMany();%0ARegion.InRelation%20=%20new%20RelationHandlerStrictOneToMany(Region.RegionRegion,%20Region.RegionRoom);%0Aclass%20Shuffler%20%7B%0A%20%20%20%20constructor(array,%20rng)%20%7B%0A%20%20%20%20%20%20%20%20this.position%20=%200;%0A%20%20%20%20%20%20%20%20this.rng%20=%20rng%20==%20undefined%20?%20Math.random%20:%20rng;%0A%20%20%20%20%20%20%20%20this.array%20=%20array;%0A%20%20%20%20%7D%0A%20%20%20%20restart()%20%7B%0A%20%20%20%20%20%20%20%20this.position%20=%200;%0A%20%20%20%20%7D%0A%20%20%20%20getOne()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.position%20%3E=%20this.array.length)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20undefined;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20randomIndex%20=%20Math.floor(this.rng()%20*%20(this.array.length%20-%20this.position))%20+%20this.position;%0A%20%20%20%20%20%20%20%20let%20localCopy%20=%20this.array[this.position];%0A%20%20%20%20%20%20%20%20this.array[this.position]%20=%20this.array[randomIndex];%0A%20%20%20%20%20%20%20%20this.array[randomIndex]%20=%20localCopy;%0A%20%20%20%20%20%20%20%20return%20this.array[this.position++];%0A%20%20%20%20%7D%0A%20%20%20%20getShuffled()%20%7B%0A%20%20%20%20%20%20%20%20let%20array%20=%20this.array.slice(0);%0A%20%20%20%20%20%20%20%20var%20m%20=%20array.length,%20t,%20i;%0A%20%20%20%20%20%20%20%20while%20(m)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20i%20=%20Math.floor(this.rng()%20*%20m--);%0A%20%20%20%20%20%20%20%20%20%20%20%20t%20=%20array[m];%0A%20%20%20%20%20%20%20%20%20%20%20%20array[m]%20=%20array[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20array[i]%20=%20t;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20array;%0A%20%20%20%20%7D%0A%7D%0Avar%20AIRules;%0A(function%20(AIRules)%20%7B%0A%20%20%20%20AIRules.PickShiny%20=%20AI.rules.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20name:%20%22Pick%20Shinies%22,%0A%20%20%20%20%20%20%20%20firstPriority:%20AIRules.PRIORITY_ACTING_ON_PLACE,%0A%20%20%20%20%20%20%20%20conditions:%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20person%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20person.AI.picksShinies;%0A%20%20%20%20%20%20%20%20%7D,%0A%20%20%20%20%20%20%20%20code:%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20person%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20room%20=%20person.getRoom();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20visibleThings%20=%20room.getContainedAndVisibleTo(person);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(visibleThings.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20visibleThings.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!visibleThings[i].fixedInPlace%20&&%20visibleThings[i].getShiny())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20new%20ActionTake(person,%20visibleThings[i]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%7D)(AIRules%20%7C%7C%20(AIRules%20=%20%7B%7D));%0Avar%20AIRules;%0A(function%20(AIRules)%20%7B%0A%20%20%20%20AIRules.Wander%20=%20AI.rules.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20name:%20%22Wander%22,%0A%20%20%20%20%20%20%20%20firstPriority:%20AIRules.PRIORITY_ACTING_ON_IDLE,%0A%20%20%20%20%20%20%20%20conditions:%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20person%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20person.AI.wanderer%20&&%20(Math.random()%20*%20100)%20%3E%20person.AI.wanderChance;%0A%20%20%20%20%20%20%20%20%7D,%0A%20%20%20%20%20%20%20%20code:%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20person%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20room%20=%20person.getRoom();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(person.AI.wandersOn%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(person.AI.wandersOn.containsRoom(room))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20connections%20=%20room.connections.slice();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20realConnections%20=%20[];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20connections.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(connections[i]%20!=%20undefined%20&&%20person.AI.wandersOn.containsRoom(connections[i]))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20realConnections.push(i);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20direction%20=%20((new%20Shuffler(realConnections)).getOne());%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20new%20ActionGo(person,%20direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20regionRooms%20=%20person.AI.wandersOn.getRooms().filter((a)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(a%20instanceof%20RoomRandom%20&&%20a.placed)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20regionRooms.sort((a,%20b)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20dist%20=%20a.getDistanceTo(b);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(dist%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20-dist;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%200;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20targetRoom%20=%20regionRooms.pop();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20new%20ActionGo(person,%20targetRoom);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20direction%20=%20room.getConnectedDirection();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20new%20ActionGo(person,%20direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%7D)(AIRules%20%7C%7C%20(AIRules%20=%20%7B%7D));%0Aclass%20ActionDrop%20extends%20Action%20%7B%0A%20%20%20%20getCommandText()%20%7B%0A%20%20%20%20%20%20%20%20return%20%22drop%20%22%20+%20(this.getNoun(0)%20!=%20undefined%20?%20this.getNoun(0).getPrintedName()%20:%20%22%22);%0A%20%20%20%20%7D%0A%7D%0AActionDrop.check%20=%20new%20Rulebook(%22Check%20Dropping%22);%0AActionDrop.carry%20=%20new%20Rulebook(%22Carry%20out%20Dropping%22);%0AActionDrop.check.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Check%20Dropping%20-%20Are%20you%20Wearing%20it?%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20code:%20async%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20let%20actor%20=%20action.actor;%0A%20%20%20%20%20%20%20%20let%20thing%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20if%20(Thing.WearRelation.getLeft(thing)%20==%20actor%20%7C%7C%20Thing.WieldRelation.getLeft(thing)%20==%20actor)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(action.actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22(first%20taking%20off%20the%20%22,%20thing,%20%22)%22,%20Say.LINE_BREAK);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20takingAction%20=%20new%20ActionRemove(actor,%20thing);%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20takingAction.execute();%0A%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(takingAction.say);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(Thing.WearRelation.getLeft(thing)%20==%20actor%20%7C%7C%20Thing.WieldRelation.getLeft(thing)%20==%20actor)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(Say.LINE_BREAK);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0AActionDrop.check.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Check%20Dropping%20-%20Do%20you%20have%20it??%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20let%20actor%20=%20action.actor;%0A%20%20%20%20%20%20%20%20let%20thing%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20if%20(Thing.CarryRelation.getLeft(thing)%20!=%20actor)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(%22You%20don't%20have%20it.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0AActionDrop.carry.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Dropping%20-%20Place%20the%20noun%20on%20the%20floor%22,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20let%20actor%20=%20action.actor;%0A%20%20%20%20%20%20%20%20let%20thing%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20Thing.EnclosedRelation.unsetRight(thing);%0A%20%20%20%20%20%20%20%20actor.getRoom().place(thing);%0A%20%20%20%20%20%20%20%20if%20(actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(new%20SayBold(action.getNoun(0).getPrintedName()%20+%20%22:%20%22),%20%22Dropped.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20action.say.add(new%20SayThe(),%20actor,%20%22%20drops%20%22,%20new%20SayThe(),%20action.getNoun(0),%20%22%20on%20the%20floor.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0AElements.HyperlinkHandler.HyperlinkingRulebook.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Hyperlink%20-%20Drop%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20thing%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20if%20(Thing.CarryRelation.getLeft(thing)%20==%20WorldState.player%20%7C%7C%20Thing.WieldRelation.getLeft(thing)%20==%20WorldState.player%20%7C%7C%20Thing.WearRelation.getLeft(thing)%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.HyperlinkHandler.addAvailableAction(%22Drop%22,%20new%20ActionDrop(WorldState.player,%20thing));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0AElements.InventoryHandler.LinkingThing.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Inventory%20-%20Drop%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20thing%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20Elements.InventoryHandler.printThingLink(%22D%22,%20new%20ActionDrop(WorldState.player,%20thing));%0A%20%20%20%20%7D%0A%7D));%0Aclass%20ActionInventory%20extends%20Action%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.requiresTurn%20=%20false;%0A%20%20%20%20%20%20%20%20this.requiresNoun%20=%20false;%0A%20%20%20%20%20%20%20%20this.requiresVisibility%20=%20false;%0A%20%20%20%20%7D%0A%20%20%20%20getCommandText()%20%7B%0A%20%20%20%20%20%20%20%20return%20%22take%20inventory%22;%0A%20%20%20%20%7D%0A%20%20%20%20static%20async%20createButton(thing,%20resolve)%20%7B%0A%20%20%20%20%20%20%20%20let%20p%20=%20document.createElement(%22p%22);%0A%20%20%20%20%20%20%20%20p.classList.add(%22choice%22);%0A%20%20%20%20%20%20%20%20let%20elements%20=%20await%20((new%20Say(thing)).getPureElements());%0A%20%20%20%20%20%20%20%20elements.forEach(ele%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20p.appendChild(ele);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20p.addEventListener(%22click%22,%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20resolve(thing);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20Controls.KeyHandler.applyCode(p,%20Controls.KeyHandler.getFirstKeyCode());%0A%20%20%20%20%20%20%20%20return%20p;%0A%20%20%20%20%7D%0A%7D%0AActionInventory.check%20=%20new%20Rulebook(%22Check%20Taking%20Inventory%22);%0AActionInventory.carry%20=%20new%20Rulebook(%22Carry%20out%20Taking%20Inventory%22);%0AActionInventory.checkInventoryRule%20=%20ActionInventory.check.createAndAddRule(%7B%0A%20%20%20%20name:%20%22List%20inventory%20as%20options%22,%0A%20%20%20%20code:%20async%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20player%20=%20WorldState.player;%0A%20%20%20%20%20%20%20%20let%20wielded%20=%20Thing.WieldRelation.getRight(player).sort(Elements.InventoryHandler.thingSort);%0A%20%20%20%20%20%20%20%20let%20worn%20=%20Thing.WearRelation.getRight(player).sort(Elements.InventoryHandler.thingSort);%0A%20%20%20%20%20%20%20%20let%20carried%20=%20Thing.CarryRelation.getRight(player).sort(Elements.InventoryHandler.thingSort);%0A%20%20%20%20%20%20%20%20let%20buttons;%0A%20%20%20%20%20%20%20%20let%20chosenPromise%20=%20new%20Promise((async%20(resolve)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Controls.KeyHandler.reset();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20say%20=%20new%20Say();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(wielded.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(new%20SayBold(%22Wielded:%22),%20Say.LINE_BREAK);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20wielded.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(await%20ActionInventory.createButton(wielded[i],%20resolve));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(worn.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(say.sequence.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(Say.PARAGRAPH_BREAK);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(new%20SayBold(%22Worn:%22),%20Say.LINE_BREAK);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20worn.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(await%20ActionInventory.createButton(worn[i],%20resolve));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(carried.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(say.sequence.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(Say.PARAGRAPH_BREAK);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(new%20SayBold(%22Carried:%22),%20Say.LINE_BREAK);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20carried.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(await%20ActionInventory.createButton(carried[i],%20resolve));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(say.sequence.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20resolve(undefined);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20buttons%20=%20await%20say.getHTMLContent();%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.print(...(buttons));%0A%20%20%20%20%20%20%20%20%7D));%0A%20%20%20%20%20%20%20%20let%20chosenThing%20=%20await%20chosenPromise;%0A%20%20%20%20%20%20%20%20if%20(chosenThing%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.unprint(...buttons);%0A%20%20%20%20%20%20%20%20%20%20%20%20Controls.KeyHandler.reset();%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20new%20ActionExamine(WorldState.player,%20chosenThing);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20rulebook.noun.say.add(%22You%20have%20nothing.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D);%0AElements.HyperlinkHandler.CommonActionsRulebook.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Add%20Take%20Inventory%20Command%20Rule%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20priority:%20Rule.PRIORITY_MEDIUM,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20Elements.HyperlinkHandler.addCommonAction(%22Inventory%22,%20new%20ActionInventory(WorldState.player));%0A%20%20%20%20%7D%0A%7D));%0Aclass%20ActionSaveGame%20extends%20Action%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.requiresTurn%20=%20false;%0A%20%20%20%20%20%20%20%20this.requiresNoun%20=%20false;%0A%20%20%20%20%20%20%20%20this.requiresVisibility%20=%20false;%0A%20%20%20%20%7D%0A%20%20%20%20getCommandText()%20%7B%0A%20%20%20%20%20%20%20%20return%20%22save%20to%20file%22;%0A%20%20%20%20%7D%0A%7D%0AActionSaveGame.check%20=%20new%20Rulebook(%22Check%20Saving%22);%0AActionSaveGame.carry%20=%20new%20Rulebook(%22Carry%20out%20Saving%22);%0AActionSaveGame.carry.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Save%20the%20game%22,%0A%20%20%20%20code:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20SaveHandler.saveToFile();%0A%20%20%20%20%20%20%20%20runner.noun.say.add(%22Saved.%22);%0A%20%20%20%20%7D%0A%7D));%0AElements.HyperlinkHandler.CommonActionsRulebook.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Add%20Save%20Command%20Rule%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20priority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20Elements.HyperlinkHandler.addCommonAction(%22Save%22,%20new%20ActionSaveGame(WorldState.player));%0A%20%20%20%20%7D%0A%7D));%0Aclass%20ActionTalk%20extends%20Action%20%7B%0A%20%20%20%20getCommandText()%20%7B%0A%20%20%20%20%20%20%20%20return%20%22talk%20to%20%22%20+%20(this.getNoun(0)%20!=%20undefined%20?%20this.getNoun(0).getPrintedName()%20:%20%22%22);%0A%20%20%20%20%7D%0A%7D%0AActionTalk.PRIORITY_SITUATION_DIALOGUE%20=%209;%0AActionTalk.PRIORITY_POSSESSION_DIALOGUE%20=%207;%0AActionTalk.PRIORITY_LOCATION_DIALOGUE%20=%205;%0AActionTalk.PRIORITY_COMMON_DIALOGUE%20=%203;%0AActionTalk.PRIORITY_GLOBAL_DIALOGUE%20=%201;%0AActionTalk.check%20=%20new%20Rulebook(%22Check%20Talking%22);%0AActionTalk.carry%20=%20new%20Rulebook(%22Carry%20out%20Talking%22);%0AActionTalk.defaultCarryTalkingRule%20=%20ActionTalk.carry.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Talking%20-%20Doesn't%20want%20to%20talk%22,%0A%20%20%20%20firstPriority:%20-1,%0A%20%20%20%20priority:%20-1,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20action%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20let%20thing%20=%20action.getNoun(0);%0A%20%20%20%20%20%20%20%20if%20(thing%20instanceof%20Person)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20action.say%20=%20new%20Say(%22It%20doesn't%20look%20like%20%22,%20new%20SayHeSheIt(thing),%20%22%20wants%20to%20talk.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20action.say%20=%20new%20Say(%22How%20are%20you%20going%20to%20talk%20to%20that?%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D);%0AElements.HyperlinkHandler.HyperlinkingRulebook.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Hyperlink%20-%20Talk%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20thing%20=%20rulebook.noun;%0A%20%20%20%20%20%20%20%20if%20(thing%20instanceof%20Person%20&&%20thing.getRoom()%20==%20WorldState.player.getRoom())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.HyperlinkHandler.addAvailableAction(%22Talk%22,%20new%20ActionTalk(WorldState.player,%20thing));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0Aclass%20ActionWait%20extends%20Action%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.requiresTurn%20=%20true;%0A%20%20%20%20%20%20%20%20this.requiresNoun%20=%20false;%0A%20%20%20%20%20%20%20%20this.requiresVisibility%20=%20false;%0A%20%20%20%20%7D%0A%20%20%20%20getCommandText()%20%7B%0A%20%20%20%20%20%20%20%20return%20%22wait%22;%0A%20%20%20%20%7D%0A%7D%0AActionWait.check%20=%20new%20Rulebook(%22Check%20Waiting%22);%0AActionWait.carry%20=%20new%20Rulebook(%22Carry%20out%20Waiting%22);%0AActionWait.carry.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Print%20waiting%20message%22,%0A%20%20%20%20code:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20if%20(runner.noun.actor%20==%20WorldState.player)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20runner.noun.say.add(%22You%20wait.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D));%0AElements.HyperlinkHandler.CommonActionsRulebook.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Add%20Wait%20Command%20Rule%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20priority:%20Rule.PRIORITY_MEDIUM,%0A%20%20%20%20code:%20(rulebook)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20Elements.HyperlinkHandler.addCommonAction(%22Wait%22,%20new%20ActionWait(WorldState.player));%0A%20%20%20%20%7D%0A%7D));%0Aclass%20ContentDescription%20%7B%0A%20%20%20%20constructor(name,%20group)%20%7B%0A%20%20%20%20%20%20%20%20this.saidCount%20=%200;%0A%20%20%20%20%20%20%20%20this.name%20=%20name;%0A%20%20%20%20%20%20%20%20this.group%20=%20group;%0A%20%20%20%20%7D%0A%20%20%20%20getScore()%20%7B%0A%20%20%20%20%20%20%20%20return%20(this.group).getScore();%0A%20%20%20%20%7D%0A%20%20%20%20getDescription(group)%20%7B%0A%20%20%20%20%20%20%20%20this.saidCount++;%0A%20%20%20%20%20%20%20%20if%20(typeof%20this.description%20==%20%22function%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.description(this,%20group);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20this.description;%0A%20%20%20%20%7D%0A%20%20%20%20setDescription(description)%20%7B%0A%20%20%20%20%20%20%20%20if%20(!(description%20instanceof%20Say))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.description%20=%20new%20Say(description);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.description%20=%20description;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20this;%0A%20%20%20%20%7D%0A%20%20%20%20static%20pickDescriptions(cda,%20target)%20%7B%0A%20%20%20%20%20%20%20%20let%20a%20=%20cda.slice();%0A%20%20%20%20%20%20%20%20let%20groups%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20a.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20randomIndex%20=%20Math.floor(Math.random()%20*%20(a.length%20-%20i))%20+%20i;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20temp%20=%20a[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20a[i]%20=%20a[randomIndex];%0A%20%20%20%20%20%20%20%20%20%20%20%20a[randomIndex]%20=%20temp;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20a.sort((a,%20b)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20precision%20=%205;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20scoreA%20=%20Math.floor(precision%20*%20a.getScore()%20/%20(a.saidCount%20+%201))%20/%20precision;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20scoreB%20=%20Math.floor(precision%20*%20b.getScore()%20/%20(b.saidCount%20+%201))%20/%20precision;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(scoreA%20!=%20scoreB)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20scoreB%20-%20scoreA;%0A%20%20%20%20%20%20%20%20%20%20%20%20return%200;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20a.forEach(description%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20groups.push(description.group);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20let%20matches%20=%20target.matchAgainst(groups);%0A%20%20%20%20%20%20%20%20if%20(matches%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20result%20=%20[];%0A%20%20%20%20%20%20%20%20%20%20%20%20matches.forEach(i%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20result.push(a[i].getDescription(target));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20result.push(new%20Say(%22%20%22));%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20result;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.warn(%22No%20description%20available%20for%22,%20target);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20[new%20Say(%22Warning:%20No%20description%20available%20for%20the%20current%20situation.%20Please%20report%20so%20it%20can%20be%20corrected.%22)];%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0Aclass%20ContentDifferential%20%7B%0A%20%20%20%20constructor(...nouns)%20%7B%0A%20%20%20%20%20%20%20%20this.nouns%20=%20[];%0A%20%20%20%20%20%20%20%20this.score%20=%200;%0A%20%20%20%20%20%20%20%20this.addNoun(...nouns);%0A%20%20%20%20%7D%0A%20%20%20%20addNoun(...nouns)%20%7B%0A%20%20%20%20%20%20%20%20nouns.forEach(noun%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.nouns.push(noun);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.score%20=%20this.getScore();%0A%20%20%20%20%20%20%20%20return%20this;%0A%20%20%20%20%7D%0A%20%20%20%20getNouns()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.nouns;%0A%20%20%20%20%7D%0A%20%20%20%20replaceNouns(...nouns)%20%7B%0A%20%20%20%20%20%20%20%20this.nouns%20=%20nouns;%0A%20%20%20%20%20%20%20%20return%20this;%0A%20%20%20%20%7D%0A%20%20%20%20isMatch(cd,%20allowPartial%20=%20false)%20%7B%0A%20%20%20%20%20%20%20%20let%20check%20=%20this.getUnmatched(cd);%0A%20%20%20%20%20%20%20%20if%20((allowPartial%20%7C%7C%20check.unmatched.length%20==%200)%20&&%20check.matching.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(check.matching.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20check.unmatched.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!(check.unmatched[i]%20instanceof%20ContentMarker))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(check.unmatched[i].isImportant())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%7D%0A%20%20%20%20getUnmatched(cd)%20%7B%0A%20%20%20%20%20%20%20%20let%20unmatched%20=%20cd.nouns.slice();%0A%20%20%20%20%20%20%20%20let%20matching%20=%20this.nouns.slice();%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%20matching.length%20-%201;%20i%20%3E=%200;%20i--)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20k%20=%20unmatched.length%20-%201;%20k%20%3E=%200;%20k--)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(ContentDifferential.compareNouns(matching[i],%20unmatched[k]))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20unmatched.splice(k,%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20matching.splice(i,%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20matching:%20matching,%0A%20%20%20%20%20%20%20%20%20%20%20%20unmatched:%20unmatched%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%7D%0A%20%20%20%20getScore()%20%7B%0A%20%20%20%20%20%20%20%20let%20highest%20=%200;%0A%20%20%20%20%20%20%20%20let%20count%20=%20this.nouns.length;%0A%20%20%20%20%20%20%20%20this.nouns.forEach((noun)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20level%20=%20ContentDifferential.getNounLevel(noun);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(highest%20%3C%20level)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20highest%20=%20level;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20highest%20+%20(count%20/%20100);%0A%20%20%20%20%7D%0A%20%20%20%20static%20getNounLevel(noun)%20%7B%0A%20%20%20%20%20%20%20%20if%20(noun%20==%20undefined%20%7C%7C%20noun%20==%20null)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%200;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(typeof%20noun%20==%20%22function%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(noun.prototype%20instanceof%20Thing)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20specifity%20=%202;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20parentClass%20=%20Object.getPrototypeOf(noun);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20while%20(parentClass%20!=%20Thing)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20specifity%20+=%200.1;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20parentClass%20=%20Object.getPrototypeOf(parentClass);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20specifity;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%202.5;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(noun%20instanceof%20Thing)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%204;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(noun%20instanceof%20ContentDifferential)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%201;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%200.5;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20static%20compareNouns(a,%20b)%20%7B%0A%20%20%20%20%20%20%20%20if%20(a%20==%20undefined%20%7C%7C%20a%20==%20null)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(typeof%20a%20==%20%22function%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20b%20==%20a%20%7C%7C%20b%20instanceof%20a%20%7C%7C%20(typeof%20b%20==%20%22function%22%20&&%20b.prototype%20instanceof%20a);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(a%20instanceof%20Thing)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20b%20==%20a;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20a%20===%20b;%0A%20%20%20%20%7D%0A%20%20%20%20static%20isMatch(matchFrom,%20matchAgainst)%20%7B%0A%20%20%20%20%20%20%20%20let%20unmatched%20=%20matchAgainst.slice();%0A%20%20%20%20%20%20%20%20let%20matching%20=%20matchFrom.slice();%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%20matching.length%20-%201;%20i%20%3E=%200;%20i--)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20k%20=%20unmatched.length%20-%201;%20k%20%3E=%200;%20k--)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(matching[i].isMatch(unmatched[k]))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20unmatched.splice(k,%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20matching.splice(i,%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(unmatched.length%20==%200%20&&%20matching.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(unmatched.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20matching.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20nouns%20=%20matching[i].getNouns();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20k%20=%200;%20k%20%3C%20nouns.length;%20k++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!(nouns[k]%20instanceof%20ContentMarker))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(nouns[k].isImportant())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%7D%0A%7D%0Avar%20ContentGroupMatch;%0A(function%20(ContentGroupMatch)%20%7B%0A%20%20%20%20ContentGroupMatch[ContentGroupMatch[%22NO_MATCH%22]%20=%200]%20=%20%22NO_MATCH%22;%0A%20%20%20%20ContentGroupMatch[ContentGroupMatch[%22PARTIAL_MATCH%22]%20=%201]%20=%20%22PARTIAL_MATCH%22;%0A%20%20%20%20ContentGroupMatch[ContentGroupMatch[%22PERFECT_MATCH%22]%20=%202]%20=%20%22PERFECT_MATCH%22;%0A%7D)(ContentGroupMatch%20%7C%7C%20(ContentGroupMatch%20=%20%7B%7D));%0Aclass%20ContentGroup%20%7B%0A%20%20%20%20constructor(...units)%20%7B%0A%20%20%20%20%20%20%20%20this.units%20=%20[];%0A%20%20%20%20%20%20%20%20units.forEach(unit%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.addUnit(unit);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20addUnit(unit)%20%7B%0A%20%20%20%20%20%20%20%20this.units.push(unit);%0A%20%20%20%20%20%20%20%20return%20this;%0A%20%20%20%20%7D%0A%20%20%20%20reset()%20%7B%0A%20%20%20%20%20%20%20%20this.matching%20=%20this.units.slice();%0A%20%20%20%20%7D%0A%20%20%20%20isMatching()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.matching.length;%0A%20%20%20%20%7D%0A%20%20%20%20setMatching(matching)%20%7B%0A%20%20%20%20%20%20%20%20this.matching%20=%20matching;%0A%20%20%20%20%7D%0A%20%20%20%20isMatch(cg)%20%7B%0A%20%20%20%20%20%20%20%20let%20unmatched%20=%20cg.matching.slice();%0A%20%20%20%20%20%20%20%20let%20matching%20=%20this.units.slice();%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%20matching.length%20-%201;%20i%20%3E=%200;%20i--)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20k%20=%20unmatched.length%20-%201;%20k%20%3E=%200;%20k--)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(matching[i].isMatch(unmatched[k]))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20unmatched.splice(k,%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20matching.splice(i,%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20type:%20matching.length%20%3E%200%20?%20ContentGroupMatch.NO_MATCH%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20unmatched.length%20==%200%20?%20ContentGroupMatch.PERFECT_MATCH%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ContentGroupMatch.PARTIAL_MATCH,%0A%20%20%20%20%20%20%20%20%20%20%20%20unmatched:%20unmatched%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%7D%0A%20%20%20%20getScore()%20%7B%0A%20%20%20%20%20%20%20%20let%20score%20=%200;%0A%20%20%20%20%20%20%20%20this.units.forEach(unit%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20score%20+=%20unit.getScore();%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20score;%0A%20%20%20%20%7D%0A%20%20%20%20matchAgainst(a)%20%7B%0A%20%20%20%20%20%20%20%20let%20matches%20=%20[];%0A%20%20%20%20%20%20%20%20this.reset();%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20a.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20match%20=%20a[i].isMatch(this);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(match.type%20!=%20ContentGroupMatch.NO_MATCH)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20matches.push(i);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.setMatching(match.unmatched);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!this.isMatching())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20matches;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20undefined;%0A%20%20%20%20%7D%0A%7D%0Aclass%20ContentMarker%20%7B%0A%20%20%20%20constructor(name,%20important)%20%7B%0A%20%20%20%20%20%20%20%20this.important%20=%20false;%0A%20%20%20%20%20%20%20%20this.name%20=%20name;%0A%20%20%20%20%20%20%20%20this.important%20=%20important%20==%20true;%0A%20%20%20%20%7D%0A%20%20%20%20isImportant()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.important;%0A%20%20%20%20%7D%0A%7D%0Aclass%20ContentUnit%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20this.categories%20=%20[];%0A%20%20%20%20%7D%0A%20%20%20%20addCategory(...nouns)%20%7B%0A%20%20%20%20%20%20%20%20this.categories.push(new%20ContentDifferential(...nouns));%0A%20%20%20%20%7D%0A%20%20%20%20isMatch(cu)%20%7B%0A%20%20%20%20%20%20%20%20return%20ContentDifferential.isMatch(this.categories,%20cu.categories);%0A%20%20%20%20%7D%0A%20%20%20%20getScore()%20%7B%0A%20%20%20%20%20%20%20%20let%20score%20=%200;%0A%20%20%20%20%20%20%20%20this.categories.forEach(diff%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20score%20+=%20diff.score;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20return%20score%20/%20this.categories.length;%0A%20%20%20%20%7D%0A%20%20%20%20matchAgainst(a)%20%7B%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20a.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(a[i].isMatch(this))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0Aclass%20CombatDescription%20extends%20ContentDescription%20%7B%0A%20%20%20%20constructor(name)%20%7B%0A%20%20%20%20%20%20%20%20super(name,%20new%20ContentGroup());%0A%20%20%20%20%20%20%20%20CombatDescription.DESCRIPTIONS.push(this);%0A%20%20%20%20%7D%0A%20%20%20%20addUnit()%20%7B%0A%20%20%20%20%20%20%20%20let%20unit%20=%20new%20CombatUnit();%0A%20%20%20%20%20%20%20%20this.group.addUnit(unit);%0A%20%20%20%20%20%20%20%20return%20unit;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getDescription(target)%20%7B%0A%20%20%20%20%20%20%20%20return%20ContentDescription.pickDescriptions(CombatDescription.DESCRIPTIONS,%20target);%0A%20%20%20%20%7D%0A%7D%0ACombatDescription.DESCRIPTIONS%20=%20[];%0Aclass%20CombatHit%20extends%20ContentMarker%20%7B%0A%7D%0ACombatHit.FULL_DODGE%20=%20new%20CombatHit(%22Full%20Dodge%22,%20true);%0ACombatHit.PARTIAL_DODGE%20=%20new%20CombatHit(%22Partial%20Dodge%22,%20true);%0ACombatHit.FULL_HIT%20=%20new%20CombatHit(%22Full%20Hit%22,%20true);%0Aclass%20CombatDamage%20extends%20ContentMarker%20%7B%0A%7D%0ACombatDamage.LOW_DAMAGE%20=%20new%20CombatDamage(%22Low%20Damage%22);%0ACombatDamage.MEDIUM_DAMAGE%20=%20new%20CombatDamage(%22Medium%20Damage%22);%0ACombatDamage.HIGH_DAMAGE%20=%20new%20CombatDamage(%22High%20Damage%22);%0Aclass%20CombatResult%20extends%20ContentMarker%20%7B%0A%7D%0ACombatResult.KNOCKED%20=%20new%20CombatResult(%22Target%20was%20knocked%20down%20by%20the%20attack%22,%20true);%0ACombatResult.KNOCKED_OFF%20=%20new%20CombatResult(%22Target%20was%20knocked%20off%20by%20the%20attack,%20becoming%20unconscious%22,%20true);%0ACombatResult.KILLED%20=%20new%20CombatResult(%22Target%20was%20killed%20by%20this%20attack%22,%20true);%0Aclass%20CombatUnit%20extends%20ContentUnit%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super();%0A%20%20%20%20%20%20%20%20this.actor%20=%20new%20ContentDifferential(Person);%0A%20%20%20%20%20%20%20%20this.target%20=%20new%20ContentDifferential(Person);%0A%20%20%20%20%20%20%20%20this.weapon%20=%20new%20ContentDifferential(Thing);%0A%20%20%20%20%20%20%20%20this.markers%20=%20new%20ContentDifferential();%0A%20%20%20%20%7D%0A%20%20%20%20setActor(it)%20%7B%0A%20%20%20%20%20%20%20%20this.actor%20=%20new%20ContentDifferential(it);%0A%20%20%20%20%20%20%20%20return%20this;%0A%20%20%20%20%7D%0A%20%20%20%20setTarget(it)%20%7B%0A%20%20%20%20%20%20%20%20this.target%20=%20new%20ContentDifferential(it);%0A%20%20%20%20%20%20%20%20return%20this;%0A%20%20%20%20%7D%0A%20%20%20%20setWeapon(it)%20%7B%0A%20%20%20%20%20%20%20%20this.weapon%20=%20new%20ContentDifferential(it);%0A%20%20%20%20%20%20%20%20return%20this;%0A%20%20%20%20%7D%0A%20%20%20%20addMarker(marker)%20%7B%0A%20%20%20%20%20%20%20%20this.markers.addNoun(marker);%0A%20%20%20%20%20%20%20%20return%20this;%0A%20%20%20%20%7D%0A%20%20%20%20getScore()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.actor.getScore()%20+%20this.target.getScore()%20+%20this.weapon.getScore()%20+%20this.markers.getScore();%0A%20%20%20%20%7D%0A%20%20%20%20isMatch(cu)%20%7B%0A%20%20%20%20%20%20%20%20if%20(cu%20instanceof%20CombatUnit)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.actor.isMatch(cu.actor)%20&&%20this.target.isMatch(cu.target)%20&&%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.weapon.isMatch(cu.weapon)%20&&%20this.markers.isMatch(cu.markers);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%7D%0A%7D%0Aclass%20FuckingDescription%20extends%20ContentDescription%20%7B%0A%20%20%20%20constructor(name)%20%7B%0A%20%20%20%20%20%20%20%20super(name,%20new%20ContentGroup());%0A%20%20%20%20%20%20%20%20FuckingDescription.DESCRIPTIONS.push(this);%0A%20%20%20%20%7D%0A%20%20%20%20addUnit()%20%7B%0A%20%20%20%20%20%20%20%20let%20unit%20=%20new%20FuckingUnit();%0A%20%20%20%20%20%20%20%20this.group.addUnit(unit);%0A%20%20%20%20%20%20%20%20return%20unit;%0A%20%20%20%20%7D%0A%20%20%20%20static%20getDescription(target)%20%7B%0A%20%20%20%20%20%20%20%20return%20ContentDescription.pickDescriptions(FuckingDescription.DESCRIPTIONS,%20target);%0A%20%20%20%20%7D%0A%7D%0AFuckingDescription.DESCRIPTIONS%20=%20[];%0Aclass%20FuckingStyle%20extends%20ContentMarker%20%7B%0A%7D%0AFuckingStyle.GENTLE%20=%20new%20FuckingStyle(%22Gentle%22);%0AFuckingStyle.ROUGH%20=%20new%20FuckingStyle(%22Rough%22);%0Aclass%20FuckingState%20extends%20ContentMarker%20%7B%0A%7D%0AFuckingState.PENETRATING%20=%20new%20FuckingState(%22Penetration%20Start%22,%20true);%0AFuckingState.REMOVING%20=%20new%20FuckingState(%22Removing%20Stick%22,%20true);%0AFuckingState.SPEEDING_UP%20=%20new%20FuckingState(%22Speeding%20up%22,%20true);%0AFuckingState.CUM_START%20=%20new%20FuckingState(%22Started%20Cumming%22,%20true);%0AFuckingState.CUMMING%20=%20new%20FuckingState(%22Cumming%22,%20true);%0AFuckingState.CUM_END%20=%20new%20FuckingState(%22Finished%20Cumming%22,%20true);%0AFuckingState.CUM_INSIDE%20=%20new%20FuckingState(%22Cum%20Inside%22,%20true);%0AFuckingState.CUM_OUTSIDE%20=%20new%20FuckingState(%22Cum%20Outside%22,%20true);%0Aclass%20FuckingUnit%20extends%20ContentUnit%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super();%0A%20%20%20%20%20%20%20%20this.fucker%20=%20new%20ContentDifferential(Person);%0A%20%20%20%20%20%20%20%20this.fucked%20=%20new%20ContentDifferential(Person);%0A%20%20%20%20%20%20%20%20this.hole%20=%20new%20ContentDifferential(SexHole);%0A%20%20%20%20%20%20%20%20this.stick%20=%20new%20ContentDifferential(SexStick);%0A%20%20%20%20%20%20%20%20this.markers%20=%20new%20ContentDifferential();%0A%20%20%20%20%7D%0A%20%20%20%20setFucker(it)%20%7B%0A%20%20%20%20%20%20%20%20this.fucker%20=%20new%20ContentDifferential(it);%0A%20%20%20%20%20%20%20%20return%20this;%0A%20%20%20%20%7D%0A%20%20%20%20setFucked(it)%20%7B%0A%20%20%20%20%20%20%20%20this.fucked%20=%20new%20ContentDifferential(it);%0A%20%20%20%20%20%20%20%20return%20this;%0A%20%20%20%20%7D%0A%20%20%20%20setHole(it)%20%7B%0A%20%20%20%20%20%20%20%20this.hole%20=%20new%20ContentDifferential(it);%0A%20%20%20%20%20%20%20%20return%20this;%0A%20%20%20%20%7D%0A%20%20%20%20setStick(it)%20%7B%0A%20%20%20%20%20%20%20%20this.stick%20=%20new%20ContentDifferential(it);%0A%20%20%20%20%20%20%20%20return%20this;%0A%20%20%20%20%7D%0A%20%20%20%20addMarker(marker)%20%7B%0A%20%20%20%20%20%20%20%20this.markers.addNoun(marker);%0A%20%20%20%20%20%20%20%20return%20this;%0A%20%20%20%20%7D%0A%20%20%20%20getScore()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.fucker.getScore()%20+%20this.fucked.getScore()%20+%20this.hole.getScore()%20+%20this.stick.getScore()%20+%20this.markers.getScore();%0A%20%20%20%20%7D%0A%20%20%20%20isMatch(fu)%20%7B%0A%20%20%20%20%20%20%20%20if%20(fu%20instanceof%20FuckingUnit)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.fucker.isMatch(fu.fucker)%20&&%20this.fucked.isMatch(fu.fucked)%20&&%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.hole.isMatch(fu.hole)%20&&%20this.stick.isMatch(fu.stick)%20&&%20this.markers.isMatch(fu.markers);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%7D%0A%7D%0Aclass%20BranchingOption%20%7B%0A%20%20%20%20constructor(say,%20appearCondition)%20%7B%0A%20%20%20%20%20%20%20%20this.previouslyPicked%20=%20false;%0A%20%20%20%20%20%20%20%20this.say%20=%20say;%0A%20%20%20%20%20%20%20%20this.appearCondition%20=%20appearCondition;%0A%20%20%20%20%7D%0A%7D%0Aclass%20BranchingDialogue%20%7B%0A%20%20%20%20constructor(...options)%20%7B%0A%20%20%20%20%20%20%20%20this.options%20=%20[];%0A%20%20%20%20%20%20%20%20this.addOptions(...options);%0A%20%20%20%20%7D%0A%20%20%20%20addOptions(...options)%20%7B%0A%20%20%20%20%20%20%20%20this.options.push(...options);%0A%20%20%20%20%20%20%20%20arrayUnique(this.options);%0A%20%20%20%20%7D%0A%20%20%20%20async%20getChosenOption()%20%7B%0A%20%20%20%20%20%20%20%20let%20validOptions%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200,%20value%20=%20this.options[i];%20value%20!=%20undefined;%20value%20=%20this.options[++i])%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(value.appearCondition%20==%20undefined%20%7C%7C%20(typeof%20value.appearCondition%20==%20%22function%22%20&&%20value.appearCondition())%20%7C%7C%20value.appearCondition)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20validOptions.push(value);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20choiceButtons%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20validOptions.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20value%20=%20validOptions[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20classes%20=%20[%22choice%22];%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(value.previouslyPicked)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20classes.push(%22picked%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20choiceButtons.push((await%20value.say.getHTML(%22p%22,%20classes))[0]);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20PlayerInput%20=%20new%20Promise((resolve,%20reject)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.resolve%20=%20resolve;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20Controls.KeyHandler.reset();%0A%20%20%20%20%20%20%20%20for%20(let%20index%20=%200,%20value%20=%20choiceButtons[index];%20value%20!=%20undefined;%20value%20=%20choiceButtons[++index])%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Controls.KeyHandler.applyCode(value,%20Controls.KeyHandler.getFirstKeyCode());%0A%20%20%20%20%20%20%20%20%20%20%20%20value.addEventListener(%22click%22,%20(e)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20validOptions[index].previouslyPicked%20=%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.resolve(validOptions[index]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20e.preventDefault();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20await%20Elements.CurrentTurnHandler.print(...choiceButtons);%0A%20%20%20%20%20%20%20%20let%20choice%20=%20await%20PlayerInput;%0A%20%20%20%20%20%20%20%20await%20Elements.CurrentTurnHandler.unprint(...choiceButtons);%0A%20%20%20%20%20%20%20%20return%20choice;%0A%20%20%20%20%7D%0A%7D%0Avar%20NodeType;%0A(function%20(NodeType)%20%7B%0A%20%20%20%20NodeType[NodeType[%22Node%22]%20=%200]%20=%20%22Node%22;%0A%20%20%20%20NodeType[NodeType[%22Tree%22]%20=%201]%20=%20%22Tree%22;%0A%20%20%20%20NodeType[NodeType[%22Text%22]%20=%202]%20=%20%22Text%22;%0A%20%20%20%20NodeType[NodeType[%22Set%22]%20=%203]%20=%20%22Set%22;%0A%20%20%20%20NodeType[NodeType[%22Choice%22]%20=%204]%20=%20%22Choice%22;%0A%20%20%20%20NodeType[NodeType[%22Branch%22]%20=%205]%20=%20%22Branch%22;%0A%7D)(NodeType%20%7C%7C%20(NodeType%20=%20%7B%7D));%0Aclass%20DialogueNode%20%7B%0A%20%20%20%20constructor(id)%20%7B%0A%20%20%20%20%20%20%20%20this.type%20=%20NodeType.Node;%0A%20%20%20%20%20%20%20%20this.id%20=%20id;%0A%20%20%20%20%7D%0A%20%20%20%20setName(name)%20%7B%0A%20%20%20%20%20%20%20%20this.name%20=%20name;%0A%20%20%20%20%7D%0A%20%20%20%20setNext(next)%20%7B%0A%20%20%20%20%20%20%20%20this.next%20=%20next;%0A%20%20%20%20%7D%0A%20%20%20%20getNext()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.next;%0A%20%20%20%20%7D%0A%20%20%20%20setChoices(choices)%20%7B%0A%20%20%20%20%20%20%20%20this.choices%20=%20choices;%0A%20%20%20%20%7D%0A%20%20%20%20hasChoices()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.choices%20!=%20undefined%20&&%20this.choices.length%20%3E%200;%0A%20%20%20%20%7D%0A%7D%0Aclass%20DialogueBranch%20extends%20DialogueNode%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.type%20=%20NodeType.Branch;%0A%20%20%20%20%20%20%20%20this.variable%20=%20()%20=%3E%20%7B%20return%20false;%20%7D;%0A%20%20%20%20%20%20%20%20this.branchIds%20=%20[];%0A%20%20%20%20%20%20%20%20this.branchConditions%20=%20[];%0A%20%20%20%20%7D%0A%20%20%20%20setVariable(varFunc)%20%7B%0A%20%20%20%20%20%20%20%20this.variable%20=%20varFunc;%0A%20%20%20%20%7D%0A%20%20%20%20addBranch(targetid,%20valueFunc)%20%7B%0A%20%20%20%20%20%20%20%20this.branchIds.push(targetid);%0A%20%20%20%20%20%20%20%20this.branchConditions.push(valueFunc);%0A%20%20%20%20%7D%0A%20%20%20%20getNext()%20%7B%0A%20%20%20%20%20%20%20%20let%20variable%20=%20this.variable();%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20this.branchIds.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20comparing%20=%20this.branchConditions[i]();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(comparing%20==%20variable)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20this.branchIds[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20this.next;%0A%20%20%20%20%7D%0A%7D%0Aclass%20DialogueText%20extends%20DialogueNode%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.type%20=%20NodeType.Text;%0A%20%20%20%20%7D%0A%20%20%20%20setSay(sayCreator)%20%7B%0A%20%20%20%20%20%20%20%20this.sayCreator%20=%20sayCreator;%0A%20%20%20%20%7D%0A%20%20%20%20getSay()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.sayCreator();%0A%20%20%20%20%7D%0A%7D%0Aclass%20DialogueChoice%20extends%20DialogueText%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.type%20=%20NodeType.Choice;%0A%20%20%20%20%20%20%20%20this.conditions%20=%20()%20=%3E%20%7B%20return%20true;%20%7D;%0A%20%20%20%20%7D%0A%20%20%20%20isAvailable()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.conditions();%0A%20%20%20%20%7D%0A%20%20%20%20setConditions(conditions)%20%7B%0A%20%20%20%20%20%20%20%20this.conditions%20=%20conditions;%0A%20%20%20%20%7D%0A%7D%0Aclass%20DialogueNodeTree%20extends%20DialogueNode%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.type%20=%20NodeType.Tree;%0A%20%20%20%20%7D%0A%20%20%20%20setTree(treeFinder)%20%7B%0A%20%20%20%20%20%20%20%20this.tree%20=%20treeFinder;%0A%20%20%20%20%7D%0A%7D%0Aclass%20DialogueSet%20extends%20DialogueNode%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.type%20=%20NodeType.Set;%0A%20%20%20%20%7D%0A%20%20%20%20setFunction(code)%20%7B%0A%20%20%20%20%20%20%20%20this.code%20=%20code;%0A%20%20%20%20%7D%0A%20%20%20%20run()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.code();%0A%20%20%20%20%7D%0A%7D%0Aclass%20DialogueTree%20%7B%0A%20%20%20%20constructor(id)%20%7B%0A%20%20%20%20%20%20%20%20this.nodes%20=%20%7B%7D;%0A%20%20%20%20%20%20%20%20this.startNode%20=%20undefined;%0A%20%20%20%20%20%20%20%20this.repeatChoices%20=%20true;%0A%20%20%20%20%20%20%20%20this.id%20=%20id;%0A%20%20%20%20%7D%0A%20%20%20%20addNode(node)%20%7B%0A%20%20%20%20%20%20%20%20this.nodes[node.id]%20=%20node;%0A%20%20%20%20%20%20%20%20if%20(node.type%20==%20NodeType.Node)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.nodes[node.name]%20=%20node;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20addStartNode(node)%20%7B%0A%20%20%20%20%20%20%20%20this.addNode(node);%0A%20%20%20%20%20%20%20%20this.startNode%20=%20node;%0A%20%20%20%20%7D%0A%20%20%20%20getNode(id)%20%7B%0A%20%20%20%20%20%20%20%20return%20this.nodes[id];%0A%20%20%20%20%7D%0A%20%20%20%20getNext(node)%20%7B%0A%20%20%20%20%20%20%20%20let%20next%20=%20node.getNext();%0A%20%20%20%20%20%20%20%20if%20(next%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.getNode(next);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20setRepeatChoices(doIt)%20%7B%0A%20%20%20%20%20%20%20%20this.repeatChoices%20=%20doIt;%0A%20%20%20%20%7D%0A%20%20%20%20async%20execute(startId)%20%7B%0A%20%20%20%20%20%20%20%20//Rulebook.getIndentation()%20+%20%22[DialogueTree]%20Running%20%22%20+%20this.id);%0A%20%20%20%20%20%20%20%20Rulebook.increaseIndentation(this);%0A%20%20%20%20%20%20%20%20let%20node;%0A%20%20%20%20%20%20%20%20if%20(startId%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20node%20=%20this.startNode;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20node%20=%20this.getNode(startId);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(node%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.printAsError(%22Unable%20to%20start%20dialogue%20%22%20+%20this.id%20+%20%22:%20A%20starting%20node%20could%20not%20be%20found.%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20previousNode;%0A%20%20%20%20%20%20%20%20while%20(node%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20nextNode%20=%20await%20this.processNode(node,%20previousNode);%0A%20%20%20%20%20%20%20%20%20%20%20%20previousNode%20=%20node;%0A%20%20%20%20%20%20%20%20%20%20%20%20node%20=%20nextNode;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20Rulebook.decreaseIndentation();%0A%20%20%20%20%7D%0A%20%20%20%20async%20processNode(node,%20previousNode)%20%7B%0A%20%20%20%20%20%20%20%20//Rulebook.getIndentation()%20+%20%22[%22%20+%20node.type%20+%20%22]%20%22%20+%20node.id);%0A%20%20%20%20%20%20%20%20Rulebook.increaseIndentation(node);%0A%20%20%20%20%20%20%20%20let%20doChoices%20=%20node.hasChoices();%0A%20%20%20%20%20%20%20%20if%20(node.type%20==%20NodeType.Tree)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20node.tree().execute();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(node.type%20==%20NodeType.Text)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20say%20=%20node.getSay();%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.printAsContent(say);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(node.type%20==%20NodeType.Set)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20runningSet%20=%20node.run();%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(runningSet%20instanceof%20Promise)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20runningSet;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(doChoices)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20branchingDialogue%20=%20new%20BranchingDialogue();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20choices%20=%20node.choices;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20options%20=%20[];%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20choices.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20choice%20=%20this.getNode(choices[i]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20branchingOption%20=%20new%20BranchingOption(choice.getSay(),%20choice.isAvailable());%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20options.push(branchingOption);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20branchingDialogue.addOptions(branchingOption);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20chosenOption%20=%20await%20branchingDialogue.getChosenOption();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20chosenNodeId%20=%20choices[options.indexOf(chosenOption)];%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20chosenNode%20=%20this.getNode(chosenNodeId);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.repeatChoices)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20say%20=%20new%20Say(new%20SayBold(%22%20%3E%20%22,%20chosenNode.getSay()));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.lastPrintedChoice%20=%20await%20Elements.CurrentTurnHandler.getSayElementsAsContent(say);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20Elements.CurrentTurnHandler.print(...this.lastPrintedChoice);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20//Rulebook.getIndentation()%20+%20%22[Choice]%20Picked%20%22%20+%20chosenNodeId);%0A%20%20%20%20%20%20%20%20%20%20%20%20//Rulebook.getIndentation()%20+%20%22[Choice]%20Going%20to%20%22%20+%20chosenNode.getNext());%0A%20%20%20%20%20%20%20%20%20%20%20%20Rulebook.increaseIndentation(chosenNodeId);%0A%20%20%20%20%20%20%20%20%20%20%20%20Rulebook.decreaseIndentation();%0A%20%20%20%20%20%20%20%20%20%20%20%20Rulebook.decreaseIndentation();%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.getNext(chosenNode);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Rulebook.decreaseIndentation();%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.getNext(node);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20unprintLastChoice()%20%7B%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.unprint(...this.lastPrintedChoice);%0A%20%20%20%20%7D%0A%7D%0Avar%20DialogueTrees;%0A(function%20(DialogueTrees)%20%7B%0A%20%20%20%20function%20findUnusedTrees()%20%7B%0A%20%20%20%20%20%20%20%20let%20allCode%20=%20document.getElementById(%22appCode%22).innerHTML;%0A%20%20%20%20%20%20%20%20let%20useCount%20=%20%7B%7D;%0A%20%20%20%20%20%20%20%20let%20unused%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20dialogueName%20in%20DialogueTrees)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(dialogueName%20!=%20%22findUnusedTrees%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20count%20=%20occurrences(allCode,%20%22DialogueTrees.%22%20+%20dialogueName,%20false)%20-%201;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(count%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20useCount[dialogueName]%20=%20count;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20unused.push(dialogueName);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20for%20(let%20dialogueName%20in%20useCount)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20times%20=%20useCount[dialogueName];%0A%20%20%20%20%20%20%20%20%20%20%20%20//%22[DialogueUsage]%20%22%20+%20dialogueName%20+%20%22%20is%20referenced%20%22%20+%20times%20+%20(times%20%3E%201%20?%20%22%20times.%22%20:%20%22%20time.%22));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20unused.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.error(%22[DialogueUsage]%20%22%20+%20unused[i]%20+%20%22%20is%20never%20referenced%20and%20will%20not%20appear%20in-game.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20DialogueTrees.findUnusedTrees%20=%20findUnusedTrees;%0A%20%20%20%20function%20occurrences(string,%20subString,%20allowOverlapping)%20%7B%0A%20%20%20%20%20%20%20%20string%20+=%20%22%22;%0A%20%20%20%20%20%20%20%20subString%20+=%20%22%22;%0A%20%20%20%20%20%20%20%20if%20(subString.length%20%3C=%200)%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20(string.length%20+%201);%0A%20%20%20%20%20%20%20%20var%20n%20=%200,%20pos%20=%200,%20step%20=%20allowOverlapping%20?%201%20:%20subString.length;%0A%20%20%20%20%20%20%20%20while%20(true)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20pos%20=%20string.indexOf(subString,%20pos);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(pos%20%3E=%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20++n;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pos%20+=%20step;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20n;%0A%20%20%20%20%7D%0A%7D)(DialogueTrees%20%7C%7C%20(DialogueTrees%20=%20%7B%7D));%0Aclass%20RoomRandom%20extends%20Room%20%7B%0A%20%20%20%20constructor(id,%20fodder)%20%7B%0A%20%20%20%20%20%20%20%20super(id,%20fodder);%0A%20%20%20%20%20%20%20%20this.connectableOn%20=%20[Direction.NORTH,%20Direction.SOUTH,%20Direction.EAST,%20Direction.WEST];%0A%20%20%20%20%20%20%20%20this.randomizable%20=%20true;%0A%20%20%20%20%20%20%20%20this.placed%20=%20false;%0A%20%20%20%20%20%20%20%20this.appearChance%20=%2075;%0A%20%20%20%20%20%20%20%20this.extraConnectionChance%20=%2075;%0A%20%20%20%20%20%20%20%20this.backgroundImage%20=%20%22tomato%22;%0A%20%20%20%20%7D%0A%20%20%20%20getBackgroundClass()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.isImageDefined())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.backgroundImage;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20%22tomato%22;%0A%20%20%20%20%7D%0A%20%20%20%20isImageDefined()%20%7B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(var%20i%20=%200;%20i%20%3C%20document.styleSheets.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20rules%20=%20document.styleSheets[i]['rules']%20%7C%7C%20document.styleSheets[i]['cssRules'];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(var%20x%20in%20rules)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(typeof%20rules[x].selectorText%20==%20'string'%20&&%20rules[x].selectorText%20==%20%22.%22%20+%20this.backgroundImage)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20catch%20(e)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.warn(%22Unable%20to%20read%20image%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20isConnectableOn(oppositeDirection)%20%7B%0A%20%20%20%20%20%20%20%20return%20this.connectableOn.indexOf(oppositeDirection)%20!=%20-1;%0A%20%20%20%20%7D%0A%20%20%20%20getAnyDirection(options)%20%7B%0A%20%20%20%20%20%20%20%20let%20directionShuffler%20=%20new%20Shuffler(this.connectableOn);%0A%20%20%20%20%20%20%20%20for%20(let%20direction%20=%20directionShuffler.getOne();%20direction%20!=%20undefined;%20direction%20=%20directionShuffler.getOne())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20oppositeDirection%20=%20OppositeDirection[Direction[direction]];%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20otherCoordinates%20=%20options.map.getCoordinates(options.otherRoom);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20wouldbeCoordinates%20=%20Room.shift(otherCoordinates,%20oppositeDirection);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20trickyOptions%20=%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20otherRoom:%20options.otherRoom,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20otherRoomDirection:%20oppositeDirection,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20trickyRoomDirection:%20direction,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20map:%20options.map,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20region:%20options.region,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20x:%20wouldbeCoordinates[0],%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20y:%20wouldbeCoordinates[1]%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.isPlaceable(trickyOptions))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20trickyOptions;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20isPlaceable(options)%20%7B%0A%20%20%20%20%20%20%20%20if%20(!this.isConnectableOn(options.trickyRoomDirection)%20%7C%7C%20!options.map.isFree(options.x,%20options.y))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(options.otherRoom%20==%20undefined%20%7C%7C%20!options.otherRoom.isConnectableOn(options.otherRoomDirection))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(this.trickyCode%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.trickyCode(options);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%7D%0A%20%20%20%20getDistanceTo(room)%20%7B%0A%20%20%20%20%20%20%20%20let%20myCoordinates%20=%20this.lastMap.getCoordinates(this);%0A%20%20%20%20%20%20%20%20let%20otherCoordinates%20=%20this.lastMap.getCoordinates(room);%0A%20%20%20%20%20%20%20%20if%20(myCoordinates%20!=%20undefined%20&&%20otherCoordinates%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20c1%20=%20myCoordinates;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20c2%20=%20otherCoordinates;%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20Math.abs(c1[0]%20-%20c2[0])%20+%20Math.abs(c1[1]%20-%20c2[1]);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20findPathTo(pathEnd,%20validRoom)%20%7B%0A%20%20%20%20%20%20%20%20validRoom%20=%20validRoom%20==%20undefined%20?%20()%20=%3E%20%7B%20return%20true;%20%7D%20:%20validRoom;%0A%20%20%20%20%20%20%20%20let%20map%20=%20this.lastMap;%0A%20%20%20%20%20%20%20%20let%20endPosition%20=%20map.getCoordinates(pathEnd);%0A%20%20%20%20%20%20%20%20let%20open%20=%20[];%0A%20%20%20%20%20%20%20%20let%20distance%20=%20(c1,%20c2)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20Math.abs(c1[0]%20-%20c2[0])%20+%20Math.abs(c1[1]%20-%20c2[1]);%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20let%20neighbors%20=%20(room,%20x,%20y)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20neighs%20=%20[];%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20direction%20=%200;%20direction%20%3C%20room.connections.length;%20direction++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20otherRoom%20=%20room.connections[direction];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(otherRoom%20!=%20undefined%20&&%20open.indexOf(otherRoom)%20==%20-1%20&&%20validRoom(otherRoom))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20dirCoordinates%20=%20Room.shift([x,%20y],%20direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20dir%20=%20[otherRoom,%20dirCoordinates,%20distance(endPosition,%20dirCoordinates)];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20neighs.push(dir);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20neighs.sort((a,%20b)%20=%3E%20%7B%20return%20a[2]%20-%20b[2];%20%7D);%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20let%20shortestPath%20=%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20length:%20map.getRoomCount()%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20let%20noPath%20=%20shortestPath;%0A%20%20%20%20%20%20%20%20let%20cPath%20=%20[];%0A%20%20%20%20%20%20%20%20let%20findPath%20=%20(myArray)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20room%20=%20myArray[0];%0A%20%20%20%20%20%20%20%20%20%20%20%20cPath.push(myArray);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(room%20==%20pathEnd)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(shortestPath.length%20%3E=%20cPath.length)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20shortestPath%20=%20cPath.slice(0);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(shortestPath.length%20%3E%20(cPath.length))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20open.push(room);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20otherRooms%20=%20neighbors(room,%20myArray[1][0],%20myArray[1][1]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20otherRooms.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20((cPath.length%20+%201)%20%3C%20shortestPath.length)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20findPath(otherRooms[i]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20open.pop();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20cPath.pop();%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20findPath([this,%20map.getCoordinates(this)]);%0A%20%20%20%20%20%20%20%20return%20shortestPath%20!=%20noPath%20?%20shortestPath%20:%20undefined;%0A%20%20%20%20%7D%0A%20%20%20%20getBestDirectionTo(otherRoom,%20validRoom)%20%7B%0A%20%20%20%20%20%20%20%20let%20path%20=%20this.findPathTo(otherRoom,%20validRoom);%0A%20%20%20%20%20%20%20%20if%20(path%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(path.length%20==%201)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20undefined;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.connections.indexOf(path[1][0]);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getAStarPathTo(otherRoom,%20validRoom)%20%7B%0A%20%20%20%20%20%20%20%20validRoom%20=%20validRoom%20!=%20undefined%20?%20validRoom%20:%20()%20=%3E%20%7B%20return%20true;%20%7D;%0A%20%20%20%20%20%20%20%20let%20distance%20=%20(c1,%20c2)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20Math.abs(c1[0]%20-%20c2[0])%20+%20Math.abs(c1[1]%20-%20c2[1]);%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20let%20isVisited%20=%20(room)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20visited.indexOf(room)%20!=%20-1;%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20let%20getNeighbors%20=%20(node)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20neighbors%20=%20[];%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20direction%20=%200;%20direction%20%3C%20node.room.connections.length;%20direction++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(node.room.connections[direction]%20!=%20undefined%20&&%20!isVisited(node.room.connections[direction])%20&&%20validRoom(node.room.connections[direction]))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20coordinates%20=%20Room.shift(node.coordinates,%20direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20neighbors.push(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20room:%20node.room.connections[direction],%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20coordinates:%20coordinates,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20distance:%20distance(coordinates,%20endNode.coordinates)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visited.push(node.room.connections[direction]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20neighbors;%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20let%20getClosestPath%20=%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20shortest%20=%200;%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%201;%20i%20%3C%20open.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20lastPoint%20=%20open[i][open[i].length%20-%201];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(lastPoint.distance%20%3C%20open[shortest][open[shortest].length%20-%201].distance)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20shortest%20=%20i;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20shortest;%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20let%20endNode%20=%20%7B%20room:%20otherRoom,%20coordinates:%20this.lastMap.getCoordinates(otherRoom),%20distance:%200%20%7D;%0A%20%20%20%20%20%20%20%20let%20startCoordinates%20=%20this.lastMap.getCoordinates(this);%0A%20%20%20%20%20%20%20%20let%20startNode%20=%20%7B%20room:%20this,%20coordinates:%20startCoordinates,%20distance:%20distance(startCoordinates,%20endNode.coordinates)%20%7D;%0A%20%20%20%20%20%20%20%20let%20open%20=%20[[startNode]];%0A%20%20%20%20%20%20%20%20let%20closed%20=%20[];%0A%20%20%20%20%20%20%20%20let%20shortestPath%20=%20this.lastMap.getRoomCount();%0A%20%20%20%20%20%20%20%20let%20shortestIndex;%0A%20%20%20%20%20%20%20%20let%20myPath;%0A%20%20%20%20%20%20%20%20let%20closest%20=%200;%0A%20%20%20%20%20%20%20%20let%20visited%20=%20[this];%0A%20%20%20%20%20%20%20%20while%20(open.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20myPath%20=%20open.splice(closest,%201)[0];%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(myPath[myPath.length%20-%201].distance%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20push%20=%20closed.push(myPath);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(myPath.length%20%3C%20shortestPath)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20shortestPath%20=%20myPath.length;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20shortestIndex%20=%20push%20-%201;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20neighbors%20=%20getNeighbors(myPath[myPath.length%20-%201]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20neighbors.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20open.push(myPath.concat([neighbors[i]]));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%20open.length%20-%201;%20i%20%3E=%200;%20i--)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(open[i].length%20%3E=%20shortestPath)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20open.splice(i,%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20closest%20=%20getClosestPath();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20closed[shortestIndex];%0A%20%20%20%20%7D%0A%20%20%20%20getAStarBestDirectionTo(otherRoom,%20validRoom)%20%7B%0A%20%20%20%20%20%20%20%20let%20path%20=%20this.getAStarPathTo(otherRoom,%20validRoom);%0A%20%20%20%20%20%20%20%20if%20(path%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(path.length%20==%201)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20undefined;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.connections.indexOf(path[1].room);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20getConnectedDirection()%20%7B%0A%20%20%20%20%20%20%20%20let%20shuffler%20=%20new%20Shuffler(Room.DIRECTIONS);%0A%20%20%20%20%20%20%20%20for%20(let%20direction%20=%20shuffler.getOne();%20direction%20!=%20undefined;%20direction%20=%20shuffler.getOne())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.connections[direction]%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20direction;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20static%20getActive(type)%20%7B%0A%20%20%20%20%7D%0A%7D%0Aclass%20RoomRandomMap%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20this.positionTable%20=%20%7B%7D;%0A%20%20%20%20%20%20%20%20this.roomMap%20=%20new%20Map();%0A%20%20%20%20%20%20%20%20this.lowestX%20=%200;%0A%20%20%20%20%20%20%20%20this.lowestY%20=%200;%0A%20%20%20%20%20%20%20%20this.highestX%20=%200;%0A%20%20%20%20%20%20%20%20this.highestY%20=%200;%0A%20%20%20%20%20%20%20%20this.limitsInvalid%20=%20false;%0A%20%20%20%20%7D%0A%20%20%20%20emptyCache()%20%7B%0A%20%20%20%20%20%20%20%20this.availableConnections%20=%20[];%0A%20%20%20%20%20%20%20%20Room.DIRECTIONS.forEach(()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.availableConnections.push([]);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.rooms%20=%200;%0A%20%20%20%20%7D%0A%20%20%20%20getAvailableConnections()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.availableConnections.reduce((previousValue,%20currentValue,%20currentIndex,%20array)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20previousValue%20+%20(currentValue.length);%0A%20%20%20%20%20%20%20%20%7D,%200);%0A%20%20%20%20%7D%0A%20%20%20%20removeFromCache(coordinatesToRemove,%20direction)%20%7B%0A%20%20%20%20%20%20%20%20let%20directionArray%20=%20this.availableConnections[direction];%0A%20%20%20%20%20%20%20%20for%20(let%20k%20=%200,%20coordinates%20=%20directionArray[k];%20coordinates%20!=%20undefined;%20coordinates%20=%20directionArray[++k])%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(coordinates.x%20==%20coordinatesToRemove.x%20&&%20coordinates.y%20==%20coordinatesToRemove.y)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20directionArray.splice(k,%201);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20addToCache(coordinatesToAdd,%20direction)%20%7B%0A%20%20%20%20%20%20%20%20let%20directionArray%20=%20this.availableConnections[direction];%0A%20%20%20%20%20%20%20%20for%20(let%20k%20=%200,%20coordinates%20=%20directionArray[k];%20coordinates%20!=%20undefined;%20coordinates%20=%20directionArray[++k])%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(coordinates.x%20==%20coordinatesToAdd.x%20&&%20coordinates.y%20==%20coordinatesToAdd.y)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20directionArray.push(coordinatesToAdd);%0A%20%20%20%20%7D%0A%20%20%20%20getAnyFromCache(direction)%20%7B%0A%20%20%20%20%20%20%20%20let%20array%20=%20this.availableConnections[direction];%0A%20%20%20%20%20%20%20%20if%20(array.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20randomIndex%20=%20Math.floor(Math.random()%20*%20(array.length));%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20randomCoordinates%20=%20array[randomIndex];%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(randomCoordinates%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20this.getRoom(randomCoordinates.x,%20randomCoordinates.y);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20isFree(x,%20y)%20%7B%0A%20%20%20%20%20%20%20%20return%20(this.positionTable[x]%20==%20undefined%20%7C%7C%20this.positionTable[x][y]%20===%20undefined);%0A%20%20%20%20%7D%0A%20%20%20%20block(x,%20y)%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.isFree(x,%20y))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.positionTable[x]%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.positionTable[x]%20=%20%7B%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.positionTable[x][y]%20=%20null;%0A%20%20%20%20%20%20%20%20%20%20%20%20this.updateCacheOnPosition(x,%20y);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.updateLimits(x,%20y);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20updateAllLimits()%20%7B%0A%20%20%20%20%20%20%20%20this.highestX%20=%200;%0A%20%20%20%20%20%20%20%20this.highestY%20=%200;%0A%20%20%20%20%20%20%20%20this.lowestX%20=%200;%0A%20%20%20%20%20%20%20%20this.lowestY%20=%200;%0A%20%20%20%20%20%20%20%20for%20(let%20x%20in%20this.positionTable)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20y%20in%20this.positionTable[x])%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.positionTable[x][y]%20!=%20undefined%20&&%20this.positionTable[x][y]%20!=%20null)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.updateLimits(parseInt(x),%20parseInt(y));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.limitsInvalid%20=%20false;%0A%20%20%20%20%7D%0A%20%20%20%20updateLimits(x,%20y)%20%7B%0A%20%20%20%20%20%20%20%20if%20(x%20%3E%20this.highestX)%0A%20%20%20%20%20%20%20%20%20%20%20%20this.highestX%20=%20x;%0A%20%20%20%20%20%20%20%20if%20(y%20%3E%20this.highestY)%0A%20%20%20%20%20%20%20%20%20%20%20%20this.highestY%20=%20y;%0A%20%20%20%20%20%20%20%20if%20(y%20%3C%20this.lowestY)%0A%20%20%20%20%20%20%20%20%20%20%20%20this.lowestY%20=%20y;%0A%20%20%20%20%20%20%20%20if%20(x%20%3C%20this.lowestX)%0A%20%20%20%20%20%20%20%20%20%20%20%20this.lowestX%20=%20x;%0A%20%20%20%20%7D%0A%20%20%20%20map(room,%20x,%20y)%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.positionTable[x]%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.positionTable[x]%20=%20%7B%7D;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.positionTable[x][y]%20=%20room;%0A%20%20%20%20%20%20%20%20this.roomMap.set(room,%20[x,%20y]);%0A%20%20%20%20%20%20%20%20this.updateCacheOnPosition(x,%20y);%0A%20%20%20%20%20%20%20%20this.updateLimits(x,%20y);%0A%20%20%20%20%20%20%20%20room.placed%20=%20true;%0A%20%20%20%20%20%20%20%20room.lastMap%20=%20this;%0A%20%20%20%20%20%20%20%20this.rooms++;%0A%20%20%20%20%7D%0A%20%20%20%20unmap(x,%20y)%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.positionTable[x]%20!=%20undefined%20&&%20this.positionTable[x][y]%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.roomMap.delete(this.positionTable[x][y]);%0A%20%20%20%20%20%20%20%20%20%20%20%20delete%20(this.positionTable[x][y]);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.rooms--;%0A%20%20%20%20%20%20%20%20%20%20%20%20this.updateCacheOnPosition(x,%20y);%0A%20%20%20%20%20%20%20%20%20%20%20%20this.limitsInvalid%20=%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20updateCacheOnPosition(x,%20y)%20%7B%0A%20%20%20%20%20%20%20%20let%20coordinates%20=%20[x,%20y,%200];%0A%20%20%20%20%20%20%20%20let%20coordinatesMap%20=%20%7B%20x:%20x,%20y:%20y%20%7D;%0A%20%20%20%20%20%20%20%20let%20coordinatesBlocked%20=%20!this.isFree(x,%20y);%0A%20%20%20%20%20%20%20%20let%20coordinatesRoom%20=%20this.getRoom(x,%20y);%0A%20%20%20%20%20%20%20%20Room.DIRECTIONS.forEach(direction%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20oppositeDirection%20=%20OppositeDirection[Direction[direction]];%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20shifted%20=%20Room.shift(coordinates,%20direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20shiftedMap%20=%20%7B%20x:%20shifted[0],%20y:%20shifted[1]%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20shiftedBlocked%20=%20!this.isFree(shifted[0],%20shifted[1]);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20shiftedRoom%20=%20this.getRoom(shifted[0],%20shifted[1]);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(coordinatesRoom%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(shiftedBlocked)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.removeFromCache(coordinatesMap,%20direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(coordinatesRoom.isConnectableOn(direction))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.addToCache(coordinatesMap,%20direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.removeFromCache(coordinatesMap,%20direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(shiftedRoom%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(coordinatesBlocked)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.removeFromCache(shiftedMap,%20oppositeDirection);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(shiftedRoom.isConnectableOn(oppositeDirection))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.addToCache(shiftedMap,%20oppositeDirection);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.removeFromCache(shiftedMap,%20oppositeDirection);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20getRoom(x,%20y)%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.positionTable[x]%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.positionTable[x][y]%20!=%20null)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20this.positionTable[x][y];%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20undefined;%0A%20%20%20%20%7D%0A%20%20%20%20getCoordinates(room)%20%7B%0A%20%20%20%20%20%20%20%20return%20this.roomMap.get(room);%0A%20%20%20%20%7D%0A%20%20%20%20getRoomCount()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.roomMap.size;%0A%20%20%20%20%7D%0A%20%20%20%20getWidth()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.highestX%20-%20this.lowestX;%0A%20%20%20%20%7D%0A%20%20%20%20getHeight()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.highestY%20-%20this.lowestY;%0A%20%20%20%20%7D%0A%20%20%20%20getPreferredGrowth()%20%7B%0A%20%20%20%20%20%20%20%20let%20ratio%20=%20this.getHeight()%20/%20this.getWidth();%0A%20%20%20%20%20%20%20%20let%20idealRatio%20=%202.5;%0A%20%20%20%20%20%20%20%20let%20difference%20=%20Math.abs(ratio%20-%20idealRatio);%0A%20%20%20%20%20%20%20%20if%20(difference%20%3C%200.5)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20RoomRandomMap.PREFERRED_GROWTH_ANY;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(ratio%20%3C%20idealRatio)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20RoomRandomMap.PREFERRED_GROWTH_VERTICAL;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20RoomRandomMap.PREFERRED_GROWTH_HORIZONTAL;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20static%20isDirectionPreferred(direction,%20growth)%20%7B%0A%20%20%20%20%20%20%20%20if%20(growth%20==%20RoomRandomMap.PREFERRED_GROWTH_ANY)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(direction%20==%20Direction.NORTH%20%7C%7C%20direction%20==%20Direction.SOUTH)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20growth%20==%20RoomRandomMap.PREFERRED_GROWTH_VERTICAL;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20growth%20==%20RoomRandomMap.PREFERRED_GROWTH_HORIZONTAL;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0ARoomRandomMap.PREFERRED_GROWTH_HORIZONTAL%20=%200;%0ARoomRandomMap.PREFERRED_GROWTH_VERTICAL%20=%201;%0ARoomRandomMap.PREFERRED_GROWTH_ANY%20=%202;%0Aclass%20ShufflerDirection%20extends%20Shuffler%20%7B%0A%20%20%20%20constructor(array,%20preferredGrowth,%20rng)%20%7B%0A%20%20%20%20%20%20%20%20super(array,%20rng);%0A%20%20%20%20%20%20%20%20this.runner%20=%200;%0A%20%20%20%20%20%20%20%20this.preferredGrowth%20=%20preferredGrowth;%0A%20%20%20%20%20%20%20%20let%20goodDirections%20=%20[];%0A%20%20%20%20%20%20%20%20let%20badDirections%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20direction%20=%20this.getOne();%20direction%20!=%20undefined;%20direction%20=%20this.getOne())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(RoomRandomMap.isDirectionPreferred(direction,%20this.preferredGrowth))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20goodDirections.push(direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20badDirections.push(direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.directionsArray%20=%20goodDirections.concat(badDirections);%0A%20%20%20%20%7D%0A%20%20%20%20getDirection()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.directionsArray[this.runner++];%0A%20%20%20%20%7D%0A%7D%0Aclass%20RoomRandomFodder%20extends%20RoomRandom%20%7B%0A%20%20%20%20constructor(id)%20%7B%0A%20%20%20%20%20%20%20%20super(id,%20true);%0A%20%20%20%20%7D%0A%7D%0Aclass%20RegionRandom%20extends%20Region%20%7B%0A%20%20%20%20constructor(name,%20map)%20%7B%0A%20%20%20%20%20%20%20%20super(name);%0A%20%20%20%20%20%20%20%20this.randomized%20=%20false;%0A%20%20%20%20%20%20%20%20this.fodderRoomClass%20=%20RoomRandomFodder;%0A%20%20%20%20%20%20%20%20this.placedRooms%20=%20[];%0A%20%20%20%20%20%20%20%20this.map%20=%20map%20==%20undefined%20?%20new%20RoomRandomMap()%20:%20map;%0A%20%20%20%20%7D%0A%20%20%20%20async%20randomize()%20%7B%0A%20%20%20%20%20%20%20%20if%20(!this.randomized)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20RegionRandom.rulebookRandomizeRegion.execute(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20noun:%20this%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0ARegionRandom.rng%20=%20()%20=%3E%20%7B%20return%20Math.random();%20%7D;%0ARegionRandom.rulebookRandomizeRegion%20=%20new%20Rulebook(%22Randomizing%20Random%20Region%20something%22);%0ARegionRandom.rulebookPlaceRoom%20=%20new%20Rulebook(%22Placing%20Random%20Room%20something%22);%0ARegionRandom.rulebookBeforePlaceRoom%20=%20new%20Rulebook(%22Before%20placing%20Random%20Room%20something%22);%0ARegionRandom.rulebookAfterPlaceRoom%20=%20new%20Rulebook(%22After%20placing%20Random%20Room%20something%22);%0ARegionRandom.ruleFirstRandomizeRegion%20=%20RegionRandom.rulebookRandomizeRegion.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Empty%20map%20cache%20to%20start%20randomizing%20region%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20code:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20region%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20region.map.emptyCache();%0A%20%20%20%20%7D%0A%7D);%0ARegionRandom.ruleBasicRandomizeRegion%20=%20RegionRandom.rulebookRandomizeRegion.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Randomize%20all%20unplaced,%20randomizable%20rooms%20in%20region%20something%22,%0A%20%20%20%20code:%20async%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20region%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20let%20roomShuffler%20=%20new%20Shuffler(Region.InRelation.getAllRightTypes(region,%20RoomRandom).filter((room)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20room.randomizable%20&&%20!room.placed%20&&%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(room%20==%20WorldState.player.getRoom()%20%7C%7C%20(RegionRandom.rng()%20*%20100)%20%3C=%20room.appearChance);%0A%20%20%20%20%20%20%20%20%7D),%20RegionRandom.rng);%0A%20%20%20%20%20%20%20%20for%20(let%20room%20=%20roomShuffler.getOne();%20room%20!=%20undefined;%20room%20=%20roomShuffler.getOne())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20while%20(region.map.rooms%20%3E%200%20&&%20region.map.getAvailableConnections()%20%3C%204)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20fodder%20=%20new%20region.fodderRoomClass();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20options%20=%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20map:%20region.map,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20room:%20fodder,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20region:%20region%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20region.place(fodder);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20RegionRandom.rulebookBeforePlaceRoom.execute(%7B%20noun:%20options%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20RegionRandom.rulebookPlaceRoom.execute(%7B%20noun:%20options%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20await%20RegionRandom.rulebookAfterPlaceRoom.execute(%7B%20noun:%20options%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20options%20=%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20map:%20region.map,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20room:%20room,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20region:%20region%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20RegionRandom.rulebookBeforePlaceRoom.execute(%7B%20noun:%20options%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20RegionRandom.rulebookPlaceRoom.execute(%7B%20noun:%20options%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20RegionRandom.rulebookAfterPlaceRoom.execute(%7B%20noun:%20options%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!room.placed)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.printAsError(new%20Say(%22Was%20unable%20to%20place%20room%20%22,%20room,%20%22.%20Game%20might%20be%20unplayable.%22));%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D);%0ARegionRandom.ruleAddExtraConnections%20=%20RegionRandom.rulebookRandomizeRegion.createAndAddRule(%7B%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_LOWEST,%0A%20%20%20%20name:%20%22Add%20extra%20connections%20to%20rooms%20in%20region%22,%0A%20%20%20%20code:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20region%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20let%20placedRooms%20=%20Region.InRelation.getAllRightTypes(region,%20RoomRandom).filter((room)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20room.randomizable%20&&%20room.placed;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20placedRooms.forEach((room)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20myCoordinates%20=%20region.map.getCoordinates(room);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20directionShuffler%20=%20new%20Shuffler(room.connectableOn.slice(0),%20RegionRandom.rng);%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20direction%20=%20directionShuffler.getOne();%20direction%20!=%20undefined%20&&%20(RegionRandom.rng()%20*%20100)%20%3C=%20room.extraConnectionChance;%20direction%20=%20directionShuffler.getOne())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(room.connections[direction]%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20otherCoordinates%20=%20Room.shift(myCoordinates,%20direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20otherRoom%20=%20region.map.getRoom(otherCoordinates[0],%20otherCoordinates[1]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(otherRoom%20!=%20undefined%20&&%20otherRoom.randomizable%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20&&%20otherRoom.isConnectableOn(OppositeDirection[Direction[direction]])%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20&&%20(RegionRandom.rng()%20*%20100)%20%3C=%20otherRoom.extraConnectionChance)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20room.mapRoom(otherRoom,%20direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%7D);%0ARegionRandom.rulePlaceFirstRoom%20=%20RegionRandom.rulebookPlaceRoom.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Placing%20First%20room%20something%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20code:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20placingOptions%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20if%20(placingOptions.map.isFree(0,%200))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20placingOptions.map.map(placingOptions.room,%200,%200);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D,%0A%20%20%20%20conditions:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20return%20runner.noun.map.rooms%20==%200;%0A%20%20%20%20%7D%0A%7D);%0ARegionRandom.rulePlaceNonTrickyRoom%20=%20RegionRandom.rulebookPlaceRoom.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Placing%20non-tricky%20room%20something%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGH,%0A%20%20%20%20code:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20placingOptions%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20let%20preferredGrowthDirection%20=%20placingOptions.map.getPreferredGrowth();%0A%20%20%20%20%20%20%20%20let%20directionShuffler%20=%20new%20ShufflerDirection(placingOptions.room.connectableOn,%20preferredGrowthDirection);%0A%20%20%20%20%20%20%20%20for%20(let%20direction%20=%20directionShuffler.getDirection();%20direction%20!=%20undefined;%20direction%20=%20directionShuffler.getDirection())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20oppositeDirection%20=%20OppositeDirection[Direction[direction]];%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20connectableRoom%20=%20placingOptions.map.getAnyFromCache(oppositeDirection);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(connectableRoom%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20otherCoordinates%20=%20placingOptions.map.getCoordinates(connectableRoom);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20myCoordinates%20=%20Room.shift(otherCoordinates,%20oppositeDirection);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20placingOptions.room.mapRoom(connectableRoom,%20direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20placingOptions.map.map(placingOptions.room,%20myCoordinates[0],%20myCoordinates[1]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D,%0A%20%20%20%20conditions:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20return%20runner.noun.room.trickyCode%20==%20undefined;%0A%20%20%20%20%7D%0A%7D);%0ARegionRandom.rulePlaceTrickyRoom%20=%20RegionRandom.rulebookPlaceRoom.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Placing%20tricky%20room%20something%22,%0A%20%20%20%20code:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20placingOptions%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20let%20placedRooms%20=%20placingOptions.region.getRooms().filter((room)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20room%20instanceof%20RoomRandom%20&&%20room.placed;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20if%20(placedRooms.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.printAsError(%22Unable%20to%20place%20room%20%22%20+%20placingOptions.room.getPrintedName()%20+%20%22:%20There%20are%20no%20rooms%20to%20connect%20to!%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20roomShuffler%20=%20new%20Shuffler(placedRooms,%20RegionRandom.rng);%0A%20%20%20%20%20%20%20%20for%20(let%20connectableRoom%20=%20roomShuffler.getOne();%20connectableRoom%20!=%20undefined;%20connectableRoom%20=%20roomShuffler.getOne())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20trickier%20=%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20region:%20placingOptions.region,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20map:%20placingOptions.map,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20otherRoom:%20connectableRoom%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20tricky%20=%20placingOptions.room.getAnyDirection(trickier);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(tricky%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20placingOptions.room.mapRoom(connectableRoom,%20tricky.trickyRoomDirection);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20placingOptions.map.map(placingOptions.room,%20tricky.x,%20tricky.y);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20connectableThroughFodder%20=%20(fodderStep,%20connectingRoom)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20trickier%20=%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20region:%20placingOptions.region,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20map:%20placingOptions.map,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20otherRoom:%20connectingRoom%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(fodderStep%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20placingOptions.room.getAnyDirection(trickier);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20newFodder%20=%20new%20(placingOptions.region.fodderRoomClass)();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20preferredGrowthDirection%20=%20placingOptions.map.getPreferredGrowth();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20directionShuffler%20=%20new%20ShufflerDirection(placingOptions.room.connectableOn,%20preferredGrowthDirection);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20direction%20=%20directionShuffler.getDirection();%20direction%20!=%20undefined;%20direction%20=%20directionShuffler.getDirection())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20oppositeDirection%20=%20OppositeDirection[Direction[direction]];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20otherCoordinates%20=%20placingOptions.map.getCoordinates(connectingRoom);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20wouldbeCoordinates%20=%20Room.shift(otherCoordinates,%20oppositeDirection);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20fodderTricky%20=%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20otherRoom:%20connectingRoom,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20otherRoomDirection:%20oppositeDirection,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20trickyRoomDirection:%20direction,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20map:%20placingOptions.map,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20region:%20placingOptions.region,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20x:%20wouldbeCoordinates[0],%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20y:%20wouldbeCoordinates[1]%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(newFodder.isPlaceable(fodderTricky))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20newFodder.mapRoom(connectingRoom,%20fodderTricky.trickyRoomDirection);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20placingOptions.map.map(newFodder,%20fodderTricky.x,%20fodderTricky.y);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20nextTricky%20=%20connectableThroughFodder(fodderStep%20-%201,%20newFodder);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(nextTricky%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20placingOptions.region.place(newFodder);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20nextTricky;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20newFodder.unmapRoom(fodderTricky.trickyRoomDirection);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20placingOptions.map.unmap(fodderTricky.x,%20fodderTricky.y);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20for%20(let%20fodderLevel%20=%201;%20fodderLevel%20%3C%2010;%20fodderLevel++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20roomShuffler.restart();%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20connectableRoom%20=%20roomShuffler.getOne();%20connectableRoom%20!=%20undefined;%20connectableRoom%20=%20roomShuffler.getOne())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20tricky%20=%20connectableThroughFodder(fodderLevel,%20connectableRoom);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(tricky%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20placingOptions.room.mapRoom(tricky.otherRoom,%20tricky.trickyRoomDirection);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20placingOptions.map.map(placingOptions.room,%20tricky.x,%20tricky.y);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.printAsError(%22Unable%20to%20place%20room%20%22%20+%20placingOptions.room.getPrintedName()%20+%20%22:%20All%20attempts%20failed%22);%0A%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%7D%0A%7D);%0Aclass%20SavedEvent%20extends%20StoredVariable%20%7B%0A%20%20%20%20constructor(options)%20%7B%0A%20%20%20%20%20%20%20%20super(options);%0A%20%20%20%20%20%20%20%20this.description%20=%20options.description;%0A%20%20%20%20%20%20%20%20this.getValueDescription%20=%20options.valueDescription;%0A%20%20%20%20%7D%0A%20%20%20%20getDescription()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.description;%0A%20%20%20%20%7D%0A%7D%0Alet%20EVENT_ORC_CHIEF_KILLED%20=%20new%20SavedEvent(%7B%0A%20%20%20%20id:%20%22EVENT_ORC_CHIEF_KILLED%22,%0A%20%20%20%20description:%20%22Describer%20whether%20the%20orc%20chief%20is%20alive%20or%20dead.%22,%0A%20%20%20%20value:%20false,%0A%20%20%20%20valueDescription:%20(value)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20if%20(EVENT_ORC_CHIEF_KILLED.value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22The%20orc%20chief%20has%20been%20killed.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22The%20orc%20chief%20is%20alive.%22;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D);%0Aclass%20Dice%20%7B%0A%20%20%20%20constructor(testString)%20%7B%0A%20%20%20%20%20%20%20%20this.range%20=%20[0,%200,%201,%201];%0A%20%20%20%20%20%20%20%20this.minResult%20=%200;%0A%20%20%20%20%20%20%20%20this.testString%20=%20testString;%0A%20%20%20%20%7D%0A%20%20%20%20roll(stat)%20%7B%0A%20%20%20%20%20%20%20%20let%20rng%20=%20this.range.slice();%0A%20%20%20%20%20%20%20%20if%20(stat%20%3E=%2010)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20rng.push(2,%201);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(stat%20%3E=%207)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20rng.push(1,%201);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(stat%20%3E=%204)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20rng.push(1);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20results%20=%20[];%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20stat;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20index%20=%20Math.floor(Math.random()%20*%20(rng.length));%0A%20%20%20%20%20%20%20%20%20%20%20%20results.push(rng[index]);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20results;%0A%20%20%20%20%7D%0A%20%20%20%20static%20sum(a,%20b)%20%7B%0A%20%20%20%20%20%20%20%20return%20a%20+%20b;%0A%20%20%20%20%7D%0A%20%20%20%20getSay(results)%20%7B%0A%20%20%20%20%20%20%20%20let%20finalResult%20=%20results.reduce(Dice.sum);%0A%20%20%20%20%20%20%20%20return%20new%20Say(new%20SayBold(%22[%22,%20this.testString,%20%22]%20%22),%20%22%20=%20[%22,%20results.join(%22]%20[%22),%20%22]%22,%20results.length%20==%201%20?%20%22%22%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20(%22%20=%20%22%20+%20finalResult));%0A%20%20%20%20%7D%0A%20%20%20%20static%20testAgainstRoll(player,%20enemy)%20%7B%0A%20%20%20%20%20%20%20%20let%20playerDice%20=%20new%20Dice(player.name);%0A%20%20%20%20%20%20%20%20let%20playerResult%20=%20playerDice.roll(player.value);%0A%20%20%20%20%20%20%20%20let%20enemyDice%20=%20new%20Dice(enemy.name);%0A%20%20%20%20%20%20%20%20let%20enemyResult%20=%20enemyDice.roll(enemy.value);%0A%20%20%20%20%20%20%20%20return%20playerResult.reduce(Dice.sum)%20-%20enemyResult.reduce(Dice.sum);%0A%20%20%20%20%7D%0A%20%20%20%20static%20testAgainstDifficulty(player,%20difficulty)%20%7B%0A%20%20%20%20%20%20%20%20let%20playerDice%20=%20new%20Dice(player.name);%0A%20%20%20%20%20%20%20%20let%20playerResult%20=%20playerDice.roll(player.value);%0A%20%20%20%20%20%20%20%20return%20playerResult.reduce(Dice.sum)%20-%20difficulty;%0A%20%20%20%20%7D%0A%7D%0Aclass%20DiceCommon%20extends%20Dice%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.range%20=%20[-1,%200,%200,%200,%201,%201,%201];%0A%20%20%20%20%20%20%20%20this.minResult%20=%20-1;%0A%20%20%20%20%7D%0A%20%20%20%20static%20testAgainstRoll(player,%20enemy)%20%7B%0A%20%20%20%20%20%20%20%20let%20playerDice%20=%20new%20DiceCommon(player.name);%0A%20%20%20%20%20%20%20%20let%20playerResult%20=%20playerDice.roll(player.value);%0A%20%20%20%20%20%20%20%20let%20enemyDice%20=%20new%20DiceCommon(enemy.name);%0A%20%20%20%20%20%20%20%20let%20enemyResult%20=%20enemyDice.roll(enemy.value);%0A%20%20%20%20%20%20%20%20return%20playerResult.reduce(Dice.sum)%20-%20enemyResult.reduce(Dice.sum);%0A%20%20%20%20%7D%0A%20%20%20%20static%20testAgainstDifficulty(player,%20difficulty)%20%7B%0A%20%20%20%20%20%20%20%20let%20playerDice%20=%20new%20DiceCommon(player.name);%0A%20%20%20%20%20%20%20%20let%20playerResult%20=%20playerDice.roll(player.value);%0A%20%20%20%20%20%20%20%20return%20playerResult.reduce(Dice.sum)%20-%20difficulty;%0A%20%20%20%20%7D%0A%7D%0Aclass%20DiceDangerous%20extends%20Dice%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.range%20=%20[-2,%20-1,%200,%200,%200,%200,%201,%201,%201,%201];%0A%20%20%20%20%20%20%20%20this.minResult%20=%20-2;%0A%20%20%20%20%7D%0A%20%20%20%20static%20testAgainstRoll(player,%20enemy)%20%7B%0A%20%20%20%20%20%20%20%20let%20playerDice%20=%20new%20DiceDangerous(player.name);%0A%20%20%20%20%20%20%20%20let%20playerResult%20=%20playerDice.roll(player.value);%0A%20%20%20%20%20%20%20%20let%20enemyDice%20=%20new%20DiceDangerous(enemy.name);%0A%20%20%20%20%20%20%20%20let%20enemyResult%20=%20enemyDice.roll(enemy.value);%0A%20%20%20%20%20%20%20%20return%20playerResult.reduce(Dice.sum)%20-%20enemyResult.reduce(Dice.sum);%0A%20%20%20%20%7D%0A%20%20%20%20static%20testAgainstDifficulty(player,%20difficulty)%20%7B%0A%20%20%20%20%20%20%20%20let%20playerDice%20=%20new%20DiceDangerous(player.name);%0A%20%20%20%20%20%20%20%20let%20playerResult%20=%20playerDice.roll(player.value);%0A%20%20%20%20%20%20%20%20return%20playerResult.reduce(Dice.sum)%20-%20difficulty;%0A%20%20%20%20%7D%0A%7D%0Aclass%20Liquid%20extends%20Thing%20%7B%0A%20%20%20%20constructor(options)%20%7B%0A%20%20%20%20%20%20%20%20super(options);%0A%20%20%20%20%20%20%20%20options%20=%20options%20==%20undefined%20?%20%7B%7D%20:%20options;%0A%20%20%20%20%20%20%20%20if%20(options.taste%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.taste%20=%20options.taste;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.taste%20=%20new%20OneOf(OneOf.ROTATING_RANDOM,%20%22It%20goes%20easily%20through%20your%20throat%20with%20no%20particular%20taste.%22,%20%22You%20taste%20nothing%20as%20it%20softly%20slides%20through%20your%20tongue.%22);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20static%20async%20mix(container)%20%7B%0A%20%20%20%20%20%20%20%20let%20result%20=%20await%20Liquid.rulebookMixing.execute(%7B%20noun:%20container%20%7D);%0A%20%20%20%20%20%20%20%20if%20(result%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20finalQuantity%20=%20result.quantityMultiplier%20!=%20undefined%20?%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(result.quantityMultiplier%20*%20container.liquidContents.length)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(container.liquidContents.length);%0A%20%20%20%20%20%20%20%20%20%20%20%20container.liquidContents%20=%20new%20Array(finalQuantity);%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20finalQuantity;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20container.liquidContents[i]%20=%20result.result;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20static%20getMixtures()%20%7B%0A%20%20%20%20%20%20%20%20if%20(Liquid.sortedMixtures)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20Liquid.mixtures;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20Liquid.mixtures.sort((a,%20b)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(b.firstPriority%20%3C%20a.firstPriority)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20-1;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(a.firstPriority%20%3C%20b.firstPriority)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%201;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(b.priority%20%3C%20a.priority)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20-1;%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(a.priority%20%3C%20b.priority)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%201;%0A%20%20%20%20%20%20%20%20%20%20%20%20return%200;%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20Liquid.sortedMixtures%20=%20true;%0A%20%20%20%20%20%20%20%20return%20Liquid.mixtures;%0A%20%20%20%20%7D%0A%20%20%20%20static%20addMixture(mixture)%20%7B%0A%20%20%20%20%20%20%20%20Liquid.mixtures.push(mixture);%0A%20%20%20%20%20%20%20%20Liquid.sortedMixtures%20=%20false;%0A%20%20%20%20%7D%0A%7D%0ALiquid.rulebookMixing%20=%20new%20Rulebook(%22Mixing%20the%20liquid%20contents%20of%20something%22);%0ALiquid.mixtures%20=%20[];%0ALiquid.sortedMixtures%20=%20false;%0ALiquid.ruleDefaultMixing%20=%20Liquid.rulebookMixing.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Mixing%20through%20Mixtures%22,%0A%20%20%20%20code:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20if%20(runner.noun.liquidContents.length%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20mixture;%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20Liquid.mixtures.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20mixture%20=%20Liquid.mixtures[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20proportions%20=%20[];%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20mixtureIterator%20=%20mixture.quantities.entries();%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20mixtureLiquid%20=%20mixtureIterator.next();%20!mixtureLiquid.done;%20mixtureLiquid%20=%20mixtureIterator.next())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20mixtureType%20=%20mixtureLiquid.value[0];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20mixtureQuantity%20=%20mixtureLiquid.value[1];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20matchedQuantity%20=%200;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20runner.noun.liquidContents.forEach((liquidType)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(liquidType%20==%20mixtureType%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(typeof%20mixtureType%20==%20%22function%22%20&&%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(liquidType%20instanceof%20mixtureType%20%7C%7C%20mixtureType(liquidType))))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20matchedQuantity++;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20catch%20(e)%20%7B%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20proportions.push(matchedQuantity%20/%20mixtureQuantity);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(proportions.every(function%20(element,%20index,%20array)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20element%20===%20array[0];%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20mixture;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D);%0Aclass%20Scenery%20extends%20Thing%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(...arguments);%0A%20%20%20%20%20%20%20%20this.fixedInPlace%20=%20true;%0A%20%20%20%20%20%20%20%20this.scenery%20=%20true;%0A%20%20%20%20%7D%0A%7D%0Aclass%20OrcDebugger%20extends%20Humanoid%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20%20%20super(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20isMale:%20true,%0A%20%20%20%20%20%20%20%20%20%20%20%20name:%20(()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20nameMod%20=%20OrcDebugger.nameModifier.getOne();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(nameMod%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nameMod%20=%20(OrcDebugger.counter++).toString();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20nameMod%20+%20%22%20Orc%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)(),%0A%20%20%20%20%20%20%20%20%20%20%20%20unique:%20true,%0A%20%20%20%20%20%20%20%20%20%20%20%20description:%20%22This%20is%20one%20extremely%20ugly%20fellow.%22%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20this.AI.wanderer%20=%20true;%0A%20%20%20%20%20%20%20%20this.AI.picksShinies%20=%20true;%0A%20%20%20%20%7D%0A%7D%0AOrcDebugger.nameModifier%20=%20new%20Shuffler([%0A%20%20%20%20%22Ugly%22,%20%22Muscular%22,%20%22Veiny%22,%20%22Angry%22,%20%22Sad%22,%20%22Smart%22,%20%22Agile%22,%20%22Short%22,%20%22Bulging%22,%20%22Intense%22,%20%22Smouldering%22%0A]);%0AOrcDebugger.counter%20=%201;%0AActionTalk.carry.createAndAddRule(%7B%0A%20%20%20%20name:%20%22Talking%20to%20the%20orc%22,%0A%20%20%20%20firstPriority:%20ActionTalk.PRIORITY_GLOBAL_DIALOGUE,%0A%20%20%20%20priority:%20ActionTalk.PRIORITY_COMMON_DIALOGUE,%0A%20%20%20%20conditions:%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20return%20runner.noun.getNoun(0)%20instanceof%20OrcDebugger;%0A%20%20%20%20%7D,%0A%20%20%20%20code:%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20orc%20=%20runner.noun.getNoun(0);%0A%20%20%20%20%20%20%20%20let%20result%20=%20Dice.testAgainstRoll(%7B%20name:%20%22Charm%20+%202%22,%20value:%20WorldState.player.getStat(Attributes.Charm)%20+%202%20%7D,%20%7B%20name:%20%22Orc's%20wits%20+%202%22,%20value:%20orc.getStat(Attributes.Intelligence)%20+%202%20%7D);%0A%20%20%20%20%20%20%20%20if%20(result%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.printAsContent(new%20Say(%22You%20win!%22));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.printAsContent(new%20Say(%22You%20lose.%22));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20true;%0A%20%20%20%20%7D%0A%7D);%0Aclass%20Semen%20extends%20Liquid%20%7B%0A%20%20%20%20constructor(cummer,%20options)%20%7B%0A%20%20%20%20%20%20%20%20super(options);%0A%20%20%20%20%20%20%20%20this.cummer%20=%20cummer;%0A%20%20%20%20%7D%0A%7D%0Avar%20rooma%20=%20new%20RoomRandom(%22Room%20A%22);%0Arooma.description%20=%20new%20Say(%22You%20are%20inside%20a%20box%20of%20metal%20painted%20blue.%20Your%20head%20almost%20touches%20the%20ceiling,%20making%20the%20room%20look%20smaller%20than%20it%20really%20is.%22,%20Say.LINE_BREAK,%20new%20SayIf(()%20=%3E%20%7B%0A%20%20%20%20return%20Thing.InsideRoomRelation.getLeft(vase)%20==%20rooma%20%7C%7C%20Thing.InsideRoomRelation.getLeft(urn)%20==%20rooma;%0A%7D,%20%22%20Still,%20there%20are%20some%20things%20thrown%20about.%22));%0APlayBegins.setStartingRoom(rooma);%0Alet%20paddedBra%20=%20new%20Clothing(%7B%20name:%20%22Padded%20Bra%22,%20unique:%20true%20%7D);%0ApaddedBra.breastPadding%20=%203;%0ApaddedBra.slots%20=%20[Humanoid.SLOT_BREASTS];%0Alet%20paddedUnderwear%20=%20new%20Clothing(%7B%20name:%20%22Padded%20Underwear%22,%20unique:%20true%20%7D);%0ApaddedUnderwear.crotchPadding%20=%2015;%0ApaddedUnderwear.slots%20=%20[Humanoid.SLOT_CROTCH_BACK,%20Humanoid.SLOT_CROTCH_FRONT];%0Alet%20player%20=%20WorldState.player;%0AWorldState.player%20=%20player;%0Avar%20vase%20=%20new%20Thing(%7B%20name:%20%22Vase%22%20%7D);%0Avase.description%20=%20new%20Say(%22This%20is%20an%20ornamental%20vase%20that'd%20look%20very%20nice%20on%20your%20lap.%20Why?%20Who%20knows.%22);%0Arooma.place(vase);%0Alet%20mapOfTest%20=%20new%20MapNote(%7B%20name:%20%22Map%20of%20this%20Region%22,%0A%20%20%20%20description:%20%22This%20is%20a%20simple%20map%20showing%20all%20the%20rooms%20here.%22,%20unique:%20true%20%7D);%0Arooma.place(mapOfTest);%0Alet%20urn%20=%20new%20Thing(%7B%20unique:%20true,%20name:%20%22Urn%20of%20Dreams%22,%20image:%20%22image001%22%20%7D);%0Aurn.description%20=%20new%20Say(%22This%20appears%20to%20be%20a%20simple,%20black%20urn%20containing%20the%20ashes%20of%20your%20dreams.%22);%0Arooma.place(urn);%0Avar%20roomb%20=%20new%20RoomRandom(%22Room%20B%22);%0Aroomb.place(vase);%0Alet%20frillyPouch%20=%20new%20CoinPouch(%7B%0A%20%20%20%20name:%20%22Frilly%20Pouch%22,%0A%20%20%20%20description:%20new%20Say(%22This%20is%20a%20very%20gay%20little%20pink%20pouch%20full%20of%20little%20hearts.%22)%0A%7D);%0AfrillyPouch.addCoins(502);%0Arooma.place(frillyPouch);%0Alet%20bigSack%20=%20new%20CoinPouch(%7B%20name:%20%22Big%20Sack%22%20%7D);%0AbigSack.addCoins(100);%0Arooma.place(bigSack);%0Alet%20region%20=%20new%20RegionRandom(%22Test%20Region%22);%0Aregion.place(rooma,%20roomb);%0Afor%20(let%20i%20=%201;%20i%20%3C%206;%20i++)%20%7B%0A%20%20%20%20let%20room%20=%20new%20RoomRandom(%22Room%20%22%20+%20i.toString());%0A%20%20%20%20region.place(room);%0A%20%20%20%20if%20(Math.random()%20%3E%200.5)%20%7B%0A%20%20%20%20%7D%0A%7D%0AmapOfTest.addRegion(region);%0Alet%20southestRoom%20=%20new%20RoomRandom(%22Southest%20Room%22);%0Aregion.place(southestRoom);%0AsouthestRoom.appearChance%20=%20100;%0AsouthestRoom.backgroundImage%20=%20%22bloo%22;%0AsouthestRoom.trickyCode%20=%20(options)%20=%3E%20%7B%0A%20%20%20%20let%20myCoordinates%20=%20[options.x,%20options.y];%0A%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20Room.DIRECTIONS.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20let%20direction%20=%20Room.DIRECTIONS[i];%0A%20%20%20%20%20%20%20%20if%20(direction%20!=%20Direction.NORTH)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20coordinates%20=%20Room.shift(myCoordinates,%20direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!options.map.isFree(coordinates[0],%20coordinates[1]))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20coordinates%20=%20Room.shift(coordinates,%20direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!options.map.isFree(coordinates[0],%20coordinates[1]))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20true;%0A%7D;%0ARegionRandom.rulebookAfterPlaceRoom.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22After%20placing%20the%20southest%20room%22,%0A%20%20%20%20code:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20options%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20let%20myCoordinates%20=%20options.map.getCoordinates(options.room);%0A%20%20%20%20%20%20%20%20if%20(myCoordinates%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20Room.DIRECTIONS.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20direction%20=%20Room.DIRECTIONS[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(direction%20!=%20Direction.NORTH)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20coordinates%20=%20Room.shift(myCoordinates,%20direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20options.map.block(coordinates[0],%20coordinates[1]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20coordinates%20=%20Room.shift(coordinates,%20direction);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20options.map.block(coordinates[0],%20coordinates[1]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D,%0A%20%20%20%20conditions:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20return%20runner.noun.room%20==%20southestRoom;%0A%20%20%20%20%7D%0A%7D));%0AThing.CarryRelation.setRelation(WorldState.player,%20mapOfTest);%0APlayBegins.rulebook.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22randomize%20region%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20code:%20async%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20await%20region.randomize();%0A%20%20%20%20%7D%0A%7D));%0ARegionRandom.rulebookRandomizeRegion.addRule(new%20Rule(%7B%0A%20%20%20%20name:%20%22Add%20room%20A%20and%20B%20to%20region%22,%0A%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20code:%20async%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20await%20RegionRandom.rulebookPlaceRoom.execute(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20noun:%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20map:%20region.map,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20room:%20rooma,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20region:%20region%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D).then();%0A%20%20%20%20%20%20%20%20await%20RegionRandom.rulebookPlaceRoom.execute(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20noun:%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20map:%20region.map,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20room:%20roomb,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20region:%20region%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D).then();%0A%20%20%20%20%7D,%0A%20%20%20%20conditions:%20runner%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20return%20runner.noun%20==%20region;%0A%20%20%20%20%7D%0A%7D));%0Afunction%20getPath(rooma,%20roomb)%20%7B%0A%20%20%20%20//%22The%20best%20path%20from%20%22%20+%20rooma.getPrintedName()%20+%20%22%20to%20%22%20+%20roomb.getPrintedName()%20+%20%22%20is:%22);%0A%20%20%20%20let%20t0,%20dir,%20t1;%0A%20%20%20%20t0%20=%20performance.now();%0A%20%20%20%20dir%20=%20rooma.bestDirectionTo(roomb);%0A%20%20%20%20t1%20=%20performance.now();%0A%20%20%20%20if%20(dir%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20//DirectionNames[Direction[dir]]);%0A%20%20%20%20%7D%0A%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20//%22There%20is%20no%20path.%22);%0A%20%20%20%20%7D%0A%20%20%20%20//%22Call%20to%20doSomething%20took%20%22%20+%20(t1%20-%20t0)%20+%20%22%20milliseconds.%22);%0A%7D%0Alet%20wanderRegion%20=%20new%20RegionRandom(%22OrcableRegion%22);%0AwanderRegion.place(rooma,%20roomb);%0Aregion.place(wanderRegion);%0Alet%20rooms%20=%20region.getRooms();%0Alet%20shuffler%20=%20new%20Shuffler(rooms);%0Afor%20(let%20i%20=%200;%20i%20%3C%200;%20i++)%20%7B%0A%20%20%20%20AI.rules.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20name:%20%22Pick%20Shinies%22,%0A%20%20%20%20%20%20%20%20firstPriority:%20AIRules.PRIORITY_ACTING_ON_PLACE,%0A%20%20%20%20%20%20%20%20conditions:%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20person%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20person.AI.picksShinies;%0A%20%20%20%20%20%20%20%20%7D,%0A%20%20%20%20%20%20%20%20code:%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20person%20=%20runner.noun;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20room%20=%20person.getRoom();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20visibleThings%20=%20room.getContainedAndVisibleTo(person);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(visibleThings.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20visibleThings.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!visibleThings[i].fixedInPlace%20&&%20visibleThings[i].getShiny())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20new%20ActionTake(person,%20visibleThings[i]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%7D%0Alet%20randomOrc;%0Alet%20randomOrc2;%0Afor%20(let%20i%20=%200;%20i%20%3C%2010;%20i++)%20%7B%0A%20%20%20%20let%20orc%20=%20new%20OrcDebugger();%0A%20%20%20%20randomOrc%20=%20orc;%0A%20%20%20%20if%20(randomOrc2%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20randomOrc2%20=%20orc;%0A%20%20%20%20%7D%0A%20%20%20%20orc.AI.wanderer%20=%20true;%0A%20%20%20%20orc.AI.picksShinies%20=%20true;%0A%20%20%20%20orc.AI.wandersOn%20=%20wanderRegion;%0A%20%20%20%20let%20room%20=%20new%20Shuffler(region.getRooms()).getOne();%0A%20%20%20%20room.place(orc);%0A%7D%0Avar%20fTarget%20=%20new%20ContentGroup();%0AfTarget.addUnit(new%20FuckingUnit()%0A%20%20%20%20.setFucked(WorldState.player)%0A%20%20%20%20.setFucker(randomOrc)%0A%20%20%20%20.setHole(WorldState.player.getPart(HumanoidVagina))%0A%20%20%20%20.setStick(randomOrc.getPart(HumanoidPenis)));%0AfTarget.addUnit(new%20FuckingUnit()%0A%20%20%20%20.setFucked(WorldState.player)%0A%20%20%20%20.setFucker(randomOrc2)%0A%20%20%20%20.setHole(WorldState.player.getPart(HumanoidHead))%0A%20%20%20%20.setStick(randomOrc2.getPart(HumanoidPenis)));%0Alet%20spitroast%20=%20(new%20FuckingDescription(%22Orc%20spitroast!%22));%0Aspitroast.setDescription(new%20Say(%22Orc%20Spitroast!%22))%0A%20%20%20%20.addUnit()%0A%20%20%20%20.setFucker(OrcDebugger)%0A%20%20%20%20.setHole(HumanoidVagina)%0A%20%20%20%20.setStick(HumanoidPenis);%0Aspitroast.addUnit()%0A%20%20%20%20.setFucker(OrcDebugger)%0A%20%20%20%20.setHole(HumanoidHead)%0A%20%20%20%20.setStick(HumanoidPenis);%0A(new%20FuckingDescription(%22Specific%20Orc%20in%20Vagina%22))%0A%20%20%20%20.setDescription(new%20Say(%22Specific%20Orc%20in%20Vagina.%22))%0A%20%20%20%20.addUnit()%0A%20%20%20%20.setFucker(randomOrc)%0A%20%20%20%20.setHole(WorldState.player.getPart(HumanoidVagina))%0A%20%20%20%20.setStick(randomOrc.getPart(HumanoidPenis));%0A(new%20FuckingDescription(%22Specific%20Orc%20Starts%20Cumming%20in%20Vagina%22))%0A%20%20%20%20.setDescription(new%20Say(%22Specific%20Orc%20Starts%20Cumming%20in%20Vagina%22))%0A%20%20%20%20.addUnit()%0A%20%20%20%20.setFucker(randomOrc)%0A%20%20%20%20.setHole(WorldState.player.getPart(HumanoidVagina))%0A%20%20%20%20.addMarker(FuckingState.CUM_START)%0A%20%20%20%20.setStick(randomOrc.getPart(HumanoidPenis));%0A(new%20FuckingDescription(%22Orc%20in%20mouth%22))%0A%20%20%20%20.setDescription(new%20Say(%22Orc%20in%20mouth.%22))%0A%20%20%20%20.addUnit()%0A%20%20%20%20.setFucker(OrcDebugger)%0A%20%20%20%20.setHole(HumanoidHead)%0A%20%20%20%20.setStick(HumanoidPenis);%0Avar%20DialogueTrees;%0A(function%20(DialogueTrees)%20%7B%0A%20%20%20%20DialogueTrees.CreationIntro%20=%20(function%20()%20%7B%0A%20%20%20%20%20%20%20%20let%20tree%20=%20new%20DialogueTree(%22CreationIntro%22);%0A%20%20%20%20%20%20%20%20let%20node;%0A%20%20%20%20%20%20%20%20let%20text;%0A%20%20%20%20%20%20%20%20let%20set;%0A%20%20%20%20%20%20%20%20node%20=%20new%20DialogueNode(%22ae981322-9151-49c8-a889-94455db7c262%22);%0A%20%20%20%20%20%20%20%20node.setNext(%2281582dea-ba27-4baa-8df2-a77fbb5ed9ef%22);%0A%20%20%20%20%20%20%20%20tree.addStartNode(node);%0A%20%20%20%20%20%20%20%20text%20=%20new%20DialogueText(%22f72bf099-bae2-49df-9433-c9c3ec6a020d%22);%0A%20%20%20%20%20%20%20%20text.setSay(()%20=%3E%20%7B%20return%20new%20Say(%22As%20you%20approach%20the%20Obelisk,%20many%20dreams%20and%20nightmares%20will%20become%20reality%20as%20it%20attempts%20to%20dissuade%20you%20from%20getting%20too%20close,%20with%20the%20intensity%20increasing%20the%20closer%20you%20get%20to%20your%20objective.%22,%20Say.PARAGRAPH_BREAK,%20%22Ultimately,%20the%20Obelisk%20wishes%20you%20no%20harm,%20for%20it%20is%20better%20to%20have%20you%20around%20as%20a%20protector%20than%20as%20a%20dead%20enemy,%20so%20the%20Obelisk%20will%20attempt%20to%20give%20you%20exactly%20what%20you%20want%20deep%20in%20your%20heart,%20trying%20to%20make%20you%20completely%20satisfied%20so%20that%20you%20no%20longer%20wish%20for%20the%20Obelisk's%20destruction%20or%20become%20unable%20to%20continue%20your%20quest.%20Of%20course,%20what%20your%20heart%20wants%20is%20not%20necessarily%20what%20you%20think%20it%20wants.%22,%20Say.PARAGRAPH_BREAK,%20%22Orcs,%20the%20most%20common%20creature%20to%20come%20out%20of%20the%20Obelisk,%20are%20nothing%20more%20than%20humans%20warped%20by%20their%20own%20desire%20for%20unbridled%20violence.%20What%20will%20the%20Obelisk%20do%20to%20you?%22,%20Say.PARAGRAPH_BREAK,%20%22On%20the%20following%20screens,%20you%20will%20define%20who%20you%20will%20be%20in%20this%20story.%20Please%20confirm%20carefully,%20as%20there%20is%20no%20turning%20back.%22);%20%7D);%0A%20%20%20%20%20%20%20%20text.setNext(%2266d4b27a-ff40-4a8e-a749-2b5e8237695a%22);%0A%20%20%20%20%20%20%20%20tree.addNode(text);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%2281582dea-ba27-4baa-8df2-a77fbb5ed9ef%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20Elements.startMenu();%20%7D);%0A%20%20%20%20%20%20%20%20set.setNext(%22f72bf099-bae2-49df-9433-c9c3ec6a020d%22);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%220b4fec87-a2b0-4e3b-81ed-a4150f94fc10%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20Elements.endMenu();%20%7D);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%2266d4b27a-ff40-4a8e-a749-2b5e8237695a%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20return%20Elements.waitForAnyKey();%20%7D);%0A%20%20%20%20%20%20%20%20set.setNext(%220b4fec87-a2b0-4e3b-81ed-a4150f94fc10%22);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20return%20tree;%0A%20%20%20%20%7D)();%0A%7D)(DialogueTrees%20%7C%7C%20(DialogueTrees%20=%20%7B%7D));%0Avar%20CharacterCreation;%0A(function%20(CharacterCreation)%20%7B%0A%20%20%20%20CharacterCreation.CreationIntro%20=%20CharacterCreation.rulebook.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20name:%20%22Show%20small%20Intro%22,%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20%20%20%20%20priority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20%20%20%20%20code:%20async%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20DialogueTrees.CreationIntro.execute();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%7D)(CharacterCreation%20%7C%7C%20(CharacterCreation%20=%20%7B%7D));%0Avar%20CharacterCreation;%0A(function%20(CharacterCreation)%20%7B%0A%20%20%20%20let%20ccDiv%20=%20document.createElement(%22div%22);%0A%20%20%20%20ccDiv.id%20=%20%22characterCreation%22;%0A%20%20%20%20let%20rightSide%20=%20document.createElement(%22div%22);%0A%20%20%20%20rightSide.id%20=%20%22ccRight%22;%0A%20%20%20%20let%20leftSide%20=%20document.createElement(%22div%22);%0A%20%20%20%20leftSide.id%20=%20%22ccLeft%22;%0A%20%20%20%20ccDiv.appendChild(leftSide);%0A%20%20%20%20ccDiv.appendChild(rightSide);%0A%20%20%20%20let%20resolver;%0A%20%20%20%20async%20function%20printTable()%20%7B%0A%20%20%20%20%20%20%20%20printOrigin();%0A%20%20%20%20%20%20%20%20while%20(leftSide.firstChild)%0A%20%20%20%20%20%20%20%20%20%20%20%20leftSide.removeChild(leftSide.firstChild);%0A%20%20%20%20%20%20%20%20await%20(new%20Say(new%20SayBold(%22Character%20Origin:%22)).getHTMLContent().then(eles%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20eles.forEach(ele%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20leftSide.appendChild(ele);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%7D));%0A%20%20%20%20%20%20%20%20let%20origins%20=%20CharacterOrigin.getOrigins();%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20origins.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20origin%20=%20origins[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20say%20=%20new%20Say(origin.name);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(origin.id%20==%20CharacterCreation.PlayerOrigin.value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22%20-%20SELECTED%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20(say).getHTML(%22p%22,%20[%22choice%22]).then(elementArray%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Controls.Links.makeCustomLink(elementArray[0],%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mouseover:%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20printOrigin(origin);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mouseout:%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20printOrigin();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20click:%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CharacterCreation.PlayerOrigin.value%20=%20origin.id;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20reset();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Controls.KeyHandler.applyCode(elementArray[0],%20Controls.KeyHandler.getSecondKeyCode());%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20leftSide.appendChild(elementArray[0]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20function%20printConfirm()%20%7B%0A%20%20%20%20%20%20%20%20(new%20Say(%22Confirm%22)).getHTML(%22p%22,%20[%22choice%22]).then(elementArray%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20elementArray[0].addEventListener(%22click%22,%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20resolver();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20Controls.KeyHandler.applyCode(elementArray[0],%20Controls.KeyHandler.getSecondKeyCode());%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.print(elementArray[0]);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20function%20printOrigin(origin)%20%7B%0A%20%20%20%20%20%20%20%20if%20(origin%20==%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20origin%20=%20CharacterOrigin.getOrigin(CharacterCreation.PlayerOrigin.value);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20say%20=%20new%20Say(origin.description);%0A%20%20%20%20%20%20%20%20if%20(origin.bonusStats%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20say.add(Say.PARAGRAPH_BREAK,%20origin.bonusStats);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20say.getHTMLContent().then((eles%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20while%20(rightSide.firstChild)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rightSide.removeChild(rightSide.firstChild);%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20eles.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rightSide.appendChild(eles[i]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D));%0A%20%20%20%20%7D%0A%20%20%20%20function%20reset()%20%7B%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.clear();%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.print(ccDiv);%0A%20%20%20%20%20%20%20%20printTable();%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.print(document.createElement(%22br%22));%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.print(document.createElement(%22br%22));%0A%20%20%20%20%20%20%20%20printConfirm();%0A%20%20%20%20%7D%0A%20%20%20%20CharacterCreation.CCOrigin%20=%20CharacterCreation.rulebook.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20name:%20%22Character%20Creation%20-%20Origin%22,%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_MEDIUM,%0A%20%20%20%20%20%20%20%20priority:%20Rule.PRIORITY_HIGH,%0A%20%20%20%20%20%20%20%20code:%20async%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.startMenu();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20promise%20=%20new%20Promise(resolve%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20resolver%20=%20resolve;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20reset();%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20promise;%0A%20%20%20%20%20%20%20%20%20%20%20%20CharacterCreation.getOrigin().confirmPicked();%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.endMenu();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%7D)(CharacterCreation%20%7C%7C%20(CharacterCreation%20=%20%7B%7D));%0Avar%20CharacterCreation;%0A(function%20(CharacterCreation)%20%7B%0A%20%20%20%20let%20ccDiv%20=%20document.createElement(%22div%22);%0A%20%20%20%20ccDiv.id%20=%20%22characterCreation%22;%0A%20%20%20%20let%20rightSide%20=%20document.createElement(%22div%22);%0A%20%20%20%20rightSide.id%20=%20%22ccRight%22;%0A%20%20%20%20let%20leftSide%20=%20document.createElement(%22div%22);%0A%20%20%20%20leftSide.id%20=%20%22ccLeft%22;%0A%20%20%20%20ccDiv.appendChild(leftSide);%0A%20%20%20%20ccDiv.appendChild(rightSide);%0A%20%20%20%20let%20resolver;%0A%20%20%20%20async%20function%20printTable()%20%7B%0A%20%20%20%20%20%20%20%20while%20(leftSide.firstChild)%0A%20%20%20%20%20%20%20%20%20%20%20%20leftSide.removeChild(leftSide.firstChild);%0A%20%20%20%20%20%20%20%20await%20(new%20Say(new%20SayBold(%22Perks%20(Choose%20any):%22)).getHTMLContent().then(eles%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20eles.forEach(ele%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20leftSide.appendChild(ele);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%7D));%0A%20%20%20%20%20%20%20%20let%20perks%20=%20Perk.getPerks();%0A%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20perks.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20perk%20=%20perks[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20say%20=%20new%20Say(perk.name);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(perk.isEnabled())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(perk.isForced())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22%20(Mandatory)%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22%20-%20Selected%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20(perk.isForced())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20say.add(%22%20(Forbidden)%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20(say).getHTML(%22p%22,%20[%22choice%22]).then(elementArray%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Controls.Links.makeCustomLink(elementArray[0],%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mouseover:%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20printPerk(perk);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mouseout:%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20emptyPerk();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20click:%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!perk.isForced())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20perk.value%20=%20!perk.value;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20reset();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Controls.KeyHandler.applyCode(elementArray[0],%20Controls.KeyHandler.getSecondKeyCode());%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20leftSide.appendChild(elementArray[0]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20function%20printConfirm()%20%7B%0A%20%20%20%20%20%20%20%20(new%20Say(%22Confirm%22)).getHTML(%22p%22,%20[%22choice%22]).then(elementArray%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20elementArray[0].addEventListener(%22click%22,%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20resolver();%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20Controls.KeyHandler.applyCode(elementArray[0],%20Controls.KeyHandler.getSecondKeyCode());%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.print(elementArray[0]);%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%7D%0A%20%20%20%20function%20emptyPerk()%20%7B%0A%20%20%20%20%20%20%20%20while%20(rightSide.firstChild)%0A%20%20%20%20%20%20%20%20%20%20%20%20rightSide.removeChild(rightSide.firstChild);%0A%20%20%20%20%7D%0A%20%20%20%20function%20printPerk(perk)%20%7B%0A%20%20%20%20%20%20%20%20let%20say%20=%20new%20Say(perk.description);%0A%20%20%20%20%20%20%20%20say.getHTMLContent().then((eles%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20emptyPerk();%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20eles.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rightSide.appendChild(eles[i]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D));%0A%20%20%20%20%7D%0A%20%20%20%20function%20reset()%20%7B%0A%20%20%20%20%20%20%20%20Perk.updatePerks();%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.clear();%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.print(ccDiv);%0A%20%20%20%20%20%20%20%20printTable();%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.print(document.createElement(%22br%22));%0A%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.print(document.createElement(%22br%22));%0A%20%20%20%20%20%20%20%20printConfirm();%0A%20%20%20%20%7D%0A%20%20%20%20CharacterCreation.CCPerk%20=%20CharacterCreation.rulebook.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20name:%20%22Character%20Creation%20-%20Origin%22,%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_LOW,%0A%20%20%20%20%20%20%20%20priority:%20Rule.PRIORITY_HIGH,%0A%20%20%20%20%20%20%20%20code:%20async%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.startMenu();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20promise%20=%20new%20Promise(resolve%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20resolver%20=%20resolve;%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20reset();%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20promise;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20perks%20=%20Perk.getPerks();%0A%20%20%20%20%20%20%20%20%20%20%20%20perks.forEach(perk%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(perk.isEnabled())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20perk.confirmPicked();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.endMenu();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%7D)(CharacterCreation%20%7C%7C%20(CharacterCreation%20=%20%7B%7D));%0Avar%20CharacterCreation;%0A(function%20(CharacterCreation)%20%7B%0A%20%20%20%20function%20createRange(options)%20%7B%0A%20%20%20%20%20%20%20%20let%20valueNode%20=%20document.createTextNode(String(options.value));%0A%20%20%20%20%20%20%20%20let%20div%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20div.classList.add(%22ccOption%22);%0A%20%20%20%20%20%20%20%20if%20(options.topLabel%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20topLabel%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20topLabel.classList.add(%22ccOptionTopLabel%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20topLabel.appendChild(document.createTextNode(options.topLabel%20+%20%22:%22));%0A%20%20%20%20%20%20%20%20%20%20%20%20div.appendChild(topLabel);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20label%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20if%20(options.showValue%20!=%20false)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20label.classList.add(%22rangeValue%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(options.label%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20b%20=%20document.createElement(%22b%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20b.appendChild(document.createTextNode(options.label%20+%20%22:%20%22));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20label.appendChild(b);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20label.appendChild(valueNode);%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20input%20=%20document.createElement(%22input%22);%0A%20%20%20%20%20%20%20%20input.classList.add(%22ccRange%22);%0A%20%20%20%20%20%20%20%20input.type%20=%20%22range%22;%0A%20%20%20%20%20%20%20%20input.min%20=%20options.minValue.toString();%0A%20%20%20%20%20%20%20%20input.max%20=%20options.maxValue.toString();%0A%20%20%20%20%20%20%20%20input.step%20=%20options.step.toString();%0A%20%20%20%20%20%20%20%20input.value%20=%20options.value.toString();%0A%20%20%20%20%20%20%20%20let%20onChange%20=%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20valueNode.nodeValue%20=%20input.value;%0A%20%20%20%20%20%20%20%20%20%20%20%20options.onChange(Number(input.value),%20valueNode,%20input);%0A%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20input.addEventListener(%22change%22,%20onChange);%0A%20%20%20%20%20%20%20%20let%20leftButton%20=%20document.createElement(%22a%22);%0A%20%20%20%20%20%20%20%20leftButton.classList.add(%22ccButton%22);%0A%20%20%20%20%20%20%20%20leftButton.addEventListener(%22click%22,%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20input.value%20=%20String(Number(input.value)%20-%20options.step);%0A%20%20%20%20%20%20%20%20%20%20%20%20onChange();%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20Controls.KeyHandler.applyCode(leftButton,%20Controls.KeyHandler.getFirstKeyCode());%0A%20%20%20%20%20%20%20%20if%20(options.leftLabel%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20leftButton.appendChild(document.createTextNode(options.leftLabel));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20let%20rightButton%20=%20document.createElement(%22a%22);%0A%20%20%20%20%20%20%20%20rightButton.classList.add(%22ccButton%22);%0A%20%20%20%20%20%20%20%20rightButton.addEventListener(%22click%22,%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20input.value%20=%20String(Number(input.value)%20+%20options.step);%0A%20%20%20%20%20%20%20%20%20%20%20%20onChange();%0A%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20Controls.KeyHandler.applyCode(rightButton,%20Controls.KeyHandler.getFirstKeyCode());%0A%20%20%20%20%20%20%20%20;%0A%20%20%20%20%20%20%20%20if%20(options.rightLabel%20!=%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20rightButton.appendChild(document.createTextNode(options.rightLabel));%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20div.appendChild(leftButton);%0A%20%20%20%20%20%20%20%20div.appendChild(input);%0A%20%20%20%20%20%20%20%20div.appendChild(rightButton);%0A%20%20%20%20%20%20%20%20div.appendChild(label);%0A%20%20%20%20%20%20%20%20onChange();%0A%20%20%20%20%20%20%20%20return%20div;%0A%20%20%20%20%7D%0A%20%20%20%20CharacterCreation.CCSexStats%20=%20CharacterCreation.rulebook.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20name:%20%22Character%20Creation%20-%20Sex%20and%20Stats%22,%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGH,%0A%20%20%20%20%20%20%20%20priority:%20Rule.PRIORITY_HIGH,%0A%20%20%20%20%20%20%20%20code:%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.startMenu();%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20ccDiv%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20ccDiv.id%20=%20%22characterCreation%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20ccLeft%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20ccLeft.id%20=%20%22ccLeft%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20ccDiv.appendChild(ccLeft);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20ccRight%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20ccRight.id%20=%20%22ccRight%22;%0A%20%20%20%20%20%20%20%20%20%20%20%20ccDiv.appendChild(ccRight);%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20onChange%20=%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(new%20Say(WorldState.player.description)).getHTMLContent().then((value%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20while%20(ccRight.firstChild)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ccRight.removeChild(ccRight.firstChild);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value.forEach(val%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ccRight.appendChild(val);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D));%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20ccLeft.appendChild(createRange(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20minValue:%200,%20maxValue:%201,%20step:%201,%20value:%200,%20leftLabel:%20%22Male%22,%20rightLabel:%20%22Female%22,%20topLabel:%20%22Sex%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onChange:%20(value,%20labelValue,%20input)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20labelValue.nodeValue%20=%20(value%20==%200%20?%20%22Male%22%20:%20%22Female%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20WorldState.player.removeGenderedParts();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(value%20==%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20WorldState.player.addMaleParts();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20WorldState.player.addFemaleParts();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20otherInputs%20=%20ccDiv.getElementsByTagName(%22input%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20=%200;%20i%20%3C%20otherInputs.length;%20i++)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20otherInput%20=%20otherInputs[i];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(otherInput%20!=%20input)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20otherInput.dispatchEvent(new%20Event(%22change%22));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onChange();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D));%0A%20%20%20%20%20%20%20%20%20%20%20%20ccLeft.appendChild(createRange(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20minValue:%200,%20maxValue:%204,%20step:%201,%20value:%202,%20leftLabel:%20%22Masculine%22,%20rightLabel:%20%22Feminine%22,%20topLabel:%20%22Gender%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onChange:%20(value,%20labelValue)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20names%20=%20[%22Masculine%22,%20%22Somewhat%20masculine%22,%20%22Androgynous%22,%20%22Somewhat%20feminine%22,%20%22Feminine%22];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20labelValue.nodeValue%20=%20names[value];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20player%20=%20WorldState.player;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20intendedValue;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(player.isMale())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20values%20=%20[10,%2025,%2050,%2055,%2060];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20intendedValue%20=%20values[value];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20values%20=%20[35,%2040,%2050,%2065,%2075];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20intendedValue%20=%20values[value];%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20WorldState.player.setGenderValue(intendedValue);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20WorldState.player.setStat(Attributes.GenderIdentity,%20intendedValue);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onChange();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D));%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20statsHeader%20=%20document.createElement(%22div%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20ccLeft.appendChild(statsHeader);%0A%20%20%20%20%20%20%20%20%20%20%20%20statsHeader.classList.add(%22ccHeader%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20statsHeader.appendChild(document.createTextNode(%22Stats%20(%22));%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20maxStats%20=%2012;%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20statsRemaining%20=%20document.createTextNode(%224%20points%20remaining%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20statsHeader.appendChild(statsRemaining);%0A%20%20%20%20%20%20%20%20%20%20%20%20statsHeader.appendChild(document.createTextNode(%22)%22));%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20setStat%20=%20(attr,%20value,%20input)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20player.setStat(attr,%20value);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20remaining%20=%20maxStats%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%20player.getStat(Attributes.Strength)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%20player.getStat(Attributes.Agility)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%20player.getStat(Attributes.Intelligence)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%20player.getStat(Attributes.Charm);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(remaining%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%20+=%20remaining;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20remaining%20=%200;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20input.value%20=%20value.toString();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20input.dispatchEvent(new%20Event(%22change%22));%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return;%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20statsRemaining.nodeValue%20=%20(remaining%20==%200%20?%20%22Done%22%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20remaining%20%3E%201%20?%20remaining.toString()%20+%20%22%20points%20remaining%22%20:%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20remaining.toString()%20+%20%22%20point%20remaining%22);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D;%0A%20%20%20%20%20%20%20%20%20%20%20%20ccLeft.appendChild(createRange(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20minValue:%201,%20maxValue:%205,%20step:%201,%20value:%202,%20leftLabel:%20%22-%22,%20rightLabel:%20%22+%22,%20topLabel:%20%22Strength%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onChange:%20(value,%20labelValue,%20input)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setStat(Attributes.Strength,%20value,%20input);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onChange();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D));%0A%20%20%20%20%20%20%20%20%20%20%20%20ccLeft.appendChild(createRange(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20minValue:%201,%20maxValue:%205,%20step:%201,%20value:%202,%20leftLabel:%20%22-%22,%20rightLabel:%20%22+%22,%20topLabel:%20%22Agility%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onChange:%20(value,%20labelValue,%20input)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setStat(Attributes.Agility,%20value,%20input);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onChange();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D));%0A%20%20%20%20%20%20%20%20%20%20%20%20ccLeft.appendChild(createRange(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20minValue:%201,%20maxValue:%205,%20step:%201,%20value:%202,%20leftLabel:%20%22-%22,%20rightLabel:%20%22+%22,%20topLabel:%20%22Charm%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onChange:%20(value,%20labelValue,%20input)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setStat(Attributes.Charm,%20value,%20input);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onChange();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D));%0A%20%20%20%20%20%20%20%20%20%20%20%20ccLeft.appendChild(createRange(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20minValue:%201,%20maxValue:%205,%20step:%201,%20value:%202,%20leftLabel:%20%22-%22,%20rightLabel:%20%22+%22,%20topLabel:%20%22Intelligence%22,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onChange:%20(value,%20labelValue,%20input)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setStat(Attributes.Intelligence,%20value,%20input);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onChange();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D));%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20creationDone%20=%20new%20Promise((resolve)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(new%20Say(%22Confirm%22)).getHTML(%22p%22,%20[%22choice%22]).then(elementArray%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20elementArray[0].addEventListener(%22click%22,%20()%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Elements.endMenu();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20resolve();%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Controls.KeyHandler.applyCode(elementArray[0],%20Controls.KeyHandler.getSecondKeyCode());%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.print(elementArray[0]);%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D);%0A%20%20%20%20%20%20%20%20%20%20%20%20Elements.CurrentTurnHandler.print(ccDiv);%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20creationDone;%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%7D)(CharacterCreation%20%7C%7C%20(CharacterCreation%20=%20%7B%7D));%0Avar%20PlayBegins;%0A(function%20(PlayBegins)%20%7B%0A%20%20%20%20PlayBegins.LOAD_FAILED%20=%20false;%0A%20%20%20%20PlayBegins.CONTINUE_FAILED%20=%20false;%0A%20%20%20%20PlayBegins.IntroMenuRule%20=%20PlayBegins.rulebook.createAndAddRule(%7B%0A%20%20%20%20%20%20%20%20name:%20%22Intro%20Menu%20Rule%22,%0A%20%20%20%20%20%20%20%20firstPriority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20%20%20%20%20priority:%20Rule.PRIORITY_HIGHEST,%0A%20%20%20%20%20%20%20%20code:%20async%20(runner)%20=%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20await%20DialogueTrees.IntroMenu.execute();%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D);%0A%7D)(PlayBegins%20%7C%7C%20(PlayBegins%20=%20%7B%7D));%0Avar%20DialogueTrees;%0A(function%20(DialogueTrees)%20%7B%0A%20%20%20%20DialogueTrees.IntroMenu%20=%20(function%20()%20%7B%0A%20%20%20%20%20%20%20%20let%20tree%20=%20new%20DialogueTree(%22IntroMenu%22);%0A%20%20%20%20%20%20%20%20let%20node;%0A%20%20%20%20%20%20%20%20let%20choice;%0A%20%20%20%20%20%20%20%20let%20text;%0A%20%20%20%20%20%20%20%20let%20branch;%0A%20%20%20%20%20%20%20%20let%20set;%0A%20%20%20%20%20%20%20%20node%20=%20new%20DialogueNode(%22b018bb28-4efc-493b-ac37-31634c4e6406%22);%0A%20%20%20%20%20%20%20%20node.setNext(%22f448e718-9d24-4191-9913-ccc36d97c4c0%22);%0A%20%20%20%20%20%20%20%20tree.addStartNode(node);%0A%20%20%20%20%20%20%20%20choice%20=%20new%20DialogueChoice(%223b8c8bcb-0ac8-40dc-9f62-4abbde0d0f7f%22);%0A%20%20%20%20%20%20%20%20choice.setSay(()%20=%3E%20%7B%20return%20new%20Say(%22Start%20Game%22);%20%7D);%0A%20%20%20%20%20%20%20%20choice.setNext(%22719e71dd-9989-4015-93af-9fb7096002c1%22);%0A%20%20%20%20%20%20%20%20tree.addNode(choice);%0A%20%20%20%20%20%20%20%20choice%20=%20new%20DialogueChoice(%2253710087-4002-41b7-b089-cadabedbcafd%22);%0A%20%20%20%20%20%20%20%20choice.setSay(()%20=%3E%20%7B%20return%20new%20Say(%22Load%20from%20file%22);%20%7D);%0A%20%20%20%20%20%20%20%20choice.setNext(%22f25f6525-dad6-45d7-a391-246c1b02b569%22);%0A%20%20%20%20%20%20%20%20tree.addNode(choice);%0A%20%20%20%20%20%20%20%20choice%20=%20new%20DialogueChoice(%22b4593a36-ca83-4afc-b01b-e71344ca6e1f%22);%0A%20%20%20%20%20%20%20%20choice.setSay(()%20=%3E%20%7B%20return%20new%20Say(%22Settings%22);%20%7D);%0A%20%20%20%20%20%20%20%20choice.setNext(%22d4a379b5-06c9-4fca-a25c-b1a31b6bf93d%22);%0A%20%20%20%20%20%20%20%20tree.addNode(choice);%0A%20%20%20%20%20%20%20%20choice%20=%20new%20DialogueChoice(%224c5032a5-5509-4a00-b8c7-788e7ddbf17d%22);%0A%20%20%20%20%20%20%20%20choice.setSay(()%20=%3E%20%7B%20return%20new%20Say(%22About%22);%20%7D);%0A%20%20%20%20%20%20%20%20choice.setNext(%226b3f385b-8283-4635-9c73-e2303d77642d%22);%0A%20%20%20%20%20%20%20%20tree.addNode(choice);%0A%20%20%20%20%20%20%20%20node%20=%20new%20DialogueNode(%22674841a6-3752-4c81-977d-19e111536203%22);%0A%20%20%20%20%20%20%20%20node.setName(%222%22);%0A%20%20%20%20%20%20%20%20node.setChoices([%223b8c8bcb-0ac8-40dc-9f62-4abbde0d0f7f%22,%20%2253710087-4002-41b7-b089-cadabedbcafd%22,%20%224c5032a5-5509-4a00-b8c7-788e7ddbf17d%22,%20%22b4593a36-ca83-4afc-b01b-e71344ca6e1f%22,%20%22a55f46fa-98a9-4dff-9f1c-4f88c18ce8dd%22]);%0A%20%20%20%20%20%20%20%20tree.addNode(node);%0A%20%20%20%20%20%20%20%20text%20=%20new%20DialogueText(%22bc32e411-3c54-4747-ad79-506fc5a9d6c9%22);%0A%20%20%20%20%20%20%20%20text.setSay(()%20=%3E%20%7B%20return%20new%20Say(Say.CENTERED,%20new%20SayImage(%22introLogo%22),%20Say.LINE_BREAK,%20new%20SayItalic(%22The%20Obelisk%20is%20an%20adult%20interactive%20fiction%20game%20set%20in%20a%20post-apocalyptic%20world%20ravaged%20by%20a%20magical%20structure.%22));%20%7D);%0A%20%20%20%20%20%20%20%20text.setNext(%2236da9ea6-909c-4c0c-94d1-a17fef44452d%22);%0A%20%20%20%20%20%20%20%20tree.addNode(text);%0A%20%20%20%20%20%20%20%20text%20=%20new%20DialogueText(%2236da9ea6-909c-4c0c-94d1-a17fef44452d%22);%0A%20%20%20%20%20%20%20%20text.setSay(()%20=%3E%20%7B%20return%20new%20Say(%22A%20sleek,%20black%20obelisk%20appeared,%20monsters%20pouring%20from%20it,%20threatening%20the%20world.%20Many%20tried%20to%20reach%20the%20obelisk,%20only%20to%20return%20changed%20-%20monstrous.%20Civilization%20was%20unable%20to%20cope%20with%20the%20creatures%20and%20humanity%20soon%20returned%20to%20its%20old,%20tribal%20ways,%20humans%20becoming%20rarer%20with%20each%20passing%20day.%20Centuries%20have%20passed%20and%20technology%20is%20now%20scarce,%20with%20people%20leading%20simpler%20lives%20in%20small%20settlements.%22,%20Say.PARAGRAPH_BREAK,%20%22You%20were%20born%20in%20the%20ashes%20of%20the%20old%20world,%20living%20in%20isolation%20as%20you%20and%20your%20fellow%20men%20attempt%20to%20stay%20safe%20from%20the%20evils%20of%20The%20Obelisk.%20%22,%20Say.PARAGRAPH_BREAK,%20%22Now,%20fate%20has%20decided%20you%20must%20go,%20reach%20The%20Obelisk%20and%20destroy%20it.%20Will%20you%20succeed%20in%20stopping%20it,%20or%20will%20you%20lose%20yourself%20to%20all%20the%20changes%20it%20will%20bring%20to%20you?%22);%20%7D);%0A%20%20%20%20%20%20%20%20text.setNext(%22674841a6-3752-4c81-977d-19e111536203%22);%0A%20%20%20%20%20%20%20%20tree.addNode(text);%0A%20%20%20%20%20%20%20%20node%20=%20new%20DialogueNode(%229f11871f-eebd-4b9a-b3db-ed9be8cf78e7%22);%0A%20%20%20%20%20%20%20%20node.setName(%221%22);%0A%20%20%20%20%20%20%20%20node.setNext(%229eeb2100-917d-41fd-b756-6d3b80e92463%22);%0A%20%20%20%20%20%20%20%20tree.addNode(node);%0A%20%20%20%20%20%20%20%20branch%20=%20new%20DialogueBranch(%225d1dfb86-abd9-4ad6-bf07-8ced5476e401%22);%0A%20%20%20%20%20%20%20%20branch.setVariable(()%20=%3E%20%7B%20return%20PlayBegins.LOAD_FAILED;%20%7D);%0A%20%20%20%20%20%20%20%20branch.addBranch(%22415dc32a-1549-429d-9ac4-8cd1b4c92c14%22,%20()%20=%3E%20%7B%20return%20true;%20%7D);%0A%20%20%20%20%20%20%20%20branch.setNext(%22f82fc177-b4bd-4f06-b7ab-216259e056a5%22);%0A%20%20%20%20%20%20%20%20tree.addNode(branch);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%22f82fc177-b4bd-4f06-b7ab-216259e056a5%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20Elements.endMenu();%20%7D);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%229eeb2100-917d-41fd-b756-6d3b80e92463%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20Elements.clearMainScreen();%20%7D);%0A%20%20%20%20%20%20%20%20set.setNext(%22bc32e411-3c54-4747-ad79-506fc5a9d6c9%22);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20node%20=%20new%20DialogueNode(%22415dc32a-1549-429d-9ac4-8cd1b4c92c14%22);%0A%20%20%20%20%20%20%20%20node.setNext(%221%22);%0A%20%20%20%20%20%20%20%20tree.addNode(node);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%22f448e718-9d24-4191-9913-ccc36d97c4c0%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20Elements.startMenu();%20tree.setRepeatChoices(false);%20%7D);%0A%20%20%20%20%20%20%20%20set.setNext(%229f11871f-eebd-4b9a-b3db-ed9be8cf78e7%22);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20choice%20=%20new%20DialogueChoice(%22ef9253b9-5c24-46cc-8e2d-5562a1544f07%22);%0A%20%20%20%20%20%20%20%20choice.setSay(()%20=%3E%20%7B%20return%20new%20Say(SaveHandler.getSayForSlot(0));%20%7D);%0A%20%20%20%20%20%20%20%20choice.setNext(%229594cf06-6062-4952-b378-6aedaafe2951%22);%0A%20%20%20%20%20%20%20%20tree.addNode(choice);%0A%20%20%20%20%20%20%20%20choice%20=%20new%20DialogueChoice(%2282c512c6-0115-4d72-a413-5728a623f04b%22);%0A%20%20%20%20%20%20%20%20choice.setSay(()%20=%3E%20%7B%20return%20new%20Say(SaveHandler.getSayForSlot(1));%20%7D);%0A%20%20%20%20%20%20%20%20choice.setNext(%22fe95cfb3-b9f5-4b12-83aa-94d26e5bcac0%22);%0A%20%20%20%20%20%20%20%20tree.addNode(choice);%0A%20%20%20%20%20%20%20%20choice%20=%20new%20DialogueChoice(%227315835a-4d95-4377-828c-8a4ca7e49f87%22);%0A%20%20%20%20%20%20%20%20choice.setSay(()%20=%3E%20%7B%20return%20new%20Say(SaveHandler.getSayForSlot(2));%20%7D);%0A%20%20%20%20%20%20%20%20choice.setNext(%22dc884974-7bb2-436f-b3a4-cdf8550bd494%22);%0A%20%20%20%20%20%20%20%20tree.addNode(choice);%0A%20%20%20%20%20%20%20%20choice%20=%20new%20DialogueChoice(%2250afd6f8-87ce-49bf-b689-4819bc5dc8e7%22);%0A%20%20%20%20%20%20%20%20choice.setSay(()%20=%3E%20%7B%20return%20new%20Say(SaveHandler.getSayForSlot(3));%20%7D);%0A%20%20%20%20%20%20%20%20choice.setNext(%2262f5ea88-c6f0-4469-87f2-ea3b37638509%22);%0A%20%20%20%20%20%20%20%20tree.addNode(choice);%0A%20%20%20%20%20%20%20%20choice%20=%20new%20DialogueChoice(%22d79e9955-f81e-4ac9-8246-a02b0bd49dae%22);%0A%20%20%20%20%20%20%20%20choice.setSay(()%20=%3E%20%7B%20return%20new%20Say(SaveHandler.getSayForSlot(4));%20%7D);%0A%20%20%20%20%20%20%20%20choice.setNext(%22ee4ecd8b-59e2-43a6-8150-8a835d6eeae1%22);%0A%20%20%20%20%20%20%20%20tree.addNode(choice);%0A%20%20%20%20%20%20%20%20node%20=%20new%20DialogueNode(%22719e71dd-9989-4015-93af-9fb7096002c1%22);%0A%20%20%20%20%20%20%20%20node.setName(%22SlotChoices%22);%0A%20%20%20%20%20%20%20%20node.setChoices([%22ef9253b9-5c24-46cc-8e2d-5562a1544f07%22,%20%2282c512c6-0115-4d72-a413-5728a623f04b%22,%20%227315835a-4d95-4377-828c-8a4ca7e49f87%22,%20%2250afd6f8-87ce-49bf-b689-4819bc5dc8e7%22,%20%22d79e9955-f81e-4ac9-8246-a02b0bd49dae%22,%20%229483a087-04d0-48dd-884f-946930771b95%22,%20%22defe0f4c-4452-40f3-aff1-ba076263fcbc%22]);%0A%20%20%20%20%20%20%20%20tree.addNode(node);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%229594cf06-6062-4952-b378-6aedaafe2951%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20SaveHandler.setSlot(0);%20%7D);%0A%20%20%20%20%20%20%20%20set.setNext(%22a6b6b3d2-25ef-41b1-a5b5-25143f1b41f9%22);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%22fe95cfb3-b9f5-4b12-83aa-94d26e5bcac0%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20SaveHandler.setSlot(1);%20%7D);%0A%20%20%20%20%20%20%20%20set.setNext(%22a6b6b3d2-25ef-41b1-a5b5-25143f1b41f9%22);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%22dc884974-7bb2-436f-b3a4-cdf8550bd494%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20SaveHandler.setSlot(2);%20%7D);%0A%20%20%20%20%20%20%20%20set.setNext(%22a6b6b3d2-25ef-41b1-a5b5-25143f1b41f9%22);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%2262f5ea88-c6f0-4469-87f2-ea3b37638509%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20SaveHandler.setSlot(3);%20%7D);%0A%20%20%20%20%20%20%20%20set.setNext(%22a6b6b3d2-25ef-41b1-a5b5-25143f1b41f9%22);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%22ee4ecd8b-59e2-43a6-8150-8a835d6eeae1%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20SaveHandler.setSlot(4);%20%7D);%0A%20%20%20%20%20%20%20%20set.setNext(%22a6b6b3d2-25ef-41b1-a5b5-25143f1b41f9%22);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%22f25f6525-dad6-45d7-a391-246c1b02b569%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20return%20SaveHandler.loadFromFile();%20%7D);%0A%20%20%20%20%20%20%20%20set.setNext(%225d1dfb86-abd9-4ad6-bf07-8ced5476e401%22);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20choice%20=%20new%20DialogueChoice(%229483a087-04d0-48dd-884f-946930771b95%22);%0A%20%20%20%20%20%20%20%20choice.setSay(()%20=%3E%20%7B%20return%20new%20Say(%22Erase%20a%20save%22);%20%7D);%0A%20%20%20%20%20%20%20%20choice.setConditions(()%20=%3E%20%7B%20return%20!SaveHandler.isErasing();%20%7D);%0A%20%20%20%20%20%20%20%20choice.setNext(%22ee65c84a-021f-44d3-aa34-50235f438c96%22);%0A%20%20%20%20%20%20%20%20tree.addNode(choice);%0A%20%20%20%20%20%20%20%20choice%20=%20new%20DialogueChoice(%22defe0f4c-4452-40f3-aff1-ba076263fcbc%22);%0A%20%20%20%20%20%20%20%20choice.setSay(()%20=%3E%20%7B%20return%20new%20Say(%22Don't%20erase%20my%20saves!%22);%20%7D);%0A%20%20%20%20%20%20%20%20choice.setConditions(()%20=%3E%20%7B%20return%20SaveHandler.isErasing();%20%7D);%0A%20%20%20%20%20%20%20%20choice.setNext(%22ee65c84a-021f-44d3-aa34-50235f438c96%22);%0A%20%20%20%20%20%20%20%20tree.addNode(choice);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%22ee65c84a-021f-44d3-aa34-50235f438c96%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20SaveHandler.toggleErasing();%20%7D);%0A%20%20%20%20%20%20%20%20set.setNext(%226f15f7d6-4944-4b93-9d47-7046e8ae1f15%22);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20node%20=%20new%20DialogueNode(%226f15f7d6-4944-4b93-9d47-7046e8ae1f15%22);%0A%20%20%20%20%20%20%20%20node.setNext(%22SlotChoices%22);%0A%20%20%20%20%20%20%20%20tree.addNode(node);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%22915492f1-8fa7-4ddc-9dc0-6b0340f738c8%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20return%20SaveHandler.loadFromStorage();%20%7D);%0A%20%20%20%20%20%20%20%20set.setNext(%22f82fc177-b4bd-4f06-b7ab-216259e056a5%22);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20node%20=%20new%20DialogueNode(%22d4a379b5-06c9-4fca-a25c-b1a31b6bf93d%22);%0A%20%20%20%20%20%20%20%20node.setNext(%22Settings%22);%0A%20%20%20%20%20%20%20%20tree.addNode(node);%0A%20%20%20%20%20%20%20%20node%20=%20new%20DialogueNode(%226b3f385b-8283-4635-9c73-e2303d77642d%22);%0A%20%20%20%20%20%20%20%20node.setNext(%22About%22);%0A%20%20%20%20%20%20%20%20tree.addNode(node);%0A%20%20%20%20%20%20%20%20node%20=%20new%20DialogueNode(%22b75c038c-654c-4c62-8f49-2f4518f52cff%22);%0A%20%20%20%20%20%20%20%20node.setName(%22Settings%22);%0A%20%20%20%20%20%20%20%20node.setNext(%22d33456b8-72b6-4214-90b3-3eba2442b287%22);%0A%20%20%20%20%20%20%20%20tree.addNode(node);%0A%20%20%20%20%20%20%20%20text%20=%20new%20DialogueText(%22d33456b8-72b6-4214-90b3-3eba2442b287%22);%0A%20%20%20%20%20%20%20%20text.setSay(()%20=%3E%20%7B%20return%20new%20Say(%22Not%20implemented.%22);%20%7D);%0A%20%20%20%20%20%20%20%20text.setNext(%22bc24b446-d6a2-4284-93fb-67ad3598fcd1%22);%0A%20%20%20%20%20%20%20%20tree.addNode(text);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%22bc24b446-d6a2-4284-93fb-67ad3598fcd1%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20return%20Elements.waitForAnyKey();%20%7D);%0A%20%20%20%20%20%20%20%20set.setNext(%2281f9d62b-907e-48ae-84fe-78c7cecc4fe3%22);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20node%20=%20new%20DialogueNode(%2281f9d62b-907e-48ae-84fe-78c7cecc4fe3%22);%0A%20%20%20%20%20%20%20%20node.setNext(%221%22);%0A%20%20%20%20%20%20%20%20tree.addNode(node);%0A%20%20%20%20%20%20%20%20node%20=%20new%20DialogueNode(%22c342e112-5c73-4c82-8882-47ca3a71c914%22);%0A%20%20%20%20%20%20%20%20node.setName(%22About%22);%0A%20%20%20%20%20%20%20%20node.setNext(%22d33456b8-72b6-4214-90b3-3eba2442b287%22);%0A%20%20%20%20%20%20%20%20tree.addNode(node);%0A%20%20%20%20%20%20%20%20choice%20=%20new%20DialogueChoice(%22a55f46fa-98a9-4dff-9f1c-4f88c18ce8dd%22);%0A%20%20%20%20%20%20%20%20choice.setSay(()%20=%3E%20%7B%20return%20new%20Say(%22Note%20about%20content%20(Spoiler%20Alert)%22);%20%7D);%0A%20%20%20%20%20%20%20%20choice.setNext(%227c2060aa-66ce-4dbb-88d2-0c8f190e0a6c%22);%0A%20%20%20%20%20%20%20%20tree.addNode(choice);%0A%20%20%20%20%20%20%20%20text%20=%20new%20DialogueText(%2259a3cb30-d4ba-4b46-8157-b900fc7022dd%22);%0A%20%20%20%20%20%20%20%20text.setSay(()%20=%3E%20%7B%20return%20new%20Say(Say.CENTERED,%20new%20SayImage(%22introLogo%22),%20Say.LINE_BREAK,%20new%20SayItalic(%22The%20Obelisk%20is%20an%20adult%20interactive%20fiction%20game%20set%20in%20a%20post-apocalyptic%20world%20ravaged%20by%20a%20magical%20structure.%22));%20%7D);%0A%20%20%20%20%20%20%20%20text.setNext(%221b8bdc9d-a4bf-40aa-a382-f7813c158840%22);%0A%20%20%20%20%20%20%20%20tree.addNode(text);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%22c27829b7-7199-4b1e-9334-536258546cfc%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20return%20Elements.waitForAnyKey();%20%7D);%0A%20%20%20%20%20%20%20%20set.setNext(%2242401145-9154-40c3-a9d3-4f83df97b89e%22);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20node%20=%20new%20DialogueNode(%2242401145-9154-40c3-a9d3-4f83df97b89e%22);%0A%20%20%20%20%20%20%20%20node.setNext(%221%22);%0A%20%20%20%20%20%20%20%20tree.addNode(node);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%227c2060aa-66ce-4dbb-88d2-0c8f190e0a6c%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20Elements.clearMainScreen();%20%7D);%0A%20%20%20%20%20%20%20%20set.setNext(%2259a3cb30-d4ba-4b46-8157-b900fc7022dd%22);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20text%20=%20new%20DialogueText(%221b8bdc9d-a4bf-40aa-a382-f7813c158840%22);%0A%20%20%20%20%20%20%20%20text.setSay(()%20=%3E%20%7B%20return%20new%20Say(%22In%20this%20story,%20the%20Obelisk%20will%20attempt%20to%20give%20the%20player%20exactly%20what%20the%20player%20wants,%20but%20that's%20not%20always%20what%20the%20player%20thinks%20they%20want.%20This%20is%20a%20pornographic%20game%20first%20and%20a%20roleplaying%20game%20second,%20which%20means%20that%20it%20is%20assumed%20that%20the%20player%20character%20wants%20sex%20-%20even%20if%20they%20don't%20act%20like%20it.%22,%20Say.PARAGRAPH_BREAK,%20%22Therefore,%20this%20game%20will%20%5C%22fit%5C%22%20for%20players%20who%20go%20in%20with%20that%20mentality,%20but%20it%20%22,%20new%20SayBold(%22will%22),%20%22%20look%20differently%20for%20players%20with%20a%20different%20point%20of%20view%20for%20their%20characters.%20While%20roleplaying%20is%20encouraged,%20that%20is%20not%20how%20the%20game%20was%20written,%20so%20if%20you're%20playing%20it%20that%20way,%20it's%20just%20your%20choice.%22,%20Say.PARAGRAPH_BREAK,%20%22There%20is%20no%20sex%20without%20explicit%20consent%20from%20the%20NPCs:%20implicit%20consent%20is%20only%20used%20for%20the%20player%20character,%20because%20that's%20part%20of%20the%20story.%20It%20is%20possible%20to%20remove%20the%20player's%20consent,%20thereby%20having%20no%20unwanted%20sex%20scenes%20occur,%20by%20setting%20up%20the%20content%20options,%20which%20will%20disable%20content%20without%20explicit%20consent%20(i.e.%20disabling%20M/M%20Sex%20Scenes%20means%20this%20kind%20of%20thing%20will%20only%20happen%20if%20you%20actively%20ask%20an%20NPC%20for%20it).%22,%20Say.PARAGRAPH_BREAK,%20%22While%20the%20content%20options%20are%20there%20to%20tailor%20your%20experience,%20the%20game%20is%20made%20with%20%5C%22all%20content%20is%20available%5C%22%20in%20mind,%20which%20might%20result%20in%20a%20playthrough%20that's%20not%20much%20fun%20if%20you%20disable%20too%20many%20things.%20Still,%20that's%20your%20choice.%20Game%20on.%22);%20%7D);%0A%20%20%20%20%20%20%20%20text.setNext(%22c27829b7-7199-4b1e-9334-536258546cfc%22);%0A%20%20%20%20%20%20%20%20tree.addNode(text);%0A%20%20%20%20%20%20%20%20branch%20=%20new%20DialogueBranch(%22a6b6b3d2-25ef-41b1-a5b5-25143f1b41f9%22);%0A%20%20%20%20%20%20%20%20branch.setVariable(()%20=%3E%20%7B%20return%20SaveHandler.isVirgin();%20%7D);%0A%20%20%20%20%20%20%20%20branch.addBranch(%22d0dcd7c6-26ae-41d0-99a6-e0cae17ae381%22,%20()%20=%3E%20%7B%20return%20true;%20%7D);%0A%20%20%20%20%20%20%20%20branch.setNext(%22915492f1-8fa7-4ddc-9dc0-6b0340f738c8%22);%0A%20%20%20%20%20%20%20%20tree.addNode(branch);%0A%20%20%20%20%20%20%20%20text%20=%20new%20DialogueText(%22b8ee6702-8d38-4bd7-9b24-df8c901a50d4%22);%0A%20%20%20%20%20%20%20%20text.setSay(()%20=%3E%20%7B%20return%20new%20Say(new%20SayBold(%22A%20note%20on%20saves:%20%22),%20%22The%20selected%20slot%20will%20be%20saved%20to%20browser%20storage,%20so%20it%20will%20be%20deleted%20if%20the%20browser%20ever%20decides%20to%20delete%20it.%20The%20game%20will%20write%20to%20that%20save%20slot%20every%20turn,%20so%20you%20don't%20need%20to%20worry%20about%20that.%20Alternatively,%20you%20can%20manually%20save%20in-game,%20which%20will%20save%20to%20a%20file.%22);%20%7D);%0A%20%20%20%20%20%20%20%20text.setNext(%2250876e13-23b9-43c0-b6b1-a89b1683d5e7%22);%0A%20%20%20%20%20%20%20%20tree.addNode(text);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%2250876e13-23b9-43c0-b6b1-a89b1683d5e7%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20return%20Elements.waitForAnyKey();%20%7D);%0A%20%20%20%20%20%20%20%20set.setNext(%22915492f1-8fa7-4ddc-9dc0-6b0340f738c8%22);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20set%20=%20new%20DialogueSet(%22d0dcd7c6-26ae-41d0-99a6-e0cae17ae381%22);%0A%20%20%20%20%20%20%20%20set.setFunction(()%20=%3E%20%7B%20Elements.clearMainScreen();%20%7D);%0A%20%20%20%20%20%20%20%20set.setNext(%22b8ee6702-8d38-4bd7-9b24-df8c901a50d4%22);%0A%20%20%20%20%20%20%20%20tree.addNode(set);%0A%20%20%20%20%20%20%20%20return%20tree;%0A%20%20%20%20%7D)();%0A%7D)(DialogueTrees%20%7C%7C%20(DialogueTrees%20=%20%7B%7D));%0A//%23%20sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9hcHAvRnVuY3Rpb25zLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvU2F2ZS9TdG9yZWRWYXJpYWJsZS50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL1J1bGVib29rLnRzIiwiLi4vYXBwL1dvcmxkL1NldHRpbmdzLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvUnVsZS50cyIsIi4uL2FwcC9Xb3JsZC9UdXJuU2VxdWVuY2UudHMiLCIuLi9hcHAvVmVyc2lvbi50cyIsIi4uL2FwcC9Db250cm9scy9Nb2R1bGVzL01lbW9yeS50cyIsIi4uL2FwcC9Db250cm9scy9DbGFzc2VzL1N0b3JlZE1lbW9yeS50cyIsIi4uL2FwcC9TYXZlSGFuZGxlci50cyIsIi4uL2FwcC9DaGFyYWN0ZXJDcmVhdGlvbi9DaGFyYWN0ZXJPcmlnaW4udHMiLCIuLi9hcHAvQ2hhcmFjdGVyQ3JlYXRpb24vT3JpZ2lucy9DaGFtcGlvbk9yaWdpbi50cyIsIi4uL2FwcC9DaGFyYWN0ZXJDcmVhdGlvbi9DaGFyYWN0ZXJDcmVhdGlvbi50cyIsIi4uL2FwcC9DaGFyYWN0ZXJDcmVhdGlvbi9QZXJrLnRzIiwiLi4vYXBwL0VsZW1lbnRzL0NsYXNzZXMvU2F5L09uZU9mLnRzIiwiLi4vYXBwL0NvbnRyb2xzL0NvbnRyb2xzLnRzIiwiLi4vYXBwL1dvcmxkL01hY2hpbmVCZWdpbnMudHMiLCIuLi9hcHAvRWxlbWVudHMvRWxlbWVudHMudHMiLCIuLi9hcHAvQ29udHJvbHMvTW9kdWxlcy9LZXlIYW5kbGVyLnRzIiwiLi4vYXBwL0VsZW1lbnRzL0NsYXNzZXMvU2F5L1NheUltYWdlLnRzIiwiLi4vYXBwL0VsZW1lbnRzL0NsYXNzZXMvU2F5LnRzIiwiLi4vYXBwL0NoYXJhY3RlckNyZWF0aW9uL09yaWdpbnMvRmFsc2VseUFjY3VzZWQudHMiLCIuLi9hcHAvQ2hhcmFjdGVyQ3JlYXRpb24vUGVya3MvSG9ybnlWaXJnaW4udHMiLCIuLi9hcHAvQ29udHJvbHMvTW9kdWxlcy9Db250ZW50SGFuZGxlci50cyIsIi4uL2FwcC9Db250cm9scy9DbGFzc2VzL0NvbnRlbnRUeXBlLnRzIiwiLi4vYXBwL0VsZW1lbnRzL01vZHVsZXMvQ3VycmVudFR1cm5IYW5kbGVyLnRzIiwiLi4vYXBwL0NvbnRyb2xzL01vZHVsZXMvTGlua3MudHMiLCIuLi9hcHAvRWxlbWVudHMvQ2xhc3Nlcy9Sb29tTm9kZS50cyIsIi4uL2FwcC9FbGVtZW50cy9DbGFzc2VzL1NheS9TYXlBbi50cyIsIi4uL2FwcC9FbGVtZW50cy9DbGFzc2VzL1NheS9TYXlCb2xkLnRzIiwiLi4vYXBwL0VsZW1lbnRzL0NsYXNzZXMvU2F5L1NheUhlU2hlSXQudHMiLCIuLi9hcHAvRWxlbWVudHMvQ2xhc3Nlcy9TYXkvU2F5SGltSGVySXQudHMiLCIuLi9hcHAvRWxlbWVudHMvQ2xhc3Nlcy9TYXkvU2F5SGlzSGVyc0l0cy50cyIsIi4uL2FwcC9FbGVtZW50cy9DbGFzc2VzL1NheS9TYXlJZi50cyIsIi4uL2FwcC9FbGVtZW50cy9DbGFzc2VzL1NheS9TYXlJdGFsaWMudHMiLCIuLi9hcHAvRWxlbWVudHMvQ2xhc3Nlcy9TYXkvU2F5TGVmdFJpZ2h0LnRzIiwiLi4vYXBwL0VsZW1lbnRzL0NsYXNzZXMvU2F5L1NheUxpbmsudHMiLCIuLi9hcHAvRWxlbWVudHMvQ2xhc3Nlcy9TYXkvU2F5VGhlLnRzIiwiLi4vYXBwL0VsZW1lbnRzL01vZHVsZXMvQXBwZWFyYW5jZUhhbmRsZXIudHMiLCIuLi9hcHAvRWxlbWVudHMvTW9kdWxlcy9Gb250U2l6ZS50cyIsIi4uL2FwcC9FbGVtZW50cy9Nb2R1bGVzL0Z1bGxzY3JlZW4udHMiLCIuLi9hcHAvRWxlbWVudHMvTW9kdWxlcy9Ib3ZlckluZm8udHMiLCIuLi9hcHAvRWxlbWVudHMvTW9kdWxlcy9IeXBlcmxpbmtIYW5kbGVyLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvQWN0aW9uLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvQWN0aW9uL0FjdGlvbkV4YW1pbmUudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9SZWxhdGlvbi50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL1JlbGF0aW9ucy9SZWxhdGlvbk9uZVRvTWFueS50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL1RoaW5nLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvQWN0aW9uL0FjdGlvblRha2UudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9BY3Rpb24vQWN0aW9uR28udHMiLCIuLi9hcHAvRWxlbWVudHMvTW9kdWxlcy9Sb29tSGFuZGxlci50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL1RoaW5ncy9Db2luUG91Y2gudHMiLCIuLi9hcHAvRWxlbWVudHMvTW9kdWxlcy9JbnZlbnRvcnlIYW5kbGVyLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvQWN0aW9uL0FjdGlvblJldHJhY2UudHMiLCIuLi9hcHAvRWxlbWVudHMvTW9kdWxlcy9SZW1lbWJlcmVkSGFuZGxlci50cyIsIi4uL2FwcC9FbGVtZW50cy9Nb2R1bGVzL1N0YXR1c0xpbmVIYW5kbGVyLnRzIiwiLi4vYXBwL1dvcmxkL0RlYnVnLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvQUkudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9UaGluZ3MvUGVyc29uL1BlcnNvblN0YXQudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9UaGluZ3MvUGVyc29uL0F0dHJpYnV0ZS50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL1RoaW5ncy9QZXJzb24vU2tpbGwudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9Db250YWluZXIvQ29udGFpbmVyLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvQ29udGFpbmVyL0NvcnBzZS50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL1RoaW5ncy9QZXJzb24udHMiLCIuLi9hcHAvV29ybGQvRXZlcnlUdXJuLnRzIiwiLi4vYXBwL1dvcmxkL0Z1Y2tpbmcudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9Sb29tLnRzIiwiLi4vYXBwL1dvcmxkL091dE9mUGxheS50cyIsIi4uL2FwcC9Xb3JsZC9QbGF5QmVnaW5zLnRzIiwiLi4vYXBwL1dvcmxkL1Rlc3RzLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvVGhpbmdzL01hcE5vdGUudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9UaGluZ3MvQm9keXBhcnQudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9UaGluZ3MvQm9keXBhcnQvU2V4U3RpY2sudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9UaGluZ3MvQm9keXBhcnQvU2V4SG9sZS50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL01lYXN1cmUudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9UaGluZ3MvQm9keXBhcnQvSHVtYW5vaWQvSHVtYW5vaWRBcm1zLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvVGhpbmdzL0JvZHlwYXJ0L0h1bWFub2lkL0h1bWFub2lkQnJlYXN0cy50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL1RoaW5ncy9Cb2R5cGFydC9IdW1hbm9pZC9IdW1hbm9pZEJ1dHQudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9UaGluZ3MvQm9keXBhcnQvSHVtYW5vaWQvSHVtYW5vaWRFeHRyZW1pdHkudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9UaGluZ3MvQm9keXBhcnQvSHVtYW5vaWQvSHVtYW5vaWRGZWV0LnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvVGhpbmdzL0JvZHlwYXJ0L0h1bWFub2lkL0h1bWFub2lkSGFuZHMudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9UaGluZ3MvQm9keXBhcnQvSHVtYW5vaWQvSHVtYW5vaWRIZWFkLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvVGhpbmdzL0JvZHlwYXJ0L0h1bWFub2lkL0h1bWFub2lkUGVuaXMudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9UaGluZ3MvQm9keXBhcnQvSHVtYW5vaWQvSHVtYW5vaWRTa2luLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvVGhpbmdzL0JvZHlwYXJ0L0h1bWFub2lkL0h1bWFub2lkVGVzdGljbGVzLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvVGhpbmdzL0JvZHlwYXJ0L0h1bWFub2lkL0h1bWFub2lkVmFnaW5hLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvVGhpbmdzL0JvZHlwYXJ0L0h1bWFub2lkL0h1bWFub2lkVG9yc28udHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9UaGluZ3MvQm9keXBhcnQvSHVtYW5vaWRQYXJ0cy50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL1RoaW5ncy9DbG90aGluZy50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL0FjdGlvbi9BY3Rpb25SZW1vdmUudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9BY3Rpb24vQWN0aW9uV2Vhci50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL1RoaW5ncy9IdW1hbm9pZC9IdW1hbm9pZC50cyIsIi4uL2FwcC9Xb3JsZC9Xb3JsZFN0YXRlLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvUmVnaW9uLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvU2h1ZmZsZXIudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9BSS9BSVBpY2tTaGlueS50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL0FJL0FJV2FuZGVyLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvQWN0aW9uL0FjdGlvbkRyb3AudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9BY3Rpb24vQWN0aW9uSW52ZW50b3J5LnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvQWN0aW9uL0FjdGlvblNhdmVHYW1lLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvQWN0aW9uL0FjdGlvblRhbGsudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9BY3Rpb24vQWN0aW9uV2FpdC50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL0NvbnRlbnRQaWNrZXIvQ29udGVudERlc2NyaXB0aW9uLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvQ29udGVudFBpY2tlci9Db250ZW50RGlmZmVyZW50aWFsLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvQ29udGVudFBpY2tlci9Db250ZW50R3JvdXAudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9Db250ZW50UGlja2VyL0NvbnRlbnRNYXJrZXIudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9Db250ZW50UGlja2VyL0NvbnRlbnRVbml0LnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvQ29udGVudFBpY2tlci9Db21iYXQvQ29tYmF0RGVzY3JpcHRpb24udHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9Db250ZW50UGlja2VyL0NvbWJhdC9Db21iYXRNYXJrZXIudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9Db250ZW50UGlja2VyL0NvbWJhdC9Db21iYXRVbml0LnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvQ29udGVudFBpY2tlci9GdWNraW5nL0Z1Y2tpbmdEZXNjcmlwdGlvbi50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL0NvbnRlbnRQaWNrZXIvRnVja2luZy9GdWNraW5nTWFya2VyLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvQ29udGVudFBpY2tlci9GdWNraW5nL0Z1Y2tpbmdVbml0LnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvRGlhbG9ndWUvQnJhbmNoaW5nT3B0aW9ucy50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL0RpYWxvZ3VlL0RpYWxvZ3VlTm9kZS50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL0RpYWxvZ3VlL0RpYWxvZ3VlQnJhbmNoLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvRGlhbG9ndWUvRGlhbG9ndWVUZXh0LnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvRGlhbG9ndWUvRGlhbG9ndWVDaG9pY2UudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9EaWFsb2d1ZS9EaWFsb2d1ZU5vZGVUcmVlLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvRGlhbG9ndWUvRGlhbG9ndWVTZXQudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9EaWFsb2d1ZS9EaWFsb2d1ZVRyZWUudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9EaWFsb2d1ZS9EaWFsb2d1ZVRyZWVzLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvUmFuZG9tRHVuZ2VvbnMvUm9vbVJhbmRvbS50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL1JhbmRvbUR1bmdlb25zL1Jvb21SYW5kb21NYXAudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9SYW5kb21EdW5nZW9ucy9TaHVmZmxlckRpcmVjdGlvbi50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL1JhbmRvbUR1bmdlb25zL1Jvb21SYW5kb21Gb2RkZXIudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9SYW5kb21EdW5nZW9ucy9SZWdpb25SYW5kb20udHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9TYXZlL1NhdmVkRXZlbnQudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9UZXN0cy9EaWNlLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvVGVzdHMvRGljZUNvbW1vbi50cyIsIi4uL2FwcC9Xb3JsZC9DbGFzc2VzL1Rlc3RzL0RpY2VEYW5nZXJvdXMudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9UaGluZ3MvTGlxdWlkLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvVGhpbmdzL1NjZW5lcnkudHMiLCIuLi9hcHAvV29ybGQvQ2xhc3Nlcy9UaGluZ3MvSHVtYW5vaWQvT3JjL09yY0RlYnVnZ2VyLnRzIiwiLi4vYXBwL1dvcmxkL0NsYXNzZXMvVGhpbmdzL0xpcXVpZHMvU2VtZW4udHMiLCIuLi9jb250ZW50L21haW4udHMiLCIuLi9jb250ZW50L0NoYXJhY3RlckNyZWF0aW9uL0RpYWxvZ3VlL0NyZWF0aW9uSW50cm8uZGwudHMiLCIuLi9jb250ZW50L0NoYXJhY3RlckNyZWF0aW9uL0RpYWxvZ3Vlcy50cyIsIi4uL2NvbnRlbnQvQ2hhcmFjdGVyQ3JlYXRpb24vT3JpZ2luLnRzIiwiLi4vY29udGVudC9DaGFyYWN0ZXJDcmVhdGlvbi9QZXJrcy50cyIsIi4uL2NvbnRlbnQvQ2hhcmFjdGVyQ3JlYXRpb24vU2V4U3RhdHMudHMiLCIuLi9jb250ZW50L1BsYXlCZWdpbnMvSW50cm9NZW51LnRzIiwiLi4vY29udGVudC9QbGF5QmVnaW5zL0RpYWxvZ3VlL0ludHJvTWVudS5kbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxTQUFTLFdBQVcsQ0FBQyxDQUFjO0lBQy9CLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1FBQzFCLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtZQUM1QixJQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNaLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDeEI7S0FDSjtJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsQ0FBYztJQUN2QyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2YsT0FBTyxDQUFDLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUUsQ0FBYztJQUNqQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMvQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxN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LE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDO1FBQ2pELEdBQUcsQ0FBQyxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBR2xCLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQzlELEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDO1FBQ2pELEdBQUcsQ0FBQyxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBR2xCLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQzlELEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDO1FBQ2pELEdBQUcsQ0FBQyxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBR2xCLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQzlELEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDO1FBQ2pELEdBQUcsQ0FBQyxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBR2xCLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQzlELEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEdB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LENBQUEsQ0FBQyxDQUFDLENBQUM7UUFDalcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFHbkIsR0FBRyxHQUFHLElBQUksV0FBVyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDOUQsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRSxPQUFPLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDO1FBQzFELEdBQUcsQ0FBQyxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBR2xCLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQzlELEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUUsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUM7UUFDckQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNULENBQUMsRUF2U00sYUFBYSxLQUFiLGFBQWEsUUF1U25CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIE1ha2VzIHRoZSBhcnJheSBhIGhhdmUgdW5pcXVlIGVsZW1lbnRzLlxyXG4gKiBXQVJOSU5HOiBXSUxMIEFMVEVSIFRIRSBBUlJBWSBHSVZFTlxyXG4gKiBAcGFyYW0gYVxyXG4gKi9cclxuZnVuY3Rpb24gYXJyYXlVbmlxdWUoYSA6IEFycmF5PGFueT4pIHtcclxuICAgIGZvcih2YXIgaT0wOyBpPGEubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICBmb3IodmFyIGo9aSsxOyBqPGEubGVuZ3RoOyArK2opIHtcclxuICAgICAgICAgICAgaWYoYVtpXSA9PT0gYVtqXSlcclxuICAgICAgICAgICAgICAgIGEuc3BsaWNlKGotLSwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGE7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFycmF5VW5pcXVlTmV3QXJyYXkoYSA6IEFycmF5PGFueT4pIHtcclxuICAgIGEgPSBhLnNsaWNlKCk7XHJcbiAgICBhcnJheVVuaXF1ZShhKTtcclxuICAgIHJldHVybiBhO1xyXG59XHJcblxyXG5mdW5jdGlvbiBhcnJheVNodWZmbGUgKGEgOiBBcnJheTxhbnk+KSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgcG9zID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKGEubGVuZ3RoIC0gaSkpICsgaTtcclxuICAgICAgICBsZXQgdGVtcCA9IGFbaV07XHJcbiAgICAgICAgYVtpXSA9IGFbcG9zXTtcclxuICAgICAgICBhW3Bvc10gPSB0ZW1wO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBhcnJheVNodWZmbGVOZXdBcnJheSAoYSA6IEFycmF5PGFueT4pIHtcclxuICAgIGxldCBuQSA9IGEuc2xpY2UoKTtcclxuICAgIGFycmF5U2h1ZmZsZShuQSk7XHJcbiAgICByZXR1cm4gbkE7XHJcbn0iLCJpbnRlcmZhY2UgU3RvcmVkVmFyaWFibGVPcHRpb25zPFQ+IHtcclxuICAgIGlkIDogc3RyaW5nO1xyXG4gICAgdmFsdWUgOiBUO1xyXG59XHJcblxyXG4vKipcclxuICogU3RvcmVkVmFyaWFibGVzIGFyZSB0aGUgb25seSB0aGluZyB0aGF0IGdldHMgc3RvcmVkIG9uIGEgU2F2ZS9SZWxvYWQuXHJcbiAqIEl0J3Mgb25seSBhbGxvd2VkIHRvIGhhdmUgU3RvcmVkVmFyaWFibGVzIHRoYXQgYXJlIGVpdGhlciBwcmltaXRpdmUgb3Igc2ltcGxlIG9iamVjdHMuXHJcbiAqL1xyXG5jbGFzcyBTdG9yZWRWYXJpYWJsZTxUPiB7XHJcbiAgICBwdWJsaWMgaWQgOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgdmFsdWUgOiBUO1xyXG4gICAgcHVibGljIGRlZlZhbHVlIDogVDtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKG9wdGlvbnMgOiBTdG9yZWRWYXJpYWJsZU9wdGlvbnM8VD4pIHtcclxuICAgICAgICB0aGlzLmlkID0gb3B0aW9ucy5pZDtcclxuICAgICAgICB0aGlzLnZhbHVlID0gb3B0aW9ucy52YWx1ZTtcclxuICAgICAgICB0aGlzLmRlZlZhbHVlID0gdGhpcy52YWx1ZTtcclxuXHJcbiAgICAgICAgU3RvcmVkVmFyaWFibGUucmVnaXN0ZXJWYXJpYWJsZSh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVzZXQgKCkge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmRlZlZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cGRhdGVGcm9tT2JqZWN0IChvYmogOiBUKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IG9iajtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZXhwb3J0QXNPYmplY3QgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIHN0b3JlZFZhcmlhYmxlcyA6IHtbaWQgOiBzdHJpbmddIDogU3RvcmVkVmFyaWFibGU8YW55Pn0gPSB7fTtcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHJlZ2lzdGVyVmFyaWFibGUgKHZhcmlhYmxlIDogU3RvcmVkVmFyaWFibGU8YW55Pikge1xyXG4gICAgICAgIGlmIChTdG9yZWRWYXJpYWJsZS5zdG9yZWRWYXJpYWJsZXNbdmFyaWFibGUuaWRdID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBTdG9yZWRWYXJpYWJsZS5zdG9yZWRWYXJpYWJsZXNbdmFyaWFibGUuaWRdID0gdmFyaWFibGU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiW1N0b3JlZFZhcmlhYmxlXSBcIiArIHZhcmlhYmxlLmlkICsgXCIgYWxyZWFkeSBkZWZpbmVkLiBJZ25vcmluZzpcIiwgdmFyaWFibGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFZhcmlhYmxlIChpZCA6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBTdG9yZWRWYXJpYWJsZS5zdG9yZWRWYXJpYWJsZXNbaWRdO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0VmFyaWFibGVzICgpIDogQXJyYXk8U3RvcmVkVmFyaWFibGU8YW55Pj57XHJcbiAgICAgICAgbGV0IGxpc3QgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gU3RvcmVkVmFyaWFibGUuc3RvcmVkVmFyaWFibGVzKSB7XHJcbiAgICAgICAgICAgIGxpc3QucHVzaChTdG9yZWRWYXJpYWJsZS5zdG9yZWRWYXJpYWJsZXNba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBsaXN0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZXhwb3J0QXNPYmplY3QgKCkgOiB7W2lkIDogc3RyaW5nXSA6IGFueX0ge1xyXG4gICAgICAgIGxldCBsaXN0ID0ge307XHJcbiAgICAgICAgZm9yIChsZXQga2V5IGluIFN0b3JlZFZhcmlhYmxlLnN0b3JlZFZhcmlhYmxlcykge1xyXG4gICAgICAgICAgICBsaXN0W2tleV0gPSBTdG9yZWRWYXJpYWJsZS5zdG9yZWRWYXJpYWJsZXNba2V5XS52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxpc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyB1cGRhdGVGcm9tT2JqZWN0IChvYmogOiB7W2lkIDogc3RyaW5nXSA6IGFueX0pIHtcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gU3RvcmVkVmFyaWFibGUuc3RvcmVkVmFyaWFibGVzKSB7XHJcbiAgICAgICAgICAgIGlmIChvYmpba2V5XSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIFN0b3JlZFZhcmlhYmxlLnN0b3JlZFZhcmlhYmxlc1trZXldLnVwZGF0ZUZyb21PYmplY3Qob2JqW2tleV0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgU3RvcmVkVmFyaWFibGUuc3RvcmVkVmFyaWFibGVzW2tleV0ucmVzZXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9GdW5jdGlvbnMudHNcIiAvPlxyXG5pbnRlcmZhY2UgUnVsZWJvb2tPcHRpb25zPFQ+IHtcclxuICAgIG5vdW4/IDogVDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFdpdGhvdXQgdGhlIFJ1bm5lciwgUnVsZWJvb2tzIHdlcmUgbm90IFwidGhyZWFkLXNhZmVcIiwgc28gd2UgbmVlZCB0aGUgcnVubmVyLlxyXG4gKi9cclxuY2xhc3MgUnVsZWJvb2tSdW5uZXI8VD4ge1xyXG4gICAgcHVibGljIG5vdW4gOiBUO1xyXG4gICAgcHJpdmF0ZSBydWxlc1RvRXhlY3V0ZSA6IEFycmF5PFJ1bGU+ID0gW107XHJcbiAgICBwdWJsaWMgcnVsZWJvb2sgOiBSdWxlYm9vazxUPjtcclxuICAgIHB1YmxpYyBydWxlIDogUnVsZTtcclxuICAgIHByaXZhdGUgcnVsZVJ1bm5lciA6IG51bWJlciA9IC0xO1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAocnVsZWJvb2sgOiBSdWxlYm9vazxUPiwgbm91biA6IFQpIHtcclxuICAgICAgICB0aGlzLnJ1bGVib29rID0gcnVsZWJvb2s7XHJcbiAgICAgICAgdGhpcy5ub3VuID0gbm91bjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWRkUnVsZWJvb2tzICguLi5ydWxlYm9va3MgOiBBcnJheTxSdWxlYm9vazxUPj4pIHtcclxuICAgICAgICBydWxlYm9va3MgPSBhcnJheVVuaXF1ZU5ld0FycmF5KHJ1bGVib29rcyk7XHJcbiAgICAgICAgcnVsZWJvb2tzLmZvckVhY2goKHJ1bGVib29rKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkUnVsZXMoLi4ucnVsZWJvb2sucnVsZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZGRSdWxlcyAoLi4ucnVsZXMpIHtcclxuICAgICAgICBpZiAodGhpcy5ydWxlUnVubmVyIDwgMCkge1xyXG4gICAgICAgICAgICB0aGlzLnJ1bGVzVG9FeGVjdXRlLnB1c2goLi4ucnVsZXMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2tpcFJ1bGUgKHJ1bGUgOiBSdWxlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucnVsZVJ1bm5lciA+PSAwKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMucnVsZXNUb0V4ZWN1dGUuaW5kZXhPZihydWxlKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID4gdGhpcy5ydWxlUnVubmVyKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzVG9FeGVjdXRlLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKFwiW1J1bGVib29rXVwiICsgdGhpcy5ydWxlYm9vay5uYW1lICsgXCIsIHNraXBwaW5nIFJ1bGUgXCIgKyBydWxlLm5hbWUgKyBcIiBkdWUgdG8gcmVxdWVzdC5cIik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbUnVsZWJvb2tdXCIgKyB0aGlzLnJ1bGVib29rLm5hbWUgKyBcIjogdW5hbWUgdG8gc2tpcCBSdWxlXCIgKyBydWxlLm5hbWUgKyBcIiBkdWUgdG8gaXQgYmVpbmcgdG9vIGxhdGUgdG8gc3RvcCBpdC5cIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGV4ZWN1dGUgKCkge1xyXG4gICAgICAgIGFycmF5VW5pcXVlKHRoaXMucnVsZXNUb0V4ZWN1dGUpLnNvcnQoZnVuY3Rpb24gKGE6IFJ1bGUsIGI6IFJ1bGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGEuY29tcGFyZVRvKGIpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBmb3IgKHRoaXMucnVsZVJ1bm5lciA9IDA7IHRoaXMucnVsZVJ1bm5lciA8IHRoaXMucnVsZXNUb0V4ZWN1dGUubGVuZ3RoOyB0aGlzLnJ1bGVSdW5uZXIrKykge1xyXG4gICAgICAgICAgICB0aGlzLnJ1bGUgPSB0aGlzLnJ1bGVzVG9FeGVjdXRlW3RoaXMucnVsZVJ1bm5lcl07XHJcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLnJ1bGUuZXhlY3V0ZSh0aGlzKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5jbGFzcyBSdWxlYm9vazxUPiB7XHJcbiAgICBwdWJsaWMgcnVsZXMgOiBBcnJheTxSdWxlPiA9IFtdO1xyXG4gICAgcHVibGljIG5hbWUgOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBpbmRlbnRhbnRpb25TcGFjZXMgPSAyO1xyXG4gICAgcHVibGljIHN0YXRpYyBydWxlYm9va1N0YWNrIDogQXJyYXk8YW55PiA9IFtdO1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0U3RhY2sgKCkge1xyXG4gICAgICAgIGxldCBzdGFjayA9IFtdO1xyXG4gICAgICAgIFJ1bGVib29rLnJ1bGVib29rU3RhY2suZm9yRWFjaCgocmwpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJsIGluc3RhbmNlb2YgT2JqZWN0ICYmIHJsLm5hbWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBzdGFjay5wdXNoKHJsLm5hbWUpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBybCA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgICAgICBzdGFjay5wdXNoKHJsKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChybCBpbnN0YW5jZW9mIE9iamVjdCAmJiBybC5pZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHN0YWNrLnB1c2gocmwuaWQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc3RhY2sucHVzaChcIlVuZGVmaW5lZFwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBzdGFjaztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldEluZGVudGF0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gXCIgXCIucmVwZWF0KFJ1bGVib29rLmluZGVudGFudGlvblNwYWNlcykucmVwZWF0KFJ1bGVib29rLnJ1bGVib29rU3RhY2subGVuZ3RoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGluY3JlYXNlSW5kZW50YXRpb24gKHJ1bGVib29rIDogYW55KSB7XHJcbiAgICAgICAgUnVsZWJvb2sucnVsZWJvb2tTdGFjay5wdXNoKHJ1bGVib29rKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGRlY3JlYXNlSW5kZW50YXRpb24gKCkge1xyXG4gICAgICAgIFJ1bGVib29rLnJ1bGVib29rU3RhY2sucG9wKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBpc1J1bm5pbmcgKHIgOiBSdWxlIHwgUnVsZWJvb2s8YW55Pikge1xyXG4gICAgICAgIHJldHVybiBSdWxlYm9vay5ydWxlYm9va1N0YWNrLmluZGV4T2YocikgIT0gLTE7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzUnVubmluZyAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFJ1bGVib29rLmlzUnVubmluZyh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKG5hbWUgOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlIChvcHRpb25zIDogUnVsZWJvb2tPcHRpb25zPFQ+LCAuLi5ydWxlYm9va3MpIDogUHJvbWlzZTxhbnk+e1xyXG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zID09IHVuZGVmaW5lZCA/IHt9IDogb3B0aW9ucztcclxuXHJcbiAgICAgICAgbGV0IHJ1bm5lciA9IG5ldyBSdWxlYm9va1J1bm5lcjxUPih0aGlzLCBvcHRpb25zLm5vdW4pOyAvLyBkdXBsaWNhdGUgYXJyYXlcclxuICAgICAgICBydW5uZXIuYWRkUnVsZWJvb2tzKHRoaXMsIC4uLnJ1bGVib29rcyk7XHJcblxyXG4gICAgICAgIHZhciBuYW1lcyA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcnVsZWJvb2tzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChydWxlYm9va3NbaV0gPT09IHRoaXMpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBuYW1lcy5wdXNoKHJ1bGVib29rc1tpXS5uYW1lKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnNvbGUuZGVidWcoUnVsZWJvb2suZ2V0SW5kZW50YXRpb24oKSArIFwiW1JVTEVCT09LXSBcIiArIHRoaXMubmFtZSArIChuYW1lcy5sZW5ndGggPiAwID8gKFwiIG1lcmdlZCB3aXRoIFwiICsgbmFtZXMuam9pbihcIiwgXCIpKSA6IFwiXCIpKTtcclxuICAgICAgICBSdWxlYm9vay5pbmNyZWFzZUluZGVudGF0aW9uKHRoaXMpO1xyXG5cclxuICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgcnVubmVyLmV4ZWN1dGUoKTtcclxuXHJcbiAgICAgICAgUnVsZWJvb2suZGVjcmVhc2VJbmRlbnRhdGlvbigpO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNyZWF0ZUFuZEFkZFJ1bGUgKHIgOiBSdWxlT3B0aW9uczxUPikgOiBSdWxlIHtcclxuICAgICAgICBsZXQgcnVsZSA9IG5ldyBSdWxlKHIpO1xyXG4gICAgICAgIHRoaXMuYWRkUnVsZShydWxlKTtcclxuICAgICAgICByZXR1cm4gcnVsZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWRkUnVsZSAociA6IFJ1bGUpIHtcclxuICAgICAgICB0aGlzLnJ1bGVzLnB1c2gocik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNvcnRSdWxlcyAoKSB7XHJcbiAgICAgICAgdGhpcy5ydWxlcy5zb3J0KGZ1bmN0aW9uIChhIDogUnVsZSwgYiA6IFJ1bGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGEuY29tcGFyZVRvKGIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59IiwibW9kdWxlIFNldHRpbmdzIHtcclxuICAgIHZhciBkZWJ1ZyA9IGNvbnNvbGUuZGVidWc7XHJcbiAgICB2YXIgZGVidWdFbXB0eSA9ICgpID0+IHt9O1xyXG5cclxuICAgIGV4cG9ydCB2YXIgaGFyZERlYnVnID0gZmFsc2U7XHJcbiAgICBleHBvcnQgdmFyIHNheVR1cm5UaW1lID0gdHJ1ZTtcclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gc2V0RGVidWcgKGlzRGVidWcgOiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKGlzRGVidWcpIHtcclxuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyA9IGRlYnVnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcgPSBkZWJ1Z0VtcHR5O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gaXNEZWJ1ZyAoKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbnNvbGUuZGVidWcgPT0gZGVidWc7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHNldEhhcmREZWJ1ZyAoaXNIYXJkRGVidWcgOiBib29sZWFuKSB7XHJcbiAgICAgICAgaGFyZERlYnVnID0gaXNIYXJkRGVidWc7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vU2V0dGluZ3Muc2V0RGVidWcoZmFsc2UpO1xyXG4vL1NldHRpbmdzLnNheVR1cm5UaW1lID0gdHJ1ZTtcclxuXHJcbi8qKlxyXG4gKiBGdXR1cmUgbm90ZXMgb24gUGVyZm9ybWFuY2UgSXNzdWVzOlxyXG4gKiAtIEl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBpZiBtb3N0IG9mIHRoZSBjb2RlIGlzIG9wdGltaXplZCBvciBub3QuIENQVXMgYXJlIGZhc3QuXHJcbiAqIC0gSXQgKmRvZXMqIG1hdHRlciBpZiBjb2RlIHRoYXQgaXMgcnVuIGZyZXF1ZW50bHkgaXMgc3ViLW9wdGltaXplZC5cclxuICogLS0tIEJpZ2dlc3QgcGxhY2UgdG8gbG9vayBhdCBpcyBhdCBFdmVyeSBUdXJuIFJ1bGVzLCBwYXJ0aWN1bGFybHkgQUk6IHRoZXNlIHdpbGwgcnVuIGZvciBldmVyeSBhY3Rpb24gdGhlIHBsYXllciBkb2VzIGZvciBldmVyeSBzaW5nbGUgTlBDIGluIHRoZSBnYW1lLlxyXG4gKiAtIFRoaXMgYmVpbmcgYSB0ZXh0IGdhbWUsIHdlIGhhdmUgdXAgdG8gMTAwbXMgYmVmb3JlIHRoZSBwbGF5ZXIgXCJmZWVsc1wiIHRoZSBnYW1lIGlzbid0IGluc3RhbnRhbmVvdXMuXHJcbiAqIC0gQmV5b25kIHRoYXQsIHdlIGhhdmUgdW50aWwgYWJvdXQgMjUwbXMgYmVmb3JlIHRoZSBwbGF5ZXIgc3RhcnRzIGdldHRpbmcgbGVnaXQgcGlzc2VkLiBUaGVzZSBhcmUgYm90aCBwZXIgdHVybi5cclxuICpcclxuICogQmVpbmcgdGhhdCBhbGwgb3RoZXIgY29kZSB3aWxsIHJ1biBvbmNlIGFuZCB0aGF0J3MgdGhlIGVuZCBvZiBpdCwgdGhlIG9ubHkgcG9ydGlvbiBvZiB0aGUgZ2FtZSB0aGF0IENBTiBicmluZyBwZXJmb3JtYW5jZSBpc3N1ZXMgd2lsbCBiZSB0aGUgQUkuXHJcbiAqIEVhY2ggTlBDIGFkZGVkIGluY3JlYXNlcyB0aW1lIHNwZW50IGJ5IEFJIGJ5IGFyb3VuZCAoKG4gKyAxKS9uKS4gRWFjaCBydWxlIGFkZGVkIGRvZXMgdGhlIHNhbWUuXHJcbiAqIFNpbmNlIE5QQ3Mgd2lsbCBiZSBhZGRlZCBhbmQgbW9yZSBhbmQgbW9yZSBydWxlcyB3aWxsIGtlZXAgZ2V0dGluZyBhZGRlZCwgQVQgU09NRSBQT0lOVCB3ZSdsbCBoYXZlIHByb2JsZW1zLlxyXG4gKiBTdHJlc3MgdGVzdGluZyB3aXRoIFBpY2sgU2hpbmllcyBhbmQgTlBDcyBzdWdnZXN0cyB0aGF0IHdlIGNhbiBoYXZlIGFib3V0IDIwMCBOUENzIGFuZCBhYm91dCA4MDAgcnVsZXMgYmVmb3JlIHByb2JsZW1zLCBidXQgdGhlIHRlc3RpbmcgaXMgbm90IGlkZWFsOlxyXG4gKiAtIFBpY2sgU2hpbmllcyBpbmNyZWFzZXMgaW4gY29tcGxleGl0eSB3aXRoIHRoZSBhbW91bnQgb2YgdGhpbmdzIGluIGEgcm9vbS4gU28gdGhlIHRlc3QgbWFkZSB0aGlzIHJ1bGUgcGFydGljdWxhcmx5IG5hc3R5LCBzaW5jZSBhbGwgTlBDcyB3ZXJlIGdvaW5nIGFuZCBjb21pbmcgZnJvbSB0aGUgc2FtZSByb29tcy5cclxuICogLSBJbiBhIHJlYWwgZ2FtZSBzaXR1YXRpb24sIGl0J3MgZXhwZWN0ZWQgZm9yIHJvb21zIHRvIHJhcmVseSBoYXZlIG1vcmUgdGhhbiA1IHRoaW5ncy9wZW9wbGUgaW4gdGhlbSBhbmQgZm9yIE5QQ3MgdG8gYmUgZGlzcGVyc2UuXHJcbiAqIFdlIHNob3VsZCBuZXZlciByZWFjaCBvdXIgMjUwbXMgbGltaXQgb24gcG93ZXJmdWwgQ1BVcy5cclxuICpcclxuICogUmVnYXJkbGVzcywgaWYgcGVyZm9ybWFuY2UgZXZlciBiZWNvbWVzIGFuIGlzc3VlOlxyXG4gKiAtIE9wdGltaXplIEFJIHRyZWVzIHNvIHRoYXQgQ29uZGl0aW9ucyBkb24ndCBoYXZlIHRvIGJlIGNoZWNrZWQuIENvb2sgZWFjaCBOUEMncyBSdWxlYm9vayBzbyB0aGF0IGFsbCBydWxlcyB0aGF0IGFyZW4ndCBoaXMgYXJlbid0IGV2ZXIgbG9va2VkIGF0LiBUaGlzIGlzIHRoZSBzaW1wbGVzdCwgbm8tbG9zcyBpbXByb3ZlbWVudCwgYnV0IG9ubHkgb2ZmZXJzIGltcHJvdmVtZW50cyBpZiB0aGUgTlBDICogUlVMRVMgbnVtYmVyIGlzIGJpZy5cclxuICogLSBJZiB0aGUgbnVtYmVyIG9mIFJ1bGVzICogTlBDcyBpcyBub3QgdGhlIGlzc3VlLCB0aGVuIGZpZ3VyZSBvdXQgd2hpY2ggc3BlY2lmaWMgcnVsZXMgYXJlIGJlaW5nIGEgcHJvYmxlbSBhbmQgb3B0aW1pemUgdGhlbSBzcGVjaWZpY2FsbHkuIEluIGdlbmVyYWwsIGV4cGVuc2l2ZSBydWxlcyBzaG91bGQgYWxzbyBiZSByYXJlLiBUaGlzIHNvbHV0aW9uIG1pZ2h0IG5vdCBhbHdheXMgYmUgYXZhaWxhYmxlIGFuZCBtaWdodCBub3QgZ2V0IGFsbCB0aGF0IG11Y2ggcmVzdWx0LlxyXG4gKiAtIFNsb3cgZG93biBBSSBmb3IgTlBDcyBhd2F5IGZyb20gdGhlIHBsYXllci4gUG9zc2liaWxpdGllczogaWYgYW4gTlBDIGlzIG1vcmUgdGhhbiAyMCByb29tcyBhd2F5LCBpdCBvbmx5IGdldHMgb25lIGFjdGlvbiBldmVyeSA0IHR1cm5zLCB0aGVuIDMsIHRoZW4gMi4uLiB1bnRpbCBpdCdzIGNsb3NlIGVub3VnaCB0byBhY3QgZXZlcnkgdHVybi5cclxuICogLSBTaW1wbHkgc2tpcCBBSSBmb3IgTlBDcyBpbiBkaWZmZXJlbnQgcmVnaW9ucy4gaS5lLjogaWYgdGhlIHBsYXllciBpcyBpbnNpZGUgdGhlIE9iZWxpc2ssIGRvbid0IGV2ZW4gYm90aGVyIHdpdGggTlBDcyBpbiB0aGUgZm9yZXN0LlxyXG4gKlxyXG4gKlxyXG4gKiBXZSBhbHNvIGRvIGEgbG90IG9mIGRlYnVnZ2luZy5cclxuICogV2hpbGUgZGlzYWJsaW5nIGNvbnNvbGUuZGVidWcgb2ZmZXJzIGEgc3Vic3RhbnRpYWwgcGVyZm9ybWFuY2UgZ2FpbiAoYXJvdW5kIDUwJSkgYW5kIGlzIGF2YWlsYWJsZSBhcyBhbiBPcHRpb24sXHJcbiAqIGVudGlyZWx5IGNvbW1lbnRpbmcgb3V0IGNvbnNvbGUuZGVidWcgY2FsbHMgZ2l2ZXMgdXMgYW4gYWRkaXRpb25hbCAyMCUgZ2FpbiBvbiB0b3Agb2YgdGhhdCwgZm9yIGEgdG90YWwgb2YgYXJvdW5kIDYwJSBwZXJmb3JtYW5jZSBnYWluLlxyXG4gKiBDb25zaWRlcmluZyBkZWJ1Z2dpbmcgaXMgbm90IHJlYWxseSB1c2VmdWwgZm9yIHBsYXllcnMsIHRoaXMgc2hvdWxkIGFsd2F5cyBiZSBrZXB0IGluIG1pbmQuXHJcbiAqLyIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9TZXR0aW5ncy50c1wiIC8+XHJcbmludGVyZmFjZSBSdWxlT3B0aW9uczxUPiB7XHJcbiAgICBuYW1lIDogc3RyaW5nO1xyXG4gICAgZmlyc3RQcmlvcml0eT8gOiBudW1iZXI7XHJcbiAgICBwcmlvcml0eT8gOiBudW1iZXI7XHJcbiAgICBjb2RlIDogKHJ1bm5lcj8gOiBSdWxlYm9va1J1bm5lcjxUPikgPT4gKFByb21pc2U8YW55PiB8IGFueSk7XHJcbiAgICBjb25kaXRpb25zPyA6IChydW5uZXI/IDogUnVsZWJvb2tSdW5uZXI8VD4pID0+IChib29sZWFuKTtcclxufVxyXG5cclxuY2xhc3MgUnVsZSB7XHJcbiAgICBwcml2YXRlIF9wcmlvcml0eSA6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgZmlyc3RQcmlvcml0eSA6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgbmFtZSA6IHN0cmluZztcclxuXHJcbiAgICBwcml2YXRlIGNvZGUgOiBGdW5jdGlvbjtcclxuICAgIHByaXZhdGUgY3JlYXRlZFdoZXJlIDogRXJyb3I7XHJcbiAgICBwcml2YXRlIGNvbmRpdGlvbnMgOiAocnVsZWJvb2s/IDogUnVsZWJvb2tSdW5uZXI8YW55PikgPT4gKGJvb2xlYW4pO1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAob3B0aW9ucyA6IFJ1bGVPcHRpb25zPGFueT4pIHtcclxuICAgICAgICB0aGlzLnByaW9yaXR5ID0gb3B0aW9ucy5wcmlvcml0eSAhPSB1bmRlZmluZWQgPyBvcHRpb25zLnByaW9yaXR5IDogUnVsZS5QUklPUklUWV9NRURJVU07XHJcbiAgICAgICAgdGhpcy5maXJzdFByaW9yaXR5ID0gb3B0aW9ucy5maXJzdFByaW9yaXR5ICE9IHVuZGVmaW5lZCA/IG9wdGlvbnMuZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfTUVESVVNO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IG9wdGlvbnMubmFtZTtcclxuICAgICAgICB0aGlzLmNvZGUgPSBvcHRpb25zLmNvZGU7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVkV2hlcmUgPSAobmV3IEVycm9yKCkpO1xyXG5cclxuICAgICAgICB0aGlzLmNvbmRpdGlvbnMgPSBvcHRpb25zLmNvbmRpdGlvbnMgIT0gdW5kZWZpbmVkID8gb3B0aW9ucy5jb25kaXRpb25zIDogKCkgPT4geyByZXR1cm4gdHJ1ZTsgfTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZSAocnVsZWJvb2s/IDogUnVsZWJvb2tSdW5uZXI8YW55PikgOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5jb25kaXRpb25zKHJ1bGVib29rKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnNvbGUuZGVidWcoUnVsZWJvb2suZ2V0SW5kZW50YXRpb24oKSArIFwiW1JVTEVdIFwiICsgdGhpcy5uYW1lKTtcclxuICAgICAgICBTZXR0aW5ncy5oYXJkRGVidWcgJiYgY29uc29sZS5kZWJ1Zyh0aGlzLm5hbWUsIHRoaXMuY3JlYXRlZFdoZXJlKTtcclxuICAgICAgICBSdWxlYm9vay5pbmNyZWFzZUluZGVudGF0aW9uKHRoaXMpO1xyXG5cclxuICAgICAgICBydWxlYm9vay5ydWxlID0gdGhpcztcclxuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5jb2RlKHJ1bGVib29rKTtcclxuICAgICAgICAvLyBXYXMgdGhlIGZ1bmN0aW9uIGFzeW5jP1xyXG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IHJlc3VsdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXN1bHQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoUnVsZWJvb2suZ2V0SW5kZW50YXRpb24oKSArIFwiUmVzdWx0OlwiLCByZXN1bHQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgUnVsZWJvb2suZGVjcmVhc2VJbmRlbnRhdGlvbigpO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBwcmlvcml0eSgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wcmlvcml0eTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgcHJpb3JpdHkodmFsdWU6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuX3ByaW9yaXR5ID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNvbXBhcmVUbyAoYiA6IFJ1bGUpIHtcclxuICAgICAgICB2YXIgYSA9IHRoaXM7XHJcbiAgICAgICAgLy8gSGlnaGVyIHByaW9yaXR5IGdvZXMgZmlyc3QgYXMgdGhpcyBpcyBhIHJvbGxpbmcgYXJyYXlcclxuICAgICAgICBpZiAoYi5maXJzdFByaW9yaXR5IDwgYS5maXJzdFByaW9yaXR5KSByZXR1cm4gLTE7XHJcbiAgICAgICAgaWYgKGEuZmlyc3RQcmlvcml0eSA8IGIuZmlyc3RQcmlvcml0eSkgcmV0dXJuIDE7XHJcbiAgICAgICAgaWYgKGIucHJpb3JpdHkgPCBhLnByaW9yaXR5KSByZXR1cm4gLTE7XHJcbiAgICAgICAgaWYgKGEucHJpb3JpdHkgPCBiLnByaW9yaXR5KSByZXR1cm4gMTtcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIFBSSU9SSVRZX0hJR0hFU1QgOiBudW1iZXIgPSAyMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgUFJJT1JJVFlfSElHSCA6IG51bWJlciA9IDE1O1xyXG4gICAgcHVibGljIHN0YXRpYyBQUklPUklUWV9NRURJVU0gOiBudW1iZXIgPSAxMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgUFJJT1JJVFlfTE9XIDogbnVtYmVyID0gNTtcclxuICAgIHB1YmxpYyBzdGF0aWMgUFJJT1JJVFlfTE9XRVNUIDogbnVtYmVyID0gMDtcclxufVxyXG5cclxuLy8gdmFyIGdvYmxpbkp1bXBpbmdSdWxlID0gbmV3IFJ1bGUoe1xyXG4vLyAgICAgbmFtZSA6IFwiR29ibGluIEp1bXBpbmcgUnVsZVwiLFxyXG4vLyAgICAgY29kZSA6IGFzeW5jIChydWxlIDogUnVsZSwgcnVsZVJlc29sdmVyIDogRnVuY3Rpb24pID0+IHtcclxuLy8gICAgICAgICBjb25zb2xlLmRlYnVnKFwid2VlZVwiKTtcclxuLy8gICAgIH1cclxuLy8gfSk7XHJcbi8vXHJcbi8vIGdvYmxpbkp1bXBpbmdSdWxlLmV4ZWN1dGUoKTtcclxuXHJcbi8qKlxyXG4gdmFyIGdvYmxpbkp1bXBpbmdSdWxlID0gbmV3IFJ1bGUoe25hbWUgOiBcIkdvYmxpbiBKdW1waW5nIFJ1bGVcIiwgY29kZSA6IChmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIC8vIHRoaXMgaXMgbm93IHRoZSBSdWxlIGFuZCBoYXMgYWNjZXNzIHRvIHRoaXMuY3VycmVudFJ1bGVib29rXHJcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gbmVlZCBmb3Igb3duIG1vZHVsZSwgaXQncyBva2F5IHRvIHVzZSBhIHNpbXBsZSBmdW5jdGlvblxyXG4gICAgICAgIC8vIElGIFlPVVIgRlVOQ1RJT04gU0hPVUxEIE5PVCBDT01QTEVURSBBVVRPTUFUSUNBTExZLCBJVCBORUVEUyBUTyBSRVRVUk4gRkFMU0VcclxuICAgICAgICAvLyBGVU5DVElPTlMgVEhBVCBSRVRVUk4gQU5ZVEhJTkcgRUxTRSBXSUxMIEFVVE8gQ09NUExFVEUgQVQgVEhFIEVORCBPRiBUSEVJUiBDT0RFXHJcblxyXG4gICAgICAgIC8vIElmIHlvdXIgcnVsZSBkb2VzIG5vdCBhdXRvLWNvbXBsZXRlLCB0aGVuIGl0IG11c3QgY29tcGxldGUgbWFudWFsbHksIG9yIHRoZSBnYW1lIHdpbGwgU1RBTEwuXHJcblxyXG4gICAgICAgIC8vIElmIGEgcnVsZSBtdXN0IHJldHVybiBlaXRoZXIgXCJ0cnVlXCIgb3IgXCJmYWxzZVwiIHRvIHRoZSBydWxlYm9vaywgeW91IG5lZWQgdG8gc2V0IHRoZSBydWxlJ3MgcmVzdWx0IHRoYXQgd2F5OlxyXG4gICAgICAgIC8vIHRoaXMucmVzdWx0ID0gdHJ1ZSAob3IgZmFsc2UpXHJcbiAgICB9O1xyXG4gfSkoKX0pO1xyXG4gKi8iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi9DbGFzc2VzL1J1bGVib29rLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vQ2xhc3Nlcy9SdWxlLnRzXCIgLz5cclxuXHJcbm1vZHVsZSBUdXJuU2VxdWVuY2Uge1xyXG4gICAgZXhwb3J0IHZhciBydWxlYm9vayA9IG5ldyBSdWxlYm9vazxBY3Rpb24+KFwiVHVybiBTZXF1ZW5jZVwiKTtcclxuICAgIGV4cG9ydCB2YXIgcGxheWVyQWN0aW9ucyA9IFtdO1xyXG5cclxuICAgIGV4cG9ydCBsZXQgbGFzdFR1cm5UaW1lIDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZSAoYWN0aW9uPyA6IEFjdGlvbikge1xyXG4gICAgICAgIC8vIE9ubHkgb25lIGFjdGlvbiBhdCBhIHRpbWVcclxuICAgICAgICBpZiAocGxheWVyQWN0aW9ucy5wdXNoKGFjdGlvbikgPT0gMSkge1xyXG4gICAgICAgICAgICBsZXQgdDAgPSBwZXJmb3JtYW5jZS5ub3coKTtcclxuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhSdWxlYm9vay5nZXRJbmRlbnRhdGlvbigpICsgXCIgICBQbGF5ZXIgQWN0aW9uOiBcIiArIChhY3Rpb24gPyBhY3Rpb24uZ2V0Q29tbWFuZFRleHQoKSA6IFwibm9uZVwiKSk7XHJcbiAgICAgICAgICAgIGF3YWl0IHJ1bGVib29rLmV4ZWN1dGUoe1xyXG4gICAgICAgICAgICAgICAgbm91bjogYWN0aW9uXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgcGxheWVyQWN0aW9ucyA9IFtdO1xyXG4gICAgICAgICAgICBsZXQgdDEgPSBwZXJmb3JtYW5jZS5ub3coKTtcclxuICAgICAgICAgICAgbGFzdFR1cm5UaW1lID0gdDEgLSB0MDtcclxuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhcIlRvdGFsOiBcIiArICh0MSAtIHQwKSArIFwiIG1pbGxpc2Vjb25kcy5cIik7XHJcbiAgICAgICAgICAgIGlmIChTZXR0aW5ncy5zYXlUdXJuVGltZSkge1xyXG4gICAgICAgICAgICAgICAgRWxlbWVudHMuQ3VycmVudFR1cm5IYW5kbGVyLnByaW50QXNDb250ZW50KG5ldyBTYXkobmV3IFNheUJvbGQoXCJUaW1lIHRha2VuIGZvciB0dXJuOiBcIiksICh0MSAtIHQwKSwgXCIgbWlsbGlzZWNvbmRzLlwiKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGlzIHRoZSBQcmVwYXJlIEVsZW1lbnRzIGZvciB0aGUgdHVybiBydWxlLlxyXG4gICAgICogQHR5cGUge1J1bGV9XHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCB2YXIgUHJlcGFyZUVsZW1lbnRzUnVsZSA9IG5ldyBSdWxlKHtcclxuICAgICAgICBmaXJzdFByaW9yaXR5OiBSdWxlLlBSSU9SSVRZX0hJR0hFU1QsIC8vIFRoaXMgd2lsbCBiZSBhYm91dCB0aGUgZmlyc3QgUnVsZSB0byBiZSBleGVjdXRlZFxyXG4gICAgICAgIHByaW9yaXR5OiBSdWxlLlBSSU9SSVRZX01FRElVTSwgLy8gVGhpcyBuZWVkcyB0byBiZSBkb25lIGJlZm9yZSB0aGUgbWFqb3JpdHkgb2YgdGhlIHJ1bGVzLCBidXQgd2UgZG9uJ3Qgd2FudCBpdCB0byBiZSB0aGUgdmVyeSBmaXJzdCBubyBtYXR0ZXIgd2hhdFxyXG4gICAgICAgIG5hbWU6IFwiQmVnaW4gVHVybiAoRWxlbWVudHMgU2lkZSlcIixcclxuICAgICAgICBjb2RlOiBmdW5jdGlvbiAocnVubmVyIDogUnVsZWJvb2tSdW5uZXI8QWN0aW9uPikge1xyXG4gICAgICAgICAgICBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIuc3RhcnRUdXJuKHJ1bm5lci5ub3VuKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIFR1cm5TZXF1ZW5jZS5ydWxlYm9vay5hZGRSdWxlKFByZXBhcmVFbGVtZW50c1J1bGUpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBpcyB0aGUgRG8gUGxheWVyIEFjdGlvbiBSdWxlLlxyXG4gICAgICogQHR5cGUge1J1bGV9XHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBsZXQgUGxheWVyQWN0aW9uUnVsZSA9IG5ldyBSdWxlKHtcclxuICAgICAgICBmaXJzdFByaW9yaXR5OiBSdWxlLlBSSU9SSVRZX0hJR0gsXHJcbiAgICAgICAgcHJpb3JpdHk6IFJ1bGUuUFJJT1JJVFlfTUVESVVNLFxyXG4gICAgICAgIG5hbWU6IFwiRG8gUGxheWVyIEFjdGlvblwiLFxyXG4gICAgICAgIGNvZGU6IGFzeW5jIChydWxlYm9vayA6IFJ1bGVib29rUnVubmVyPEFjdGlvbj4pID0+IHtcclxuICAgICAgICAgICAgbGV0IHBsYXllckFjdGlvbiA9IDxBY3Rpb24+IHJ1bGVib29rLm5vdW47XHJcbiAgICAgICAgICAgIGlmIChwbGF5ZXJBY3Rpb24gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcHJvbWlzZSA9IHBsYXllckFjdGlvbi5leGVjdXRlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgYXdhaXQgcHJvbWlzZTtcclxuXHJcbiAgICAgICAgICAgICAgICBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIucHJpbnRBc0NvbnRlbnQocGxheWVyQWN0aW9uLnNheSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHBsYXllckFjdGlvbi5yZXF1aXJlc1R1cm4pIHtcclxuICAgICAgICAgICAgICAgICAgICBXb3JsZFN0YXRlLmluY3JlbWVudFBsYXllclR1cm4oKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcnVsZWJvb2suYWRkUnVsZShQbGF5ZXJBY3Rpb25SdWxlKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgaXMgdGhlIFJ1biBFdmVyeSBUdXJuIFJ1bGVzLlxyXG4gICAgICogQHR5cGUge1J1bGV9XHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCB2YXIgUnVuRXZlcnlUdXJuUnVsZXNSdWxlID0gbmV3IFJ1bGUoe1xyXG4gICAgICAgIGZpcnN0UHJpb3JpdHk6IFJ1bGUuUFJJT1JJVFlfTUVESVVNLFxyXG4gICAgICAgIHByaW9yaXR5OiBSdWxlLlBSSU9SSVRZX01FRElVTSxcclxuICAgICAgICBuYW1lOiBcIlJ1biBFdmVyeSBUdXJuIFJ1bGVzXCIsXHJcbiAgICAgICAgY29kZTogYXN5bmMgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB3aGlsZSAoV29ybGRTdGF0ZS5pc1R1cm5XYWl0aW5nKCkpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IEV2ZXJ5VHVybi5FdmVyeVR1cm4uZXhlY3V0ZSh7fSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJ1bGVib29rLmFkZFJ1bGUoUnVuRXZlcnlUdXJuUnVsZXNSdWxlKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgaXMgdGhlIEluZm9ybSBFbGVtZW50cyB0aGUgdHVybiBoYXMgZW5kZWQgcnVsZS5cclxuICAgICAqIEB0eXBlIHtSdWxlfVxyXG4gICAgICovXHJcbiAgICBleHBvcnQgdmFyIFJlbW92ZVR1cm5Gcm9tRWxlbWVudHNSdWxlID0gbmV3IFJ1bGUoe1xyXG4gICAgICAgIGZpcnN0UHJpb3JpdHk6IFJ1bGUuUFJJT1JJVFlfTE9XRVNULCAvLyBUaGlzIHdpbGwgYmUgYWJvdXQgdGhlIGxhc3QgcnVsZSB0byBiZSBleGVjdXRlZFxyXG4gICAgICAgIHByaW9yaXR5OiBSdWxlLlBSSU9SSVRZX01FRElVTSwgLy8gVGhpcyBuZWVkcyB0byBiZSBkb25lIGFmdGVyIHRoZSBtYWpvcml0eSBvZiB0aGUgcnVsZXMsIGJ1dCB3ZSBkb24ndCBjYXJlIGlmIGl0J3MgdGhlIHZlcnkgbGFzdCBvciBub3RcclxuICAgICAgICBuYW1lOiBcIkVuZCBUdXJuIChFbGVtZW50cy9Db250cm9scyBTaWRlKVwiLFxyXG4gICAgICAgIGNvZGU6IGFzeW5jIGZ1bmN0aW9uIChydWxlYm9vayA6IFJ1bGVib29rUnVubmVyPEFjdGlvbj4pIHtcclxuICAgICAgICAgICAgRWxlbWVudHMuQ3VycmVudFR1cm5IYW5kbGVyLmVuZFR1cm4oKTtcclxuXHJcbiAgICAgICAgICAgIENvbnRyb2xzLktleUhhbmRsZXIucmVzZXQoKTtcclxuXHJcbiAgICAgICAgICAgIGF3YWl0IEVsZW1lbnRzLkh5cGVybGlua0hhbmRsZXIuaHlwZXJsaW5rQ29tbW9uQWN0aW9ucygpO1xyXG4gICAgICAgICAgICBhd2FpdCBFbGVtZW50cy5Sb29tSGFuZGxlci51cGRhdGVSb29tKCk7XHJcbiAgICAgICAgICAgIGF3YWl0IEVsZW1lbnRzLlJlbWVtYmVyZWRIYW5kbGVyLnVwZGF0ZU1hcCgpO1xyXG5cclxuICAgICAgICAgICAgbGV0IHBsYXllckFjdGlvbiA9IDxBY3Rpb24+IHJ1bGVib29rLm5vdW47XHJcbiAgICAgICAgICAgIGlmIChwbGF5ZXJBY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IEVsZW1lbnRzLkh5cGVybGlua0hhbmRsZXIuaHlwZXJsaW5rT2JqZWN0KHBsYXllckFjdGlvbi5nZXROb3VuKDApKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IEVsZW1lbnRzLkh5cGVybGlua0hhbmRsZXIuaHlwZXJsaW5rT2JqZWN0KCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGF3YWl0IEVsZW1lbnRzLkludmVudG9yeUhhbmRsZXIudXBkYXRlSW52ZW50b3J5KCk7XHJcbiAgICAgICAgICAgIGF3YWl0IEVsZW1lbnRzLkFwcGVhcmFuY2VIYW5kbGVyLnVwZGF0ZUFwcGVhcmFuY2UoKTtcclxuICAgICAgICAgICAgLy9hd2FpdCBFbGVtZW50cy5TdGF0dXNMaW5lSGFuZGxlci51cGRhdGVTdGF0dXNMaW5lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBUdXJuU2VxdWVuY2UucnVsZWJvb2suYWRkUnVsZShSZW1vdmVUdXJuRnJvbUVsZW1lbnRzUnVsZSk7XHJcbn0iLCJtb2R1bGUgVmVyc2lvbiB7XHJcbiAgICBleHBvcnQgbGV0IGN1cnJlbnRWZXJzaW9uID0gWzAsIDEsIDBdO1xyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBjb21wYXJlVmVyc2lvbiAodjEgOiBBcnJheTxudW1iZXI+LCB2MiA6IEFycmF5PG51bWJlcj4pIHtcclxuICAgICAgICBpZiAodjFbMF0gPCB2MlswXSkgcmV0dXJuIC0xO1xyXG4gICAgICAgIGVsc2UgaWYgKHYxWzBdID4gdjJbMF0pIHJldHVybiAxO1xyXG5cclxuICAgICAgICBpZiAodjFbMV0gPCB2MlsxXSkgcmV0dXJuIC0xO1xyXG4gICAgICAgIGVsc2UgaWYgKHYxWzFdID4gdjJbMV0pIHJldHVybiAxO1xyXG5cclxuICAgICAgICBpZiAodjFbMl0gPCB2MlsyXSkgcmV0dXJuIC0xO1xyXG4gICAgICAgIGVsc2UgaWYgKHYxWzJdID4gdjJbMl0pIHJldHVybiAxO1xyXG5cclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZ2V0Q3VycmVudFZlcnNpb24gKCkge1xyXG4gICAgICAgIGxldCB2ID0gY3VycmVudFZlcnNpb247XHJcbiAgICAgICAgcmV0dXJuIHZbMF0gKyBcIi5cIiArIHZbMV0gKyBcIi5cIiArIHZbMl07XHJcbiAgICB9XHJcblxyXG4gICAgZG9jdW1lbnQudGl0bGUgPSBkb2N1bWVudC50aXRsZSArIFwiIFtcIiArIGdldEN1cnJlbnRWZXJzaW9uKCkgKyBcIl0gIFwiO1xyXG59XHJcblxyXG4vLyBUaGlzIGlzIG5vdCByZWFsbHkgbmVjZXNzYXJ5Li4uXHJcbi8vIGNsYXNzIFZlcnNpb25VcGRhdGUge1xyXG4vLyAgICAgcHJpdmF0ZSB2ZXJzaW9uIDogQXJyYXk8bnVtYmVyPjtcclxuLy8gICAgIHByaXZhdGUgZnVuYyA6IEZ1bmN0aW9uO1xyXG4vL1xyXG4vLyAgICAgcHVibGljIGNvbnN0cnVjdG9yICh2ZXJzaW9uIDogQXJyYXk8bnVtYmVyPiwgZnVuYyA6IEZ1bmN0aW9uKSB7XHJcbi8vICAgICAgICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvbjtcclxuLy8gICAgICAgICB0aGlzLmZ1bmMgPSBmdW5jO1xyXG4vLyAgICAgfVxyXG4vL1xyXG4vLyAgICAgcHVibGljIHJ1biAoKSB7XHJcbi8vICAgICAgICAgdGhpcy5mdW5jKCk7XHJcbi8vICAgICB9XHJcbi8vIH1cclxuLy9cclxuLy8gY2xhc3MgVmVyc2lvblVwZGF0ZUxpc3Qge1xyXG4vL1xyXG4vLyB9IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL1ZlcnNpb24udHNcIiAvPlxyXG5tb2R1bGUgQ29udHJvbHMuTWVtb3J5IHtcclxuICAgIGxldCB2ZXJzaW9uU2V0ID0gZmFsc2U7XHJcbiAgICBsZXQgc2V0dGluZ3NWZXJzaW9uIDogQXJyYXk8bnVtYmVyPiA9IFZlcnNpb24uY3VycmVudFZlcnNpb247XHJcbiAgICBsZXQgdmVyc2lvbklkID0gXCJWZXJzaW9uXCI7XHJcbiAgICBsZXQgbWVtb3J5UHJlZml4ID0gXCJvYmVsaXNrX1wiO1xyXG4gICAgbGV0IG1lbW9yaWVzIDoge1tpZCA6IHN0cmluZ10gOiBTdG9yZWRNZW1vcnk8YW55Pn0gPSB7fTtcclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZ2V0VmFsdWUgKGlkIDogc3RyaW5nLCBkZWZWYWx1ZSA6IGFueSkge1xyXG4gICAgICAgIGxldCBzdG9yYWdlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obWVtb3J5UHJlZml4ICsgaWQpO1xyXG4gICAgICAgIHJldHVybiBzdG9yYWdlID09IHVuZGVmaW5lZCA/IGRlZlZhbHVlIDogSlNPTi5wYXJzZShzdG9yYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gc2V0VmFsdWUgKGlkIDogc3RyaW5nLCB2YWx1ZSA6IGFueSkge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKG1lbW9yeVByZWZpeCArIGlkLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xyXG5cclxuICAgICAgICBpZiAoIXZlcnNpb25TZXQpIHtcclxuICAgICAgICAgICAgdmVyc2lvblNldCA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldHRpbmdzVmVyc2lvbiA9IGdldFZhbHVlKHZlcnNpb25JZCwgVmVyc2lvbi5jdXJyZW50VmVyc2lvbik7XHJcbiAgICAgICAgICAgIHNldFZhbHVlKHZlcnNpb25JZCwgVmVyc2lvbi5jdXJyZW50VmVyc2lvbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBUT0RPOiBGaWd1cmUgb3V0IHdoeSBzZXR0aW5nc1ZlcnNpb24gZXhpc3RzLlxyXG4gICAgICAgIGlmIChzZXR0aW5nc1ZlcnNpb24gPT0gdW5kZWZpbmVkKSB7fVxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiByZWdpc3Rlck1lbW9yeSAobWVtIDogU3RvcmVkTWVtb3J5PGFueT4pIHtcclxuICAgICAgICBpZiAobWVtb3JpZXNbbWVtLmdldElkKCldICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiW0NvbnRyb2xzLk1lbW9yeV0gTWVtb3J5IGFscmVhZHkgcmVnaXN0ZXJlZCBvbiBpZCBcIiArIG1lbS5nZXRJZCgpLCBcIk9sZDpcIiwgbWVtb3JpZXNbbWVtLmdldElkKCldLCBcIk5ldzpcIiwgbWVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtZW1vcmllc1ttZW0uZ2V0SWQoKV0gPSBtZW07XHJcbiAgICAgICAgICAgIG1lbS5zZXRWYWx1ZUZyb21Mb2NhbFN0b3JhZ2VEb05vdEludm9rZShnZXRWYWx1ZShtZW0uZ2V0SWQoKSwgbWVtLmdldFZhbHVlKCkpKTtcclxuICAgICAgICAgICAgbGV0IHVwZGF0ZUYgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBDb250cm9scy5NZW1vcnkuc2V0VmFsdWUobWVtLmdldElkKCksIG1lbS5nZXRWYWx1ZSgpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBtZW0uYWRkTGlzdGVuZXIodXBkYXRlRik7XHJcbiAgICAgICAgICAgIHVwZGF0ZUYoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCIvKipcclxuICogVGhpcyBpcyB1c2VkIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSB2YWx1ZXMgdG8vZnJvbSBEYXRhIFN0b3JhZ2UuXHJcbiAqIFRoZSB2YWx1ZSB1c2VkIGluIHRoZSBjb25zdHJ1Y3RvciBpcyBtZXJlbHkgdGhlIERlZmF1bHQgdmFsdWUuIEl0IGlzIHNhZmUgdG8gYXNzdW1lIHRoYXQgdGhlIGNvcnJlY3QgdmFsdWUgd2lsbCBiZSBsb2FkZWQgaW1tZWRpYXRlbHkuXHJcbiAqIFdBUk5JTkc6IElGIFlPVSBDSEFOR0UgVEhFIFRZUEUgT0YgVkFMVUUgQSBNRU1PUlkgU1RPUkVTLCBZT1UgQUxTTyBORUVEIEEgTkVXIElELiBPUiBDSEVDS1MuIE5FVyBJRCBJUyBFQVNJRVIuXHJcbiAqIE9wdGlvbmFsbHk6IHVzZSBsaXN0ZW5lcnMgaWYgeW91IGhhdmUgdG8gY2hhbmdlIHZhbHVlIG9uIHRoZSBmbHkuXHJcbiAqL1xyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vTW9kdWxlcy9NZW1vcnkudHNcIiAvPlxyXG5jbGFzcyBTdG9yZWRNZW1vcnk8VD4ge1xyXG4gICAgcHJpdmF0ZSBpZCA6IHN0cmluZztcclxuICAgIHByaXZhdGUgdmFsdWUgOiBUO1xyXG4gICAgcHJpdmF0ZSBsaXN0ZW5lcnMgOiBBcnJheTxGdW5jdGlvbj4gPSBbXTtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGlkIDogc3RyaW5nLCB2YWx1ZSA6IFQpIHtcclxuICAgICAgICB0aGlzLmlkID0gaWQ7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIENvbnRyb2xzLk1lbW9yeS5yZWdpc3Rlck1lbW9yeSAodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3IgdXNlIGV4Y2x1c2l2ZWx5IGJ5IENvbnRyb2xzLk1lbW9yeS4gRG8gbm90IGludm9rZS4gVXNlIHN0b3JlVmFsdWUgaW5zdGVhZC5cclxuICAgICAqIEBwYXJhbSB7VH0gdmFsdWVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFZhbHVlRnJvbUxvY2FsU3RvcmFnZURvTm90SW52b2tlICh2YWx1ZSA6IFQpIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0b3JlVmFsdWUgKHZhbHVlIDogVCkge1xyXG4gICAgICAgIGlmIChKU09OLnN0cmluZ2lmeSh2YWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMudmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyTGlzdGVuZXJzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRWYWx1ZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldElkICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pZDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWRkTGlzdGVuZXIgKGxpc3RlbmVyIDogRnVuY3Rpb24pIHtcclxuICAgICAgICB0aGlzLmxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdHJpZ2dlckxpc3RlbmVycyAoKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB0aGlzLmxpc3RlbmVyc1tpXSh0aGlzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiV29ybGQvQ2xhc3Nlcy9TYXZlL1N0b3JlZFZhcmlhYmxlLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIldvcmxkL1R1cm5TZXF1ZW5jZS50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJXb3JsZC9DbGFzc2VzL1J1bGUudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiQ29udHJvbHMvQ2xhc3Nlcy9TdG9yZWRNZW1vcnkudHNcIiAvPlxyXG5pbnRlcmZhY2UgU2F2ZWRUaGluZyB7XHJcbiAgICBOYW1lIDogc3RyaW5nO1xyXG4gICAgVW5pcXVlIDogYm9vbGVhbjtcclxuICAgIENoYW5nZXMgOiB7W2lkIDogc3RyaW5nXSA6IGFueX1cclxufVxyXG5cclxuLy8gVGhlIHBsYXllciBpcyBhbHdheXMgYSBodW1hbm9pZFxyXG5pbnRlcmZhY2UgU2F2ZWRQbGF5ZXIge1xyXG4gICAgUGFydHMgOiBBcnJheTxTYXZlZFRoaW5nPjtcclxuICAgIFBsYXllckNoYW5nZXMgOiB7W2lkIDogc3RyaW5nXSA6IGFueX07XHJcbiAgICBOYW1lIDogc3RyaW5nOyAvLyBBcmUgd2UgZ29pbmcgdG8gZG8gbmFtZXM/IEkgTWVhbiBpdCdkIGJlIGZ1blxyXG59XHJcblxyXG5pbnRlcmZhY2UgU2F2ZVN0cnVjdHVyZSB7XHJcbiAgICBWYXJpYWJsZXMgOiB7W2lkIDogc3RyaW5nXSA6IGFueX07XHJcbiAgICBXaWVsZGVkIDogQXJyYXk8U2F2ZWRUaGluZz47XHJcbiAgICBXb3JuIDogQXJyYXk8U2F2ZWRUaGluZz47XHJcbiAgICBDYXJyaWVkIDogQXJyYXk8U2F2ZWRUaGluZz47XHJcbiAgICBQbGF5ZXIgOiBTYXZlZFBsYXllcjtcclxuICAgIFJvdW5kcyA6IG51bWJlcjtcclxuICAgIERhdGUgOiBzdHJpbmc7XHJcbiAgICBVbmlxdWVUaGluZ3MgOiBBcnJheTxTYXZlZFRoaW5nPjtcclxufVxyXG5cclxubW9kdWxlIFNhdmVIYW5kbGVyIHtcclxuICAgIGxldCBzYXZlTmFtZSA9IFwiT2JlbGlza19TYXZlXCJcclxuICAgIGxldCBzYXZlRXh0ZW5zaW9uID0gXCJvYnNhdlwiO1xyXG4gICAgbGV0IHN0b3JhZ2VQcmVmaXggPSBcInNhdmVfXCI7XHJcbiAgICBsZXQgc2F2ZVNsb3QgPSAwO1xyXG4gICAgbGV0IGVycm9ycyA6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuICAgIGxldCBlcmFzaW5nID0gZmFsc2U7XHJcbiAgICBsZXQgdmlyZ2luID0gbmV3IFN0b3JlZE1lbW9yeShcIkZpcnN0IHRpbWUgc2F2aW5nXCIsIHRydWUpO1xyXG5cclxuICAgIGV4cG9ydCBsZXQgQWZ0ZXJMb2FkID0gbmV3IFJ1bGVib29rPFNhdmVTdHJ1Y3R1cmU+KFwiQWZ0ZXIgbG9hZGluZ1wiKTtcclxuXHJcbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEZpbGUgKCkgOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIGxldCBlbGVtZW50ID0gPEhUTUxJbnB1dEVsZW1lbnQ+IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcclxuICAgICAgICBlbGVtZW50LnR5cGUgPSBcImZpbGVcIjtcclxuICAgICAgICBlbGVtZW50LmFjY2VwdCA9IFwiLlwiICsgc2F2ZUV4dGVuc2lvbjtcclxuXHJcbiAgICAgICAgbGV0IHByb21pc2UgOiBQcm9taXNlPHN0cmluZz4gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQub25jaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5maWxlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUodW5kZWZpbmVkKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZnIub25sb2FkID0gKGV2KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZXYudGFyZ2V0WydyZXN1bHQnXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBmci5yZWFkQXNUZXh0KGVsZW1lbnQuZmlsZXNbMF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICByZXR1cm4gcHJvbWlzZTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBkb3dubG9hZChmaWxlbmFtZSwgdGV4dCkge1xyXG4gICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdocmVmJywgJ2RhdGE6dGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04LCcgKyBlbmNvZGVVUklDb21wb25lbnQodGV4dCkpO1xyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGZpbGVuYW1lKTtcclxuXHJcbiAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XHJcblxyXG4gICAgICAgIGVsZW1lbnQuY2xpY2soKTtcclxuXHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gbG9hZFNhdmUgKCkge1xyXG4gICAgICAgIGxldCBpbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XHJcbiAgICAgICAgaW5wdXQudHlwZSA9IFwiZmlsZVwiO1xyXG4gICAgICAgIGlucHV0LmFjY2VwdCA9IFwiLlwiICsgc2F2ZUV4dGVuc2lvbjtcclxuXHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbnB1dCk7XHJcbiAgICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRleHQgPSByZWFkZXIucmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogQ2hlY2sgaWYgdGhpcyBpcyBhY3R1YWxseSB3b3JraW5nLiBUeXBlc2NyaXB0IDMgc3VnZ2VzdGVkIGl0IHdvdWxkbid0LlxyXG4gICAgICAgICAgICAgICAgU2F2ZUhhbmRsZXIubG9hZEdhbWUoPFNhdmVTdHJ1Y3R1cmU+IEpTT04ucGFyc2UoPHN0cmluZz4gdGV4dCkpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICByZWFkZXIucmVhZEFzVGV4dChpbnB1dC5maWxlc1swXSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaW5wdXQuY2xpY2soKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGlucHV0KTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBnZXRJdGVtICh0aGluZyA6IFNhdmVkVGhpbmcpIDogVGhpbmcge1xyXG4gICAgICAgIGxldCBpdGVtIDogVGhpbmc7XHJcbiAgICAgICAgaWYgKHRoaW5nLlVuaXF1ZSkge1xyXG4gICAgICAgICAgICBpdGVtID0gVGhpbmcuZ2V0VW5pcXVlKHRoaW5nLk5hbWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtcyA9IFRoaW5nLmdldE5vblVuaXF1ZSh0aGluZy5OYW1lKTtcclxuICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0gPSBpdGVtc1swXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaXRlbSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGxldCBlcnJvciA9IHRoaW5nLk5hbWUgKyBcIiBubyBsb25nZXIgZXhpc3RzLlwiO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIltTYXZlSGFuZGxlcl0gXCIgKyBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChlcnJvcilcclxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtID0gaXRlbS5jbG9uZSh0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpdGVtLnNldENoYW5nZXModGhpbmcuQ2hhbmdlcyk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGxvYWRHYW1lIChzYXZlU3RydWMgOiBTYXZlU3RydWN0dXJlKSB7XHJcbiAgICAgICAgLy8gaW50ZXJmYWNlIFNhdmVTdHJ1Y3R1cmUge1xyXG4gICAgICAgIC8vICAgICBWYXJpYWJsZXMgOiB7W2lkIDogc3RyaW5nXSA6IGFueX07XHJcbiAgICAgICAgLy8gICAgIFdpZWxkZWQgOiBBcnJheTxTYXZlZFRoaW5nPjtcclxuICAgICAgICAvLyAgICAgV29ybiA6IEFycmF5PFNhdmVkVGhpbmc+O1xyXG4gICAgICAgIC8vICAgICBDYXJyaWVkIDogQXJyYXk8U2F2ZWRUaGluZz47XHJcbiAgICAgICAgLy8gICAgIFBsYXllciA6IFNhdmVkUGxheWVyO1xyXG4gICAgICAgIC8vICAgICBSb3VuZHMgOiBudW1iZXI7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGxldCBwbGF5ZXIgPSBXb3JsZFN0YXRlLnBsYXllcjtcclxuICAgICAgICBTdG9yZWRWYXJpYWJsZS51cGRhdGVGcm9tT2JqZWN0KHNhdmVTdHJ1Yy5WYXJpYWJsZXMpO1xyXG5cclxuICAgICAgICBXb3JsZFN0YXRlLnNldEN1cnJlbnRUdXJuKHNhdmVTdHJ1Yy5Sb3VuZHMpO1xyXG5cclxuICAgICAgICBUaGluZy5XZWFyUmVsYXRpb24uZ2V0UmlnaHQocGxheWVyKS5mb3JFYWNoKCh0aGluZyA6IFRoaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIFRoaW5nLldlYXJSZWxhdGlvbi51bnNldFJpZ2h0KHRoaW5nKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgVGhpbmcuV2llbGRSZWxhdGlvbi5nZXRSaWdodChwbGF5ZXIpLmZvckVhY2goKHRoaW5nIDogVGhpbmcpID0+IHtcclxuICAgICAgICAgICAgVGhpbmcuV2llbGRSZWxhdGlvbi51bnNldFJpZ2h0KHRoaW5nKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgVGhpbmcuQ2FycnlSZWxhdGlvbi5nZXRSaWdodChwbGF5ZXIpLmZvckVhY2goKHRoaW5nIDogVGhpbmcpID0+IHtcclxuICAgICAgICAgICAgVGhpbmcuQ2FycnlSZWxhdGlvbi51bnNldFJpZ2h0KHRoaW5nKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc2F2ZVN0cnVjLldpZWxkZWQuZm9yRWFjaCgodGhpbmcgOiBTYXZlZFRoaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0gZ2V0SXRlbSh0aGluZyk7XHJcbiAgICAgICAgICAgIGlmIChpdGVtICE9IHVuZGVmaW5lZCkgV29ybGRTdGF0ZS5wbGF5ZXIuc2V0V2llbGRlZChpdGVtKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc2F2ZVN0cnVjLldvcm4uZm9yRWFjaCgodGhpbmcgOiBTYXZlZFRoaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0gZ2V0SXRlbSh0aGluZyk7XHJcbiAgICAgICAgICAgIGlmIChpdGVtICE9IHVuZGVmaW5lZCkgV29ybGRTdGF0ZS5wbGF5ZXIuc2V0V29ybihpdGVtKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc2F2ZVN0cnVjLkNhcnJpZWQuZm9yRWFjaCgodGhpbmcgOiBTYXZlZFRoaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0gZ2V0SXRlbSh0aGluZyk7XHJcbiAgICAgICAgICAgIGlmIChpdGVtICE9IHVuZGVmaW5lZCkgV29ybGRTdGF0ZS5wbGF5ZXIuc2V0Q2FycmllZChpdGVtKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgbGV0IHNhdmVkUGxheWVyID0gc2F2ZVN0cnVjLlBsYXllcjtcclxuICAgICAgICBwbGF5ZXIuc2V0TmFtZShzYXZlZFBsYXllci5OYW1lKTtcclxuICAgICAgICBwbGF5ZXIuc2V0Q2hhbmdlcyhzYXZlZFBsYXllci5QbGF5ZXJDaGFuZ2VzKTsgLy8gdGhpcyBhZGRzIHRoZSByaWdodCBnZW5kZXJlZCBwYXJ0c1xyXG4gICAgICAgIHNhdmVkUGxheWVyLlBhcnRzLmZvckVhY2goKHBhcnQgOiBTYXZlZFRoaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBicExpc3QgPSA8QXJyYXk8Qm9keXBhcnQ+PiBwbGF5ZXIuZ2V0UGFydHNCeU5hbWUocGFydC5OYW1lKTtcclxuICAgICAgICAgICAgaWYgKGJwTGlzdCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGJwTGlzdFswXS5zZXRDaGFuZ2VzKHBhcnQuQ2hhbmdlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc2F2ZVN0cnVjLlVuaXF1ZVRoaW5ncy5mb3JFYWNoKChzYXZlZFRoaW5nIDogU2F2ZWRUaGluZykgPT4ge1xyXG4gICAgICAgICAgICBsZXQgdGhpbmcgPSBUaGluZy5nZXRVbmlxdWUoc2F2ZWRUaGluZy5OYW1lKTtcclxuICAgICAgICAgICAgaWYgKHRoaW5nICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpbmcuc2V0Q2hhbmdlcyhzYXZlZFRoaW5nLkNoYW5nZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZXhwb3J0UGxheWVyICgpIDogU2F2ZWRQbGF5ZXIge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIE5hbWUgOiBXb3JsZFN0YXRlLnBsYXllci5nZXROYW1lKCksXHJcbiAgICAgICAgICAgIFBsYXllckNoYW5nZXMgOiBXb3JsZFN0YXRlLnBsYXllci5nZXRDaGFuZ2VzKCksXHJcbiAgICAgICAgICAgIFBhcnRzIDogZXhwb3J0VGhpbmdzKFdvcmxkU3RhdGUucGxheWVyLmdldFBhcnRzKCkpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBleHBvcnRUaGluZ3MgKGFyciA6IEFycmF5PFRoaW5nPiwgY2hhbmdlZE9ubHk/IDogYm9vbGVhbikgOiBBcnJheTxTYXZlZFRoaW5nPiB7XHJcbiAgICAgICAgbGV0IG9iaiA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCB0aGluZyA9IDxUaGluZz4gYXJyW2ldO1xyXG4gICAgICAgICAgICBsZXQgc2F2ZWRUaGluZyA9IHtcclxuICAgICAgICAgICAgICAgIFVuaXF1ZSA6IHRoaW5nLmlzVW5pcXVlKCksXHJcbiAgICAgICAgICAgICAgICBOYW1lIDogdGhpbmcuZ2V0TmFtZSgpLFxyXG4gICAgICAgICAgICAgICAgQ2hhbmdlcyA6IHRoaW5nLmdldENoYW5nZXMoKVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBpZiAoIWNoYW5nZWRPbmx5IHx8IE9iamVjdC5rZXlzKHNhdmVkVGhpbmcuQ2hhbmdlcykubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgb2JqLnB1c2goc2F2ZWRUaGluZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9iajtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZ2V0U2F2ZVN0cnVjdHVyZSAoKSA6IFNhdmVTdHJ1Y3R1cmUge1xyXG4gICAgICAgIGxldCB2YXJpYWJsZXMgPSBTdG9yZWRWYXJpYWJsZS5nZXRWYXJpYWJsZXMoKTtcclxuICAgICAgICBsZXQgc2F2ZWRWYXJpYWJsZXMgPSB7fTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhcmlhYmxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBzYXZlZFZhcmlhYmxlc1t2YXJpYWJsZXNbaV0uaWRdID0gdmFyaWFibGVzW2ldLmV4cG9ydEFzT2JqZWN0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgd2llbGRlZCA9IFRoaW5nLldpZWxkUmVsYXRpb24uZ2V0UmlnaHQoV29ybGRTdGF0ZS5wbGF5ZXIpO1xyXG4gICAgICAgIGxldCB3b3JuID0gVGhpbmcuV2VhclJlbGF0aW9uLmdldFJpZ2h0KFdvcmxkU3RhdGUucGxheWVyKTtcclxuICAgICAgICBsZXQgY2FycmllZCA9IFRoaW5nLkNhcnJ5UmVsYXRpb24uZ2V0UmlnaHQoV29ybGRTdGF0ZS5wbGF5ZXIpO1xyXG5cclxuICAgICAgICBsZXQgc2F2ZVN0cnVjIDogU2F2ZVN0cnVjdHVyZSA9IHtcclxuICAgICAgICAgICAgVmFyaWFibGVzIDogc2F2ZWRWYXJpYWJsZXMsXHJcbiAgICAgICAgICAgIFVuaXF1ZVRoaW5ncyA6IGV4cG9ydFRoaW5ncyhUaGluZy5nZXRVbmlxdWVzKCkpLFxyXG4gICAgICAgICAgICBXaWVsZGVkIDogZXhwb3J0VGhpbmdzKHdpZWxkZWQpLFxyXG4gICAgICAgICAgICBXb3JuIDogZXhwb3J0VGhpbmdzKHdvcm4pLFxyXG4gICAgICAgICAgICBDYXJyaWVkIDogZXhwb3J0VGhpbmdzKGNhcnJpZWQpLFxyXG4gICAgICAgICAgICBQbGF5ZXIgOiBleHBvcnRQbGF5ZXIoKSxcclxuICAgICAgICAgICAgUm91bmRzIDogV29ybGRTdGF0ZS5nZXRDdXJyZW50VHVybigpLFxyXG4gICAgICAgICAgICBEYXRlIDogbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc29sZS5kZWJ1ZyhcIltTYXZlSGFuZGxlcl0gQ3JlYXRlZCBTYXZlIFN0cnVjdHVyZVwiLCBzYXZlU3RydWMpO1xyXG5cclxuICAgICAgICByZXR1cm4gc2F2ZVN0cnVjO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBzZXRTbG90IChzbG90TiA6IG51bWJlcikge1xyXG4gICAgICAgIHNhdmVTbG90ID0gc2xvdE47XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHNhdmVUb1N0b3JhZ2UgKCkge1xyXG4gICAgICAgIENvbnRyb2xzLk1lbW9yeS5zZXRWYWx1ZShzdG9yYWdlUHJlZml4ICsgc2F2ZVNsb3QsIGdldFNhdmVTdHJ1Y3R1cmUoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRGcm9tU3RvcmFnZSAoKSB7XHJcbiAgICAgICAgaWYgKCFlcmFzaW5nKSB7XHJcbiAgICAgICAgICAgIGxldCBzYXZlU3RydWN0ID0gKENvbnRyb2xzLk1lbW9yeS5nZXRWYWx1ZShzdG9yYWdlUHJlZml4ICsgc2F2ZVNsb3QsIHVuZGVmaW5lZCkpO1xyXG4gICAgICAgICAgICBpZiAoc2F2ZVN0cnVjdCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGxvYWRHYW1lKHNhdmVTdHJ1Y3QpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IEFmdGVyTG9hZC5leGVjdXRlKHtub3VuIDogc2F2ZVN0cnVjdH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRoaXMgaXMgYSBuZXcgZ2FtZSFcclxuICAgICAgICBhd2FpdCBDaGFyYWN0ZXJDcmVhdGlvbi5ydWxlYm9vay5leGVjdXRlKHt9KTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEZyb21GaWxlICgpIHtcclxuICAgICAgICBQbGF5QmVnaW5zLkxPQURfRkFJTEVEID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IHByb21pc2UgPSByZWFkRmlsZSgpO1xyXG5cclxuICAgICAgICBsZXQgZmluaXNoZWRBbnk7XHJcbiAgICAgICAgbGV0IHJlYWxQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgICAgZmluaXNoZWRBbnkgPSByZXNvbHZlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBsZXQgc2F5ID0gbmV3IFNheShcIk5vIHNhdmUgZmlsZSB3YXMgbG9hZGVkLlwiLCBTYXkuUEFSQUdSQVBIX0JSRUFLLCBTYXkuQ0VOVEVSRUQsIG5ldyBTYXlCb2xkKFwiUHJlc3MgYW55IGtleSB0byByZXR1cm4uXCIpKTtcclxuICAgICAgICBsZXQgc2F5RWxlbWVudHMgPSBhd2FpdCBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIuZ2V0U2F5RWxlbWVudHNBc0NvbnRlbnQoc2F5KTtcclxuICAgICAgICBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIucHJpbnQoLi4uc2F5RWxlbWVudHMpO1xyXG5cclxuICAgICAgICBsZXQgbmV4dEtleSA9IENvbnRyb2xzLktleUhhbmRsZXIuZ2V0TmV4dEtleSgpO1xyXG5cclxuICAgICAgICBwcm9taXNlLnRoZW4oKGZpbGUpID0+IHtcclxuICAgICAgICAgICAgQ29udHJvbHMuS2V5SGFuZGxlci5zdG9wR2l2aW5nTmV4dEtleShuZXh0S2V5KTtcclxuICAgICAgICAgICAgRWxlbWVudHMuQ3VycmVudFR1cm5IYW5kbGVyLnVucHJpbnQoLi4uc2F5RWxlbWVudHMpO1xyXG4gICAgICAgICAgICBsb2FkR2FtZShnZXRGcm9tRmlsZShmaWxlKSk7IC8vIElmIG5vIGZpbGUgd2FzIGNob3NlbiB0aGVuIGNoYW5nZSBpc24ndCB0cmlnZ2VyZWQsIHNvIGl0J3MgbmV2ZXIgdW5kZWZpbmVkLi4uXHJcbiAgICAgICAgICAgIGZpbmlzaGVkQW55KCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIG5leHRLZXkudGhlbigoa2V5Q29kZSA6IEtleUNvZGUpID0+IHtcclxuICAgICAgICAgICAgUGxheUJlZ2lucy5MT0FEX0ZBSUxFRCA9IHRydWU7XHJcbiAgICAgICAgICAgIGZpbmlzaGVkQW55KCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGF3YWl0IHJlYWxQcm9taXNlO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBnZXRTYXlGb3JTbG90IChzbG90TnVtYmVyIDogbnVtYmVyKSB7XHJcbiAgICAgICAgbGV0IHNhdmVTdHJ1Y3QgOiBTYXZlU3RydWN0dXJlID0gKENvbnRyb2xzLk1lbW9yeS5nZXRWYWx1ZShzdG9yYWdlUHJlZml4ICsgc2xvdE51bWJlciwgdW5kZWZpbmVkKSk7XHJcbiAgICAgICAgaWYgKHNhdmVTdHJ1Y3QgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2F5KFwiTmV3IEdhbWVcIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IGVyYXNpbmdUZXh0ID0gZXJhc2luZyA/IFwiKEVSQVNFKSAtIFwiIDogXCJcIjtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBTYXkoZXJhc2luZ1RleHQsIHNhdmVTdHJ1Y3QuUGxheWVyLk5hbWUgKyBcIiAtIFR1cm5zOiBcIiArIHNhdmVTdHJ1Y3QuUm91bmRzICsgXCIgLSBMYXN0IFBsYXllZDogXCIgKyBzYXZlU3RydWN0LkRhdGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZ2V0RnJvbUZpbGUgKHNhdmVUZXh0KSA6IFNhdmVTdHJ1Y3R1cmUge1xyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChhdG9iKHNhdmVUZXh0KSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBzYXZlVG9GaWxlICgpIHtcclxuICAgICAgICAvLyBJdCdzIG9rYXkgaWYgeW91IHdhbnQgdG8gY2hlYXQsIGJ1dCBpZiB5b3UgdGFtcGVyIHdpdGggdGhlIHNhdmUgZmlsZSwgcGxlYXNlIGJlIG1pbmRmdWwgd2hlbiByZXBvcnRpbmcgXCJidWdzXCIuXHJcbiAgICAgICAgZG93bmxvYWQoc2F2ZU5hbWUgKyBcIi5cIiArIHNhdmVFeHRlbnNpb24sIGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KChKU09OLnN0cmluZ2lmeShnZXRTYXZlU3RydWN0dXJlKCkpKSkpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzRXJhc2luZyAoKSB7XHJcbiAgICAgICAgcmV0dXJuIGVyYXNpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUVyYXNpbmcgKCkge1xyXG4gICAgICAgIGVyYXNpbmcgPSAhZXJhc2luZztcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gaXNWaXJnaW4gKCkge1xyXG4gICAgICAgIGxldCB3YXMgPSB2aXJnaW4uZ2V0VmFsdWUoKTtcclxuICAgICAgICB2aXJnaW4uc3RvcmVWYWx1ZShmYWxzZSk7XHJcbiAgICAgICAgcmV0dXJuIHdhcztcclxuICAgIH1cclxufVxyXG5cclxuLy8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJTYXZlR2FtZUJ1dHRvblwiKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4vLyAgICAgU2F2ZUhhbmRsZXIuc2F2ZVRvRmlsZSgpO1xyXG4vLyB9KTtcclxuXHJcblR1cm5TZXF1ZW5jZS5ydWxlYm9vay5jcmVhdGVBbmRBZGRSdWxlKHtcclxuICAgIG5hbWUgOiBcIlNhdmUgZ2FtZSB0byBTdG9yYWdlXCIsXHJcbiAgICBwcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfTE9XRVNULFxyXG4gICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfTE9XRVNULFxyXG4gICAgY29kZSA6ICgpID0+IHtcclxuICAgICAgICBTYXZlSGFuZGxlci5zYXZlVG9TdG9yYWdlKCk7XHJcbiAgICB9XHJcbn0pIiwiY2xhc3MgQ2hhcmFjdGVyT3JpZ2luIHtcbiAgICBwdWJsaWMgaWQgOiBzdHJpbmc7XG4gICAgcHVibGljIG5hbWUgOiBzdHJpbmc7XG4gICAgcHVibGljIGRlc2NyaXB0aW9uIDogc3RyaW5nIHwgU2F5O1xuICAgIHB1YmxpYyBib251c1N0YXRzIDogc3RyaW5nO1xuICAgIHB1YmxpYyBjb25maXJtUGlja2VkIDogKCgpID0+IHZvaWQpID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGlkIDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuaWQgPSBpZDtcbiAgICAgICAgQ2hhcmFjdGVyT3JpZ2luLnN0b3JlT3JpZ2luKHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgb3JpZ2lucyA6IHtbaWQgOiBzdHJpbmddIDogQ2hhcmFjdGVyT3JpZ2lufSA9IHt9O1xuXG4gICAgcHVibGljIHN0YXRpYyBzdG9yZU9yaWdpbiAob3JpZ2luIDogQ2hhcmFjdGVyT3JpZ2luKSB7XG4gICAgICAgIENoYXJhY3Rlck9yaWdpbi5vcmlnaW5zW29yaWdpbi5pZF0gPSBvcmlnaW47XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRPcmlnaW4gKGlkIDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBDaGFyYWN0ZXJPcmlnaW4ub3JpZ2luc1tpZF07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRPcmlnaW5zICgpIDogQXJyYXk8Q2hhcmFjdGVyT3JpZ2luPiB7XG4gICAgICAgIGxldCBvcmlnaW5zID0gW107XG4gICAgICAgIGZvciAobGV0IGlkIGluIENoYXJhY3Rlck9yaWdpbi5vcmlnaW5zKSB7XG4gICAgICAgICAgICBvcmlnaW5zLnB1c2goQ2hhcmFjdGVyT3JpZ2luLm9yaWdpbnNbaWRdKTtcbiAgICAgICAgfVxuICAgICAgICBvcmlnaW5zLnNvcnQoKGEgOiBDaGFyYWN0ZXJPcmlnaW4sIGIgOiBDaGFyYWN0ZXJPcmlnaW4pID0+IHtcbiAgICAgICAgICAgIGxldCBuYSA9IGEubmFtZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgbGV0IG5iID0gYi5uYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAobmEgPCBuYikgcmV0dXJuIC0xO1xuICAgICAgICAgICAgaWYgKG5hID4gbmIpIHJldHVybiAxO1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gb3JpZ2lucztcbiAgICB9XG59XG4iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vQ2hhcmFjdGVyT3JpZ2luLnRzXCIgLz5cclxubW9kdWxlIENoYXJhY3RlckNyZWF0aW9uIHtcclxuICAgIGV4cG9ydCBsZXQgQ2hhbXBpb25PcmlnaW4gPSBuZXcgQ2hhcmFjdGVyT3JpZ2luKFwiQ2hhbXBpb25cIik7XHJcbiAgICBDaGFtcGlvbk9yaWdpbi5uYW1lID0gXCJDaGFtcGlvblwiO1xyXG4gICAgQ2hhbXBpb25PcmlnaW4uZGVzY3JpcHRpb249IFwiWW91IHdlcmUgYm9ybiBpbiB0aGUgc21hbGwgdmlsbGFnZSBvZiBTb3V0aHdvb2QgaW4gdGhlIHBvc3QtVG93ZXIgd29ybGQuIENob3NlbiBieSB0aGUgdmlsbGFnZSBlbGRlciwgeW91IHdlcmUgdHJhaW5lZCByZWxlbnRsZXNzbHkgYXMgc29vbiBhcyB5b3UgYmVjYW1lIGFibGUgdG8gd2Fsay4gWW91ciBtaXNzaW9uOiBnZXQgdG8gdGhlIFRvd2VyIGFuZCBmaW5kIGEgd2F5IHRvIGRlc3Ryb3kgaXQuIFVuYmVrbm93bnN0IHRvIHlvdSwgdGhpcyBpcyBsaXR0bGUgbW9yZSB0aGFuIGEgc2FjcmlmaWNlIHJpdHVhbCBhbmQgeW91IGFyZSBqdXN0IGl0J3MgbGF0ZXN0IHZpY3RpbS4gVGhlIHZpbGxhZ2UgZG9lc24ndCBhY3R1YWxseSBleHBlY3QgeW91IHRvIHN1Y2NlZWQsIHlvdSBhcmUgbWVyZWx5IGEgZ2lmdCB0byB0aGUgVG93ZXIsIHNvIHRoYXQgaXQgd2lsbCBub3QgZGVzdHJveSBTb3V0aHdvb2QuXCI7XHJcbiAgICBDaGFtcGlvbk9yaWdpbi5ib251c1N0YXRzID0gXCJUaGlzIG9yaWdpbiBncmFudHMgYSArMSBCb251cyB0byBldmVyeSBhdHRyaWJ1dGUsIGJ1dCB5b3Ugd2lsbCBiZSBzdHVjayB3aXRoIHNvbWUgcGVya3MgZ2FpbmVkIHRocm91Z2ggeW91ciB0cmFpbmluZy5cIjtcclxuXHJcbiAgICAvLyBHaXZlICsxIHRvIGFsbCBzdGF0cyBpZiBwaWNrZWRcclxuICAgIENoYW1waW9uT3JpZ2luLmNvbmZpcm1QaWNrZWQgPSAoKSA9PiB7XHJcbiAgICAgICAgbGV0IHBsYXllciA9IFdvcmxkU3RhdGUucGxheWVyO1xyXG4gICAgICAgIGZ1bmN0aW9uIGluY3JlYXNlU3RhdCAoYXR0ciA6IEF0dHJpYnV0ZSkge1xyXG4gICAgICAgICAgICBwbGF5ZXIuc2V0U3RhdChhdHRyLCBwbGF5ZXIuZ2V0U3RhdChhdHRyKSArIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbmNyZWFzZVN0YXQoQXR0cmlidXRlcy5TdHJlbmd0aCk7XHJcbiAgICAgICAgaW5jcmVhc2VTdGF0KEF0dHJpYnV0ZXMuQ2hhcm0pO1xyXG4gICAgICAgIGluY3JlYXNlU3RhdChBdHRyaWJ1dGVzLkFnaWxpdHkpO1xyXG4gICAgICAgIGluY3JlYXNlU3RhdChBdHRyaWJ1dGVzLkludGVsbGlnZW5jZSk7XHJcbiAgICB9XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vV29ybGQvQ2xhc3Nlcy9TYXZlL1N0b3JlZFZhcmlhYmxlLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIk9yaWdpbnMvQ2hhbXBpb25PcmlnaW4udHNcIiAvPlxyXG5tb2R1bGUgQ2hhcmFjdGVyQ3JlYXRpb24ge1xyXG4gICAgZXhwb3J0IGxldCBQbGF5ZXJPcmlnaW4gPSBuZXcgU3RvcmVkVmFyaWFibGUoe2lkIDogXCJQbGF5ZXIgT3JpZ2luXCIsIHZhbHVlIDogQ2hhbXBpb25PcmlnaW4uaWR9KTtcclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZ2V0T3JpZ2luICgpIDogQ2hhcmFjdGVyT3JpZ2luIHtcclxuICAgICAgICByZXR1cm4gQ2hhcmFjdGVyT3JpZ2luLmdldE9yaWdpbihQbGF5ZXJPcmlnaW4udmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBsZXQgcnVsZWJvb2sgPSBuZXcgUnVsZWJvb2soXCJDaGFyYWN0ZXIgQ3JlYXRpb25cIik7XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vV29ybGQvQ2xhc3Nlcy9TYXZlL1N0b3JlZFZhcmlhYmxlLnRzXCIgLz5cclxuY2xhc3MgUGVyayBleHRlbmRzIFN0b3JlZFZhcmlhYmxlPGJvb2xlYW4+IHtcclxuICAgIHB1YmxpYyBmb3JjZWRTdGF0dXMgOiAoKGUgOiBQZXJrKSA9PiBib29sZWFuIHwgdm9pZCkgPSAoKSA9PiB7IHJldHVybiB1bmRlZmluZWQgfTtcclxuICAgIHB1YmxpYyBkZXNjcmlwdGlvbiA6IFNheSB8IHN0cmluZyB8ICgocGVyayA6IFBlcmspID0+IFNheSB8IHN0cmluZykgPSBcIlVuZGVmaW5lZFwiO1xyXG4gICAgcHVibGljIG5hbWUgOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgY29uZmlybVBpY2tlZCA6ICgoKSA9PiB2b2lkKSA9ICgpID0+IHt9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yIChpZCA6IHN0cmluZykge1xyXG4gICAgICAgIHN1cGVyKHtcclxuICAgICAgICAgICAgaWQgOiBcIlBlcmtfXCIgKyBpZCxcclxuICAgICAgICAgICAgdmFsdWUgOiBmYWxzZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IGlkO1xyXG5cclxuICAgICAgICBQZXJrLnN0b3JlUGVyayh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNFbmFibGVkICh2YWx1ZU9ubHk/IDogYm9vbGVhbikgOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodmFsdWVPbmx5ICE9IHRydWUpIHtcclxuICAgICAgICAgICAgbGV0IGZvcmNlZCA9IHRoaXMuZm9yY2VkU3RhdHVzKHRoaXMpO1xyXG4gICAgICAgICAgICBpZiAoZm9yY2VkICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxib29sZWFuPiBmb3JjZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzRm9yY2VkICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JjZWRTdGF0dXModGhpcykgIT0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXREZXNjcmlwdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlc2NyaXB0aW9uID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZXNjcmlwdGlvbih0aGlzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZXNjcmlwdGlvbjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBwZXJrcyA6IHtbaWQgOiBzdHJpbmddIDogUGVya30gPSB7fTtcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHN0b3JlUGVyayAocGVyayA6IFBlcmspIHtcclxuICAgICAgICBQZXJrLnBlcmtzW3BlcmsuaWRdID0gcGVyaztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFBlcmsgKGlkIDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIFBlcmsucGVya3NbaWRdO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UGVya3MgKCkgOiBBcnJheTxQZXJrPiB7XHJcbiAgICAgICAgbGV0IHBlcmtzID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaWQgaW4gUGVyay5wZXJrcykge1xyXG4gICAgICAgICAgICBwZXJrcy5wdXNoKFBlcmsucGVya3NbaWRdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGVya3Muc29ydCgoYSA6IFBlcmssIGIgOiBQZXJrKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBuYSA9IGEubmFtZS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgICAgICBsZXQgbmIgPSBiLm5hbWUudG9VcHBlckNhc2UoKTtcclxuICAgICAgICAgICAgaWYgKG5hIDwgbmIpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgaWYgKG5hID4gbmIpIHJldHVybiAxO1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcGVya3M7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyB1cGRhdGVQZXJrcygpIHtcclxuICAgICAgICBmb3IgKGxldCBpZCBpbiBQZXJrLnBlcmtzKSB7XHJcbiAgICAgICAgICAgIGxldCBwZXJrID0gUGVyay5wZXJrc1tpZF07XHJcbiAgICAgICAgICAgIGlmIChwZXJrLmlzRm9yY2VkKCkpIHtcclxuICAgICAgICAgICAgICAgIHBlcmsudmFsdWUgPSA8Ym9vbGVhbj4gcGVyay5mb3JjZWRTdGF0dXMocGVyayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vU2F5LnRzXCIgLz5cclxuY2xhc3MgT25lT2Yge1xyXG4gICAgcHJpdmF0ZSBwb3NzaWJpbGl0aWVzID0gW107XHJcbiAgICBwcml2YXRlIGF2YWlsYWJsZVBvc3NpYmlsaXRlcztcclxuICAgIHByaXZhdGUgcmFuZG9tTW9kZSA6IG51bWJlcjtcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIFBVUkVMWV9BVF9SQU5ET00gOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIHN0YXRpYyBST1RBVElOR19SQU5ET00gOiBudW1iZXIgPSAxO1xyXG4gICAgcHVibGljIHN0YXRpYyBDWUNMSU5HIDogbnVtYmVyID0gMjtcclxuXHJcbiAgICBwcml2YXRlIGN5Y2xpbmdPcmRlciA6IG51bWJlciA9IDA7XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChyYW5kb21Nb2RlIDogbnVtYmVyLCAuLi5wb3NzIDogQXJyYXk8YW55Pikge1xyXG4gICAgICAgIHRoaXMucmFuZG9tTW9kZSA9IHJhbmRvbU1vZGU7XHJcbiAgICAgICAgdGhpcy5wb3NzaWJpbGl0aWVzID0gcG9zcztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmFuZG9tTW9kZSA9PSBPbmVPZi5ST1RBVElOR19SQU5ET00pIHtcclxuICAgICAgICAgICAgdGhpcy5hdmFpbGFibGVQb3NzaWJpbGl0ZXMgPSB0aGlzLnBvc3NpYmlsaXRpZXMuc2xpY2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldE9uZSAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucmFuZG9tTW9kZSA9PSBPbmVPZi5QVVJFTFlfQVRfUkFORE9NKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc3NpYmlsaXRpZXNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogdGhpcy5wb3NzaWJpbGl0aWVzLmxlbmd0aCldO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5yYW5kb21Nb2RlID09IE9uZU9mLlJPVEFUSU5HX1JBTkRPTSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hdmFpbGFibGVQb3NzaWJpbGl0ZXMubGVuZ3RoIDwgMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdmFpbGFibGVQb3NzaWJpbGl0ZXMgPSB0aGlzLnBvc3NpYmlsaXRpZXMuc2xpY2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdmFpbGFibGVQb3NzaWJpbGl0ZXMuc3BsaWNlKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHRoaXMuYXZhaWxhYmxlUG9zc2liaWxpdGVzLmxlbmd0aCksIDEpWzBdXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJhbmRvbU1vZGUgPT0gT25lT2YuQ1lDTElORykge1xyXG4gICAgICAgICAgICB2YXIgciA9IHRoaXMucG9zc2liaWxpdGllc1t0aGlzLmN5Y2xpbmdPcmRlcisrXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY3ljbGluZ09yZGVyID4gdGhpcy5wb3NzaWJpbGl0aWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jeWNsaW5nT3JkZXIgPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiByO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSIsIm1vZHVsZSBDb250cm9scyB7XHJcblxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vQ2xhc3Nlcy9SdWxlYm9vay50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL0NsYXNzZXMvUnVsZS50c1wiIC8+XHJcbm1vZHVsZSBNYWNoaW5lQmVnaW5zIHtcclxuICAgIGV4cG9ydCB2YXIgcnVsZWJvb2sgPSBuZXcgUnVsZWJvb2s8dm9pZD4oXCJNYWNoaW5lIEJlZ2luc1wiKTtcclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZXhlY3V0ZSAoKSB7XHJcbiAgICAgICAgcnVsZWJvb2suZXhlY3V0ZSh7fSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsICgpID0+IHtcclxuICAgIE1hY2hpbmVCZWdpbnMuZXhlY3V0ZSgpO1xyXG59KTsiLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vV29ybGQvTWFjaGluZUJlZ2lucy50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9Xb3JsZC9UdXJuU2VxdWVuY2UudHNcIiAvPlxyXG5tb2R1bGUgRWxlbWVudHMge1xyXG4gICAgZXhwb3J0IHZhciBhbmltYXRpb25UaW1lID0gMTAwMDtcclxuICAgIGV4cG9ydCB2YXIgaXNNb2JpbGUgPSAvTW9iaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7IC8vIFRoaXMgY29ycmVjdGx5IGxldHMgTW9iaWxlIHVzZXJzIHdobyByZXF1ZXN0ZWQgdGhlIERlc2t0b3AgYXBwIG9yIGFyZSBvbiBhIHN1ZmZpY2llbnRseSBiaWcgdGFibGV0IHRvIGdldCB0aGUgcmlnaHQgZGVza3RvcCB2ZXJzaW9uXHJcblxyXG4gICAgZXhwb3J0IHZhciBzY3JlZW5XaWR0aCA9IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7XHJcbiAgICBleHBvcnQgdmFyIHNjcmVlbkhlaWdodCA9IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0O1xyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBnZXRMaW5rRWxlbWVudHMgKGltYWdlPyA6IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAoQ3VycmVudFR1cm5IYW5kbGVyID09IHVuZGVmaW5lZCkgcmV0dXJuIFtdO1xyXG4gICAgICAgIGlmIChDdXJyZW50VHVybkhhbmRsZXIuaXNUdXJuKCkgfHwgaW1hZ2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtDdXJyZW50VHVybkhhbmRsZXIuY3VycmVudFR1cm5UYWJdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbSHlwZXJsaW5rSGFuZGxlci5saW5rZWRBY3Rpb25zVGFiLCBSb29tSGFuZGxlci5jdXJyZW50Um9vbVRhYiwgSHlwZXJsaW5rSGFuZGxlci5jb21tb25BY3Rpb25zVGFiLCBDdXJyZW50VHVybkhhbmRsZXIuY3VycmVudFR1cm5UYWIsIFJvb21IYW5kbGVyLmN1cnJlbnRSb29tRXhpdHNdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gdXBkYXRlU2NyZWVuU2l6ZSAoKSB7XHJcbiAgICAgICAgc2NyZWVuV2lkdGggPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoO1xyXG4gICAgICAgIHNjcmVlbkhlaWdodCA9IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCB2YXIgbWFpblBhZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1haW5QYWdlXCIpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyB0aGUgYmx1ciBlZmZlY3QgdG8gdGhlIHNjcmVlblxyXG4gICAgICovXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gc3RhcnRUdXJuICgpIHtcclxuICAgICAgICBtYWluUGFnZS5jbGFzc0xpc3QuYWRkKFwidHVyblwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSB0aGUgYmx1ciBlZmZlY3QgZnJvbSB0aGUgc2NyZWVuXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBlbmRUdXJuICgpIHtcclxuICAgICAgICBtYWluUGFnZS5jbGFzc0xpc3QucmVtb3ZlKFwidHVyblwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFyZSB3ZSBjdXJyZW50bHkgaW4gYSB0dXJuP1xyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBpc0luVHVybiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIG1haW5QYWdlLmNsYXNzTGlzdC5jb250YWlucyhcInR1cm5cIik7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGxldCBtZW51T3V0c2lkZW9mVHVybiA9IGZhbHNlO1xyXG4gICAgbGV0IG1lbnVzID0gMDtcclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gc3RhcnRNZW51ICgpIHtcclxuICAgICAgICBpZiAoIWlzSW5UdXJuKCkpIHtcclxuICAgICAgICAgICAgbWVudU91dHNpZGVvZlR1cm4gPSB0cnVlO1xyXG4gICAgICAgICAgICBzdGFydFR1cm4oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWFpblBhZ2UuY2xhc3NMaXN0LmFkZChcIm1haW5tZW51XCIpO1xyXG4gICAgICAgIG1lbnVzKys7XHJcbiAgICAgICAgRWxlbWVudHMuQ3VycmVudFR1cm5IYW5kbGVyLmNsZWFyKCk7XHJcbiAgICAgICAgQ29udHJvbHMuS2V5SGFuZGxlci5yZXNldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBlbmRNZW51ICgpIHtcclxuICAgICAgICBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIuY2xlYXIoKTtcclxuICAgICAgICBpZiAoLS1tZW51cyA9PSAwKSB7XHJcbiAgICAgICAgICAgIGlmIChtZW51T3V0c2lkZW9mVHVybikge1xyXG4gICAgICAgICAgICAgICAgZW5kVHVybigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlc2V0TWVudXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHJlc2V0TWVudXMgKCkge1xyXG4gICAgICAgIGlmIChtZW51cyAhPSAwKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBIG1lbnUgd2Fzbid0IGZpbmlzaGVkIHByb3Blcmx5LiBQbGVhc2UgY29ycmVjdCB0aGUgZGlhbG9ndWUuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtZW51cyA9IDA7XHJcbiAgICAgICAgbWVudU91dHNpZGVvZlR1cm4gPSBmYWxzZTtcclxuICAgICAgICBtYWluUGFnZS5jbGFzc0xpc3QucmVtb3ZlKFwibWFpbm1lbnVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGNsZWFyTWFpblNjcmVlbiAoKSB7XHJcbiAgICAgICAgRWxlbWVudHMuQ3VycmVudFR1cm5IYW5kbGVyLmNsZWFyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGxvYWRpbmdTY3JlZW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxvYWRpbmdTY3JlZW5cIik7XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHN0b3BMb2FkaW5nICgpIHtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxvYWRpbmdTY3JlZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yQW55S2V5ICgpIHtcclxuICAgICAgICBsZXQgc2F5ID0gbmV3IFNheShTYXkuQ0VOVEVSRUQsIG5ldyBTYXlCb2xkKFwiUHJlc3MgYW55IGtleSB0byBjb250aW51ZS5cIikpO1xyXG4gICAgICAgIGxldCBlbGVtZW50cyA9IGF3YWl0IHNheS5nZXRIVE1MKFwicFwiLCBbXCJjb250ZW50XCJdKTtcclxuICAgICAgICBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIucHJpbnQoLi4uZWxlbWVudHMpO1xyXG5cclxuICAgICAgICBhd2FpdCBDb250cm9scy5LZXlIYW5kbGVyLmdldE5leHRLZXkoKTtcclxuICAgICAgICBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIudW5wcmludCguLi5lbGVtZW50cyk7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JTcGFjZUtleSAoKSB7XHJcbiAgICAgICAgbGV0IHNheSA9IG5ldyBTYXkoU2F5LkNFTlRFUkVELCBuZXcgU2F5Qm9sZChcIlByZXNzIFNwYWNlIHRvIGNvbnRpbnVlLlwiKSk7XHJcbiAgICAgICAgbGV0IGVsZW1lbnRzID0gYXdhaXQgc2F5LmdldEhUTUwoXCJwXCIsIFtcImNvbnRlbnRcIl0pO1xyXG4gICAgICAgIEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlci5wcmludCguLi5lbGVtZW50cyk7XHJcblxyXG4gICAgICAgIGxldCBsYXN0S2V5ID0gXCJub3RTcGFjZVwiO1xyXG4gICAgICAgIHdoaWxlIChsYXN0S2V5ICE9IFwiU3BhY2VcIiAmJiBsYXN0S2V5ICE9IFwiQ2xpY2tcIikge1xyXG4gICAgICAgICAgICBsYXN0S2V5ID0gKGF3YWl0IENvbnRyb2xzLktleUhhbmRsZXIuZ2V0TmV4dEtleSgpKS5ldkNvZGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIudW5wcmludCguLi5lbGVtZW50cyk7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHByaW50T2JlbGlza0xvZ28gKCkge1xyXG4gICAgICAgIGxldCBzYXkgPSBuZXcgU2F5KFNheS5DRU5URVJFRCwgbmV3IFNheUltYWdlKFwiaW50cm9Mb2dvXCIpLCBTYXkuTElORV9CUkVBSywgbmV3IFNheUl0YWxpYyhcIlRoZSBPYmVsaXNrIGlzIGFuIGFkdWx0IGludGVyYWN0aXZlIGZpY3Rpb24gZ2FtZSBzZXQgaW4gYSBwb3N0LWFwb2NhbHlwdGljIHdvcmxkIHJhdmFnZWQgYnkgYSBtYWdpY2FsIHN0cnVjdHVyZS5cIikpO1xyXG4gICAgICAgIEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlci5wcmludEFzQ29udGVudChzYXkpO1xyXG4gICAgfVxyXG59XHJcblxyXG5pZiAoRWxlbWVudHMuaXNNb2JpbGUpIHtcclxuICAgIEVsZW1lbnRzLm1haW5QYWdlLmNsYXNzTGlzdC5hZGQoXCJtb2JpbGVcIik7XHJcbn1cclxuXHJcbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIGZ1bmN0aW9uICgpIHtcclxuICAgIEVsZW1lbnRzLnVwZGF0ZVNjcmVlblNpemUoKTtcclxufSk7XHJcblxyXG5cclxubW9kdWxlIE1hY2hpbmVCZWdpbnMge1xyXG4gICAgZXhwb3J0IGxldCBIaWRlTG9hZGluZ0RpdlJ1bGUgPSBNYWNoaW5lQmVnaW5zLnJ1bGVib29rLmNyZWF0ZUFuZEFkZFJ1bGUoe1xyXG4gICAgICAgIG5hbWUgOiBcIkhpZGUgbG9hZGluZyBkaXZcIixcclxuICAgICAgICBjb2RlIDogcnVubmVyID0+IHtcclxuICAgICAgICAgICAgRWxlbWVudHMuc3RvcExvYWRpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5cclxubW9kdWxlIFR1cm5TZXF1ZW5jZSB7XHJcbiAgICBleHBvcnQgbGV0IExhemlseUZpeE1lbnVzID0gVHVyblNlcXVlbmNlLnJ1bGVib29rLmNyZWF0ZUFuZEFkZFJ1bGUoe1xyXG4gICAgICAgIG5hbWUgOiBcIkZpeCBtZW51cyB0aGF0IHdlcmUgbmV2ZXIgY2xvc2VkIGJlY2F1c2UgdGhlIGRldiBpcyBzdHVwaWRcIixcclxuICAgICAgICBmaXJzdFByaW9yaXR5IDogUnVsZS5QUklPUklUWV9MT1dFU1QsXHJcbiAgICAgICAgcHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0xPV0VTVCxcclxuICAgICAgICBjb2RlIDogKCkgPT4ge1xyXG4gICAgICAgICAgICBFbGVtZW50cy5yZXNldE1lbnVzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSlcclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9Db250cm9scy50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9DbGFzc2VzL1N0b3JlZE1lbW9yeS50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9FbGVtZW50cy9FbGVtZW50cy50c1wiIC8+XHJcbmludGVyZmFjZSBLZXlDb2RlIHtcclxuICAgIGV2Q29kZSA6IHN0cmluZztcclxuICAgIHJlcHJlc2VudGF0aW9uIDogc3RyaW5nO1xyXG4gICAgbmFtZSA6IHN0cmluZztcclxufVxyXG5cclxubW9kdWxlIENvbnRyb2xzLktleUhhbmRsZXIge1xyXG4gICAgbGV0IHByb21pc2VTdGFjayA6IEFycmF5PCh2YWx1ZT86IEtleUNvZGUgfCBQcm9taXNlTGlrZTxLZXlDb2RlPikgPT4gdm9pZD4gPSBbXTtcclxuICAgIGxldCBwcm9taXNlT3JpZ2luYWxTdGFjayA6IEFycmF5PFByb21pc2U8S2V5Q29kZT4+ID0gW107XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHJlamVjdFByb21pc2UgKHByb21pc2UgOiAodmFsdWU/OiBLZXlDb2RlIHwgUHJvbWlzZUxpa2U8S2V5Q29kZT4pID0+IHZvaWQpIHtcclxuICAgICAgICBwcm9taXNlU3RhY2suc3BsaWNlKHByb21pc2VTdGFjay5pbmRleE9mKHByb21pc2UpLCAxKTtcclxuICAgICAgICBwcm9taXNlT3JpZ2luYWxTdGFjay5zcGxpY2UocHJvbWlzZVN0YWNrLmluZGV4T2YocHJvbWlzZSksIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBjcmVhdGVLZXlDb2RlIChldiA6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgICAgICBsZXQgbmFtZSA9IGV2LmtleS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IG5hbWU7XHJcbiAgICAgICAgbGV0IGV2Q29kZSA9IGV2LmNvZGU7XHJcbiAgICAgICAgaWYgKGV2LnNoaWZ0S2V5KSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSBcIlNoaWZ0ICsgXCIgKyBuYW1lO1xyXG4gICAgICAgICAgICBldkNvZGUgPSBcIlNoXCIgKyBldkNvZGU7XHJcbiAgICAgICAgICAgIHJlcHJlc2VudGF0aW9uID0gXCJTXCIgKyByZXByZXNlbnRhdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV2LmFsdEtleSkge1xyXG4gICAgICAgICAgICBuYW1lID0gXCJBbHQgKyBcIiArIG5hbWU7XHJcbiAgICAgICAgICAgIGV2Q29kZSA9IFwiQWxcIiArIGV2Q29kZTtcclxuICAgICAgICAgICAgcmVwcmVzZW50YXRpb24gPSBcIkFcIiArIHJlcHJlc2VudGF0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXYuY3RybEtleSkge1xyXG4gICAgICAgICAgICBuYW1lID0gXCJDb250cm9sICsgXCIgKyBuYW1lO1xyXG4gICAgICAgICAgICBldkNvZGUgPSBcIkN0XCIgKyBldkNvZGU7XHJcbiAgICAgICAgICAgIHJlcHJlc2VudGF0aW9uID0gXCJDXCIgKyByZXByZXNlbnRhdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGtleUNvZGUgOiBLZXlDb2RlID0gIHtcclxuICAgICAgICAgICAgZXZDb2RlIDogZXZDb2RlLFxyXG4gICAgICAgICAgICBuYW1lIDogbmFtZSxcclxuICAgICAgICAgICAgcmVwcmVzZW50YXRpb24gOiByZXByZXNlbnRhdGlvblxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGtleUNvZGU7XHJcbiAgICB9XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgbGV0IGtleUNvZGUgOiBLZXlDb2RlID0ge1xyXG4gICAgICAgICAgICByZXByZXNlbnRhdGlvbiA6IFwiQ2xpY2tcIixcclxuICAgICAgICAgICAgZXZDb2RlIDogXCJDbGlja1wiLFxyXG4gICAgICAgICAgICBuYW1lIDogXCJDbGlja1wiXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgbGV0IHByb21pc2UgPSBwcm9taXNlU3RhY2suc2hpZnQoKTtcclxuICAgICAgICBpZiAocHJvbWlzZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcHJvbWlzZShrZXlDb2RlKTtcclxuICAgICAgICAgICAgcHJvbWlzZU9yaWdpbmFsU3RhY2suc2hpZnQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAvL2V2ZW50LnByZXZlbnREZWZhdWx0KCk7IFRoaXMgZnVja3MgdXAgYnJvd3NlciBjb250cm9sLiBMZXQncyBqdXN0IGFzc3VtZSB0aGF0IHRoaXMgaXMgYWx3YXlzIGdvaW5nIHRvIGJlIHRoZSBsYXN0IHRoaW5nIHRvIGNhdGNoIGEga2V5LlxyXG4gICAgICAgIGxldCBrZXlDb2RlID0gY3JlYXRlS2V5Q29kZShldmVudCk7XHJcblxyXG4gICAgICAgIGxldCBwcm9taXNlID0gcHJvbWlzZVN0YWNrLnNoaWZ0KCk7XHJcbiAgICAgICAgaWYgKHByb21pc2UgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHByb21pc2Uoa2V5Q29kZSk7XHJcbiAgICAgICAgICAgIHByb21pc2VPcmlnaW5hbFN0YWNrLnNoaWZ0KCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChrZXlDb2RlLmV2Q29kZSA9PSBzY3JvbGxLZXlDb2RlLmdldFZhbHVlKCkuZXZDb2RlKSB7XHJcbiAgICAgICAgICAgIEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlci5zY3JvbGxTcGFjZSgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIGlmIChrZXlDb2RlLmV2Q29kZSA9PSBpbWFnZUtleUNvZGUuZ2V0VmFsdWUoKS5ldkNvZGUpIHtcclxuICAgICAgICAgICAgaWYgKFNheUltYWdlLmltYWdlVmlld2VyLnN0eWxlLmRpc3BsYXkgPT0gXCJibG9ja1wiKSB7XHJcbiAgICAgICAgICAgICAgICBTYXlJbWFnZS5pbWFnZVZpZXdlci5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgaW1hZ2VzID0gRWxlbWVudHMuQ3VycmVudFR1cm5IYW5kbGVyLmN1cnJlbnRUdXJuVGFiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJjb250ZW50SW1hZ2VcIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW1hZ2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAoPEhUTUxFbGVtZW50PiBpbWFnZXNbaW1hZ2VzLmxlbmd0aCAtIDFdKS5jbGljaygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBlbGU7XHJcblxyXG4gICAgICAgIEVsZW1lbnRzLmdldExpbmtFbGVtZW50cygpLnNvbWUoKGVsZW1lbnQgOiBIVE1MRWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQga2V5YWJsZXMgPSBlbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJrZXlhYmxlXCIpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleWFibGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKDxIVE1MRWxlbWVudD4ga2V5YWJsZXNbaV0pLmRhdGFzZXRbJ3Nob3J0Y3V0Y29kZSddID09IGtleUNvZGUuZXZDb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlID0ga2V5YWJsZXNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoZWxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBlbGUuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gY3JlYXRlS2V5Q29kZXMgKGNvZGVzIDogQXJyYXk8c3RyaW5nPiwga2V5cyA6IEFycmF5PHN0cmluZz4sIG1vZHM/IDogQXJyYXk8Ym9vbGVhbj4pIHtcclxuICAgICAgICBsZXQgYXJyID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgbW9kID0gMDsgbW9kIDwgNDsgbW9kKyspIHtcclxuICAgICAgICAgICAgaWYgKG1vZCA9PSAwIHx8IG1vZHNbbW9kXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBrZXlzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGtleXNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGV2Q29kZSA9IGNvZGVzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtb2QgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gXCJTaGlmdCArIFwiICsgbmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZDb2RlID0gXCJTaFwiICsgZXZDb2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXByZXNlbnRhdGlvbiA9IFwiU1wiICsgcmVwcmVzZW50YXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtb2QgPT0gMikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gXCJBbHQgKyBcIiArIG5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2Q29kZSA9IFwiQWxcIiArIGV2Q29kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVwcmVzZW50YXRpb24gPSBcIkFcIiArIHJlcHJlc2VudGF0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAobW9kID09IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IFwiQ29udHJvbCArIFwiICsgbmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZDb2RlID0gXCJDdFwiICsgZXZDb2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXByZXNlbnRhdGlvbiA9IFwiQ1wiICsgcmVwcmVzZW50YXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBrZXlDb2RlOiBLZXlDb2RlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBldkNvZGU6IGV2Q29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVwcmVzZW50YXRpb246IHJlcHJlc2VudGF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lIDogbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgYXJyLnB1c2goa2V5Q29kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFycjtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgdmFyIHNjcm9sbEtleUNvZGUgPSBuZXcgU3RvcmVkTWVtb3J5KFwic2Nyb2xsS2V5Q29kZVwiLCA8S2V5Q29kZT4ge1xyXG4gICAgICAgIGV2Q29kZSA6IFwiU3BhY2VcIixcclxuICAgICAgICByZXByZXNlbnRhdGlvbiA6IFwiU3BhY2VcIlxyXG4gICAgfSk7XHJcblxyXG4gICAgZXhwb3J0IHZhciBpbWFnZUtleUNvZGUgPSBuZXcgU3RvcmVkTWVtb3J5KFwiaW1hZ2VLZXlDb2RlXCIsIDxLZXlDb2RlPiB7XHJcbiAgICAgICAgZXZDb2RlIDogXCJLZXlJXCIsXHJcbiAgICAgICAgcmVwcmVzZW50YXRpb24gOiBcIklcIlxyXG4gICAgfSk7XHJcblxyXG4gICAgZXhwb3J0IHZhciBrZXlDb2RlczEgPSBuZXcgU3RvcmVkTWVtb3J5KFxyXG4gICAgICAgIFwia2V5Q29kZXNSb29tXCIsXHJcbiAgICAgICAgY3JlYXRlS2V5Q29kZXMoIFtcIkRpZ2l0MVwiLCBcIkRpZ2l0MlwiLCBcIkRpZ2l0M1wiLCBcIkRpZ2l0NFwiLCBcIkRpZ2l0NVwiXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcIjFcIiwgXCIyXCIsIFwiM1wiLCBcIjRcIiwgXCI1XCJdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZV0pXHJcbiAgICApO1xyXG5cclxuICAgIGV4cG9ydCB2YXIga2V5Q29kZXMyID0gbmV3IFN0b3JlZE1lbW9yeShcclxuICAgICAgICBcImtleUNvZGVzQWN0aW9uc1wiLFxyXG4gICAgICAgIGNyZWF0ZUtleUNvZGVzKCBbXCJLZXlRXCIsIFwiS2V5V1wiLCBcIktleUVcIiwgXCJLZXlSXCIsIFwiS2V5VFwiXSxcclxuICAgICAgICAgICAgW1wiUVwiLCBcIldcIiwgXCJFXCIsIFwiUlwiLCBcIlRcIl0sXHJcbiAgICAgICAgICAgIFt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlXSlcclxuICAgICk7XHJcblxyXG5cclxuXHJcbiAgICBleHBvcnQgdmFyIGtleUNvZGVzMyA9IG5ldyBTdG9yZWRNZW1vcnkoXHJcbiAgICAgICAgXCJrZXlDb2Rlc0dsb2JhbFwiLFxyXG4gICAgICAgIGNyZWF0ZUtleUNvZGVzKCBbXCJLZXlGXCIsIFwiS2V5VlwiLCBcIktleUdcIiwgXCJLZXlCXCJdLFxyXG4gICAgICAgICAgICBbXCJGXCIsIFwiVlwiLCBcIkdcIiwgXCJCXCJdLFxyXG4gICAgICAgICAgICBbdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZV0pXHJcbiAgICApO1xyXG5cclxuICAgIGV4cG9ydCB2YXIga2V5Q29kZU5vcnRoID0gbmV3IFN0b3JlZE1lbW9yeShcclxuICAgICAgICBcImtleUNvZGVOb3J0aFwiLFxyXG4gICAgICAgIDxLZXlDb2RlPiB7XHJcbiAgICAgICAgICAgIGV2Q29kZSA6IFwiS2V5U1wiLFxyXG4gICAgICAgICAgICByZXByZXNlbnRhdGlvbiA6IFwiU1wiXHJcbiAgICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBleHBvcnQgdmFyIGtleUNvZGVFYXN0ID0gbmV3IFN0b3JlZE1lbW9yeShcclxuICAgICAgICBcImtleUNvZGVFYXN0XCIsXHJcbiAgICAgICAgPEtleUNvZGU+IHtcclxuICAgICAgICAgICAgZXZDb2RlIDogXCJLZXlDXCIsXHJcbiAgICAgICAgICAgIHJlcHJlc2VudGF0aW9uIDogXCJDXCJcclxuICAgICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIGV4cG9ydCB2YXIga2V5Q29kZVNvdXRoID0gbmV3IFN0b3JlZE1lbW9yeShcclxuICAgICAgICBcImtleUNvZGVTb3V0aFwiLFxyXG4gICAgICAgIDxLZXlDb2RlPiB7XHJcbiAgICAgICAgICAgIGV2Q29kZSA6IFwiS2V5WFwiLFxyXG4gICAgICAgICAgICByZXByZXNlbnRhdGlvbiA6IFwiWFwiXHJcbiAgICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBleHBvcnQgdmFyIGtleUNvZGVXZXN0ID0gbmV3IFN0b3JlZE1lbW9yeShcclxuICAgICAgICBcImtleUNvZGVXZXN0XCIsXHJcbiAgICAgICAgPEtleUNvZGU+IHtcclxuICAgICAgICAgICAgZXZDb2RlIDogXCJLZXlaXCIsXHJcbiAgICAgICAgICAgIHJlcHJlc2VudGF0aW9uIDogXCJaXCJcclxuICAgICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIGV4cG9ydCB2YXIga2V5Q29kZVVwID0gbmV3IFN0b3JlZE1lbW9yeShcclxuICAgICAgICBcImtleUNvZGVVcFwiLFxyXG4gICAgICAgIDxLZXlDb2RlPiB7XHJcbiAgICAgICAgICAgIGV2Q29kZSA6IFwiS2V5QVwiLFxyXG4gICAgICAgICAgICByZXByZXNlbnRhdGlvbiA6IFwiQVwiXHJcbiAgICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBleHBvcnQgdmFyIGtleUNvZGVEb3duID0gbmV3IFN0b3JlZE1lbW9yeShcclxuICAgICAgICBcImtleUNvZGVEb3duXCIsXHJcbiAgICAgICAgPEtleUNvZGU+IHtcclxuICAgICAgICAgICAgZXZDb2RlIDogXCJLZXlEXCIsXHJcbiAgICAgICAgICAgIHJlcHJlc2VudGF0aW9uIDogXCJEXCJcclxuICAgICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIC8vIFRPRE86IE1ha2UgdGhpcyBzYWZlciBieSBjcmVhdGluZyBpdCB1c2luZyBSb29tLkRJUkVDVElPTlMuXHJcbiAgICB2YXIgZGlyZWN0aW9uQ29kZUJ5SW5kZXggPSBba2V5Q29kZU5vcnRoLCB1bmRlZmluZWQsIGtleUNvZGVFYXN0LCB1bmRlZmluZWQsXHJcbiAgICAgICAga2V5Q29kZVNvdXRoLCB1bmRlZmluZWQsIGtleUNvZGVXZXN0LCB1bmRlZmluZWQsIGtleUNvZGVVcCwga2V5Q29kZURvd25dO1xyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBnZXREaXJlY3Rpb25Db2RlIChkaXJlY3Rpb24gOiBEaXJlY3Rpb24pIHtcclxuICAgICAgICByZXR1cm4gZ2V0RGlyZWN0aW9uQ29kZUJ5SW5kZXgoUm9vbS5ESVJFQ1RJT05TLmluZGV4T2YoZGlyZWN0aW9uKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdGlvbkNvZGVCeUluZGV4IChpbmRleCA6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiBkaXJlY3Rpb25Db2RlQnlJbmRleFtpbmRleF0uZ2V0VmFsdWUoKTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgdmFyIGF2YWlsYWJsZTEgOiBBcnJheTxLZXlDb2RlPiA9IFtdO1xyXG4gICAgZXhwb3J0IHZhciBhdmFpbGFibGUyIDogQXJyYXk8S2V5Q29kZT4gPSBbXTtcclxuICAgIGV4cG9ydCB2YXIgYXZhaWxhYmxlMyA6IEFycmF5PEtleUNvZGU+ID0gW107XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHJlc2V0ICgpIHtcclxuICAgICAgICBhdmFpbGFibGUxID0ga2V5Q29kZXMxLmdldFZhbHVlKCkuc2xpY2UoKTtcclxuICAgICAgICBhdmFpbGFibGUyID0ga2V5Q29kZXMyLmdldFZhbHVlKCkuc2xpY2UoKTtcclxuICAgICAgICBhdmFpbGFibGUzID0ga2V5Q29kZXMzLmdldFZhbHVlKCkuc2xpY2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc2hvd0tleXMgPSBuZXcgU3RvcmVkTWVtb3J5KFwiU2hvd0tleXNcIiwgIUVsZW1lbnRzLmlzTW9iaWxlKTtcclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gYXBwbHlDb2RlIChlbGVtZW50IDogSFRNTEVsZW1lbnQsIGNvZGUgOiBLZXlDb2RlKSB7XHJcbiAgICAgICAgaWYgKGNvZGUgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZShlbGVtZW50LmRhdGFzZXRbJ3Nob3J0Y3V0J10pO1xyXG4gICAgICAgICAgICBkZWxldGUoZWxlbWVudC5kYXRhc2V0WydzaG9ydGN1dGNvZGUnXSk7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcImtleWFibGVcIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZWxlbWVudC5kYXRhc2V0WydzaG9ydGN1dGNvZGUnXSA9IGNvZGUuZXZDb2RlO1xyXG4gICAgICAgICAgICBpZiAoc2hvd0tleXMuZ2V0VmFsdWUoKSkge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5kYXRhc2V0WydzaG9ydGN1dCddID0gY29kZS5yZXByZXNlbnRhdGlvbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJrZXlhYmxlXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZ2V0Rmlyc3RLZXlDb2RlICgpIHtcclxuICAgICAgICBsZXQgY2hvc2VuID0gYXZhaWxhYmxlMS5sZW5ndGggPiAwID8gYXZhaWxhYmxlMSA6XHJcbiAgICAgICAgICAgIGF2YWlsYWJsZTIubGVuZ3RoID4gMCA/IGF2YWlsYWJsZTIgOlxyXG4gICAgICAgICAgICAgICAgYXZhaWxhYmxlMy5sZW5ndGggPiAwID8gYXZhaWxhYmxlMyA6IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAoY2hvc2VuICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2hvc2VuLnNoaWZ0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGdldFNlY29uZEtleUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBjaG9zZW4gPSBhdmFpbGFibGUyLmxlbmd0aCA+IDAgPyBhdmFpbGFibGUyIDpcclxuICAgICAgICAgICAgYXZhaWxhYmxlMy5sZW5ndGggPiAwID8gYXZhaWxhYmxlMyA6IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAoY2hvc2VuICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2hvc2VuLnNwbGljZSgwLCAxKVswXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZ2V0VGhpcmRLZXlDb2RlICgpIHtcclxuICAgICAgICBsZXQgY2hvc2VuID0gYXZhaWxhYmxlMy5sZW5ndGggPiAwID8gYXZhaWxhYmxlMyA6IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAoY2hvc2VuICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2hvc2VuLnNwbGljZSgwLCAxKVswXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgYSBwcm9taXNlIG9mIGEga2V5IHByZXNzLlxyXG4gICAgICogSWYgYWZ0ZXIgdGltZW91dCBzZWNvbmRzIGEga2V5IHdhcyBub3QgcHJlc3NlZCwgdGhlIHByb21pc2UgZmFpbHMuXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdGltZW91dFxyXG4gICAgICovXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZ2V0TmV4dEtleSAodGltZW91dD8gOiBudW1iZXIpIDogUHJvbWlzZTxLZXlDb2RlPiB7XHJcbiAgICAgICAgbGV0IHRpbWVvdXROdW1iZXI7XHJcbiAgICAgICAgbGV0IHByb21pc2UgPSA8UHJvbWlzZTxLZXlDb2RlPj4gKG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgcHJvbWlzZVN0YWNrLnB1c2gocmVzb2x2ZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGltZW91dCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHRpbWVvdXROdW1iZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBLZXlIYW5kbGVyLnJlamVjdFByb21pc2UocmVzb2x2ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7XHJcbiAgICAgICAgICAgICAgICB9LCB0aW1lb3V0ICogMTAwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgIHByb21pc2UudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0TnVtYmVyKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHN0b3BHaXZpbmdOZXh0S2V5IChvcmlnaW5hbFByb21pc2UgOiBQcm9taXNlPEtleUNvZGU+KSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gcHJvbWlzZU9yaWdpbmFsU3RhY2suaW5kZXhPZihvcmlnaW5hbFByb21pc2UpO1xyXG4gICAgICAgIGlmIChpbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgICByZWplY3RQcm9taXNlKHByb21pc2VTdGFja1tpbmRleF0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9TYXkudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vQ29udHJvbHMvTW9kdWxlcy9LZXlIYW5kbGVyLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uLy4uL1dvcmxkL01hY2hpbmVCZWdpbnMudHNcIiAvPlxyXG5jbGFzcyBTYXlJbWFnZSBpbXBsZW1lbnRzIFByaW50YWJsZUVsZW1lbnQge1xyXG4gICAgcHVibGljIHN0YXRpYyBpbWFnZU5hbWVzIDogQXJyYXk8U2F5SW1hZ2U+ID0gW107XHJcbiAgICBwdWJsaWMgc3RhdGljIGxvYWRUaW1lQ2hlY2sgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgc3RhdGljIGltYWdlVmlld2VyIDogSFRNTEVsZW1lbnQgPSA8SFRNTEVsZW1lbnQ+IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaW1hZ2VWaWV3ZXJcIik7XHJcbiAgICBwcml2YXRlIGltZ05hbWUgOiBzdHJpbmc7XHJcblxyXG4gICAgcHJpdmF0ZSBpc0ltYWdlRGVmaW5lZCAoKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcnVsZXMgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1tpXVsncnVsZXMnXSB8fCBkb2N1bWVudC5zdHlsZVNoZWV0c1tpXVsnY3NzUnVsZXMnXTtcclxuICAgICAgICAgICAgICAgIGZvcih2YXIgeCBpbiBydWxlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHR5cGVvZiBydWxlc1t4XS5zZWxlY3RvclRleHQgPT0gJ3N0cmluZycgJiYgcnVsZXNbeF0uc2VsZWN0b3JUZXh0ID09IFwiLlwiICsgdGhpcy5pbWdOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJDYW4ndCBjaGVjayBmb3IgdW5kZWZpbmVkIGltYWdlcy5cIik7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGltZ05hbWUgOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmltZ05hbWUgPSBpbWdOYW1lO1xyXG5cclxuICAgICAgICBpZiAoIVNheUltYWdlLmxvYWRUaW1lQ2hlY2sgJiYgU2F5SW1hZ2UuaW1hZ2VOYW1lcy5pbmRleE9mKHRoaXMpID09IC0xKSB7XHJcbiAgICAgICAgICAgIFNheUltYWdlLmltYWdlTmFtZXMucHVzaCh0aGlzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEltYWdlRWxlbWVudCAoKSA6IEVsZW1lbnQge1xyXG4gICAgICAgIGxldCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzSW1hZ2VEZWZpbmVkKCkpIHtcclxuICAgICAgICAgICAgaW1nLmNsYXNzTGlzdC5hZGQodGhpcy5pbWdOYW1lKTtcclxuICAgICAgICAgICAgaW1nLmNsYXNzTGlzdC5hZGQoXCJjb250ZW50SW1hZ2VcIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaW1nLmNsYXNzTGlzdC5hZGQoXCJlcnJvclwiKTtcclxuICAgICAgICAgICAgaW1nLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiSW1hZ2UgXFxcIlwiICsgdGhpcy5pbWdOYW1lICsgXCJcXFwiIG5vdCBmb3VuZC5cIikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaW1nLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIFNheUltYWdlLnNob3dJblZpZXdlcih0aGlzKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgQ29udHJvbHMuS2V5SGFuZGxlci5hcHBseUNvZGUoaW1nLCBDb250cm9scy5LZXlIYW5kbGVyLmltYWdlS2V5Q29kZS5nZXRWYWx1ZSgpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGltZztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0UHJpbnRlZEVsZW1lbnQgKCkge1xyXG4gICAgICAgIHJldHVybiBbdGhpcy5nZXRJbWFnZUVsZW1lbnQoKV07XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBkb0xvYWRUaW1lQ2hlY2soKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBTYXlJbWFnZS5pbWFnZU5hbWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBpbWFnZSA9IFNheUltYWdlLmltYWdlTmFtZXNbaV07XHJcbiAgICAgICAgICAgIGlmICghaW1hZ2UuaXNJbWFnZURlZmluZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKFNldHRpbmdzLmhhcmREZWJ1Zykge1xyXG4gICAgICAgICAgICAgICAgICAgIEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlci5wcmludEFzRXJyb3IoXCJJbWFnZSBcXFwiXCIgKyBpbWFnZS5pbWdOYW1lICsgXCJcXFwiIHdhcyBub3QgZm91bmQuXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkltYWdlIFxcXCJcIiArIGltYWdlLmltZ05hbWUgKyBcIlxcXCIgd2FzIG5vdCBmb3VuZC5cIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgU2F5SW1hZ2UubG9hZFRpbWVDaGVjayA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBzaG93SW5WaWV3ZXIgKGltYWdlIDogU2F5SW1hZ2UpIHtcclxuICAgICAgICBpZiAoIShTYXlJbWFnZS5pbWFnZVZpZXdlci5zdHlsZS5kaXNwbGF5ID09ICdibG9jaycpKSB7XHJcbiAgICAgICAgICAgIFNheUltYWdlLmltYWdlVmlld2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBTYXlJbWFnZS5pbWFnZVZpZXdlci5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBTYXlJbWFnZS5pbWFnZVZpZXdlci5jbGFzc05hbWUgPSBpbWFnZS5pbWdOYW1lO1xyXG4gICAgICAgICAgICBTYXlJbWFnZS5pbWFnZVZpZXdlci5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIFNheUltYWdlLmltYWdlVmlld2VyLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG59XHJcblxyXG5tb2R1bGUgTWFjaGluZUJlZ2lucyB7XHJcbiAgICBleHBvcnQgbGV0IEltYWdlTG9hZFRpbWVDaGVjayA9IE1hY2hpbmVCZWdpbnMucnVsZWJvb2suY3JlYXRlQW5kQWRkUnVsZSh7XHJcbiAgICAgICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfSElHSEVTVCwgLy8gV2Ugd2FudCB0aGlzIHRvIHByaW50IHRvIHRoZSB0b3Agb2YgdGhlIGNvbnNvbGVcclxuICAgICAgICBuYW1lIDogXCJDaGVjayBmb3IgdW5kZWZpbmVkIGltYWdlc1wiLFxyXG4gICAgICAgIGNvZGUgOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBTYXlJbWFnZS5kb0xvYWRUaW1lQ2hlY2soKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiQ2FuJ3QgY2hlY2sgZm9yIHVuZGVmaW5lZCBpbWFnZXMuXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vV29ybGQvQ2xhc3Nlcy9SdWxlYm9vay50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9Xb3JsZC9DbGFzc2VzL1J1bGUudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiU2F5L09uZU9mLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlNheS9TYXlJbWFnZS50c1wiIC8+XHJcblxyXG5pbnRlcmZhY2UgUHJpbnRhYmxlIHtcclxuICAgIGdldFByaW50ZWROYW1lICgpIDogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgUHJpbnRhYmxlRWxlbWVudCB7XHJcbiAgICBnZXRQcmludGVkRWxlbWVudCAoKSA6IEFycmF5PEVsZW1lbnQ+O1xyXG59XHJcblxyXG5pbnRlcmZhY2UgU2F5Tm91biB7XHJcbiAgICBzYXkgOiBTYXk7XHJcbiAgICBub3VuIDogYW55O1xyXG59XHJcblxyXG5jbGFzcyBTYXlhYmxlT2JqZWN0IHt9XHJcblxyXG5jbGFzcyBTYXkge1xyXG4gICAgLy8gVE9ETzogU2VwYXJhdGUgb3duIHNlcXVlbmNlIGZyb20gcHJvY2Vzc2luZyBxdWV1ZS4gVGhpcyB3YXkgYSBTYXkgd2l0aCBmdW5jdGlvbnMvb3RoZXIgc2F5cyBjYW4gYmUgcmV1dGlsaXplZCB3aXRoIGZyZXNoIHZhbHVlcy5cclxuICAgIHB1YmxpYyBzZXF1ZW5jZSA6IEFycmF5IDxPYmplY3Q+ID0gW107XHJcbiAgICBwdWJsaWMgc2tpcGJyZWFrcyA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIExJTkVfQlJFQUsgOiBPYmplY3QgPSBuZXcgU2F5YWJsZU9iamVjdCgpO1xyXG4gICAgcHVibGljIHN0YXRpYyBQQVJBR1JBUEhfQlJFQUsgOiBPYmplY3QgPSBuZXcgU2F5YWJsZU9iamVjdCgpO1xyXG4gICAgcHVibGljIHN0YXRpYyBSVU5fUEFSQUdSQVBIIDogT2JqZWN0ID0gbmV3IFNheWFibGVPYmplY3QoKTtcclxuICAgIHB1YmxpYyBzdGF0aWMgUlVOX1BBUkFHUkFQSF9PRkYgOiBPYmplY3QgPSBuZXcgU2F5YWJsZU9iamVjdCgpO1xyXG4gICAgcHVibGljIHN0YXRpYyBDRU5URVJFRCA6IE9iamVjdCA9IG5ldyBTYXlhYmxlT2JqZWN0KCk7XHJcbiAgICBwdWJsaWMgc3RhdGljIGIgOiBPYmplY3QgPSBuZXcgU2F5YWJsZU9iamVjdCgpO1xyXG4gICAgcHVibGljIHN0YXRpYyBET19QQVJBR1JBUEhfQlJFQUsgPSBuZXcgU2F5YWJsZU9iamVjdCgpO1xyXG4gICAgcHVibGljIHN0YXRpYyBET19MSU5FX0JSRUFLID0gbmV3IFNheWFibGVPYmplY3QoKTtcclxuICAgIHB1YmxpYyBzdGF0aWMgQ09DSyA9IG5ldyBTYXlhYmxlT2JqZWN0KCk7XHJcbiAgICBwdWJsaWMgc3RhdGljIFBVU1NZID0gbmV3IFNheWFibGVPYmplY3QoKTtcclxuXHJcbiAgICBwcml2YXRlIGNlbnRlcmVkIDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoLi4ub2Jqcykge1xyXG4gICAgICAgIHRoaXMuYWRkKC4uLm9ianMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZGQgKC4uLm9ianMgOiBBcnJheTxTYXkgfCBPbmVPZiB8IE9iamVjdCB8IFByaW50YWJsZSB8IHN0cmluZyB8IG51bWJlciB8IFN0cmluZyB8ICgoc2F5IDogU2F5KSA9PiBzdHJpbmcpPikge1xyXG4gICAgICAgIHRoaXMuc2VxdWVuY2UucHVzaCguLi5vYmpzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVtb3ZlICguLi5vYmpzKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmpzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMuc2VxdWVuY2UuaW5kZXhPZihvYmpzW2ldKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VxdWVuY2Uuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNFbXB0eSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VxdWVuY2UubGVuZ3RoIDwgMTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcGFyYWdyYXBocyA6IEFycmF5PEFycmF5PEVsZW1lbnQgfCBUZXh0Pj47XHJcbiAgICBwdWJsaWMgY3VycmVudFBhcmFncmFwaCA6IEFycmF5PEVsZW1lbnQgfCBUZXh0PjtcclxuICAgIHB1YmxpYyBzZXF1ZW5jZVJ1bm5lciA6IG51bWJlcjtcclxuXHJcbiAgICAvLyBUT0RPOiBDcmVhdGUgYSBzaW5nbGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBlbGVtZW50IG9mIGFueXRoaW5nXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0VGV4dE9mIChpbmRleCA6IG51bWJlciwgc2VxIDogYW55KSA6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgbGV0IGVsZW1lbnRzID0gYXdhaXQgdGhpcy5nZXRFbGVtZW50Rm9yKGluZGV4LCBzZXEpO1xyXG5cclxuICAgICAgICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZWxlbWVudHNbaV0gIT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgICAgICAgICAgZGl2LmFwcGVuZENoaWxkKGVsZW1lbnRzW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGl2LmlubmVyVGV4dDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZG9MaW5lQnJlYWsgKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRQYXJhZ3JhcGgubGVuZ3RoID4gMCAmJiAhdGhpcy5za2lwYnJlYWtzKSB7XHJcbiAgICAgICAgICAgIGxldCBiciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJiclwiKTtcclxuICAgICAgICAgICAgYnIuY2xhc3NMaXN0LmFkZChcImxpbmVicmVha1wiKTtcclxuICAgICAgICAgICAgbGV0IHRpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XHJcbiAgICAgICAgICAgIHRpLmNsYXNzTGlzdC5hZGQoXCJ0ZXh0SW5kZW50ZXJcIik7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhcmFncmFwaC5wdXNoKGJyLCB0aSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkb1BhcmFncmFwaEJyZWFrICgpIHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFyYWdyYXBoLmxlbmd0aCA+IDAgJiYgIXRoaXMuc2tpcGJyZWFrcykge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmFncmFwaHMucHVzaCh0aGlzLmN1cnJlbnRQYXJhZ3JhcGgpO1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYXJhZ3JhcGggPSBbXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFBhcmFncmFwaHMgKCkgOiBQcm9taXNlPEFycmF5PEFycmF5PEVsZW1lbnR8VGV4dD4+PiB7XHJcbiAgICAgICAgdGhpcy5wYXJhZ3JhcGhzID0gW107XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFyYWdyYXBoID0gW107XHJcbiAgICAgICAgdGhpcy5za2lwYnJlYWtzID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGZvciAodGhpcy5zZXF1ZW5jZVJ1bm5lciA9IDA7IHRoaXMuc2VxdWVuY2VSdW5uZXIgPCB0aGlzLnNlcXVlbmNlLmxlbmd0aDsgdGhpcy5zZXF1ZW5jZVJ1bm5lcisrKSB7XHJcbiAgICAgICAgICAgIGxldCBzZXEgPSB0aGlzLnNlcXVlbmNlW3RoaXMuc2VxdWVuY2VSdW5uZXJdO1xyXG4gICAgICAgICAgICBpZiAoc2VxIGluc3RhbmNlb2YgT25lT2YpIHtcclxuICAgICAgICAgICAgICAgIHNlcSA9IHNlcS5nZXRPbmUoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHNlcSA9PSBTYXkuQ0VOVEVSRUQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q2VudGVyZWQodHJ1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VxID09IFNheS5iKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYm9sZE9iamVjdHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnNlcXVlbmNlUnVubmVyICsgMTsgaSA8IHRoaXMuc2VxdWVuY2UubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2FuZGlkYXRlID0gdGhpcy5zZXF1ZW5jZVJ1bm5lcltpXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09IFNheS5iKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VxdWVuY2Uuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib2xkT2JqZWN0cy5wdXNoKHRoaXMuc2VxdWVuY2Uuc3BsaWNlKGksIDEpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoYm9sZE9iamVjdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBib2xkID0gbmV3IFNheUJvbGQoLi4uYm9sZE9iamVjdHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VxdWVuY2Uuc3BsaWNlKHRoaXMuc2VxdWVuY2VSdW5uZXIgKyAxLCAwLCBib2xkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChzZXEgPT0gU2F5LkNPQ0spIHtcclxuICAgICAgICAgICAgICAgIGlmIChIdW1hbm9pZFBlbmlzICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb2NrID0gSHVtYW5vaWRQZW5pcy5nZXRTeW5vbnltKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50UGFyYWdyYXBoLnB1c2goZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY29jaykpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gIGVsc2UgaWYgKHNlcSA9PSBTYXkuUFVTU1kpIHtcclxuICAgICAgICAgICAgICAgIGlmIChIdW1hbm9pZFZhZ2luYSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdmFnaW5hID0gSHVtYW5vaWRWYWdpbmEuZ2V0U3lub255bSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFBhcmFncmFwaC5wdXNoKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHZhZ2luYSkpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VxID09IFNheS5MSU5FX0JSRUFLKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRvTGluZUJyZWFrKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VxID09IFNheS5QQVJBR1JBUEhfQlJFQUspIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZG9QYXJhZ3JhcGhCcmVhaygpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNlcSA9PSBTYXkuUlVOX1BBUkFHUkFQSCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5za2lwYnJlYWtzID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChzZXEgPT0gU2F5LlJVTl9QQVJBR1JBUEhfT0ZGKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNraXBicmVha3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc2VxID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICAgICAgbGV0IGZPYmogPSAoPChzOiBTYXkpID0+IGFueT4gc2VxKSh0aGlzKTtcclxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZPYmopKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgayA9IGZPYmoubGVuZ3RoIC0gMTsgayA+PSAwOyBrLS0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXF1ZW5jZS5zcGxpY2UodGhpcy5zZXF1ZW5jZVJ1bm5lciArIDEsIDAsIGZPYmpba10pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZk9iaiAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlcXVlbmNlLnNwbGljZSh0aGlzLnNlcXVlbmNlUnVubmVyICsgMSwgMCwgZk9iaik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlcXVlbmNlLnNwbGljZSh0aGlzLnNlcXVlbmNlUnVubmVyLCAxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VxdWVuY2VSdW5uZXItLTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChzZXEuY29uc3RydWN0b3IgPT0gdGhpcy5jb25zdHJ1Y3Rvcikge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgayA9ICg8U2F5PiBzZXEpLnNlcXVlbmNlLmxlbmd0aCAtIDE7IGsgPj0gMDsgay0tKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXF1ZW5jZS5zcGxpY2UodGhpcy5zZXF1ZW5jZVJ1bm5lciArIDEsIDAsICg8U2F5PiBzZXEpLnNlcXVlbmNlW2tdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuc2VxdWVuY2Uuc3BsaWNlKHRoaXMuc2VxdWVuY2VSdW5uZXIsIDEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXF1ZW5jZVJ1bm5lci0tO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNlcSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGxldCBlbGVtZW50cyA9IGF3YWl0IHRoaXMuZ2V0RWxlbWVudEZvcih0aGlzLnNlcXVlbmNlUnVubmVyLCBzZXEpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXSA9PT0gU2F5LkRPX0xJTkVfQlJFQUspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb0xpbmVCcmVhaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudHNbaV0gPT09IFNheS5ET19QQVJBR1JBUEhfQlJFQUspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb1BhcmFncmFwaEJyZWFrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50UGFyYWdyYXBoLnB1c2goZWxlbWVudHNbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIGxpbmUgYnJlYWsgKyB0ZXh0IGluZGVudGVyIGlmIHRoZXkgYXJlIHRoZSBsYXN0IGluIHRoZSBzYXlcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFyYWdyYXBoLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5wYXJhZ3JhcGhzLnB1c2godGhpcy5jdXJyZW50UGFyYWdyYXBoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnBhcmFncmFwaHM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb3JkIEhhdmUgbWVyY3ksIEkgd2lzaCB0byBuZXZlciBoYXZlIHRvIGRlYnVnIHRoaXMgcGllY2Ugb2YgZ29kLlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XHJcbiAgICAgKiBAcGFyYW0ge1NheSB8IE9uZU9mIHwgT2JqZWN0IHwgUHJpbnRhYmxlIHwgc3RyaW5nIHwgbnVtYmVyIHwgKChzYXk6IFNheSkgPT4gc3RyaW5nKSB8ICgoc2F5OiBTYXkpID0+IFByb21pc2U8c3RyaW5nPikgfCBFbGVtZW50IHwgVGV4dH0gb2JqXHJcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTxFbGVtZW50IHwgVGV4dD4+fVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RWxlbWVudEZvciAoaW5kZXggOiBudW1iZXIsIG9iaiA6IFNheSB8IE9uZU9mIHwgT2JqZWN0IHwgUHJpbnRhYmxlIHwgc3RyaW5nIHwgbnVtYmVyIHwgU3RyaW5nIHwgKChzYXkgOiBTYXkpID0+IHN0cmluZykgfCAoKHNheSA6IFNheSkgPT4gUHJvbWlzZTxzdHJpbmc+KSB8IEVsZW1lbnQgfCBUZXh0KSA6IFByb21pc2U8QXJyYXk8RWxlbWVudHxUZXh0Pj4ge1xyXG4gICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgIG9iaiA9IGF3YWl0IG9iajtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBvYmogPT0gXCJzdHJpbmdcIiB8fCBvYmogaW5zdGFuY2VvZiBTdHJpbmcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSg8c3RyaW5nPiBvYmopXTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT0gXCJudW1iZXJcIiB8fCBvYmogaW5zdGFuY2VvZiBOdW1iZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgocGFyc2VGbG9hdCgoPG51bWJlcj4gb2JqKS50b0ZpeGVkKDIpKS8xKS50b1N0cmluZygpKV07XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICBsZXQgZWxlbWVudHMgPSBhd2FpdCB0aGlzLmdldEVsZW1lbnRGb3IoLTEsICg8YW55PiBvYmopKHRoaXMpKTtcclxuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzO1xyXG4gICAgICAgIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgU2F5SW1hZ2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtvYmouZ2V0SW1hZ2VFbGVtZW50KCldO1xyXG4gICAgICAgIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgU2F5TGVmdFJpZ2h0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoYXdhaXQgb2JqLmdldFB1cmVFbGVtZW50cygpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIFNheSkge1xyXG4gICAgICAgICAgICBsZXQgZWxlbWVudHMgPSBhd2FpdCBvYmouZ2V0UHVyZUVsZW1lbnRzKHRoaXMpO1xyXG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudHM7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzUHJvcGVyRWxlbWVudChvYmopKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbPEVsZW1lbnQ+IG9ial07XHJcbiAgICAgICAgfSBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBPYmplY3QpIHtcclxuICAgICAgICAgICAgbGV0IGVsZW1lbnRzID0gYXdhaXQgdGhpcy5wcmludE5hbWUob2JqKTtcclxuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UHVyZUVsZW1lbnRzIChzYXk/IDogU2F5KSA6IFByb21pc2U8QXJyYXk8RWxlbWVudCB8IFRleHQ+PiB7XHJcbiAgICAgICAgbGV0IHBhcmFncmFwaHMgPSBhd2FpdCB0aGlzLmdldFBhcmFncmFwaHMoKTtcclxuICAgICAgICByZXR1cm4gcGFyYWdyYXBocy5sZW5ndGggPT0gMSA/IHBhcmFncmFwaHNbMF0gOiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBwYXJhZ3JhcGhzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0Q2VudGVyZWQgKGJvb2wgOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5jZW50ZXJlZCA9IGJvb2w7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldEhUTUwgKHRhZ05hbWUgOiBzdHJpbmcsIGNsYXNzTGlzdCA6IEFycmF5PHN0cmluZz4sIHNpbmdsZVBhcmFncmFwaD8gOiBib29sZWFuKSA6IFByb21pc2U8QXJyYXk8SFRNTEVsZW1lbnQ+PiB7XHJcbiAgICAgICAgbGV0IHBhcmFncmFwaHMgPSBhd2FpdCB0aGlzLmdldFBhcmFncmFwaHMoKTtcclxuXHJcbiAgICAgICAgLy8gUmVkdWNlIHRvIHNpbmdsZSBwYXJhZ3JhcGhcclxuICAgICAgICBpZiAoc2luZ2xlUGFyYWdyYXBoID09IHRydWUgJiYgcGFyYWdyYXBocy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHBhcmFncmFwaHMgPSBbQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgcGFyYWdyYXBocyldO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGVsZW1lbnRzID0gW107XHJcblxyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMCwgcGFyYWdyYXBoID0gcGFyYWdyYXBoc1tpXTsgcGFyYWdyYXBoICE9IHVuZGVmaW5lZDsgcGFyYWdyYXBoID0gcGFyYWdyYXBoc1srK2ldKSB7XHJcbiAgICAgICAgICAgIGxldCBwYXJlbnQgPSA8SFRNTEVsZW1lbnQ+IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChjbGFzc0xpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgcGFyZW50LmNsYXNzTGlzdC5hZGQoLi4uY2xhc3NMaXN0KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZm9yIChsZXQgayA9IDAsIGVsZSA9IHBhcmFncmFwaFtrXTsgZWxlIT0gdW5kZWZpbmVkOyBlbGUgPSBwYXJhZ3JhcGhbKytrXSkge1xyXG4gICAgICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxlbWVudHMucHVzaChwYXJlbnQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuY2VudGVyZWQpIHtcclxuICAgICAgICAgICAgICAgIHBhcmVudC5jbGFzc0xpc3QuYWRkKFwiY2VudGVyZWRcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBlbGVtZW50cztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0SFRNTENvbnRlbnQgKCkgOiBQcm9taXNlPEFycmF5PEhUTUxFbGVtZW50Pj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEhUTUwoXCJwXCIsIFtcImNvbnRlbnRcIl0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc1Byb3BlckVsZW1lbnQgKG8pIDogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgdHlwZW9mIE5vZGUgPT09IFwib2JqZWN0XCIgPyBvIGluc3RhbmNlb2YgTm9kZSA6XHJcbiAgICAgICAgICAgICAgICBvICYmIHR5cGVvZiBvID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvLm5vZGVUeXBlID09PSBcIm51bWJlclwiICYmIHR5cGVvZiBvLm5vZGVOYW1lPT09XCJzdHJpbmdcIlxyXG4gICAgICAgICkgfHwgKFxyXG4gICAgICAgICAgICB0eXBlb2YgSFRNTEVsZW1lbnQgPT09IFwib2JqZWN0XCIgPyBvIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgOiAvL0RPTTJcclxuICAgICAgICAgICAgICAgIG8gJiYgdHlwZW9mIG8gPT09IFwib2JqZWN0XCIgJiYgbyAhPT0gbnVsbCAmJiBvLm5vZGVUeXBlID09PSAxICYmIHR5cGVvZiBvLm5vZGVOYW1lPT09XCJzdHJpbmdcIlxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBiZWZvcmVQcmludGluZyA9IG5ldyBSdWxlYm9vazxhbnk+KFwiQmVmb3JlIHByaW50aW5nIHRoZSBuYW1lIG9mIHNvbWV0aGluZ1wiKTtcclxuICAgIHB1YmxpYyBzdGF0aWMgcHJpbnRpbmcgPSBuZXcgUnVsZWJvb2s8YW55PihcIlByaW50aW5nIHRoZSBuYW1lIG9mIHNvbWV0aGluZ1wiKTtcclxuICAgIHB1YmxpYyBzdGF0aWMgYWZ0ZXJQcmludGluZyA9IG5ldyBSdWxlYm9vazxhbnk+KFwiQWZ0ZXIgcHJpbnRpbmcgdGhlIG5hbWUgb2Ygc29tZXRoaW5nXCIpO1xyXG5cclxuICAgIHB1YmxpYyBjdXJyZW50Tm91biA6IGFueTtcclxuICAgIHB1YmxpYyBjdXJyZW50Tm91bkVsZW1lbnRzIDogQXJyYXk8RWxlbWVudCB8IFRleHQ+O1xyXG5cclxuICAgIHB1YmxpYyBhc3luYyBwcmludE5hbWUgKHRoaW5nIDogYW55KSA6IFByb21pc2U8QXJyYXk8RWxlbWVudCB8IFRleHQ+PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Tm91biA9IHRoaW5nO1xyXG4gICAgICAgIHRoaXMuY3VycmVudE5vdW5FbGVtZW50cyA9IFtdO1xyXG4gICAgICAgIGxldCBiZWZvcmUgPSBTYXkuYmVmb3JlUHJpbnRpbmcuZXhlY3V0ZSh7bm91biA6IHRoaXN9KTtcclxuICAgICAgICBhd2FpdCBiZWZvcmU7XHJcbiAgICAgICAgbGV0IHByaW50ID0gU2F5LnByaW50aW5nLmV4ZWN1dGUoe25vdW4gOiB0aGlzfSk7XHJcbiAgICAgICAgYXdhaXQgcHJpbnQ7XHJcbiAgICAgICAgbGV0IGFmdGVyID0gU2F5LmFmdGVyUHJpbnRpbmcuZXhlY3V0ZSh7bm91biA6IHRoaXN9KTtcclxuICAgICAgICBhd2FpdCBhZnRlcjtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm91bkVsZW1lbnRzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaGlzSGVyc0l0cyAodGFyZ2V0IDogVGhpbmcsIHN0YXJ0T2ZTZW50ZW5jZT8gOiBib29sZWFuKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBTYXlIaXNIZXJzSXRzKHRhcmdldCk7XHJcbiAgICAgICAgLy8gbGV0IHJlc3VsdCA6IFN0cmluZztcclxuICAgICAgICAvLyBpZiAodGFyZ2V0ID09IFdvcmxkU3RhdGUucGxheWVyKSB7XHJcbiAgICAgICAgLy8gICAgIHJlc3VsdCA9IFwieW91clwiO1xyXG4gICAgICAgIC8vIH0gZWxzZSBpZiAodGFyZ2V0IGluc3RhbmNlb2YgUGVyc29uKSB7XHJcbiAgICAgICAgLy8gICAgIC8vIFRPRE86IEZpZ3VyZSBvdXQgd2hldGhlciB0YXJnZXQgaXMgbWFsZSBvciBmZW1hbGVcclxuICAgICAgICAvLyAgICAgcmVzdWx0ID0gXCJoaXNcIjtcclxuICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgIC8vICAgICByZXN1bHQgPSBcIml0c1wiO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBpZiAoc3RhcnRPZlNlbnRlbmNlID09IHRydWUpIHtcclxuICAgICAgICAvLyAgICAgcmVzdWx0ID0gcmVzdWx0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcmVzdWx0LnN1YnN0cigxLCByZXN1bHQubGVuZ3RoIC0xKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxufVxyXG5cclxuU2F5LnByaW50aW5nLmFkZFJ1bGUobmV3IFJ1bGUoe1xyXG4gICAgbmFtZSA6IFwiUHJpbnRpbmcgdGhlIG5hbWUgb2YgYSBQcmludGFibGUgRWxlbWVudFwiLFxyXG4gICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfTE9XLFxyXG4gICAgY29kZSA6IChydWxlYm9vayA6IFJ1bGVib29rUnVubmVyPGFueT4pID0+IHtcclxuICAgICAgICBsZXQgc2F5ID0gPFNheT4gcnVsZWJvb2subm91bjtcclxuICAgICAgICBpZiAoKDxhbnk+IHNheS5jdXJyZW50Tm91bikuZ2V0UHJpbnRlZEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgc2F5LmN1cnJlbnROb3VuRWxlbWVudHMucHVzaCguLi4oPFByaW50YWJsZUVsZW1lbnQ+IHNheS5jdXJyZW50Tm91bikuZ2V0UHJpbnRlZEVsZW1lbnQoKSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBXZSBvbmx5IHdhbnQgdG8gcHJpbnQgc29tZXRoaW5nIG9uY2UsIHNvIHJldHVybiB0cnVlIHRvIHN0b3Agb3RoZXJzIGZyb20gcnVubmluZ1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSkpO1xyXG5cclxuU2F5LnByaW50aW5nLmFkZFJ1bGUobmV3IFJ1bGUoe1xyXG4gICAgbmFtZSA6IFwiUHJpbnRpbmcgdGhlIG5hbWUgb2YgYSBQcmludGFibGVcIixcclxuICAgIGZpcnN0UHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0xPVyxcclxuICAgIGNvZGUgOiAocnVsZWJvb2sgOiBSdWxlYm9va1J1bm5lcjxhbnk+KSA9PiB7XHJcbiAgICAgICAgbGV0IHNheSA9IDxTYXk+IHJ1bGVib29rLm5vdW47XHJcbiAgICAgICAgaWYgKCg8YW55PiBzYXkuY3VycmVudE5vdW4pLmdldFByaW50ZWROYW1lKSB7XHJcbiAgICAgICAgICAgIGxldCB0aGluZ0VsZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFxyXG4gICAgICAgICAgICAgICAgKDxQcmludGFibGU+IHNheS5jdXJyZW50Tm91bikuZ2V0UHJpbnRlZE5hbWUoKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBzYXkuY3VycmVudE5vdW5FbGVtZW50cy5wdXNoKHRoaW5nRWxlKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIFdlIG9ubHkgd2FudCB0byBwcmludCBzb21ldGhpbmcgb25jZSwgc28gcmV0dXJuIHRydWUgdG8gc3RvcCBvdGhlcnMgZnJvbSBydW5uaW5nXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59KSk7XHJcblxyXG5TYXkucHJpbnRpbmcuYWRkUnVsZShuZXcgUnVsZSh7XHJcbiAgICBuYW1lIDogXCJQcmludGluZyB0aGUgbmFtZSBvZiBhbiB1bmtub3duIG9iamVjdFwiLFxyXG4gICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfTE9XRVNULFxyXG4gICAgcHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0xPV0VTVCxcclxuICAgIGNvZGUgOiAocnVsZWJvb2sgOiBSdWxlYm9va1J1bm5lcjxhbnk+KSA9PiB7XHJcbiAgICAgICAgbGV0IHNheSA9IDxTYXk+IHJ1bGVib29rLm5vdW47XHJcbiAgICAgICAgaWYgKCg8YW55PiBzYXkuY3VycmVudE5vdW4pLmdldFByaW50ZWROYW1lKSB7XHJcbiAgICAgICAgICAgIHNheS5jdXJyZW50Tm91bkVsZW1lbnRzLnB1c2goXHJcbiAgICAgICAgICAgICAgICAoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoKDxPYmplY3Q+IHNheS5jdXJyZW50Tm91bikudG9TdHJpbmcoKSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBXZSBvbmx5IHdhbnQgdG8gcHJpbnQgc29tZXRoaW5nIG9uY2UsIHNvIHJldHVybiB0cnVlIHRvIHN0b3Agb3RoZXJzIGZyb20gcnVubmluZ1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSkpO1xyXG5cclxuLy8gdmFyIG1zZyA9IG5ldyBTYXkgKFwiSGVsbG8hIFdlbGNvbWUgdG8gVGhlIE9iZWxpc2shIFRoaXMgaXMgYSBnYW1lIHdpdGggXCIsIGpvaG5UaGVPZ3JlLCBcIiBzbyB5b3UgbXVzdCBiZSBjYXJlZnVsIVwiKTtcclxuLy9cclxuLy8gdmFyIG90aGVyU2F5ID0gbmV3IFNheSAobXNnLCBcIldpbGwgaGF2ZSB0byBsZWFybiBob3cgdG8gaGFuZGxlIGRvdHMuXCIpOyIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9DaGFyYWN0ZXJPcmlnaW4udHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vRWxlbWVudHMvQ2xhc3Nlcy9TYXkudHNcIiAvPlxyXG5tb2R1bGUgQ2hhcmFjdGVyQ3JlYXRpb24ge1xyXG4gICAgZXhwb3J0IGxldCBGYWxzZWx5QWNjdXNlZCA9IG5ldyBDaGFyYWN0ZXJPcmlnaW4oXCJGYWxzZWx5IEFjY3VzZWRcIik7XHJcbiAgICBGYWxzZWx5QWNjdXNlZC5uYW1lID0gXCJGYWxzZWx5IEFjY3VzZWRcIjtcclxuICAgIEZhbHNlbHlBY2N1c2VkLmRlc2NyaXB0aW9uPSBuZXcgU2F5KFxyXG4gICAgICAgIFwiWW91IG1hZGUgc29tZSBhbGxlZ2F0aW9ucyBhZ2FpbnN0IGEgcG93ZXJmdWwgbWFuIGluIHlvdXIgdmlsbGFnZS4gV2hldGhlciB0aG9zZSB3ZXJlIHRydWUgb3Igbm90IGRpZG4ndCBtYXR0ZXIsIGhlIHdhcyBtb3N0IGRpc3BsZWFzZWQgd2l0aCB5b3VyIGFjdGlvbnMgYW5kIGRpZCBhbGwgaGUgY291bGQgdG8gZW5kIHlvdXIgbGlmZSBhcyB5b3Uga25ldyBpdC4gSnVzdCBhcyB5b3Ugd2VyZSBhYm91dCB0byBiZSBleGVjdXRlZCBmb3IgeW91ciBpbmV4aXN0ZW50IGNyaW1lcywgdGhlIG1hbiBhc2tlZCBmb3IgbWVyY3kuIFlvdSB0aG91Z2h0IGhlIHdhc24ndCB3aWxsaW5nIHRvIGdvIHRoaXMgZmFyIHdpdGggaGlzIGxpZXMsIG9ubHkgdG8gaGF2ZSB5b3VyIGhvcGVzIGNydXNoZWQgd2hlbiB5b3Ugbm90aWNlZCBhIHNtaXJrIGluIGhpcyBldmlsIGZhY2UuXFxuXCIsXHJcbiAgICAgICAgU2F5LlBBUkFHUkFQSF9CUkVBSyxcclxuICAgICAgICBcIlRoZSBtYW4gY2xhaW1lZCBoZSB3YW50ZWQgdG8gZm9yZ2l2ZSB5b3UsIGJ1dCB3b3VsZCBuZWVkIHByb29mIG9mIHlvdXIgcmVncmV0LiBZb3UgcmVjZWl2ZWQgYW4gYWx0ZXJuYXRpdmUgc2VudGVuY2U6IGdvIHRvIHRoZSBUb3dlciBhbmQgZmluZCBhIHdheSB0byBkZXN0cm95IGl0LiBTdXJlbHkgYW4gaW1wb3NzaWJsZSB0YXNrLiBTdXJlbHkganVzdCBhbm90aGVyIGRlYXRoIHNlbnRlbmNlLi4uIG9yIHdvcnNlLiBCdXQgaXQncyBub3QgbGlrZSB5b3UgaGF2ZSBhIGNob2ljZSBpbiB0aGUgbWF0dGVyLlwiXHJcbiAgICApO1xyXG4gICAgRmFsc2VseUFjY3VzZWQuYm9udXNTdGF0cyA9IFwiVGhpcyBvcmlnaW4gY29uZmVycyBubyBib251c2VzLCBidXQgeW91IGhhdmUgY29tcGxldGUgZnJlZWRvbSB3aXRoIHlvdXIgcGVya3MuXCI7XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vUGVyay50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9FbGVtZW50cy9DbGFzc2VzL1NheS50c1wiIC8+XHJcbm1vZHVsZSBDaGFyYWN0ZXJDcmVhdGlvbiB7XHJcbiAgICBleHBvcnQgbGV0IEhvcm55VmlyZ2luID0gbmV3IFBlcmsoXCJIb3JueSBWaXJnaW5cIik7XHJcbiAgICBIb3JueVZpcmdpbi5kZXNjcmlwdGlvbiA9IG5ldyBTYXkoXCJXaGljaGV2ZXIgbGlmZSB5b3UgbGVkIHVwIHRvIHRoaXMgcG9pbnQgbmV2ZXIgYWxsb3dlZCB5b3UgdG8gZXhwbG9yZSB5b3VyIHNleHVhbGl0eS4gQXMgYSByZXN1bHQsIHlvdSdyZSBib3RoIHZpcmdpbiBBTkQgZXh0cmVtZWx5IGhvcm55LiBUaGlzIHBlcmsgbWFrZXMgaXQgc28gdGhhdCB0aGUgV29ybGQgRGVwcmF2aXR5IGFyb3VuZCB0aGUgVG93ZXIgaXMgaW5pdGlhbGx5IGhpZ2hlciBhbmQgcmlzZXMgZmFzdGVyLCBob3dldmVyIHlvdSBhcmUgbm90IGFzIGFmZmVjdGVkIGJ5IHRoaXMgcmlzaW5nIERlcHJhdml0eSBhcm91bmQgeW91LlwiLFxyXG4gICAgICAgIFNheS5QQVJBR1JBUEhfQlJFQUssIFwiVGhpcyBwZXJrIGlzIG1hbmRhdG9yeSBmb3IgQ2hhbXBpb25zIGFuZCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIG1vc3Qgc2V4LXJlbGF0ZWQgcGVya3MuXCIpO1xyXG5cclxuICAgIEhvcm55VmlyZ2luLmZvcmNlZFN0YXR1cyA9IChob3JueVZpcmdpbiA6IFBlcmspID0+IHtcclxuICAgICAgICBpZiAoQ2hhcmFjdGVyQ3JlYXRpb24uZ2V0T3JpZ2luKCkgPT0gQ2hhcmFjdGVyQ3JlYXRpb24uQ2hhbXBpb25PcmlnaW4pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmIChTbHV0LmlzRW5hYmxlZCh0cnVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcblxyXG5cclxuICAgIGV4cG9ydCBsZXQgU2x1dCA9IG5ldyBQZXJrKFwiVW5yZWRlZW1hYmxlIFNsdXRcIik7XHJcbiAgICBTbHV0LmRlc2NyaXB0aW9uID0gbmV3IFNheShcIlNpbXBseSBwdXQ6IHlvdSByZWFsbHkgbGlrZSBzZXguIFlvdXIgRGVwcmF2aXR5IHN0YXJ0cyBvZmYgaGlnaGVyIGFuZCByaXNlcyBldmVuIGZhc3RlciwgYWxzbyBhZmZlY3RpbmcgV29ybGQgRGVwcmF2aXR5LiBIb3dldmVyLCB5b3UgbGV2ZWwgdXAgc2V4LXJlbGF0ZWQgU2tpbGxzIGZhc3Rlci5cIixcclxuICAgICAgICBTYXkuUEFSQUdSQVBIX0JSRUFLLCBcIlRoaXMgcGVyayBpcyBub3QgY29tcGF0aWJsZSB3aXRoIFwiLCBIb3JueVZpcmdpbi5uYW1lLCBcIi5cIik7XHJcbiAgICBTbHV0LmZvcmNlZFN0YXR1cyA9ICgpID0+IHtcclxuICAgICAgICBpZiAoSG9ybnlWaXJnaW4uaXNFbmFibGVkKHRydWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuXHJcblxyXG4gICAgZXhwb3J0IGxldCBTZW5zaXRpdmVIb2xlcyA9IG5ldyBQZXJrKFwiU2Vuc2l0aXZlIEhvbGVzXCIpO1xyXG4gICAgU2Vuc2l0aXZlSG9sZXMuZGVzY3JpcHRpb24gPSBcIllvdSBhcmUgdmVyeSBzZW5zaXRpdmUgdG8gYW55IGtpbmQgb2YgcmVjZXB0aXZlIHBlbmV0cmF0aW9uLiBZb3UgaGF2ZSBhIGhhcmRlciB0aW1lIGVzY2FwaW5nIGdyYXBwbGVzIHdoaWxlIGJlaW5nIHBlbmV0cmF0ZWQgYW5kIGFuIGVhc2llciB0aW1lIG9yZ2FzbWluZyBmcm9tIGl0LCBidXQgZ2V0dGluZyBhcm91c2VkIGZhc3RlciBhbHNvIG1lYW5zIHlvdSB0YWtlIGxlc3MgZGFtYWdlIGZyb20gaXQuXCI7XHJcblxyXG5cclxuXHJcbn0iLCIvKipcclxuICogQ29udGVudCB0eXBlcyBuZWVkIHRvIGJlIGFsbG93ZWQvZm9yYmlkZGVuIGF0IHRoZSBnbG9iYWwgbGV2ZWwsIHJhdGhlciB0aGFuIGEgc2F2ZSBsZXZlbC5cclxuICogVGhleSBzaG91bGQgYmUgYWJsZSB0byBiZSBjaGFuZ2VkIGF0IGFueSB0aW1lLlxyXG4gKiBUaGV5IHNob3VsZCBiZSBhcyBsaXR0bGUgdmFndWUgYXMgaXMgcmVhc29uYWJsZS5cclxuICovXHJcbm1vZHVsZSBDb250ZW50SGFuZGxlciB7XHJcbiAgICBsZXQgY29udGVudEhhc2ggOiB7W2lkIDogc3RyaW5nXSA6IENvbnRlbnRUeXBlfSA9IHt9O1xyXG4gICAgbGV0IGNvbnRlbnRBcnJheSA6IEFycmF5PENvbnRlbnRUeXBlPiA9IFtdO1xyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckNvbnRlbnRUeXBlICh0eXBlIDogQ29udGVudFR5cGUpIHtcclxuICAgICAgICBpZiAoY29udGVudEhhc2hbdHlwZS5nZXRJZCgpXSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIltDb250ZW50SGFuZGxlcn0gQ2FuJ3QgcmVnaXN0ZXIgdGhlIGNvbnRlbnQuXCIsIHR5cGUsIFwiT2xkOlwiLCBjb250ZW50SGFzaFt0eXBlLmdldElkKCldKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnRlbnRIYXNoW3R5cGUuZ2V0SWQoKV0gPSB0eXBlO1xyXG4gICAgICAgICAgICBjb250ZW50QXJyYXkucHVzaCh0eXBlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRlbnRUeXBlcyAoKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbnRlbnRBcnJheS5zbGljZSgpO1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlN0b3JlZE1lbW9yeS50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9FbGVtZW50cy9DbGFzc2VzL1NheS50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9Nb2R1bGVzL0NvbnRlbnRIYW5kbGVyLnRzXCIgLz5cclxuaW50ZXJmYWNlIENvbnRlbnRUeXBlT3B0aW9ucyB7XHJcbiAgICBpZCA6IHN0cmluZztcclxuICAgIGRlZmF1bHRWYWx1ZSA6IGJvb2xlYW47XHJcbiAgICBkZXNjcmlwdGlvbiA6IFNheSB8IHN0cmluZztcclxuICAgIGN1cnJlbnRWYWx1ZURlc2NyaXB0aW9uPyA6IChjIDogQ29udGVudFR5cGUpID0+IFNheSB8IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFVzZSBzcGFyaW5nbHkuIENvbnRlbnQtVHlwZXMgdGhhdCBzaG91bGRuJ3QgYmUgYWxsb3dlZCB0byBjaGFuZ2UgYXJlIHRob3NlIHRoYXQgZWl0aGVyOlxyXG4gICAgICogLSBGdW5kYW1lbnRhbCB0byB0aGUgZ2FtZSBpbiBzb21lIHdheS4gTW9zdCBvZiB0aGVzZSB3aWxsIG9ubHkgcmVtYWluIHN0dWNrIHVudGlsIHRoZSBnYW1lIGhhcyBlbm91Z2ggY29udGVudCB0byBtYWtlIGRvIHdpdGhvdXQgaXQuXHJcbiAgICAgKiAtIFNvbWV0aGluZyB0aGF0J3Mgb25seSBhIG5lZ2F0aXZlIHNpZ25hbDogc2lnbmFsaXppbmcgdGhhdCB0aGlzIGNvbnRlbnQgd2lsbCBub3QgYXBwZWFyIGR1cmluZyBkZXZlbG9wbWVudC9nYW1lcGxheSBhdCBhbGwsIGxldHRpbmcgcGxheWVycyBrbm93IGl0IGlzbid0IGF2YWlsYWJsZSBhbmQgcHJvYmFibHkgd29uJ3QgYmUuXHJcbiAgICAgKi9cclxuICAgIGNoYW5nZWFibGU/IDogYm9vbGVhbjtcclxufVxyXG5cclxuY2xhc3MgQ29udGVudFR5cGUgZXh0ZW5kcyBTdG9yZWRNZW1vcnk8Ym9vbGVhbj4ge1xyXG4gICAgcHJpdmF0ZSBkZXNjcmlwdGlvbiA6IFNheTtcclxuICAgIHByaXZhdGUgdmFsdWVEZXNjcmlwdGlvbiA6IChjIDogQ29udGVudFR5cGUpID0+IFNheSB8IHN0cmluZyA9ICgpID0+IHsgcmV0dXJuIG5ldyBTYXkgKEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0VmFsdWUoKSkpOyB9O1xyXG4gICAgcHJpdmF0ZSBjaGFuZ2VhYmxlIDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgbWVtb3J5UHJlZml4ID0gXCJjdF9cIjtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKG9wdGlvbnMgOiBDb250ZW50VHlwZU9wdGlvbnMpIHtcclxuICAgICAgICBzdXBlcihDb250ZW50VHlwZS5tZW1vcnlQcmVmaXggKyBvcHRpb25zLmlkLCBvcHRpb25zLmRlZmF1bHRWYWx1ZSk7XHJcblxyXG4gICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSBvcHRpb25zLmRlc2NyaXB0aW9uIGluc3RhbmNlb2YgU2F5ID8gb3B0aW9ucy5kZXNjcmlwdGlvbiA6IG5ldyBTYXkob3B0aW9ucy5kZXNjcmlwdGlvbik7XHJcblxyXG4gICAgICAgIHRoaXMudmFsdWVEZXNjcmlwdGlvbiA9IG9wdGlvbnMuY3VycmVudFZhbHVlRGVzY3JpcHRpb24gPT0gdW5kZWZpbmVkID8gdGhpcy52YWx1ZURlc2NyaXB0aW9uIDogb3B0aW9ucy5jdXJyZW50VmFsdWVEZXNjcmlwdGlvbjtcclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMuY2hhbmdlYWJsZSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlVmFsdWUob3B0aW9ucy5kZWZhdWx0VmFsdWUpOyAvLyBwcmV2ZW50IGxvY2FsU3RvcmFnZSBhbHRlcmF0aW9ucyBmcm9tIGFmZmVjdGluZyBzb21ldGhpbmcgdGhhdCBjYW4ndCBiZSBjaGFuZ2VkXHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQ29udGVudEhhbmRsZXIucmVnaXN0ZXJDb250ZW50VHlwZSh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0RGVzY3JpcHRpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlc2NyaXB0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRWYWx1ZURlc2NyaXB0aW9uICgpIHtcclxuICAgICAgICBsZXQgZGVzYyA9IHRoaXMudmFsdWVEZXNjcmlwdGlvbih0aGlzKTtcclxuICAgICAgICBpZiAoZGVzYyBpbnN0YW5jZW9mIFNheSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGVzYztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFNheShkZXNjKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvZ2dsZSAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlYWJsZSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlVmFsdWUoIXRoaXMuZ2V0VmFsdWUoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc0FsbG93ZWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIE1NID0gbmV3IENvbnRlbnRUeXBlKHtcclxuICAgICAgICBjaGFuZ2VhYmxlIDogZmFsc2UsIC8vIFRoZXJlIHdpbGwgYmUgdG9vIGxpdHRsZSBjb250ZW50IGF0IGZpcnN0IGZvciB1cyB0byBibG9jayBwYXJ0IG9mIGl0IGZvciBubyBnb29kIHJlYXNvbiwgbWF5YmUgYXQgc29tZSBwb2ludFxyXG4gICAgICAgIGRlc2NyaXB0aW9uIDogXCJIb21vc2V4dWFsIChNL00pIHNleHVhbCBldmVudHNcIixcclxuICAgICAgICBpZCA6IFwiTU1cIixcclxuICAgICAgICBkZWZhdWx0VmFsdWUgOiB0cnVlXHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBGRiA9IG5ldyBDb250ZW50VHlwZSh7XHJcbiAgICAgICAgY2hhbmdlYWJsZSA6IGZhbHNlLCAvLyBUaGVyZSB3aWxsIGJlIHRvbyBsaXR0bGUgY29udGVudCBhdCBmaXJzdCBmb3IgdXMgdG8gYmxvY2sgcGFydCBvZiBpdCBmb3Igbm8gZ29vZCByZWFzb24sIG1heWJlIGF0IHNvbWUgcG9pbnRcclxuICAgICAgICBkZXNjcmlwdGlvbiA6IFwiSG9tb3NleHVhbCAoRi9GKSBzZXh1YWwgZXZlbnRzXCIsXHJcbiAgICAgICAgaWQgOiBcIkZGXCIsXHJcbiAgICAgICAgZGVmYXVsdFZhbHVlIDogdHJ1ZVxyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgTUYgPSBuZXcgQ29udGVudFR5cGUoe1xyXG4gICAgICAgIGNoYW5nZWFibGUgOiBmYWxzZSwgLy8gVGhlcmUgd2lsbCBiZSB0b28gbGl0dGxlIGNvbnRlbnQgYXQgZmlyc3QgZm9yIHVzIHRvIGJsb2NrIHBhcnQgb2YgaXQgZm9yIG5vIGdvb2QgcmVhc29uLCBtYXliZSBhdCBzb21lIHBvaW50XHJcbiAgICAgICAgZGVzY3JpcHRpb24gOiBcIkhldGVyb3NleHVhbCAoTS9GKSBzZXh1YWwgZXZlbnRzXCIsXHJcbiAgICAgICAgaWQgOiBcIk1GXCIsXHJcbiAgICAgICAgZGVmYXVsdFZhbHVlIDogdHJ1ZVxyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgQmVhc3QgPSBuZXcgQ29udGVudFR5cGUoe1xyXG4gICAgICAgIGNoYW5nZWFibGUgOiB0cnVlLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uIDogXCJTZXh1YWwgZXZlbnRzIHdpdGggZWl0aGVyIG1vbnN0ZXJzIG9yIG1hZ2ljYWwgYmVhc3RzLiBNTS9NRi9GRiB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGlzIG9uZSBpZiBibG9ja2VkLiBTdWZmaWNpZW50bHkgaHVtYW4gY3JlYXR1cmVzIGRvIG5vdCBnZXQgY291bnRlZCBpbnRvIHRoaXMuXCIsXHJcbiAgICAgICAgaWQgOiBcIkJlYXN0XCIsXHJcbiAgICAgICAgZGVmYXVsdFZhbHVlIDogdHJ1ZVxyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgU2NhdCA9IG5ldyBDb250ZW50VHlwZSh7XHJcbiAgICAgICAgY2hhbmdlYWJsZSA6IGZhbHNlLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uIDogXCJTY2F0b2xvZ2ljIHNleHVhbCBldmVudHNcIixcclxuICAgICAgICBpZCA6IFwiU2NhdFwiLFxyXG4gICAgICAgIGRlZmF1bHRWYWx1ZSA6IGZhbHNlIC8vIFRoZXJlIGlzIG5vIGludGVudGlvbiBvZiBldmVyIGFkZGluZyB0aGVzZVxyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBQZWUgPSBuZXcgQ29udGVudFR5cGUoe1xyXG4gICAgICAgIGNoYW5nZWFibGUgOiBmYWxzZSxcclxuICAgICAgICBkZXNjcmlwdGlvbiA6IFwiU2V4dWFsIGV2ZW50cyB3aXRoIHVyaW5lXCIsXHJcbiAgICAgICAgaWQgOiBcIlVyb3BoaWxpYVwiLFxyXG4gICAgICAgIGRlZmF1bHRWYWx1ZSA6IGZhbHNlIC8vIFRoZXJlIGlzIG5vIGludGVudGlvbiBvZiBldmVyIGFkZGluZyB0aGVzZVxyXG4gICAgfSk7XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vRWxlbWVudHMudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vQ29udHJvbHMvTW9kdWxlcy9LZXlIYW5kbGVyLnRzXCIgLz5cclxubW9kdWxlIEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlciB7XHJcbiAgICBleHBvcnQgdmFyIGN1cnJlbnRUdXJuVGFiID0gPEhUTUxFbGVtZW50PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImN1cnJlbnRUdXJuVGFiXCIpO1xyXG4gICAgZXhwb3J0IHZhciBjdXJyZW50VHVybiA9IDxIVE1MRWxlbWVudD4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjdXJyZW50VHVyblwiKTtcclxuICAgIGV4cG9ydCB2YXIgdHVybkhyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInBcIik7XHJcbiAgICBleHBvcnQgdmFyIGxhc3RSZWFkT2Zmc2V0ID0gY3VycmVudFR1cm5UYWIuY2xpZW50SGVpZ2h0IC8gMjtcclxuICAgIHR1cm5Ici5jbGFzc0xpc3QuYWRkKFwidHVyblN0YXJ0XCIpO1xyXG4gICAgdHVybkhyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiU3RhcnQgb2YgVHVyblwiKSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIHRoZSBcIlN0YXJ0IG9mIFR1cm5cIiBlbGVtZW50cyBhbmQgc2Nyb2xscyB0aGUgY29udGVudCBwYW5lbCB1bnRpbCB0aGUgc3RhcnQgb2YgdGhlIG5ldyB0dXJuLlxyXG4gICAgICovXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gc3RhcnRUdXJuIChhY3Rpb24/IDogQWN0aW9uKSB7XHJcblxyXG4gICAgICAgIGxldCBvbGRDb250ZW50ID0gY3VycmVudFR1cm5UYWIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImNvbnRlbnRcIik7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvbGRDb250ZW50Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIG9sZENvbnRlbnRbaV0uY2xhc3NMaXN0LmFkZChcImNvbnRlbnRPbGRcIik7XHJcbiAgICAgICAgICAgIG9sZENvbnRlbnRbaV0uY2xhc3NMaXN0LnJlbW92ZShcImNvbnRlbnRcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjdXJyZW50VHVyblRhYi5hcHBlbmRDaGlsZCh0dXJuSHIpO1xyXG5cclxuICAgICAgICBFbGVtZW50cy5zdGFydFR1cm4oKTtcclxuXHJcbiAgICAgICAgc2Nyb2xsVG9OZXdUdXJuKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcmUgd2UgaW4gdGhlIG1pZGRsZSBvZiBhIHR1cm4/XHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBpc1R1cm4gKCkge1xyXG4gICAgICAgIHJldHVybiBFbGVtZW50cy5pc0luVHVybigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlcyB0aGUgYmx1ciBlZmZlY3QgYXJvdW5kIHRoZSB0dXJuIHBhbmVsXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBlbmRUdXJuICgpIHtcclxuICAgICAgICBFbGVtZW50cy5lbmRUdXJuKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGdldFNheUVsZW1lbnRzQXNDb250ZW50IChzYXkgOiBTYXkpIDogUHJvbWlzZTxBcnJheTxIVE1MRWxlbWVudD4+IHtcclxuICAgICAgICByZXR1cm4gc2F5LmdldEhUTUwoXCJwXCIsIFtcImNvbnRlbnRcIl0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJpbnRzIGdpdmVuIFNheSBkaXJlY3RseVxyXG4gICAgICogQHBhcmFtIHNheVxyXG4gICAgICovXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gcHJpbnRBc0NvbnRlbnQgKHNheSA6IFNheSkge1xyXG4gICAgICAgIGxldCBub2RlID0gZ2V0TWFya2VyKCk7XHJcbiAgICAgICAgZ2V0U2F5RWxlbWVudHNBc0NvbnRlbnQoc2F5KS50aGVuKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKHZhbHVlLCBub2RlKTtcclxuICAgICAgICAgICAgdW5wcmludChub2RlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBzYXkgZm9yIHNheVZhbHVlcyBhbmQgdGhlbiBwcmludHMgaXQgYXMgY29udGVudC5cclxuICAgICAqIEBwYXJhbSBzYXlWYWx1ZXNcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHNpbXBsZVByaW50ICguLi5zYXlWYWx1ZXMgOiBBcnJheTxhbnk+KSB7XHJcbiAgICAgICAgcHJpbnRBc0NvbnRlbnQobmV3IFNheSguLi5zYXlWYWx1ZXMpKTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gcHJpbnRBc0Vycm9yIChtc2cgOiBTYXkgfCBzdHJpbmcpIHtcclxuICAgICAgICBpZiAobXNnIGluc3RhbmNlb2YgU2F5KSB7XHJcbiAgICAgICAgICAgIG1zZy5nZXRIVE1MKFwiZGl2XCIsIFtcImVycm9yXCJdLCB0cnVlKS50aGVuKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgICAgIHByaW50KC4uLnZhbHVlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgIGRpdi5jbGFzc0xpc3QuYWRkKFwiZXJyb3JcIik7XHJcbiAgICAgICAgICAgIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTtcclxuICAgICAgICAgICAgcHJpbnQoZGl2KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGNsZWFyICgpIHtcclxuICAgICAgICB3aGlsZSAoY3VycmVudFR1cm5UYWIuZmlyc3RDaGlsZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgY3VycmVudFR1cm5UYWIucmVtb3ZlQ2hpbGQoY3VycmVudFR1cm5UYWIuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIENvbnRyb2xzLktleUhhbmRsZXIucmVzZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluY2x1ZGVzIHRoZSBnaXZlbiBlbGVtZW50cyBhcyBjb250ZW50LlxyXG4gICAgICogVGhpcyBpcyB0aGUgb25seSBjb3JyZWN0IHdheSBvZiBwcmludGluZyBlbGVtZW50cy5cclxuICAgICAqIEBwYXJhbSBlbGVtZW50c1xyXG4gICAgICovXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gcHJpbnQgKC4uLmVsZW1lbnRzIDogQXJyYXk8Tm9kZT4pIHtcclxuICAgICAgICBpZihlbGVtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRUdXJuVGFiLmFwcGVuZENoaWxkKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHNjcm9sbFRvKGxhc3RSZWFkT2Zmc2V0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtlciAoKSB7XHJcbiAgICAgICAgbGV0IG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlwiKTtcclxuICAgICAgICBjdXJyZW50VHVyblRhYi5hcHBlbmRDaGlsZChub2RlKTtcclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gaW5zZXJ0QmVmb3JlIChuZXdDaGlsZHMgOiBBcnJheTxOb2RlPiwgb2xkQ2hpbGQpIHtcclxuICAgICAgICBuZXdDaGlsZHMuZm9yRWFjaCgobmV3Q2hpbGQpID0+IHtcclxuICAgICAgICAgICAgY3VycmVudFR1cm5UYWIuaW5zZXJ0QmVmb3JlKG5ld0NoaWxkLCBvbGRDaGlsZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgc2Nyb2xsVG8obGFzdFJlYWRPZmZzZXQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlcyBlbGVtZW50cyB0aGF0IGhhdmUgYmVlbiBwcmludGVkIGluIHRoZSBwYXN0LlxyXG4gICAgICogQHBhcmFtIGVsZW1lbnRzXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiB1bnByaW50ICguLi5lbGVtZW50cyA6IEFycmF5PE5vZGU+KSB7XHJcbiAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5wYXJlbnRFbGVtZW50ID09IGN1cnJlbnRUdXJuVGFiKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50VHVyblRhYi5yZW1vdmVDaGlsZChlbGVtZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2Nyb2xscyB0byB0aGUgZmlyc3QgY3VycmVudCB0dXJuIGVsZW1lbnQuIChPciByYXRoZXIsIHRvIGp1c3QgYWZ0ZXIgdGhlIFN0YXJ0IG9mIFR1cm4gZWxlbWVudClcclxuICAgICAqIFRoaXMgaXMgdXNlZCBpbnRlcm5hbGx5IGFzIGEgbmV3IHR1cm4gYmVnaW5zLlxyXG4gICAgICovXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gc2Nyb2xsVG9OZXdUdXJuICgpIHtcclxuICAgICAgICBsZXQgdGFyZ2V0ID0gdHVybkhyLm9mZnNldFRvcCArIHR1cm5Ici5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgbGFzdFJlYWRPZmZzZXQgPSB0YXJnZXQ7XHJcblxyXG4gICAgICAgIC8vdHVybkhyLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvciA6IFwic21vb3RoXCIsIGJsb2NrIDogXCJzdGFydFwifSk7XHJcbiAgICAgICAgaWYgKHRhcmdldCA8IGN1cnJlbnRUdXJuLnNjcm9sbFRvcCkge1xyXG4gICAgICAgICAgICByZXR1cm47IC8vIFdlIGRvbid0IHdhbnQgdG8gc2Nyb2xsIFVQLlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2Nyb2xsVG8odGFyZ2V0KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNjcm9sbHMgdG8gdGhlIHZlcnkgYm90dG9tIG9mIHRoZSBjb250ZW50IHBhbmVsLlxyXG4gICAgICovXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gc2Nyb2xsVG9Cb3R0b20gKCkge1xyXG4gICAgICAgIHNjcm9sbFRvKGN1cnJlbnRUdXJuLnNjcm9sbEhlaWdodCAtIGN1cnJlbnRUdXJuLmNsaWVudEhlaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTY3JvbGwgaGFsZiBhIHNjcmVlbiBmb3J3YXJkXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBzY3JvbGxTcGFjZSAoKSB7XHJcbiAgICAgICAgc2Nyb2xsVG8oY3VycmVudFR1cm4uc2Nyb2xsVG9wICsgKGN1cnJlbnRUdXJuLmNsaWVudEhlaWdodCAvIDIpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZSB0ZXh0IHRoYXQgd2FzIHJlYWQgYXMgcGxheWVyIHNjcm9sbHNcclxuICAgICAqL1xyXG4gICAgY3VycmVudFR1cm4uYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCAoKSA9PiB7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRSZWFkID0gY3VycmVudFR1cm4uc2Nyb2xsVG9wICsgY3VycmVudFR1cm4uY2xpZW50SGVpZ2h0O1xyXG4gICAgICAgIGlmIChjdXJyZW50UmVhZCA+IGxhc3RSZWFkT2Zmc2V0KSB7XHJcbiAgICAgICAgICAgIGxhc3RSZWFkT2Zmc2V0ID0gY3VycmVudFJlYWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQW5pbWF0aW9uLi4uIHJlbW92aW5nIGpxdWVyeVxyXG4gICAgICovXHJcbiAgICB2YXIgc3RhcnRPZmZzZXQgOiBudW1iZXI7XHJcbiAgICB2YXIgdGFyZ2V0T2Zmc2V0IDogbnVtYmVyO1xyXG4gICAgdmFyIHN0YXJ0VGltZSA6IG51bWJlcjtcclxuICAgIHZhciBmaW5pc2hUaW1lIDogbnVtYmVyO1xyXG4gICAgdmFyIHRvdGFsVGltZSA6IG51bWJlcjtcclxuICAgIHZhciBhbmltYXRpb25SZXF1ZXN0IDogbnVtYmVyO1xyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBzY3JvbGxUbyAob2Zmc2V0IDogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKG9mZnNldCA8PSBsYXN0UmVhZE9mZnNldCkge1xyXG4gICAgICAgICAgICBzdGFydE9mZnNldCA9IGN1cnJlbnRUdXJuLnNjcm9sbFRvcDtcclxuICAgICAgICAgICAgdGFyZ2V0T2Zmc2V0ID0gb2Zmc2V0O1xyXG4gICAgICAgICAgICBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgZmluaXNoVGltZSA9IHN0YXJ0VGltZSArIEVsZW1lbnRzLmFuaW1hdGlvblRpbWU7XHJcbiAgICAgICAgICAgIHRvdGFsVGltZSA9IGZpbmlzaFRpbWUgLSBzdGFydFRpbWU7XHJcbiAgICAgICAgICAgIHN0YXJ0U2Nyb2xsaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBzdGFydFNjcm9sbGluZyAoKSB7XHJcbiAgICAgICAgaWYgKGFuaW1hdGlvblJlcXVlc3QgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGFuaW1hdGlvblJlcXVlc3QgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlRnJhbWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgbGV0IHVwZGF0ZUZyYW1lID0gKCkgPT4ge1xyXG4gICAgICAgIGFuaW1hdGlvblJlcXVlc3QgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgIGxldCBtb3ZpbmdPZmZzZXQgPSAodGFyZ2V0T2Zmc2V0IC0gc3RhcnRPZmZzZXQpO1xyXG4gICAgICAgIGxldCB0aW1lUGFzc2VkID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLSBzdGFydFRpbWU7XHJcbiAgICAgICAgbGV0IGlkZWFsT2Zmc2V0ID0gbW92aW5nT2Zmc2V0ICogKHRpbWVQYXNzZWQgLyB0b3RhbFRpbWUpO1xyXG5cclxuICAgICAgICBsZXQgbWF4U2Nyb2xsID0gY3VycmVudFR1cm4uc2Nyb2xsSGVpZ2h0IC0gY3VycmVudFR1cm4uY2xpZW50SGVpZ2h0O1xyXG5cclxuICAgICAgICBjdXJyZW50VHVybi5zY3JvbGxUb3AgPSBzdGFydE9mZnNldCArIGlkZWFsT2Zmc2V0O1xyXG5cclxuICAgICAgICBpZiAoY3VycmVudFR1cm4uc2Nyb2xsVG9wIDwgdGFyZ2V0T2Zmc2V0ICYmIGN1cnJlbnRUdXJuLnNjcm9sbFRvcCA8IG1heFNjcm9sbCkge1xyXG4gICAgICAgICAgICBzdGFydFNjcm9sbGluZygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9FbGVtZW50cy9Nb2R1bGVzL0N1cnJlbnRUdXJuSGFuZGxlci50c1wiIC8+XHJcbmludGVyZmFjZSBDdXN0b21MaW5rT3B0aW9ucyB7XHJcbiAgICBtb3VzZW92ZXI/IDogKCkgPT4gdm9pZDtcclxuICAgIG1vdXNlb3V0PyA6ICgpID0+IHZvaWQ7XHJcbiAgICBjbGljaz8gOiAoZSA6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XHJcbn1cclxuXHJcbm1vZHVsZSBDb250cm9scy5MaW5rcyB7XHJcbiAgICBleHBvcnQgZnVuY3Rpb24gbWFrZUN1c3RvbUxpbmsgKGVsZW1lbnQgOiBFbGVtZW50LCBvcHRpb25zIDogQ3VzdG9tTGlua09wdGlvbnMpIHtcclxuICAgICAgICBpZiAob3B0aW9ucy5tb3VzZW92ZXIgIT0gdW5kZWZpbmVkICYmIG9wdGlvbnMubW91c2VvdXQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlb3ZlclwiLCBvcHRpb25zLm1vdXNlb3Zlcik7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlb3V0XCIsIG9wdGlvbnMubW91c2VvdXQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgb3B0aW9ucy5jbGljayk7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG1ha2VMaW5rIChlbGVtZW50IDogRWxlbWVudCwgYWN0aW9uIDogQWN0aW9uKSB7XHJcbiAgICAgICAgbWFrZUN1c3RvbUxpbmsoZWxlbWVudCwge1xyXG4gICAgICAgICAgICBtb3VzZW92ZXIgOiAoKSA9PiB7IEVsZW1lbnRzLkh5cGVybGlua0hhbmRsZXIuaG92ZXJBY3Rpb24oYWN0aW9uKTsgfSxcclxuICAgICAgICAgICAgbW91c2VvdXQgOiAoKSA9PiB7IEVsZW1lbnRzLkh5cGVybGlua0hhbmRsZXIudW5ob3ZlckFjdGlvbigpOyB9LFxyXG4gICAgICAgICAgICBjbGljayA6IChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBUdXJuU2VxdWVuY2UuZXhlY3V0ZShhY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgRWxlbWVudHMuSHlwZXJsaW5rSGFuZGxlci51bmhvdmVyQWN0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iLCJjbGFzcyBSb29tTm9kZSB7XHJcbiAgICBwcml2YXRlIHJvb20gOiBSb29tUmFuZG9tO1xyXG4gICAgcHJpdmF0ZSBtYWluRGl2IDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAocm9vbSA6IFJvb21SYW5kb20pIHtcclxuICAgICAgICB0aGlzLnJvb20gPSByb29tO1xyXG4gICAgICAgIHRoaXMubWFpbkRpdi5jbGFzc0xpc3QuYWRkKFwibWFwUm9vbVwiKTtcclxuXHJcbiAgICAgICAgaWYgKHJvb20gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWFpbkRpdi5jbGFzc0xpc3QuYWRkKFwibGlua2VkXCIsIHJvb20uZ2V0QmFja2dyb3VuZENsYXNzKCkpO1xyXG5cclxuICAgICAgICAgICAgUm9vbS5ESVJFQ1RJT05TLmZvckVhY2goKGRpcmVjdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJvb20uY29ubmVjdGlvbnNbZGlyZWN0aW9uXSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGlyZWN0aW9uRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb25EaXYuY2xhc3NMaXN0LmFkZChcIm1hcFJvb21Db25uZWN0aW9uXCIgKyBEaXJlY3Rpb25OYW1lc1tEaXJlY3Rpb25bZGlyZWN0aW9uXV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFpbkRpdi5hcHBlbmRDaGlsZChkaXJlY3Rpb25EaXYpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIENvbnRyb2xzLkxpbmtzLm1ha2VMaW5rKHRoaXMubWFpbkRpdiwgbmV3IEFjdGlvbkdvKFdvcmxkU3RhdGUucGxheWVyLCByb29tKSk7XHJcblxyXG4gICAgICAgICAgICAvLyBBU1NVTUUgVEhJUyBJUyBOT1QgVVBEQVRFRFxyXG4gICAgICAgICAgICAvL3RoaXMudXBkYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBjcmVhdGVSb29tTmFtZUZsb2F0ZXIgKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnJvb20gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxldCByb29tTmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcblxyXG4gICAgICAgICAgICBsZXQgc2F5TmFtZSA9IG5ldyBTYXkodGhpcy5yb29tKTtcclxuICAgICAgICAgICAgYXdhaXQgc2F5TmFtZS5nZXRQdXJlRWxlbWVudHMoKS50aGVuKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9vbU5hbWUuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICBFbGVtZW50cy5Ib3ZlckluZm8ubWFrZUhvdmVyYWJsZSh0aGlzLm1haW5EaXYsIHZhbHVlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyB1cGRhdGUgKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnJvb20gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGlmIChXb3JsZFN0YXRlLnBsYXllci5nZXRSb29tKCkgPT0gdGhpcy5yb29tKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW5EaXYuY2xhc3NMaXN0LmFkZChcImN1cnJlbnRcIik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW5EaXYuY2xhc3NMaXN0LnJlbW92ZShcImN1cnJlbnRcIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgICBsZXQgaXNSZW1lbWJlcmVkID0gYXdhaXQgV29ybGRTdGF0ZS5pc1Jvb21SZW1lbWJlcmVkKHRoaXMucm9vbSk7XHJcbiAgICAgICAgICAgIGlmICghaXNSZW1lbWJlcmVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW5EaXYuY2xhc3NMaXN0LmFkZChcInVua25vd25cIik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW5EaXYuY2xhc3NMaXN0LnJlbW92ZShcInVua25vd25cIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEVsZW1lbnQgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1haW5EaXY7XHJcbiAgICB9XHJcbn0iLCJjbGFzcyBTYXlBbiBleHRlbmRzIFNheSB7XHJcbiAgICBwcml2YXRlIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcImEgXCIpO1xyXG4gICAgcHJpdmF0ZSB1cHBlcmNhc2UgPSB0cnVlO1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoYXV0b1VwcGVyY2FzZT8gOiBib29sZWFuKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBpZiAoYXV0b1VwcGVyY2FzZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy51cHBlcmNhc2UgPSBhdXRvVXBwZXJjYXNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UHVyZUVsZW1lbnRzIChzYXkgOiBTYXkpIDogUHJvbWlzZTxBcnJheTxFbGVtZW50IHwgVGV4dD4+IHtcclxuICAgICAgICBsZXQgbmV4dCA9IHNheS5zZXF1ZW5jZVtzYXkuc2VxdWVuY2VSdW5uZXIgKyAxXTtcclxuICAgICAgICBpZiAobmV4dCA9PSB1bmRlZmluZWQgfHwgKG5leHQgaW5zdGFuY2VvZiBUaGluZyAmJiAoPFRoaW5nPiBuZXh0KS5wcm9wZXJseU5hbWVkKSkge1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUubm9kZVZhbHVlID0gXCJcIjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgYWFuID0gQXZzQW4ucXVlcnkoKGF3YWl0IHNheS5nZXRUZXh0T2Yoc2F5LnNlcXVlbmNlUnVubmVyICsgMSwgbmV4dCkpLnRyaW0oKSk7XHJcbiAgICAgICAgICAgIGlmIChhYW4ucHJlZml4ICE9IFwiXCIpIHsgLy8gYXZvaWQgXCJhIDUyIGNvaW5zXCJcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5ub2RlVmFsdWUgPSBhYW4uYXJ0aWNsZSArIFwiIFwiO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy51cHBlcmNhc2UgJiYgc2F5LmN1cnJlbnRQYXJhZ3JhcGgubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5ub2RlVmFsdWUgPSB0aGlzLm5vZGUubm9kZVZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgKyB0aGlzLm5vZGUubm9kZVZhbHVlLnN1YnN0cigxLCB0aGlzLm5vZGUubm9kZVZhbHVlLmxlbmd0aCAtIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5ub2RlVmFsdWUgPSB0aGlzLm5vZGUubm9kZVZhbHVlICsgXCIgXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBbdGhpcy5ub2RlXTtcclxuICAgIH1cclxufVxyXG5cclxuLy9ieSBFYW1vbiBOZXJib25uZSAoZnJvbSBodHRwOi8vaG9tZS5uZXJib25uZS5vcmcvQS12cy1BbiksIEFwYWNoZSAyLjAgbGljZW5zZVxyXG52YXIgQXZzQW4gPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIGRpY3QgPSBcInAzZXp6OzR3cmxnOzJoOyMycmc7MjI7MjthOzc7O2lmO3o7OyY0aDsxYzsxO047Njs7KnlwOzZhOzQ7YTI7cTs7ZTE7cTs7aTE7aDs7bzs3Ozsvb3A7NW47OTthMztpOztlNTtoOztoOzsxO281Ozs7aTtyOztsOzsxOy87Njs7bjs7MTtvNjs7O28xO2E7O3I7OzE7ZTc7OztzOzsxOy8yO2o7OzA5cGE7eTM7MTs4ZTsxMDs7MTdxb3E7cW1tOzI7MTJocDs3bnc7YTswbzQ7NDU7MTswbjsydzs7MTVyOzFuOzI7ODs3Ozs5OzU7OzI4czt4OzszNHE7ejsxOzc7NTs7NDVuO247OzU5ODt3Ozs2NWs7dTs7NzRqO3k7Ozg1MDt5Ozs5M3g7Zzs7ODF1eDtoZ2s7YTswemI7ZWw7YTswcDs0aDs7MTE7MTY7OzIxOzEwOzszMjsxNTs7NDsxODs7NTQ7djs7NjsxMjs7NztzOzs4O3Y7Ozk7MTc7OzExazticTsxOyB2OzI7OzIyOTtmMzsyOyAxYTszOzvigJM1Ozs7MzF4O2pjOzE7IDEyOzI7OzQxdztrcTsyOyB6OzQ7O+KAkzU7Ozs1NTk7c3A7NTsgMms7MTs7LGg7OztoNzs7O2tkOzs7bTY7Ozs2MnA7cm07MjsgMWI7NTs7azU7Ozs3Mm47eTY7MjsgMTQ7OzvigJM1Ozs7ODJyOzE5MjsyOyAxOTs0OzssNTs7OzkzaTsxaWc7MjsgMTA7NDs74oCTNTs7Ozh5cztuc3U7OzxlOTsxeDsyO207OzE7ZDs2OztvOzY7Oz1rcTsxeDsxOz0zbTtnOzE7RTs2OztAMTY7MmE7O0Ezd247YnU3ZDs2O0Ficjt5MTsxO0E4Yjs1bzsxO1MzO2U7O2kyZzs0cmg7MTtyMjY7NGRnOzE7b2I7Mjs7bWc5OzU0OTA7MTthMWs7MTQwOzE7cnY7MWU7MTsgdDsxOztuNm47Z2ZsOzE7ZDI1OzFhZTsxO2ExYzs1YjsxO2wxYjs0YzsxO3UxYjszcjsxO2MxODtjOzE7aTs7MTthOzsxO247Njs7czNmO2ZldTsxO3RuO3NjOzE7dWg7MXQ7MTtyaDsxczsxO2loOzFxOzE7YWg7MXE7MTtzZzsxOzt0NzE7NDFoOzE7aDUzOzExMjsxO2w0eDs3aTsxO2U0dzs2bTsxO3Q0dzs2bTsxO2U0dzsyajsxO3M7Zjs7QjdjZWw7c3o7MjtobGI7NDI7MjthYXc7Mjg7MTtpajsxeTsxO3JmOzFzOzE7YWU7OzvDoTsxMTs7b2xoajsyODsxO3IxY3k7ajsxO2RlcztmOzE7IDM7Zjs7QzhsMDU7MTBqOzM7YTI5bmc7NXQ7MTtpOWM7YjsxO3M7OzE7czU7OztoMXNrYTs5cDs0O2FhMWE7MXg7MjtpMTE1O287MTtzNTtnOzE7ZTU7OztvNXA7NzsxO2k7Njs7bDE3O2w7MTvDoTtmOztya3hrOzE5OzE7bzl0O2E7MTvDrTs1Ozt1MnJlO3k7MjtpMTthOztyMmZxO2U7MTtyZTs1OzE7YTs1OztvMXZyazs4ODsxO25qcHk7MW07MTtnMzgwO2Y7MTtqOzU7O0Q0MGR4O2hoOzc7YWo1NjsxeTsxO28zNTs2OzE7cTs1OztpamhjOzJ0OzI7bmJ3O2o7MTthMTc7ZjsxO3M0O2Y7O29nejtnOzE7dDE7OTs7dWl2djsxcjsxO2FkMjs3OzE7bGNpOzc7MTtjOzc7O8OhMzA7NzsxOyA7NTs7w7I7NTs7w7kxO2U7O8awOzc7O0Vmb2U7NDJ6eTs3O1UzdDt6azsxO1Ixcjs0OztiZTs0MjsxO29jOzF0OzE7bGI7cDsxO2liOzs7bTJrOzczbTsxO3B3OzEzdzsxO2VoOzkxOzE7emQ7OztuN3g7Mjd6ejsxO2FmOzE0OzE7bWQ7Mzs7c3lwOzM1eDsxO3B3czs5Yzs1O2F3bjtwOzE7Yzs3OztlNDs3ZDs7aDs1OztvO2I7O3I7aDs7dWRqbDtoYzsxO2xqOzZvOzE7bzY7Ozt3cjsxZTsxO2lkOzI7O0Y0ZXRhO2hoeDsxMTsgY2Y7MXJ6OzssOzE3OzsuMmo7Nmg7Oy9pOzI5OzswNTsyeTs7MTI4O2UxOzsyMTY7OWc7OzMxMTs3ZDs7NDE4OzhpOzs1aTs1dTs7Njk7ejs7Nzs7MTswYTs7Ozg2O2o7Ozk3O2w7O0E0MDQ7NWlqO2U7QmU7Mzs7Q3Q5O215OztEeDs5OztGYzs7O0k7OzI7TDg7OztScTs7O0sxMTs7O0xsOzQ7O00xeDsxOztOeTsyOztQMTM7Mjs7UTloOzVqOztSYWQ7M3A7O1Mxbjs5OztUMnQ7Mjs7QjU3OzFqaTs7QzRzO2pwOzE7TWI7MTs7RDJnO2FrOztFN3I7Mzk7MjtDNjtrOztJNTtmOztGMzM7NjQ7MTtyNTs7O0h6OzF1OztJMXZ4O2JrOzM7QTI0OzQ1OzE7VG07MTs7Ujs7MTsgdzszMDs7VTI7YTs7SjU7Zjs7TGtrO2cxOzM7QzJwOzN2OztONDtlOztQMTtmOztNNnc7MWRzOztPZzM7MmU7MTsgNTtpOztQczQ7dzc7MTsuN2k7NTM7O1I4djszejsyO0ExZTtnOzE7IDM7ZTs7U2U7eTs7UzNnOzkxOztUOGE7MWFoOzE7UzF4OzY7O1VlbDszbTsyOywyO2I7Oy47azs7WG07MW87O1l6OzV3OzE7VjY7OztjMztsOztmOzsxO283Ozs7aDE7MzE7O8+DMTtpOztHNTV6MDtpZzs3O2Uxc2N0OzNoOzE7cjFmdmg7MW47MTtuOzsxO2U7YTs7aDFzZDszMTsxO2ExN2s7MmU7MztlO3E7O2k7bjs7bzs2OztpNGI5O3M7MTthbHQ7YzsxO25sMDtiOzE7ZzE7YTs7b3ZpMjsyZDsyO2Y7OzE7IDtiOzt0MjM4O2Y7MTt0Mno7NzsxOyA7Njs7cjE3anY7MzI7MTtpcWw7ZTsxO2E7OTs7dzQzOzY7MTthMXA7NTsxO3JkOzU7MTtyOzU7O8O6OzU7O0gyNHNuO2N3ZDtzOyA1aTttazs7JmI7MTc7OywxO2Y7Oy4zNzs0MjsyO0FpOzs7SWU7NDs7MWk7MWo7OzJyOzIyOzszOTtuOzs1YTsxOTs7NzI7YTs7QjJ6O2N4OzE7UDc7OztDMXE7MzU7O0RkMTt0Yjs7RjFsOzJ4OztHbDsxNDs7SHk7MzA7MTtJNTs7O0k4MDtpOTs2O0NjOzE7O0cxMDsyOztOYjsxOztQcTsyOztTOzsxO0QxO2o7O1RmOzE7O0s0azsxdzsxOzk7Nzs7TDFlOzM1OztNMzY7NnU7MTsuYzs7O055OzJ2OztPOTU7M2c7MjsgNzt0OztWYzsxNjs7UDRiO2JmOztSMnY7NHY7MTtUbjs3OztTOzsxO0Y1Ozs7VDljOzExNTs7VjFrOzN1OztlYW94OzdwOzI7aW0xOzExOzE7cjQ7bzs7cjI5dDsybTsxO3IxZDs3OzE7bjs1OztvaGgxOzZkMDsyO24zanI7NjV2OzY7ZDEyMTt2OztlNGM7MW07MTtzNzsxbTs7ZzIxZjtlOztrcDs7O29hZDs2MWI7MjtsMjY7MTs7cjdjOzVqejsxO2k7OzE7Zjs1Ozt2Njs7O3UycTQ7MzI7MTtyMjsyeDs7STI2Njs0bWdiOzM7STRvOzhmOzI7KjY7OztJMXY7ajs7bmlqOzFobTQ7MTtkOXA7d3RwOzE7ZTFjOzN3eTsxO3AxMjszcjY7MTtlMTI7M3I2OzE7bjEyOzNyNDsxO2QxMjszcjQ7MjtldDszcXc7MTtudDszcXc7MTtjNzs0MTsxO2k2Ozs7w6o4Ozs7czRoO2NpZjsxO2wyaTs0Mno7MTthMmg7M3lyOzE7bmU7Z3k7MTtkZTtneTsxO3NkOzM7O0oyNGI2OzdoOzE7aXc5O3Q7MTthOzsxO28yO287O0wydTk4O2FiZTt5OyA1czsxN3Q7OywyO3M7Oy4yNTs5cTs7MWw7MXQ7OzJqOzJoOzszYTsxMDs7NDg7bDs7ODtjOztBbmM7Y2U7MzsgMWU7NnE7O1BvOzJ0OztYMTthOztCMWo7MnI7O0M1OTtyNDs7RDQyO2xjOztFamc7aGc7MjsgMjtpOztENHg7ZTk7O0YyMDszczsxO1RpOzI7O0c4cztrbzs7SDs7MTtEazs2OztJZHk7MW07MTtSZDt1OztMYzA7MjVrOztNM2s7OTQ7O04yNjs1MTs7UDYzOzFnMDs7UjIzOzZ6OztTMno7ZjY7MTttNzs7O1QzNjs4Njs7VTFzO247MTsgNTtoOztWMTQ7MzU7MTtDNzs7O1c7OzE7VDs1OztaOTt0OzteOzU7O2FtNWQ7M2c7MTtvOTE7ZTsxO2k7OzE7ZztlOztvbG4yOzNyOzE7YzJpazsxOTsxO2gxczsxMTsxO2E3O3o7MTtiNjs7O3AxO2g7O3U1MWk7MXE7MTtzNHA7eDsxO2hnO3c7MTtvYjs7O+G7mTs1OztNNWJodTtza2Q7MTU7IDZuO24yOzsmYjsxaDs7LDtnOzsuMWtyOzVlcjsxO0FsbTsya2Y7MTsua2Y7Mmh0OzE7U2E7Mjs7LzQ7MWY7OzE0ZjtmNDs7MjJhOzZrOzszeTszMTs7NDFqOzVoOzs1bjsxYTs7NnI7M3E7Ozd0OzFmOzs4NzsxMTs7QTFmeDsybXQ7aTtCNTs7O0M5cTsxOztEMmQ7Mzs7RjEyOzQ7O0cxNzs0OztKMzg7OztMMTE7Mjs7TXY7MTs7TjJpO2E7O1AyZjs2OztSMm87OztTMnQ7Njs7VDJsO2Y7O1ZjOzI7O1c3Ozs7WDFoOzs7WWE7OztaNzs7O0JidjszOXM7MTtTYjtyOzE7VDk7OztDNWU7bmk7O0Q1ZTtuYTs7RWZqO2Q0OzM7UDFqOzlmOzE7Uzc7OztXOzc7O242O2k7O0Y2NDsxNHk7O0czMTthejs7SDJpOzdkOztJenE7aWo7NDsgZjt3Ozs1OzJvOzs2ZjszNTs7VDI1Ozd5OzE7TWk7MTs7SzFvOzNjOztMY2w7MTdyOztNY2M7cnA7O04xaTs0MDs7T3NsO2F2OzE7VTE3OzJjOztQZWw7M3h6OztRYTsxZzs7UjRsO253OztTa3U7MWxkOztUYWk7eWo7MTtSMXk7dzs7VWFzOzF0OzI7IDI7aTs7VjM7ZDs7VjNzO2E1OztYcTsycDs7YjFhO2k7MTt1cjtkOzE7bTE7YTs7ZjJxO2VrOztoZjsxZzs7b200ejs3aDsyO0Q7OzE7ZTc7OztVMmI7MzQ7MTsuNTs7O3A7OzE7MzE7Yjs7czIzO2g7MTtjMztjOztOM3F5eDtpcGk7eTsgN3A7cWU7Oys7OTs7Ljs7MTtFZzs1Ozs0NjtrOzs3Ozc7Ozg7Nzs7Ojs1OztBNGdhO2luOzM7QTNnOzZqOzE7Rm87Mjs7STFtOzUyOztTMmwzOzF4OzE7TGI7MWI7O0I4azsyZ2Q7O0NraDsyaWI7O0QydDthcTs7RWpwOzlyOzM7QTEwOzJyOztINTsxNjs7Uzs7MTsgMXk7MnY7O0Zhczsyc207MTtVYzsyOztHNXg7emI7O0g4bzsxb3E7O0k7Ozc7QzF3O2o7O0Q7OzE7IDs5OztLYTs7O0xkOzI7O05qOzs7Tzg7OztTMjA7bjs7SzFjOzRnOztMMnQ7OTQ7O00xczs5YTsxO001Ozs7TmRsOzM2OzI7UjE7ZDs7VDQ7aDs7UDs7MTtPMjVrOzFqNDsxO1YyNHk7MWk4OzE7Lzs7MTtCOzU7O1I5bjtmNjsyO0plOzM7O1QzeTtlOztTYnk7bHQ7MTtXNW07Zzs7VDNtOzloOzE7TDs7MTtENTs7O1U2MDsxYTsxO1M0O2k7O1YxYTs0aDs7VzY0OzRuOzI7QXU7MzA7O087OzE7SDs4OztYcDs0cDs7WXM1O2FmOzM7QzY0OzFpOzE7TDs2OztQMWs7M3Q7O1VqOzFwOzthMTBwejs4ZjsxO3NxMTtkOzE7YTs7MTtuMTs4Ozt0OzsxO2gxO2E7O3ZrOzFjOzvCsjs3OzvDlzs1OztPMW45OzFnN2Y7NTtOMTc7M2w7MTtFMTI7Mjs7bDI5Ozh5YjsxO3ZsOzI7O251aDsxdGk7MjtjOzsxO2VjOzI7O2V0YzsyMTsxO2kyOzFrOztvaTszZTsxO3BmOzE7O3UzeDsxZXk7MTtpM2M7Yjs7UDVkc2c7a2c7MTtobWI2OzNyOzI7aTM5ajt2OzE7YTs5OztvMTI4OzFzOzI7Ymg7MTk7MjtpODs7O285Ozs7aTE7ajs7UWIzYzsxbDsxO2k4Yzt0OzE7bjYxO2w7MTtnNHg7bDsxO3gxO2Y7O1IzdGU2O3Uwbjt6OyA2aDsxMTk7OyY4dDt6ZTs7LDtrOzsuMnI7NHQ7MTtKajszOzsvYTtxOzsxMXM7M2s7OzRhO3I7OzY3O2o7O0ExMmM7eW07MzsgZDsxbzs7LjE7YTs7Rjd2O3JhOzE7VGY7OztCNGI7djQ7MTtSazszOztDNTI7bDc7O0QzNDs5Yjs7RW5wOzNhOzM7IGI7cTs7UzN6O3E7MTtQYTtwOztVOzU7O0Z4bDs1Y2c7O0cxMTs1dzs7SDF4OzFhOzE7UzQ7Zjs7SWYyOzZvOzI7QTE3OzNzOztDOzsxOyBhOzFjOztKbjsyZTs7S3o7NWc7O0wxaDsyazsxO1A2Ozs7TTV1O2NnOzU7MWU7NDs7MjY7OzszNjs7OzU5Ozs7NjU7OztONHk7cTM7O09nczs4NjsyO0hrOzE2OztUMW47M2I7MjtBdjs7O083Ozs7UDR1O3E3OztRODtxOztSMjE7Mzc7MTtGNjs7O1MxcGw7MXVwOzQ7LDg1OzZiOzsuYmE7N2w7Oz8ybDt5OztUdjs2OztUNXQ7aXo7O1UyMzs0dTs0O0I1Ozs7TTU7OztOYjs7O1M5OzE7O1YxaDs4dTs7WGE7bzs7Yzs4OztmM3FoO2RiODsxO007OzE7Lmg7NDs7aDF4azsxYTsyO0E7NTs7Qjs1OzvDsjs1OztTN2xkZjtlYTc7MTE7IDluOzE4YTs7JjFvOzNzOzssMjtmOzsuZTg7OTE7NDtFNzttOztNYzsxMDs7T2E7MTg7O1Q7OzE7Ljs7MztCMjtiOztEMztjOztNMjtjOzsxbTsyOTs7MzU7bzs7NGI7czs7NTU7aTs7Njg7czs7ODQ7aTs7OTI7Yjs7QTFiMTtsMzszOyAyYTs3ZDs7ODs1OztTMnY7M3Q7MjtFcDs0OztJNjs7O0IzMDs3NDs7Q2xmO2E3OzM7QTJ6OzE1OzE7IDM7eTs7Ujs7MjtBcDs7O1U1Ozs7VDY7czs7RDY2O25zOztFcmk7anE7NjsgczsxZzs7NTs3OztDM2c7YmE7MztBYzs7O09oOzs7Umg7Mzs7STs7MTtGOTs7O08xYTsyODs7VTs1OztGNTg7N3c7MzsmNTs7O0g2Ozs7Tzs7MTtTODs7O0cyNDs1djsxO0RmOzU7O0g2bTszdDszOzI1O2g7OzMyO2c7O0w7Nzs7SXQwOzgzOzI7IGY7NTA7O1M7OzE7TzY7OztLOzsyO0k5OzE7O1loOzs7TDZ6OzhtOzM7QTJrO287MjsgMTtnOzsuOzU7O0l1O2U7MTsgMztjOztPbTs1OztNOWo7bGg7MztBMjg7bzsxOyA0O207O0lpOzU7O1U7OzE7UjY7OztOOzs1O0ExZTtiOztDOzszO0E4Ozs7QjU7OztDODsxOztFMTg7bzs7RmE7OztPNGc7MTs7T2k3O2RjOzU7IGM7dTs7QTRjOzFoOzE7STU7Zzs7RWc7MW07O1N2OzVtOzE7VTU7OztWOTtwOztQMXI4OzMyMDs3O0ExMDI7MWRuOzc7QWE7OztDaDs7O0QyMjs7O01yOzs7TmU7OztSMmY7OztTODsxOztFM2s7ajsxOyA0O2c7O0liOTsxNTU7NDtDbzs7O0Q2Ozs7TjU7OztSNTs7O0wxMzsyNjsxO082Ozs7TzE4O2U7O1UxeDs1OztZNTs7O1E7OzE7IDE7ZTs7UjNpOzl6OztTZjc7MWt2OzE7V2U7OztUamc7ZTc7OTtBNDY7dzsxOyA4O3M7O0M3O3I7O0RuOzJ6OztGNDtuOztJcTsxYzs7TDY7azs7TW07MTU7O1NiOzEyOztWNTsxMjs7VTs7NztCbjsxOztMNDI7Mjg7O01qOzs7TjE4Ozs7UDE1OzI7O1JmOzs7U2Y7OztWNmo7eTc7O1doZTsydjsxO1I1O207O1g7OzE7TTI7Yzs7aGE5bTsxNDsxO2kybTc7aTsxO2c7OzE7YTs7MTtvOzc7O3B4Ymw7M3U7MTtpMWxnO3M7MTtvNjtqOzE7bjY7Ozt0cG12OzMzOzI7Qjs1Oztpa3o7YjsxO2M1YjthOzE7aTs4OztUM2RhdjtpZjs0O2Fjenk7NGY7MjtpMXdqOzE1OzI7Zzs7MTthNjs7O3M7OzE7Yzs4Ozt2MXE7cTsxO2UxNztoOzE7cztoOztlZ2E2OzI5OzE7YTFvMjtvOzE7bWcyOzY7MTtwOzY7O3VjNHQ7MjI7MTtpOzsyO2wxOzg7O3I7ODs7w6AxO247O1Uyb2g4O2ExajttOy5qcWs7ODA7MTtONzg7aDsxOy43MDtoOzE7QztmOzsvMnI7ZjsxOzE7OTs7MTs7MTsgYzs7OzI0Yjt4OzE7MTc7azs7TDNxO2o7MTtUOzY7O003aDsxZDsxO044O3E7O040YnA7YW07NDtDMnU7azsxO0w7NTs7RDs7MjsgNjs7O1AxNDsyOztLOzU7O1I7OzE7IDU7OzthMzs0MDs7YjJyOzQzOzI7YW07NDs7aXM7OTs7ZGU7MTY7O2dscDszYTsxO2w7MW47O2k7OzE7Z3E7YTs7bDJ1OzE0cjsyO2lnOzQ7O3ljOzs7bXk7OG47O250cmM7MnVoO287IDU7azs7YTs7MTtuMWU7Yjs7YjM7MXE7O2NlOzl3OztkMXU7eDI7O2UxOTsxdDsxO3MxNjsyOztmMzsyZDs7ZztsOztoNjtsOztpdGozO2tiOzI7ZDM7ZTs7bjI7NjU7O2o7Nzs7azM7NTU7O2wzOzJjOzttNTsxZTs7bjI7dDs7bzQ7MTM7O3AyOzFwOztxOzU7O3I2OzcxOztzNTsydTs7dDExOzRhOzt1Njt2Ozt2MTthOzt3MTsxMDs7cDEyO3plOztyMWFwOzFyczszO2E0aDtrOztlYTs7O3V6NTtlMjsxO2sxO2Q7O3MxYXQ7NDE7MzsgOzc7O2g5O3Q7O3R3OzFyOzE7cnA7MTs7dGxhOzQ5OzQ7aDI7YTs7bjE7bjs7cmE7dTs7dDc7ajs7eDI7ajs7ejJkO2R5OzvDrTI7ZTs7VzNmemg7MXhwOzI7UGdoODsxa3c7MTs6ZHRwOzFqcjs0O0E7OzE7RnA7MWI7O0k7OzI7QjE7OTs7Tjs7MTtIODsxOztPZTI7N2I7MTtWO2E7O1Ixbjc7Y3Y7MTtGOzsxO0M7OzI7TjU7OztVMWI7ZTs7aTE1MHo7Nmw7MTtrdWNiOzVuOzE7aXUwczs1bDsxO0VsOzg7MTtsOzsxO2kxOzg7O1gxOGs7NXJ1Ozc7YTJvOzY7O2U3bzs1OztoMjI7OztpOHY7Yzs7b207NDs7dXg7NDs7eXQ7NDs7WWRyMTs1czszO2UxeHE7djsxO3QzNTthOzE7aDI7YTs7cDM7ZDs7czE7ODs7WzFmMztiMzs1O0E2O207O0U7Yjs7STE7YTs7YWk7MTM7O2VkOzMwOztfMXBkZTs1ZjM7MjtfMXBhMjs1ZW07MTtpOzY7O2U7NTs7YDRqOzE5OzM7YTE7Zzs7ZTs1OztpOzc7O2FhNGU7MWsxY3I7NzsgMmU2OzFyNDs7bTZoOzFibWM7MTthMms7Z2RrOzE7cjs7MTsgOTs7O24xeXE7NHRjejsxO2RzejsxMzY7Mjsgc207Njk7O8SbNTs7O3A4eDsydG4xOzE7cmo7ZTg7MTt0Njs7O3IxcWw7ZG02ZDsxO3QxYmI7N3JycDsxO8OtNjs7O3VhdDsyNzF5OzE7c2M7d207MTtzNjtsOzE7aTs7MTsgNTs7O3YzMTsycXN2OzE7dTU7MjE7MTt0NTs7O2QxNDEzMjs0c3A7MzthNGJoNzszaTsxO3MxcTM7MWo7MTsgOzFoOztlZGV6MjszdGw7Mjttb3NhOzFuOzE7IDI7MTA7O3I5b2M7M2IxOzE7IDE7M2FuOztpZHNkMDtreTsyO2NmZzE7azsxO2hkajtkOzE7IDtjOztlNTdrOzZ3OzE7czFybDtsOzE7ZTFwcDtrOzI7bTs1OztyOzU7O2U3d247emxyejs4O2MydTttbzI7MTtvMXo7ZWd5OzE7bjFnO2JidjsxO28xZTtiYmc7MTttMWU7YmJjOzE7aTFiOzljODsxO2E2Ozs7ZWU7MTVkOzE7dzg7OztsYnI7MnlpcTsxO2l0OzViaTsxO3RqOzNxaDsxO2VnOzNoczsxO2k1Ozs7bThnOzF0NWM7MTtwMno7b2llOzE7ZWQ7djY7MTt6ZDs7O255cDs2YjRqOzE7dDdqOzFnMnM7MTtlMTY7NWQ0OzE7bjU7cjsxO2Q1Ozs7czk2OzF5cHI7MjthOzsxOyA1Ozs7dDQ1OzE3MTY7NDthMmc7YzNsOzE7IGQ7OztlODtpMDsxOyA2Ozs7aWw7dGw4OzE7bWw7dGw1OzE7YWw7dGw0OzE7cjU7OztyZDtibzsxO3U7OzE7dDY7Ozt1MnFvOzc0OzE7cDExYTsyajsxOyA7aTs7dzJlO287O2YxbjlodDsxY3Q7MzsgMWI7NDQ7O003OzJqOzt5MWw7NzsxO2k7Nzs7aHBwNm87MXQwNDs5OyAzNztrcTs7LDE7OTs7Ljs1OztDMjsxZDs7YTR0cGU7bGE7MTt1MWplOzFyOzE7dG47MWo7MTtiNTs7O2UzcTNnOzN3bjsyO2lhamQ7MjRiOzE7cjF6OzIzMjsxO2ExNTsxOztyamFqOzFlcDsxO20xdWo7MTQ7MTthODM7ZTsxO247NTs7bzYzdDU7MWViMzs0O215bWc7MXJkOzI7YTE2dDsxbW47MTsgNjs7O21tOzFnOztuMWF3O293bzs4OyBhOzE7O2I4Ozs7ZGY7OztlejM7MzJyOzM7IDY7OztkZTs7O3l2bjsxOztnYTs7O2lmOzE7O2s0ZTs7O3ZkOzs7cm8yNzs3YjsxO3NjOGM7MXY7MTsgODsxNTs7dTFseXk7bXZyOzE7cjI2O211czs7cnk7NzsxOyA7NTs7dDJ0OzUxOzE7dDFlOzI0OzE7cDFlOzI0OzE7OnU7Zjs7aTU1MDt0NWM4OzY7YmM7M2E7MTtuNzs7O2U5O2w7MTtyNzs7O24yeDM7am1rYTsyO2Zibzsxam53OzI7bDFzO2ZsMzsxO3UxNztjdWg7MTvDqjk7OztvNnA7Z2FqOzE7YWQ7MTs7czg0OzFwdjE7MTt0M3k7d2hrOzE7YTE3OzlncTsxO2xkOzIxYzsxO2E1Ozs7cjJqO2VrZzsxOyA4OzE7O3NxejsxYWdrOzE7IGpkOzRxOzt1MTY7ODs7azN2NjM7NWY7MTt1cnM7bjsxOyAzO247O2wxZXd6bzt6cDszO2NqOzc7MTtkOzY7O3NsOzU7MTsgOzU7O3ZtOzg7MTthOzg7O20xcWw5ODsyNDM7YTsgMWI7OTM7Oyw7Nzs7UnM7M2U7O2I7OzE7YTU7OztlZ3VyMjs5cjsxO2kyYztkOzE7bjM7ZDs7ZjU7Zzs7cHo7NmI7O3Q7OzE7YWE7Ozt1NXFsODs1dDsxO2wxOTN0OzJ0OzE7dDE3dXM7MnQ7MTtpMTd0eTsydDsxO2MxZDQ7ODsxO2E0ejs2OzE7bW87NjsxO3A7OzE7aTs2OzvDlzthOztuMTRzZXE7M2I3OzY7IDlyOzFlaTs7Vjc7dzs7VzQ7cTs7ZHg7MW47MTsgZTs7O3RlO3U7O8OXMTtiOztvMXBvMTtnbXNlOzg7YzJsO2V3eTsyO2hiOzR3OzE7b2E7MTs7dTc7NnU7MTtwNzs7O2QyMTs2aWk7MTtkMW87NTllOzE7eWE7Oztma3o7MmNnOTsxOyBicjs1MTs7Z3A7ZmQ7MTtnZTsxMTsxO2lhOzs7bjFtdXk7MTUxdjtvOyA0YTs2eTY7Oyc7NTs7LDs4OzsvMTszdDs7YTE7ZTs7YjtkYjs7YzFxYztzZTsxO28zO3JuOztkMTtuOztlMWtxeDtidTsyO2k7Yjs7cjY7M2E7O2Y7OTs7ZzF0O2FkbTs7aTM7Y2E7O2w2cTtqdzc7O200OzE0OztuO2M7O28yOzU3OztyOzFhOztzNjsxMGY7O3Q2O2hiOzt1MTsxbDs7dzE7MWs7O3k7MTU7O3o7Nzs74oCTOzY7O3JodDsyc2FzOzE7aTMwO2d3bjsxO2cycDtmbDQ7MTtlNjs7O3QzNzs1MGk7MTtyOzsxO3M7ODs7dTdqOzFlNnQ7MTtpMTY7Njs7cjFmeGk2OzF1MTszOyAxNDs2Zzs7JjE7ODs7ZjEyOzUyOztzM2FybzU7M2lvOzk7LDtlOzs/OzU7O1IyO2g7O2Y7OzI7ZTg7OztvODs7O2lnZ244O2I5OzE7YzF2cDsxODsxO2hiOzE3OztsMjB1NDsxbTsxOyA7NTs7cGJhZG87ZGU7MjszMztqOztpcGljOzEyOzE7IDs1OztyMXQ7azsxO2c7Yzs7djs7MzthZTs7O2UxMTs7O2k2Ozs7dDFjMXA3OzFtdDsyO0ExOzk7O1MzOzJ1Ozt1NGRocTs4cm5jO2M7IDd4O247Oy45Ozs7YmVoOzNmOzI7ZTc7MW07O2w7NTs7Zmw7Njs7azZoOzJlOzI7YWU7MTE7O2k4O247O20xajs0a2o7MTthOzsxOyBmOzU7O24yZW81OzZ6bnk7MzthM2xuOzdqMDszOyAxcjs0OztuM2R6O2luOzU7YTI7Yzs7Yzs4OztuNTthNzs7czszNzs7dDszaDs7cjRhO2poOzE7eTQ2OzQ7O2UyODthOG07MjsgbTs7O2k3Ozs7aTI5cDM7d2Z1Ozg7YzE0YTsxNzsyO29lZztpOzE7cmNsO2g7MTtwO2E7O3U7OzE7bTs2OztkNHg7MmI5OzE7aTRkO2Y7MTtvOzc7O2c7OzE7bjs1Oztsc2w7MTc7MTtsO2k7O20yaTtyOTsxO28yYTsyOztuM3k7c3NwOztzOWo7bTsxO3M7Zjs7dmhnNTs1eDsxO29qOzE3OzE7Y2Q7Mzs7cjFjYjtiZDQ7NTthY287cjs7ZTN2O2g7O2loNztpOztsN207MWo7O280NztrOztzMXN6dzsxaWc7MzsgaDszZjs7aDE7OWY7O3UxYmg7aXY7MTtyZGE7Z3M7MjtlcTthOztwY2Q7Z2c7MzthM2I7MXk7O2U3cTszNjs7aWc7Ozt0MzNqOzFhaTsyO207cjs7dGE7MTZiOzt2M2M7Yzs7dzNlO2Q7MTthOzc7O3g7O2I7IDIzO2h3OzsnOzY7OywxO2M7Oy4yO2E7OzhvOzQ3OztiNTtmOztrOzEzOztsMTs4OzttZDt4OzE7YTc7Ozt0O2M7O3k0eTtlOzE7IDthOzt5NmF0bjtjYTsxO2wxO2M7O3s2cztyOzE7YTs3Ozt8NTg7bTsxO2ExO2I7O8KjNmNzOzhsOzE7ODJiOzZvOzvDgDs5OzvDgWE7bzs7w4QzO2M7O8OFMjtrOzvDhjQ7azs7w4lmOzJxOzvDkjtjOzvDkzE7MWQ7O8OWYTsxNjs7w5w0O3Y7O8OgNzt2OzvDoTU7bDs7w6YxO207O8OoOzY7O8OpNGM7Ymc7MTt0M2g7Mjk7MzthNDsxbjs7bzthOzt1MTtiOzvDrTs1OzvDtjI7ZTs7w7xkO3I7MTsgNzs7O8SAMTtiOzvEgTM7czs7xKs7NTs7xLA0O287O8WMMztvOzvFjTsybTs7xZM7ODs7zqkyO2U7O86xMWM7YzE7O861NTsxczs7z4k3OzF4OzvPtTs4OzvQtTs1OzvigJMzYTsxazsyO2U7YTs7aTs5OzvihJM7ZDs7XCI7XHJcbiAgICB2YXIgcm9vdCA9IHt9O1xyXG4gICAgZnVuY3Rpb24gZmlsbChwcmVmaXgsIG5vZGUsIGRpY3QpIHtcclxuICAgICAgICB2YXIgYSA9IGRpY3Quc3BsaXQoJzsnLCAzKVxyXG4gICAgICAgICAgICAsIG4gPSBhLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4gcGFyc2VJbnQoeCwgMzYpfHwwOyB9KTtcclxuICAgICAgICBub2RlLmRhdGE9e1xyXG4gICAgICAgICAgICBhQ291bnQ6blswXSxcclxuICAgICAgICAgICAgYW5Db3VudDpuWzFdLFxyXG4gICAgICAgICAgICBwcmVmaXg6cHJlZml4LFxyXG4gICAgICAgICAgICBhcnRpY2xlOm5bMF0+PW5bMV0/XCJhXCI6XCJhblwiXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpY3QgPSBkaWN0LnN1YnN0cigxICsgYS5qb2luKCc7JykubGVuZ3RoKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5bMl07IGkrKylcclxuICAgICAgICAgICAgZGljdCA9IGZpbGwocHJlZml4ICsgZGljdFswXSwgbm9kZVtkaWN0WzBdXSA9IHt9LCBkaWN0LnN1YnN0cigxKSk7XHJcbiAgICAgICAgcmV0dXJuIGRpY3Q7XHJcbiAgICB9XHJcbiAgICBmaWxsKFwiXCIsIHJvb3QsIGRpY3QpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICByYXc6IHJvb3QsXHJcbiAgICAgICAgLy9Vc2FnZSBleGFtcGxlOiBBdnNBbi5xdWVyeShcImV4YW1wbGUgXCIpXHJcbiAgICAgICAgLy9Ob3RlIHRoYXQgdGhlIHRlcm1pbmFsIHNwYWNlIGluZGljYXRlcyB0aGlzIGlzIGEgY29tcGxldGUgd29yZCAtIHRoaXMgaXMgc29tZXRpbWVzIHNpZ25pZmljYW50LCBwYXJ0aWN1bGFybHkgZm9yIGFjcm9ueW1zIVxyXG4gICAgICAgIC8vcmV0dXJuczoge1xyXG4gICAgICAgIC8vICAgcHJlZml4OiBcImVcIiwgLy90aGUgcHJlZml4IHN1ZmZpY2llbnQgdG8gZGV0ZXJtaW5lIHRoZSBhcnRpY2xlXHJcbiAgICAgICAgLy8gICBhQ291bnQ6IDk2ODIsIC8vdGhlIG51bWJlciBvZiB0aW1lcyBcImFcIiB3YXMgc2VlbiBmb3IgdGhpcyBwcmVmaXhcclxuICAgICAgICAvLyAgIGFuQ291bnQ6IDEwMjgyNDYsIC8vdGhlIG51bWJlciBvZiB0aW1lcyBcImFuXCIgd2FzIHNlZW4gZm9yIHRoaXMgcHJlZml4XHJcbiAgICAgICAgLy8gICBhcnRpY2xlOiBcImFuXCIsIC8vdGhlIG1vc3QgY29tbW9uIGFydGljbGVcclxuICAgICAgICAvL31cclxuICAgICAgICBxdWVyeTogZnVuY3Rpb24gKHdvcmQpIHtcclxuXHJcbiAgICAgICAgICAgIHZhciBub2RlIDogYW55ID0gcm9vdCwgc0kgPSAwLCByZXN1bHQsIGM7XHJcbiAgICAgICAgICAgIGRvIHtcclxuICAgICAgICAgICAgICAgIGMgPSB3b3JkW3NJKytdO1xyXG4gICAgICAgICAgICB9IHdoaWxlICgnXCLigJjigJnigJzigJ0kXFwnLSgnLmluZGV4T2YoYykgPj0gMCk7Ly9hbHNvIHRlcm1pbmF0ZXMgb24gZW5kLW9mLXN0cmluZyBcInVuZGVmaW5lZFwiLlxyXG5cclxuICAgICAgICAgICAgd2hpbGUgKDEpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5vZGUuZGF0YSB8fCByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICBub2RlID0gbm9kZVtjXTtcclxuICAgICAgICAgICAgICAgIGlmICghbm9kZSkgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIGMgPSB3b3JkW3NJKytdIHx8IFwiIFwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufSkoKTsiLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vU2F5LnRzXCIgLz5cclxuY2xhc3MgU2F5Qm9sZCBleHRlbmRzIFNheSB7XHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UHVyZUVsZW1lbnRzICgpIDogUHJvbWlzZTxBcnJheTxFbGVtZW50IHwgVGV4dD4+IHtcclxuICAgICAgICBsZXQgcGFyYWdyYXBocyA9IGF3YWl0IHRoaXMuZ2V0UGFyYWdyYXBocygpO1xyXG5cclxuICAgICAgICBsZXQgZWxlbWVudHMgPSBwYXJhZ3JhcGhzLmxlbmd0aCA9PSAxID8gcGFyYWdyYXBoc1swXSA6IEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIHBhcmFncmFwaHMpO1xyXG5cclxuICAgICAgICBsZXQgYiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJiXCIpO1xyXG4gICAgICAgIGVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgYi5hcHBlbmRDaGlsZChlbGVtZW50KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gW2JdO1xyXG4gICAgfVxyXG59IiwiY2xhc3MgU2F5SGVTaGVJdCBleHRlbmRzIFNheSB7XHJcbiAgICBwcml2YXRlIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcImEgXCIpO1xyXG4gICAgcHJpdmF0ZSB0YXJnZXQgOiBUaGluZztcclxuICAgIHByaXZhdGUgdXBwZXJjYXNlID0gdHJ1ZTtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKHRhcmdldCA6IFRoaW5nLCBhdXRvVXBwZXJjYXNlPyA6IGJvb2xlYW4pIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xyXG4gICAgICAgIGlmIChhdXRvVXBwZXJjYXNlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLnVwcGVyY2FzZSA9IGF1dG9VcHBlcmNhc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBnZXRQdXJlRWxlbWVudHMgKHNheSA6IFNheSkgOiBQcm9taXNlPEFycmF5PEVsZW1lbnQgfCBUZXh0Pj4ge1xyXG4gICAgICAgIGxldCBuZXh0ID0gdGhpcy50YXJnZXQ7XHJcbiAgICAgICAgaWYgKG5leHQgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5ub2RlVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChuZXh0IGluc3RhbmNlb2YgSHVtYW5vaWQpIHtcclxuICAgICAgICAgICAgICAgIGxldCBnZW5kZXIgPSBuZXh0LmdldEdlbmRlclZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ2VuZGVyLmdlbmRlclZhbHVlQ29ycmVjdGVkID4gNjUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUubm9kZVZhbHVlID0gXCJzaGUgXCI7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGdlbmRlci5nZW5kZXJWYWx1ZUNvcnJlY3RlZCA8IDM1KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLm5vZGVWYWx1ZSA9IFwiaGUgXCI7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgcGVyc29uIGlzIGFuZHJvZ3lub3VzLi4uXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmRlci5oYXNQZW5pc0J1bGdlIHx8IGdlbmRlci5oYXNQZW5pcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUubm9kZVZhbHVlID0gXCJoZSBcIjtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGdlbmRlci5oYXNWYWdpbmEgfHwgZ2VuZGVyLmhhc1RpdHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLm5vZGVWYWx1ZSA9IFwic2hlIFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5ub2RlVmFsdWUgPSBcInRoZXkgXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogSWYgd2UgZXZlciBoYXZlIGdlbmRlcmVkIG5vbi1odW1hbm9pZHMsIHRoZXkgbXVzdCBiZSBhZGRlZCBoZXJlLlxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLm5vZGVWYWx1ZSA9IFwiaXQgXCI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnVwcGVyY2FzZSAmJiBzYXkuY3VycmVudFBhcmFncmFwaC5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLm5vZGVWYWx1ZSA9IHRoaXMubm9kZS5ub2RlVmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKClcclxuICAgICAgICAgICAgICAgICAgICArIHRoaXMubm9kZS5ub2RlVmFsdWUuc3Vic3RyKDEsIHRoaXMubm9kZS5ub2RlVmFsdWUubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFt0aGlzLm5vZGVdO1xyXG4gICAgfVxyXG59IiwiY2xhc3MgU2F5SGltSGVySXQgZXh0ZW5kcyBTYXkge1xyXG4gICAgcHJpdmF0ZSBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJhIFwiKTtcclxuICAgIHByaXZhdGUgdGFyZ2V0IDogVGhpbmc7XHJcbiAgICBwcml2YXRlIHVwcGVyY2FzZSA9IHRydWU7XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yICh0YXJnZXQgOiBUaGluZywgYXV0b1VwcGVyY2FzZT8gOiBib29sZWFuKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcclxuICAgICAgICBpZiAoYXV0b1VwcGVyY2FzZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy51cHBlcmNhc2UgPSBhdXRvVXBwZXJjYXNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UHVyZUVsZW1lbnRzIChzYXkgOiBTYXkpIDogUHJvbWlzZTxBcnJheTxFbGVtZW50IHwgVGV4dD4+IHtcclxuICAgICAgICBsZXQgbmV4dCA9IHRoaXMudGFyZ2V0O1xyXG4gICAgICAgIGlmIChuZXh0ID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUubm9kZVZhbHVlID0gXCJcIjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAobmV4dCBpbnN0YW5jZW9mIEh1bWFub2lkKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZ2VuZGVyID0gbmV4dC5nZXRHZW5kZXJWYWx1ZSgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGdlbmRlci5nZW5kZXJWYWx1ZUNvcnJlY3RlZCA+IDY1KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLm5vZGVWYWx1ZSA9IFwiaGVyIFwiO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChnZW5kZXIuZ2VuZGVyVmFsdWVDb3JyZWN0ZWQgPCAzNSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5ub2RlVmFsdWUgPSBcImhpbSBcIjtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBwZXJzb24gaXMgYW5kcm9neW5vdXMuLi5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZGVyLmhhc1BlbmlzQnVsZ2UgfHwgZ2VuZGVyLmhhc1BlbmlzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5ub2RlVmFsdWUgPSBcImhpbSBcIjtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGdlbmRlci5oYXNWYWdpbmEgfHwgZ2VuZGVyLmhhc1RpdHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLm5vZGVWYWx1ZSA9IFwiaGVyIFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5ub2RlVmFsdWUgPSBcInRoZW0gXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogSWYgd2UgZXZlciBoYXZlIGdlbmRlcmVkIG5vbi1odW1hbm9pZHMsIHRoZXkgbXVzdCBiZSBhZGRlZCBoZXJlLlxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLm5vZGVWYWx1ZSA9IFwiaXQgXCI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnVwcGVyY2FzZSAmJiBzYXkuY3VycmVudFBhcmFncmFwaC5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLm5vZGVWYWx1ZSA9IHRoaXMubm9kZS5ub2RlVmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKClcclxuICAgICAgICAgICAgICAgICAgICArIHRoaXMubm9kZS5ub2RlVmFsdWUuc3Vic3RyKDEsIHRoaXMubm9kZS5ub2RlVmFsdWUubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFt0aGlzLm5vZGVdO1xyXG4gICAgfVxyXG59IiwiY2xhc3MgU2F5SGlzSGVyc0l0cyBleHRlbmRzIFNheSB7XHJcbiAgICBwcml2YXRlIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcImEgXCIpO1xyXG4gICAgcHJpdmF0ZSB0YXJnZXQgOiBUaGluZztcclxuICAgIHByaXZhdGUgdXBwZXJjYXNlID0gdHJ1ZTtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKHRhcmdldCA6IFRoaW5nLCBhdXRvVXBwZXJjYXNlPyA6IGJvb2xlYW4pIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xyXG4gICAgICAgIGlmIChhdXRvVXBwZXJjYXNlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLnVwcGVyY2FzZSA9IGF1dG9VcHBlcmNhc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBnZXRQdXJlRWxlbWVudHMgKHNheSA6IFNheSkgOiBQcm9taXNlPEFycmF5PEVsZW1lbnQgfCBUZXh0Pj4ge1xyXG4gICAgICAgIGxldCBuZXh0ID0gdGhpcy50YXJnZXQ7XHJcbiAgICAgICAgaWYgKG5leHQgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5ub2RlVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChuZXh0IGluc3RhbmNlb2YgSHVtYW5vaWQpIHtcclxuICAgICAgICAgICAgICAgIGxldCBnZW5kZXIgPSBuZXh0LmdldEdlbmRlclZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ2VuZGVyLmdlbmRlclZhbHVlQ29ycmVjdGVkID4gNjUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUubm9kZVZhbHVlID0gXCJoZXJzIFwiO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChnZW5kZXIuZ2VuZGVyVmFsdWVDb3JyZWN0ZWQgPCAzNSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5ub2RlVmFsdWUgPSBcImhpcyBcIjtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBwZXJzb24gaXMgYW5kcm9neW5vdXMuLi5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZGVyLmhhc1BlbmlzQnVsZ2UgfHwgZ2VuZGVyLmhhc1BlbmlzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5ub2RlVmFsdWUgPSBcImhpcyBcIjtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGdlbmRlci5oYXNWYWdpbmEgfHwgZ2VuZGVyLmhhc1RpdHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLm5vZGVWYWx1ZSA9IFwiaGVycyBcIjtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUubm9kZVZhbHVlID0gXCJ0aGVpciBcIjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBJZiB3ZSBldmVyIGhhdmUgZ2VuZGVyZWQgbm9uLWh1bWFub2lkcywgdGhleSBtdXN0IGJlIGFkZGVkIGhlcmUuXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUubm9kZVZhbHVlID0gXCJpdHMgXCI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnVwcGVyY2FzZSAmJiBzYXkuY3VycmVudFBhcmFncmFwaC5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLm5vZGVWYWx1ZSA9IHRoaXMubm9kZS5ub2RlVmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKClcclxuICAgICAgICAgICAgICAgICAgICArIHRoaXMubm9kZS5ub2RlVmFsdWUuc3Vic3RyKDEsIHRoaXMubm9kZS5ub2RlVmFsdWUubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFt0aGlzLm5vZGVdO1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1NheS50c1wiIC8+XHJcbmNsYXNzIFNheUlmIGV4dGVuZHMgU2F5IHtcclxuICAgIHByaXZhdGUgY29uZGl0aW9uIDogKCkgPT4gYm9vbGVhbjtcclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoY29uZGl0aW9uIDogKCkgPT4gYm9vbGVhbiwgLi4ub2JqcyA6IEFycmF5PGFueT4pIHtcclxuICAgICAgICBzdXBlciguLi5vYmpzKTtcclxuICAgICAgICB0aGlzLmNvbmRpdGlvbiA9IGNvbmRpdGlvbiAhPSB1bmRlZmluZWQgPyBjb25kaXRpb24gOiAoKSA9PiB7IHJldHVybiB0cnVlOyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBnZXRQdXJlRWxlbWVudHMgKCkgOiBQcm9taXNlPEFycmF5PEVsZW1lbnQgfCBUZXh0Pj4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbigpKSB7XHJcbiAgICAgICAgICAgIGxldCBwYXJhZ3JhcGhzID0gYXdhaXQgIHRoaXMuZ2V0UGFyYWdyYXBocygpO1xyXG4gICAgICAgICAgICByZXR1cm4gcGFyYWdyYXBocy5sZW5ndGggPT0gMSA/IHBhcmFncmFwaHNbMF0gOiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBwYXJhZ3JhcGhzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1NheS50c1wiIC8+XHJcbmNsYXNzIFNheUl0YWxpYyBleHRlbmRzIFNheSB7XHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UHVyZUVsZW1lbnRzICgpIDogUHJvbWlzZTxBcnJheTxFbGVtZW50IHwgVGV4dD4+IHtcclxuICAgICAgICBsZXQgcGFyYWdyYXBocyA9IGF3YWl0IHRoaXMuZ2V0UGFyYWdyYXBocygpO1xyXG5cclxuICAgICAgICBsZXQgZWxlbWVudHMgPSBwYXJhZ3JhcGhzLmxlbmd0aCA9PSAxID8gcGFyYWdyYXBoc1swXSA6IEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIHBhcmFncmFwaHMpO1xyXG5cclxuICAgICAgICBsZXQgYiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpXCIpO1xyXG4gICAgICAgIGVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgYi5hcHBlbmRDaGlsZChlbGVtZW50KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gW2JdO1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1NheS50c1wiIC8+XHJcbmNsYXNzIFNheUxlZnRSaWdodCBleHRlbmRzIFNheSB7XHJcbiAgICBwcml2YXRlIGxlZnQgOiBTYXkgPSBuZXcgU2F5KCk7XHJcbiAgICBwcml2YXRlIHJpZ2h0IDogU2F5ID0gbmV3IFNheSgpO1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWRkTGVmdCAoLi4ub2JqcyA6IEFycmF5PFNheSB8IE9uZU9mIHwgT2JqZWN0IHwgUHJpbnRhYmxlIHwgc3RyaW5nIHwgbnVtYmVyIHwgU3RyaW5nIHwgKChzYXkgOiBTYXkpID0+IHN0cmluZyk+KSB7XHJcbiAgICAgICAgdGhpcy5sZWZ0LmFkZCguLi5vYmpzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWRkUmlnaHQgKC4uLm9ianMgOiBBcnJheTxTYXkgfCBPbmVPZiB8IE9iamVjdCB8IFByaW50YWJsZSB8IHN0cmluZyB8IG51bWJlciB8IFN0cmluZyB8ICgoc2F5IDogU2F5KSA9PiBzdHJpbmcpPikge1xyXG4gICAgICAgIHRoaXMucmlnaHQuYWRkKC4uLm9ianMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBnZXRQdXJlRWxlbWVudHMgKCkgOiBQcm9taXNlPEFycmF5PEVsZW1lbnQgfCBUZXh0Pj4ge1xyXG4gICAgICAgIGlmICh0aGlzLmxlZnQuc2VxdWVuY2UubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucmlnaHQuZ2V0UHVyZUVsZW1lbnRzKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJpZ2h0LnNlcXVlbmNlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmxlZnQuZ2V0UHVyZUVsZW1lbnRzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbWFpbkRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgbWFpbkRpdi5jbGFzc0xpc3QuYWRkKFwiaG9yRmxleFwiKTtcclxuXHJcbiAgICAgICAgbGV0IGxlZnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgIGxlZnQuY2xhc3NMaXN0LmFkZChcImhvckZsZXhDb2x1bW5cIik7XHJcbiAgICAgICAgbWFpbkRpdi5hcHBlbmRDaGlsZChsZWZ0KTtcclxuXHJcbiAgICAgICAgbGV0IHJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICByaWdodC5jbGFzc0xpc3QuYWRkKFwiaG9yRmxleENvbHVtblwiKTtcclxuICAgICAgICBtYWluRGl2LmFwcGVuZENoaWxkKHJpZ2h0KTtcclxuXHJcbiAgICAgICAgYXdhaXQgdGhpcy5sZWZ0LmdldFB1cmVFbGVtZW50cygpLnRoZW4odmFsdWUgPT4ge1xyXG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGVmdC5hcHBlbmRDaGlsZChlbGVtZW50KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgYXdhaXQgdGhpcy5yaWdodC5nZXRQdXJlRWxlbWVudHMoKS50aGVuKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIHJpZ2h0LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gW21haW5EaXZdO1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1NheS50c1wiIC8+XHJcbmNsYXNzIFNheUxpbmsgZXh0ZW5kcyBTYXkge1xyXG4gICAgcHJpdmF0ZSBsaW5rZWRBY3Rpb24gOiBBY3Rpb247XHJcblxyXG4gICAgcHVibGljIHNldEFjdGlvbiAoYWN0aW9uIDogQWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5saW5rZWRBY3Rpb24gPSBhY3Rpb247XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFB1cmVFbGVtZW50cyAoKSA6IFByb21pc2U8QXJyYXk8RWxlbWVudCB8IFRleHQ+PiB7XHJcbiAgICAgICAgbGV0IHBhcmFncmFwaHMgPSBhd2FpdCB0aGlzLmdldFBhcmFncmFwaHMoKTtcclxuXHJcbiAgICAgICAgbGV0IGVsZW1lbnRzID0gcGFyYWdyYXBocy5sZW5ndGggPT0gMSA/IHBhcmFncmFwaHNbMF0gOiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBwYXJhZ3JhcGhzKTtcclxuXHJcbiAgICAgICAgbGV0IGIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYlwiKTtcclxuICAgICAgICBiLmNsYXNzTGlzdC5hZGQoXCJ0ZXh0TGlua1wiKTtcclxuICAgICAgICBlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGIuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIENvbnRyb2xzLkxpbmtzLm1ha2VMaW5rKGIsIHRoaXMubGlua2VkQWN0aW9uKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIFtiXTtcclxuICAgIH1cclxufSIsImNsYXNzIFNheVRoZSBleHRlbmRzIFNheSB7XHJcbiAgICBwcml2YXRlIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlwiKTtcclxuICAgIHByaXZhdGUgdXBwZXJjYXNlID0gdHJ1ZTtcclxuICAgIHByaXZhdGUgYWx3YXlzUHJpbnQgPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGF1dG9VcHBlcmNhc2U/IDogYm9vbGVhbiwgYWx3YXlzUHJpbnQ/IDogYm9vbGVhbikge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgaWYgKGF1dG9VcHBlcmNhc2UgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBwZXJjYXNlID0gYXV0b1VwcGVyY2FzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGFsd2F5c1ByaW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWx3YXlzUHJpbnQgPSBhbHdheXNQcmludDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFB1cmVFbGVtZW50cyAoc2F5IDogU2F5KSA6IFByb21pc2U8QXJyYXk8RWxlbWVudCB8IFRleHQ+PiB7XHJcbiAgICAgICAgbGV0IG5leHQgPSBzYXkuc2VxdWVuY2Vbc2F5LnNlcXVlbmNlUnVubmVyICsgMV07XHJcbiAgICAgICAgaWYgKHRoaXMuYWx3YXlzUHJpbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLm5vZGVWYWx1ZSA9IFwidGhlIFwiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobmV4dCA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLm5vZGVWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKG5leHQgaW5zdGFuY2VvZiBUaGluZykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCEoPFRoaW5nPiBuZXh0KS5wcm9wZXJseU5hbWVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLm5vZGVWYWx1ZSA9IFwidGhlIFwiO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUubm9kZVZhbHVlID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5ub2RlVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm5vZGUubm9kZVZhbHVlICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudXBwZXJjYXNlICYmIHNheS5jdXJyZW50UGFyYWdyYXBoLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUubm9kZVZhbHVlID0gdGhpcy5ub2RlLm5vZGVWYWx1ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKVxyXG4gICAgICAgICAgICAgICAgICAgICsgdGhpcy5ub2RlLm5vZGVWYWx1ZS5zdWJzdHIoMSwgdGhpcy5ub2RlLm5vZGVWYWx1ZS5sZW5ndGggLSAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gW3RoaXMubm9kZV07XHJcbiAgICB9XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vRWxlbWVudHMudHNcIiAvPlxyXG5tb2R1bGUgRWxlbWVudHMuQXBwZWFyYW5jZUhhbmRsZXIge1xyXG4gICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYXBwZWFyYW5jZVRhcmdldFwiKTtcclxuXHJcbiAgICBmdW5jdGlvbiBlbXB0eSAoKSB7XHJcbiAgICAgICAgd2hpbGUgKHRhcmdldC5maXJzdENoaWxkKSB7XHJcbiAgICAgICAgICAgIHRhcmdldC5yZW1vdmVDaGlsZCh0YXJnZXQuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcmludCAoc2F5IDogU2F5KSB7XHJcbiAgICAgICAgYXdhaXQgc2F5LmdldEhUTUwoXCJwXCIsIFtcImFwcGVhcmFuY2VEZXNjcmlwdGlvblwiXSkudGhlbih2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5hcHBlbmRDaGlsZCh2YWx1ZVtpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlQXBwZWFyYW5jZSAoKSB7XHJcbiAgICAgICAgZW1wdHkoKTtcclxuICAgICAgICAvLyBUT0RPOiBtYXliZSB1c2UgbXVsdGlwbGUgbmFtZXMgZm9yIFwiZGlja1wiXHJcbiAgICAgICAgbGV0IHBsYXllcjogSHVtYW5vaWQgPSA8SHVtYW5vaWQ+IFdvcmxkU3RhdGUucGxheWVyO1xyXG5cclxuICAgICAgICBsZXQgcGxheWVyR2VuZGVyID0gcGxheWVyLmdldEdlbmRlclZhbHVlKCk7XHJcbiAgICAgICAgbGV0IHBsYXllclNsdXR0aW5lc3MgPSBwbGF5ZXIuZ2V0U2x1dHRpbmVzcygpO1xyXG4gICAgICAgIC8vIGxldCBwbGF5ZXJUb3AgPSBwbGF5ZXIuZ2V0VG9wQ2xvdGhPbihIdW1hbm9pZC5TTE9UX0JSRUFTVFMpO1xyXG4gICAgICAgIC8vIGxldCBwbGF5ZXJCb3R0b20gPSBwbGF5ZXIuZ2V0VG9wQ2xvdGhPbihIdW1hbm9pZC5TTE9UX0xFR19VUFBFUik7XHJcbiAgICAgICAgLy8gbGV0IHBsYXllclNob2VzID0gcGxheWVyLmdldFRvcENsb3RoT24oSHVtYW5vaWQuU0xPVF9GRUVUKTtcclxuXHJcbiAgICAgICAgbGV0IHlvdSA9IG5ldyBTYXlMaW5rKFwiWW91XCIpO1xyXG4gICAgICAgIHlvdS5zZXRBY3Rpb24obmV3IEFjdGlvbkV4YW1pbmUoV29ybGRTdGF0ZS5wbGF5ZXIsIFdvcmxkU3RhdGUucGxheWVyKSk7XHJcbiAgICAgICAgbGV0IHByZXNlbnRhdGlvbiA9IG5ldyBTYXkoeW91LCBcIiBhcmUgcHJlc2VudGluZyBhcyBcIiwgbmV3IFNheUFuKCksIHBsYXllci5nZXRTaG9ydGVzdERlc2NyaXB0aW9uKCksIFwiLlwiKTtcclxuXHJcbiAgICAgICAgaWYgKHBsYXllclNsdXR0aW5lc3MubmFrZWQpIHtcclxuICAgICAgICAgICAgcHJlc2VudGF0aW9uLmFkZChcIiBZb3UgYXJlIG5ha2VkLlwiKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHBsYXllclNsdXR0aW5lc3MuaGFsZk5ha2VkKSB7XHJcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbi5hZGQoXCIgWW91IGFyZSBhbG1vc3QgbmFrZWQuXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHRpdHMgPSA8SHVtYW5vaWRCcmVhc3RzPiBUaGluZy5QYXJ0UmVsYXRpb24uZ2V0UmlnaHRUeXBlT25lKHBsYXllciwgSHVtYW5vaWRCcmVhc3RzKTtcclxuICAgICAgICBsZXQgcGVuaXMgPSA8SHVtYW5vaWRQZW5pcz4gVGhpbmcuUGFydFJlbGF0aW9uLmdldFJpZ2h0VHlwZU9uZShwbGF5ZXIsIEh1bWFub2lkUGVuaXMpO1xyXG4gICAgICAgIGxldCBidWxnZXMgPSBwbGF5ZXIuZ2V0QnVsZ2VzKCk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgaWYgKGJ1bGdlcy5icmVhc3RzID4gMCB8fCBwbGF5ZXJHZW5kZXIuZ2VuZGVyVmFsdWVDb3JyZWN0ZWQgPiA2MCkge1xyXG4gICAgICAgICAgICBsZXQgcmVhbFRpdHMgPSB0aXRzLmdldFNpemVUZXh0KCk7XHJcbiAgICAgICAgICAgIGxldCBmYWtlVGl0cyA9IEh1bWFub2lkQnJlYXN0cy5nZXRTaXplVGV4dChidWxnZXMuYnJlYXN0cyk7XHJcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbi5hZGQoXCIgWW91IGhhdmUgXCIgKyByZWFsVGl0cyArIFwiIGJyZWFzdHNcIik7XHJcbiAgICAgICAgICAgIGlmIChidWxnZXMuYnJlYXN0cyAhPSB0aXRzLmdldFNpemUoKSAmJiByZWFsVGl0cyAhPSBmYWtlVGl0cykge1xyXG4gICAgICAgICAgICAgICAgcHJlc2VudGF0aW9uLmFkZChcIiwgcGFkZGVkIHRvIGFwcGVhciBhcyBcIiArIGZha2VUaXRzICsgXCIgdGhyb3VnaCB5b3VyIGNsb3RoaW5nLlwiKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGl0cy5pc1VuY292ZXJlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJlc2VudGF0aW9uLmFkZChcIiwgc2FmZWx5IGNvdmVyZWQuXCIpXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHByZXNlbnRhdGlvbi5hZGQoXCIuXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgLy8gcHJlc2VudGF0aW9uLmFkZChTYXkuUEFSQUdSQVBIX0JSRUFLLCBuZXcgU2F5Qm9sZChcIkdlbmRlciBWYWx1ZTogXCIpLCBwbGF5ZXJHZW5kZXIuZ2VuZGVyVmFsdWVDb3JyZWN0ZWQpO1xyXG4gICAgICAgIC8vIHByZXNlbnRhdGlvbi5hZGQoU2F5LlBBUkFHUkFQSF9CUkVBSywgbmV3IFNheUJvbGQoXCJTbHV0dGluZXNzIFZhbHVlOiBcIiksIHBsYXllclNsdXR0aW5lc3Muc2x1dHRpbmVzc0NvcnJlY3RlZCk7XHJcbiAgICAgICAgLy9wcmVzZW50YXRpb24uYWRkKFNheS5QQVJBR1JBUEhfQlJFQUssIG5ldyBTYXlCb2xkKFwiQnJlYXN0czogXCIpLCB0aXRzLmdldFNpemVUZXh0KCksIFwiIChWaXNpYmxlIGFzIFwiICsgSHVtYW5vaWRCcmVhc3RzLmdldFNpemVUZXh0KGJ1bGdlcy5icmVhc3RzKSArIFwiKVwiKTtcclxuXHJcbiAgICAgICAgaWYgKHBlbmlzID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBwcmVzZW50YXRpb24uYWRkKFwiIFlvdSBoYXZlIFwiLCBuZXcgU2F5QW4oKSwgSHVtYW5vaWRQZW5pcy5nZXRTaXplVGV4dChidWxnZXMuY3JvdGNoKSArIFwiIGNyb3RjaCBidWxnZSB2aXNpYmxlIHRocm91Z2ggeW91ciBjbG90aGluZy5cIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHJlYWxEaWNrID0gcGVuaXMuZ2V0U2l6ZVRleHQoKTtcclxuICAgICAgICAgICAgbGV0IGZha2VEaWNrID0gSHVtYW5vaWRQZW5pcy5nZXRTaXplVGV4dChidWxnZXMuY3JvdGNoKTtcclxuICAgICAgICAgICAgcHJlc2VudGF0aW9uLmFkZChcIiBZb3UgaGF2ZSBcIiwgbmV3IFNheUFuKCksIHJlYWxEaWNrICsgXCIgZGlja1wiKTtcclxuICAgICAgICAgICAgaWYgKHBlbmlzLmdldEFjdHVhbFNpemUoKSAhPSBidWxnZXMuY3JvdGNoICYmIHJlYWxEaWNrICE9IGZha2VEaWNrKSB7XHJcbiAgICAgICAgICAgICAgICBwcmVzZW50YXRpb24uYWRkKFwiLCB3aGljaCBsb29rcyBsaWtlIGl0IGlzIFwiICsgZmFrZURpY2sgKyBcIiBkdWUgdG8geW91ciBjbG90aGluZy5cIilcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICghcGVuaXMuaXNVbmNvdmVyZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByZXNlbnRhdGlvbi5hZGQoXCIsIHdoaWNoIGlzIGNvdmVyZWQuXCIpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBwcmVzZW50YXRpb24uYWRkKFwiLlwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gaWYgKHBlbmlzID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIC8vICAgICBpZiAoYnVsZ2VzLmNyb3RjaCA+IDApIHtcclxuICAgICAgICAvLyAgICAgICAgIHByZXNlbnRhdGlvbi5hZGQoU2F5LlBBUkFHUkFQSF9CUkVBSywgXCJZb3UgaGF2ZSBcIiwgbmV3IFNheUFuKCksIEh1bWFub2lkUGVuaXMuZ2V0U2l6ZVRleHQoYnVsZ2VzLmNyb3RjaCkgKyBcIiBidWxnZSB2aXNpYmxlIG9uIHlvdXIgY3JvdGNoLlwiKTtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gICAgIHByZXNlbnRhdGlvbi5hZGQoU2F5LlBBUkFHUkFQSF9CUkVBSyxcclxuICAgICAgICAvLyAgICAgICAgIG5ldyBTYXlCb2xkKFwiRGljazogXCIpLFxyXG4gICAgICAgIC8vICAgICAgICAgcGVuaXMuZ2V0U2l6ZVRleHQoKSxcclxuICAgICAgICAvLyAgICAgICAgIFwiIChWaXNpYmxlIGFzIFwiLFxyXG4gICAgICAgIC8vICAgICAgICAgbmV3IFNheUFuKCksXHJcbiAgICAgICAgLy8gICAgICAgICBIdW1hbm9pZFBlbmlzLmdldFNpemVUZXh0KGJ1bGdlcy5jcm90Y2gpLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIHBsYXllckdlbmRlci5oYXNQZW5pcyA/XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgIChwZW5pcy5pc0ZsYWNjaWQgPyBcIiBmbGFjY2lkXCIgOiBcIiBlcmVjdFwiKSArXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgIChwZW5pcy5nZXRBY3R1YWxTaXplKCkgPCA5ID8gXCIgbWljcm9kaWNrXCIgOiBcIiBjb2NrXCIpXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgOiBcIiBidWxnZVwiLFxyXG4gICAgICAgIC8vICAgICAgICAgXCIpXCJcclxuICAgICAgICAvLyAgICAgKTtcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIC8vIFRPRE86IENoZWNrIGlmIGhhcyBhIHNwZWNpZmljIGxvb2sgdG8gaXQuIE9wdGlvbmFsLiBIYXJkIHRvIGRvLlxyXG4gICAgICAgIC8vIEV4YW1wbGVzOiBcIllvdSBhcmUgZHJlc3NlZCBjYXN1YWxseSBsaWtlIGEgd29tYW4uXCIsIFwiWW91IGFyZSB3ZWFyaW5nIGZvcm1hbCB3b21lbidzIGNsb3RoaW5nLlwiIGV0Yy5cclxuXHJcbiAgICAgICAgYXdhaXQgcHJpbnQocHJlc2VudGF0aW9uKTtcclxuICAgIH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9FbGVtZW50cy50c1wiIC8+XHJcblxyXG4vKipcclxuICogVXBkYXRlIGZvbnQgc2l6ZXMgYWNjb3JkaW5nIHRvIHNjcmVlbiByZXNvbHV0aW9uIGFuZC9vciBtb2JpbGUgc3RhdHVzXHJcbiAqL1xyXG5mdW5jdGlvbiB1cGRhdGVGb250U2l6ZSAoKSB7XHJcbiAgICB2YXIgbWluV2lkdGggPSBFbGVtZW50cy5pc01vYmlsZT8gODAwIDogMTI4MDtcclxuICAgIHZhciBwcm9wb3J0aW9uID0gRWxlbWVudHMuaXNNb2JpbGUgPyAxNyA6IDE0LjU7XHJcbiAgICB2YXIgd2lkdGggPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDwgbWluV2lkdGggPyBtaW5XaWR0aCA6IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7XHJcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGVbIFwiZm9udC1zaXplXCIgXSA9ICh3aWR0aCAqIHByb3BvcnRpb24gLyAxMjgwKSArIFwicHhcIjtcclxufVxyXG5cclxudXBkYXRlRm9udFNpemUoKTtcclxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdXBkYXRlRm9udFNpemUpOyIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9FbGVtZW50cy50c1wiIC8+XHJcbmZ1bmN0aW9uIHRvZ2dsZUZ1bGxTY3JlZW4oKSB7XHJcbiAgICB2YXIgZG9jID0gPGFueT4gd2luZG93LmRvY3VtZW50O1xyXG4gICAgdmFyIGRvY0VsID0gPGFueT4gZG9jLmRvY3VtZW50RWxlbWVudDtcclxuXHJcbiAgICB2YXIgcmVxdWVzdEZ1bGxTY3JlZW4gPSBkb2NFbC5yZXF1ZXN0RnVsbHNjcmVlbiB8fCBkb2NFbC5tb3pSZXF1ZXN0RnVsbFNjcmVlbiB8fCBkb2NFbC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiB8fCBkb2NFbC5tc1JlcXVlc3RGdWxsc2NyZWVuO1xyXG4gICAgdmFyIGNhbmNlbEZ1bGxTY3JlZW4gPSBkb2MuZXhpdEZ1bGxzY3JlZW4gfHwgZG9jLm1vekNhbmNlbEZ1bGxTY3JlZW4gfHwgZG9jLndlYmtpdEV4aXRGdWxsc2NyZWVuIHx8IGRvYy5tc0V4aXRGdWxsc2NyZWVuO1xyXG5cclxuICAgIGlmKCFkb2MuZnVsbHNjcmVlbkVsZW1lbnQgJiYgIWRvYy5tb3pGdWxsU2NyZWVuRWxlbWVudCAmJiAhZG9jLndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50ICYmICFkb2MubXNGdWxsc2NyZWVuRWxlbWVudCkge1xyXG4gICAgICAgIHJlcXVlc3RGdWxsU2NyZWVuLmNhbGwoZG9jRWwpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY2FuY2VsRnVsbFNjcmVlbi5jYWxsKGRvYyk7XHJcbiAgICB9XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vRWxlbWVudHMudHNcIiAvPlxyXG5tb2R1bGUgRWxlbWVudHMuSG92ZXJJbmZvIHtcclxuICAgIHZhciBob3ZlcmJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaG92ZXJJbmZvXCIpO1xyXG4gICAgdmFyIGNvbnRlbnRUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImhvdmVyQ29udGVudFwiKTtcclxuICAgIHZhciB3aWR0aCA9IDA7XHJcbiAgICB2YXIgaGVpZ2h0ID0gMDtcclxuXHJcbiAgICBmdW5jdGlvbiBlbXB0eSAoKSB7XHJcbiAgICAgICAgd2hpbGUgKGNvbnRlbnRUYXJnZXQuZmlyc3RDaGlsZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgY29udGVudFRhcmdldC5yZW1vdmVDaGlsZChjb250ZW50VGFyZ2V0LmZpcnN0Q2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gbWFrZUhvdmVyYWJsZSAoZWxlbWVudCA6IEVsZW1lbnQsIGNvbnRlbnRzIDogQXJyYXk8RWxlbWVudCB8IFRleHQ+KSB7XHJcbiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLCAoZSA6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgRWxlbWVudHMuSG92ZXJJbmZvLmhvdmVyU3RhcnQoZSwgY29udGVudHMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgKGUgOiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIEVsZW1lbnRzLkhvdmVySW5mby5ob3Zlck1vdmUoZSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlb3V0XCIsIChlIDogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICBFbGVtZW50cy5Ib3ZlckluZm8uaG92ZXJFbmQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gaG92ZXJTdGFydCAoZSA6IE1vdXNlRXZlbnQsIGNvbnRlbnRzIDogQXJyYXk8RWxlbWVudCB8IFRleHQ+KSB7XHJcbiAgICAgICAgZW1wdHkoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRlbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnRlbnRUYXJnZXQuYXBwZW5kQ2hpbGQoY29udGVudHNbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBob3ZlcmJveC5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xyXG5cclxuXHJcbiAgICAgICAgaG92ZXJib3guc3R5bGUubGVmdCA9IFwiMHB4XCI7XHJcbiAgICAgICAgaG92ZXJib3guc3R5bGUudG9wID0gXCIwcHhcIjtcclxuICAgICAgICB3aWR0aCA9IGhvdmVyYm94Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgIGhlaWdodCA9IGhvdmVyYm94Lm9mZnNldEhlaWdodDtcclxuXHJcbiAgICAgICAgaG92ZXJNb3ZlKGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBob3Zlck1vdmUgKGUgOiBNb3VzZUV2ZW50KSB7XHJcbiAgICAgICAgbGV0IGxlZnQgPSBlLmNsaWVudFggLSAod2lkdGgvMik7XHJcbiAgICAgICAgbGV0IHRvcCA9IGUuY2xpZW50WSAtIChoZWlnaHQpIC0gNjtcclxuXHJcbiAgICAgICAgaWYgKHRvcCA8IDApIHtcclxuICAgICAgICAgICAgdG9wID0gZS5jbGllbnRZICsgNjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChsZWZ0IDwgd2lkdGgpIHtcclxuICAgICAgICAgICAgbGVmdCA9IHdpZHRoO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gV2lkdGggc2VlbXMgdG8gbm90IGJlIGNvbnNpZGVyaW5nIHRoZSBib3JkZXIsIGV2ZW4gdGhvdWdoIHdlIGFwcGxpZWQgYm9yZGVyLWJveFxyXG4gICAgICAgIC8vIEkgZG9uJ3QgY2FyZSBlbm91Z2ggdG8gZmlndXJlIHRoaXMgb3V0IHNvIHRoZXJlJ3MgYSBtYXJnaW4gb24gdGhlIHNpZGUhXHJcbiAgICAgICAgaWYgKGxlZnQgKyB3aWR0aCA+IEVsZW1lbnRzLnNjcmVlbldpZHRoKSB7XHJcbiAgICAgICAgICAgIGxlZnQgPSBFbGVtZW50cy5zY3JlZW5XaWR0aCAtIHdpZHRoO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaG92ZXJib3guc3R5bGUubGVmdCA9IE1hdGgucm91bmQobGVmdCkgKyBcInB4XCI7XHJcbiAgICAgICAgaG92ZXJib3guc3R5bGUudG9wID0gTWF0aC5yb3VuZCh0b3ApICsgXCJweFwiO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBob3ZlckVuZCAoKSB7XHJcbiAgICAgICAgaG92ZXJib3guc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL0VsZW1lbnRzLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL1dvcmxkL0NsYXNzZXMvUnVsZWJvb2sudHNcIiAvPlxyXG5tb2R1bGUgRWxlbWVudHMuSHlwZXJsaW5rSGFuZGxlciB7XHJcbiAgICBleHBvcnQgdmFyIGxpbmtlZEFjdGlvbnNUYWIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxpbmtBY3Rpb25zXCIpO1xyXG4gICAgZXhwb3J0IHZhciBjb21tb25BY3Rpb25zVGFiID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb21tb25BY3Rpb25zVGFiXCIpO1xyXG5cclxuICAgIHZhciBjdXJyZW50Q29tbWFuZCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXCIpO1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjdXJyZW50Q29tbWFuZFwiKS5hcHBlbmRDaGlsZChjdXJyZW50Q29tbWFuZCk7XHJcblxyXG4gICAgdmFyIGN1cnJlbnRBY3Rpb25UYXJnZXQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlwiKTtcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibGlua1RhcmdldFwiKS5hcHBlbmRDaGlsZChjdXJyZW50QWN0aW9uVGFyZ2V0KTtcclxuXHJcbiAgICB2YXIgY29tbW9uQWN0aW9ucyA9IFtdO1xyXG4gICAgdmFyIGF2YWlsYWJsZUFjdGlvbnMgPSBbXTtcclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gcmVzZXRDb21tb25BY3Rpb25zICgpIHtcclxuICAgICAgICBjb21tb25BY3Rpb25zLnNwbGljZSgwLCBjb21tb25BY3Rpb25zLmxlbmd0aCk7XHJcbiAgICAgICAgd2hpbGUgKGNvbW1vbkFjdGlvbnNUYWIuZmlyc3RDaGlsZCkge1xyXG4gICAgICAgICAgICBjb21tb25BY3Rpb25zVGFiLnJlbW92ZUNoaWxkKGNvbW1vbkFjdGlvbnNUYWIuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBhZGRDb21tb25BY3Rpb24gKG5hbWUgOiBzdHJpbmcsIGFjdGlvbiA6IEFjdGlvbikge1xyXG4gICAgICAgIGNvbW1vbkFjdGlvbnMucHVzaChbbmFtZSwgYWN0aW9uXSk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gcmVzZXRBdmFpbGFibGVBY3Rpb25zICgpIHtcclxuICAgICAgICBhdmFpbGFibGVBY3Rpb25zID0gW107XHJcbiAgICAgICAgY3VycmVudEFjdGlvblRhcmdldC5ub2RlVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIHdoaWxlIChsaW5rZWRBY3Rpb25zVGFiLmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICAgICAgbGlua2VkQWN0aW9uc1RhYi5yZW1vdmVDaGlsZChsaW5rZWRBY3Rpb25zVGFiLmZpcnN0Q2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gYWRkQXZhaWxhYmxlQWN0aW9uIChuYW1lIDogc3RyaW5nLCBhY3Rpb24gOiBBY3Rpb24pIHtcclxuICAgICAgICBhdmFpbGFibGVBY3Rpb25zLnB1c2goW25hbWUsIGFjdGlvbl0pO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBob3ZlckFjdGlvbiAoYWN0aW9uIDogQWN0aW9uKSB7XHJcbiAgICAgICAgY3VycmVudENvbW1hbmQubm9kZVZhbHVlID0gYWN0aW9uLmdldENvbW1hbmRUZXh0KCkudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gdW5ob3ZlckFjdGlvbiAoKSB7XHJcbiAgICAgICAgY3VycmVudENvbW1hbmQubm9kZVZhbHVlID0gXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gaHlwZXJsaW5rT2JqZWN0ICh0aGluZz8gOiBhbnkpIHtcclxuICAgICAgICByZXNldEF2YWlsYWJsZUFjdGlvbnMoKTtcclxuICAgICAgICBpZiAodGhpbmcgaW5zdGFuY2VvZiBUaGluZyAmJiB0aGluZyAhPSBXb3JsZFN0YXRlLnBsYXllciAmJiB0aGluZy5pc1Zpc2libGVUbyhXb3JsZFN0YXRlLnBsYXllcikpIHtcclxuICAgICAgICAgICAgYXdhaXQgSHlwZXJsaW5raW5nUnVsZWJvb2suZXhlY3V0ZSh7bm91bjogdGhpbmd9KTtcclxuXHJcbiAgICAgICAgICAgIGN1cnJlbnRBY3Rpb25UYXJnZXQubm9kZVZhbHVlID0gdGhpbmcuZ2V0UHJpbnRlZE5hbWUoKSArIFwiOiBcIjtcclxuXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCB2YWx1ZSA9IGF2YWlsYWJsZUFjdGlvbnNbaV07IHZhbHVlICE9IHVuZGVmaW5lZDsgdmFsdWUgPSBhdmFpbGFibGVBY3Rpb25zWysraV0pIHtcclxuICAgICAgICAgICAgICAgIGxldCBsaW5rID0gY3JlYXRlTGluayh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBsaW5rLmNsYXNzTGlzdC5hZGQoXCJjb2x1bW5MaW5rXCIpO1xyXG4gICAgICAgICAgICAgICAgQ29udHJvbHMuS2V5SGFuZGxlci5hcHBseUNvZGUobGluaywgQ29udHJvbHMuS2V5SGFuZGxlci5nZXRTZWNvbmRLZXlDb2RlKCkpO1xyXG4gICAgICAgICAgICAgICAgbGlua2VkQWN0aW9uc1RhYi5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBjcmVhdGVMaW5rICh2YWx1ZSA6IEFycmF5PGFueT4pIHtcclxuICAgICAgICBsZXQgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgICAgIGxpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodmFsdWVbMF0pKTtcclxuICAgICAgICBDb250cm9scy5MaW5rcy5tYWtlTGluayhsaW5rLCB2YWx1ZVsxXSk7XHJcbiAgICAgICAgcmV0dXJuIGxpbms7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGh5cGVybGlua0NvbW1vbkFjdGlvbnMgKCkge1xyXG4gICAgICAgIHJlc2V0Q29tbW9uQWN0aW9ucygpO1xyXG5cclxuICAgICAgICBhd2FpdCBDb21tb25BY3Rpb25zUnVsZWJvb2suZXhlY3V0ZSh7fSk7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCB2YWx1ZSA9IGNvbW1vbkFjdGlvbnNbaV07IHZhbHVlICE9IHVuZGVmaW5lZDsgdmFsdWUgPSBjb21tb25BY3Rpb25zWysraV0pIHtcclxuICAgICAgICAgICAgbGV0IGxpbmsgPSBjcmVhdGVMaW5rKHZhbHVlKTtcclxuICAgICAgICAgICAgbGluay5jbGFzc0xpc3QuYWRkKFwibGluZUxpbmtcIik7XHJcbiAgICAgICAgICAgIENvbnRyb2xzLktleUhhbmRsZXIuYXBwbHlDb2RlKGxpbmssIENvbnRyb2xzLktleUhhbmRsZXIuZ2V0VGhpcmRLZXlDb2RlKCkpO1xyXG4gICAgICAgICAgICBjb21tb25BY3Rpb25zVGFiLmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBoeXBlcmxpbmtpbmcgcnVsZWJvb2sgaXMgcmFuIG92ZXIgdGhlIGxhc3QgdGhpbmcgdGhlIHBsYXllciBpbnRlcmFjdGVkIHdpdGguXHJcbiAgICAgKiAgSXQgcG9wdWxhdGVzIHRoZSBoeXBlcmxpbmtzIHRhYiB3aXRoIGluZm9ybWF0aW9uIG9uIHRoZSB0aGluZyB0aGF0IHdhcyBpbnRlcmFjdGVkIHdpdGguXHJcbiAgICAgKiBAdHlwZSB7UnVsZWJvb2t9XHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCB2YXIgSHlwZXJsaW5raW5nUnVsZWJvb2sgPSBuZXcgUnVsZWJvb2s8VGhpbmc+KFwiSHlwZXJsaW5raW5nIHNvbWV0aGluZ1wiKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBjb21tb24gYWN0aW9ucyBydWxlYm9vayBzZXJ2ZXMgdG8gc2V0IHVwIGFsbCB0aGUgYXZhaWxhYmxlIGNvbW1vbiBhY3Rpb25zIGZvciB0aGUgcGxheWVyLlxyXG4gICAgICogIEl0IHNob3VsZCBjaGVjayB0aGUgcGxheWVyJ3MgY3VycmVudCBzdGF0ZSB0byBzZWUgaWYgYSBjb21tYW5kIGlzIGFwcGxpY2FibGUgYW5kXHJcbiAgICAgKiAgICB0aGVuIEFERCBzYWlkIGNvbW1hbmQgdG8gdGhlIEh5cGVybGlua0hhbmRsZXIuXHJcbiAgICAgKiBAdHlwZSB7UnVsZWJvb2t9XHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCB2YXIgQ29tbW9uQWN0aW9uc1J1bGVib29rID0gbmV3IFJ1bGVib29rPHZvaWQ+KFwiQ29tbW9uIEFjdGlvbnMgUnVsZWJvb2tcIik7XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiUnVsZWJvb2sudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiUnVsZS50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9FbGVtZW50cy9DbGFzc2VzL1NheS50c1wiIC8+XHJcbmNsYXNzIEFjdGlvbiB7XHJcbiAgICBwdWJsaWMgc3RhdGljIGNoZWNrID0gbmV3IFJ1bGVib29rPEFjdGlvbj4oXCJDaGVjayBhbnkgQWN0aW9uXCIpO1xyXG4gICAgcHVibGljIHN0YXRpYyBjYXJyeSA9IG5ldyBSdWxlYm9vazxBY3Rpb24+KFwiQ2Fycnkgb3V0IGFueSBBY3Rpb25cIik7XHJcblxyXG4gICAgcHVibGljIGV4dHJhQ2hlY2tzIDogQXJyYXk8UnVsZWJvb2s8QWN0aW9uPj4gPSBbXTtcclxuICAgIHB1YmxpYyBleHRyYUNhcnJpZXMgOiBBcnJheTxSdWxlYm9vazxBY3Rpb24+PiA9IFtdO1xyXG5cclxuICAgIHB1YmxpYyBfYWN0b3IgOiBUaGluZztcclxuICAgIHB1YmxpYyBub3VucyA6IEFycmF5PFRoaW5nPiA9IFtdO1xyXG4gICAgcHVibGljIHNheSA6IFNheSA9IG5ldyBTYXkoKTtcclxuXHJcbiAgICBwdWJsaWMgYWN0aW5nQWdyZXNzaXZlbHkgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBhY3RpbmdTdWJtaXNzaXZlbHkgPSBmYWxzZTtcclxuICAgIHB1YmxpYyByZXF1aXJlc1R1cm4gPSB0cnVlO1xyXG4gICAgcHVibGljIHJlcXVpcmVzTm91biA9IHRydWU7XHJcbiAgICBwdWJsaWMgcmVxdWlyZXNWaXNpYmlsaXR5ID0gdHJ1ZTsgLy8gRmlyc3Qgbm91biBtdXN0IGJlIHZpc2libGUgYW5kIGluIHRoZSBzYW1lIHJvb21cclxuXHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChhY3RvciA6IFRoaW5nLCAuLi5ub3VucyA6IEFycmF5PGFueT4pIHtcclxuICAgICAgICB0aGlzLmFjdG9yID0gYWN0b3I7XHJcbiAgICAgICAgbm91bnMuZm9yRWFjaCgodmFsdWUsIGluZGV4LCBhcnJheSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNldE5vdW4oaW5kZXgsIHZhbHVlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHVibGljIGFzeW5jIGV4ZWN1dGUgKCkgOiBQcm9taXNlPFNheT4ge1xyXG4gICAgICAgIHRoaXMuc2F5ID0gbmV3IFNheSgpO1xyXG5cclxuICAgICAgICBsZXQgY2hlY2tSdWxlYm9va3MgPSBbXTtcclxuICAgICAgICBsZXQgY2FycnlSdWxlYm9va3MgPSBbXTtcclxuICAgICAgICBsZXQgY0NsYXNzID0gdGhpcy5jb25zdHJ1Y3RvcjtcclxuICAgICAgICB3aGlsZSAoY0NsYXNzICE9IEFjdGlvbikge1xyXG4gICAgICAgICAgICBpZiAoKDx0eXBlb2YgQWN0aW9uPiBjQ2xhc3MpLmNoZWNrICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgY2hlY2tSdWxlYm9va3MucHVzaCgoPHR5cGVvZiBBY3Rpb24+IGNDbGFzcykuY2hlY2spO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgoPHR5cGVvZiBBY3Rpb24+IGNDbGFzcykuY2FycnkgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBjYXJyeVJ1bGVib29rcy5wdXNoKCg8dHlwZW9mIEFjdGlvbj4gY0NsYXNzKS5jYXJyeSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY0NsYXNzID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGNDbGFzcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBDaGVjayBpZiBhY3Rpb24gZ29lcyB0aHJvdWdoXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IEFjdGlvbi5jaGVjay5leGVjdXRlKHtcclxuICAgICAgICAgICAgbm91biA6IHRoaXNcclxuICAgICAgICB9LCAuLi5jaGVja1J1bGVib29rcyk7XHJcblxyXG4gICAgICAgIC8vIFRoZXJlIGFyZSBub3cgbXVsdGlwbGUgcmVzdWx0cyEgQSBmYWxzZSByZXN1bHQgbWVhbnMgYSBmYWlsIENoZWNrISBCdXQgaXQgY2FuIGFsc28gcmV0dXJuIGEgbmV3IGFjdGlvbiFcclxuICAgICAgICBpZiAocmVzdWx0ID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2UgaWYocmVzdWx0IGluc3RhbmNlb2YgQWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoUnVsZWJvb2suZ2V0SW5kZW50YXRpb24oKSArIFwiW0FDVElPTl0gSW5zdGVhZCBvZi4uLlwiKTtcclxuICAgICAgICAgICAgYXdhaXQgcmVzdWx0LmV4ZWN1dGUoKTtcclxuICAgICAgICAgICAgdGhpcy5zYXkuYWRkKHJlc3VsdC5zYXkpO1xyXG4gICAgICAgICAgICB0aGlzLm5vdW5zID0gcmVzdWx0Lm5vdW5zO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBDYXJyeSBPdXRcclxuICAgICAgICAgKi9cclxuICAgICAgICBhd2FpdCBBY3Rpb24uY2FycnkuZXhlY3V0ZSh7XHJcbiAgICAgICAgICAgIG5vdW4gOiB0aGlzXHJcbiAgICAgICAgfSwgLi4uY2FycnlSdWxlYm9va3MpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5zYXk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGFjdG9yKCk6IFRoaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYWN0b3I7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGFjdG9yKHZhbHVlOiBUaGluZykge1xyXG4gICAgICAgIHRoaXMuX2FjdG9yID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldE5vdW4gKG4gOiBudW1iZXIpIDogYW55IHtcclxuICAgICAgICBpZiAodGhpcy5ub3Vucy5sZW5ndGggPiBuKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5vdW5zW25dO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXROb3VuIChuIDogbnVtYmVyLCBub3VuIDogYW55KSB7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMubm91bnMubGVuZ3RoIDwgbikge1xyXG4gICAgICAgICAgICB0aGlzLm5vdW5zLnB1c2godW5kZWZpbmVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ub3Vuc1tuXSA9IG5vdW47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOZWVkcyB0byByZXR1cm4gYSBzdHJpbmcgZXhwbGFpbmluZyB3aGF0IHRoZSBwbGF5ZXIgd2lsbCBkbyBpZiBoZSBkb2VzIHRoaXMgYWN0aW9uLlxyXG4gICAgICogRm9yIGluc3RhbmNlLCBBY3Rpb25UYWtpbmcgc2hvdWxkIHJldHVybiBzb21ldGhpbmcgbGlrZSByZXR1cm4gXCJ0YWtlIFwiICsgdGhpcy5ub3Vuc1swXS5nZXROYW1lKCksXHJcbiAgICAgKiAgIHdoaWNoIHdvdWxkIHJlYWQgYXMgXCJ0YWtlIHRoaW5nXCIuXHJcbiAgICAgKiAgIHJlbWVtYmVyIHRoYXQgdGhpbmdzIGltcGxlbWVudCBQUklOVEFCTEUgaW50ZXJmYWNlLCBzbyB5b3UgY2FuIGdldCB0aGVpciBuYW1lcy5cclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRDb21tYW5kVGV4dCAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFwiZG9cIjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIElmIGFuIGFjdGlvbiBpcyBzdG9wcGVkLCBpdCBtZWFucyBpdCBmYWlsZWQgc28gc3BlY3RhY3VsYXJseSB0aGF0IGl0IGRpZG4ndCBldmVuIGJlZ2luLlxyXG4gICAgICogV2hpY2ggbWVhbnMgaWYgdGhlIHBsYXllciBpcyBkb2luZyBpdCwgaXQnbGwgbm90IHRha2UgYSB0dXJuLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RvcCAoKSB7XHJcbiAgICAgICAgdGhpcy5yZXF1aXJlc1R1cm4gPSBmYWxzZTtcclxuICAgIH1cclxufVxyXG5cclxuLy8gQWN0aW9uLmFkZENhcnJ5UnVsZShuZXcgUnVsZSh7XHJcbi8vICAgICBuYW1lIDogXCJUZXN0aW5nIHNheSBpbiBhY3Rpb25zIHJ1bGVcIixcclxuLy8gICAgIHByaW9yaXR5IDogUnVsZS5QUklPUklUWV9MT1dFU1QsXHJcbi8vICAgICBmaXJzdFByaW9yaXR5IDogUnVsZS5QUklPUklUWV9MT1dFU1QsXHJcbi8vICAgICBjb2RlIDogKHJ1bGUsIHJ1bGVib29rKSA9PiB7XHJcbi8vICAgICAgICAgbGV0IGFjdGlvbiA9IDxBY3Rpb24+IHJ1bGVib29rLm5vdW47XHJcbi8vICAgICAgICAgYWN0aW9uLnNheS5hZGQoXCJZb3UgZG8gbm90aGluZyBhbGwgdHVybi4gV2hhdCB3YXMgdGhlIHBvaW50LCByZWFsbHk/XCIpO1xyXG4vLyAgICAgfVxyXG4vLyB9KSlcclxuXHJcbkFjdGlvbi5jaGVjay5hZGRSdWxlKFxyXG4gICAgbmV3IFJ1bGUoe1xyXG4gICAgICAgIG5hbWUgOiBcIkNoZWNrIGFueSBBY3Rpb24gLSBSZXF1aXJlcyBOb3VuXCIsXHJcbiAgICAgICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfSElHSEVTVCxcclxuICAgICAgICBjb2RlIDogKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8QWN0aW9uPikgPT4ge1xyXG4gICAgICAgICAgICBsZXQgYWN0aW9uID0gPEFjdGlvbj4gcnVsZWJvb2subm91bjtcclxuICAgICAgICAgICAgaWYgKGFjdGlvbi5nZXROb3VuKDApID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb25kaXRpb25zIDogcnVubmVyID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJ1bm5lci5ub3VuLnJlcXVpcmVzTm91bjtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG4pO1xyXG5cclxuQWN0aW9uLmNoZWNrLmFkZFJ1bGUoXHJcbiAgICBuZXcgUnVsZSh7XHJcbiAgICAgICAgbmFtZSA6IFwiQ2hlY2sgYW55IEFjdGlvbiAtIFJlcXVpcmVzIFZpc2liaWxpdHlcIixcclxuICAgICAgICBjb2RlIDogKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8QWN0aW9uPikgPT4ge1xyXG4gICAgICAgICAgICBsZXQgYWN0aW9uID0gPEFjdGlvbj4gcnVsZWJvb2subm91bjtcclxuICAgICAgICAgICAgbGV0IGFjdG9yID0gYWN0aW9uLmFjdG9yO1xyXG4gICAgICAgICAgICBpZiAoIWFjdGlvbi5nZXROb3VuKDApLmlzVmlzaWJsZVRvKGFjdG9yKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb25kaXRpb25zIDogcnVubmVyID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJ1bm5lci5ub3VuLnJlcXVpcmVzVmlzaWJpbGl0eTtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG4pOyIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9BY3Rpb24udHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vUnVsZS50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9SdWxlYm9vay50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi9FbGVtZW50cy9DbGFzc2VzL1NheS9TYXlCb2xkLnRzXCIgLz5cclxuXHJcbmNsYXNzIEFjdGlvbkV4YW1pbmUgZXh0ZW5kcyBBY3Rpb24ge1xyXG4gICAgcHVibGljIHJlcXVpcmVzVHVybiA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgY2hlY2sgPSBuZXcgUnVsZWJvb2s8QWN0aW9uRXhhbWluZT4oXCJDaGVjayBFeGFtaW5pbmdcIik7XHJcbiAgICBwdWJsaWMgc3RhdGljIGNhcnJ5ID0gbmV3IFJ1bGVib29rPEFjdGlvbkV4YW1pbmU+KFwiQ2Fycnkgb3V0IEV4YW1pbmluZ1wiKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE5lZWRzIHRvIHJldHVybiBhIHN0cmluZyBleHBsYWluaW5nIHdoYXQgdGhlIHBsYXllciB3aWxsIGRvIGlmIGhlIGRvZXMgdGhpcyBhY3Rpb24uXHJcbiAgICAgKiBGb3IgaW5zdGFuY2UsIEFjdGlvblRha2luZyBzaG91bGQgcmV0dXJuIHNvbWV0aGluZyBsaWtlIHJldHVybiBcInRha2UgXCIgKyB0aGlzLm5vdW5zWzBdLmdldE5hbWUoKSxcclxuICAgICAqICAgd2hpY2ggd291bGQgcmVhZCBhcyBcInRha2UgdGhpbmdcIi5cclxuICAgICAqICAgcmVtZW1iZXIgdGhhdCB0aGluZ3MgaW1wbGVtZW50IFBSSU5UQUJMRSBpbnRlcmZhY2UsIHNvIHlvdSBjYW4gZ2V0IHRoZWlyIG5hbWVzLlxyXG4gICAgICogQHJldHVybnMge1NheX1cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldENvbW1hbmRUZXh0ICgpIHtcclxuICAgICAgICBpZiAodGhpcy5nZXROb3VuKDApID09IFdvcmxkU3RhdGUucGxheWVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImV4YW1pbmUgbXlzZWxmXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBcImV4YW1pbmUgXCIgKyAodGhpcy5nZXROb3VuKDApICE9IHVuZGVmaW5lZCA/IHRoaXMuZ2V0Tm91bigwKS5nZXRQcmludGVkTmFtZSgpIDogXCJcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBQcmludERlc2NyaXB0aW9uT2ZFeGFtaW5lZFRoaW5nUnVsZSA9IEFjdGlvbkV4YW1pbmUuY2FycnkuY3JlYXRlQW5kQWRkUnVsZSh7XHJcbiAgICAgICAgbmFtZSA6IFwiRXhhbWluZSAtIFByaW50IERlc2NyaXB0aW9uIG9mIEV4YW1pbmVkIFRoaW5nXCIsXHJcbiAgICAgICAgY29kZSA6IChydWxlYm9vaykgPT4ge1xyXG4gICAgICAgICAgICBsZXQgYWN0aW9uID0gcnVsZWJvb2subm91bjtcclxuXHJcbiAgICAgICAgICAgIGxldCBub3VuID0gYWN0aW9uLmdldE5vdW4oMCk7XHJcbiAgICAgICAgICAgIGlmIChub3VuIGluc3RhbmNlb2YgVGhpbmcgJiYgKDxUaGluZz4gbm91bikuaW1hZ2UgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb24uc2F5LmFkZCgoPFRoaW5nPiBub3VuKS5pbWFnZSwgU2F5LlBBUkFHUkFQSF9CUkVBSyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGFjdGlvbi5zYXkuYWRkKCg8VGhpbmc+IGFjdGlvbi5nZXROb3VuKDApKS5nZXRQcmludGVkRGVzY3JpcHRpb24oKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuXHJcbkVsZW1lbnRzLkh5cGVybGlua0hhbmRsZXIuQ29tbW9uQWN0aW9uc1J1bGVib29rLmFkZFJ1bGUobmV3IFJ1bGUoe1xyXG4gICAgbmFtZSA6IFwiTG9vayBhdCBtZSFcIixcclxuICAgIGZpcnN0UHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0xPV0VTVCxcclxuICAgIHByaW9yaXR5IDogUnVsZS5QUklPUklUWV9ISUdILFxyXG4gICAgY29kZSA6IChydWxlYm9vayA6IFJ1bGVib29rUnVubmVyPHZvaWQ+KSA9PiB7XHJcbiAgICAgICAgRWxlbWVudHMuSHlwZXJsaW5rSGFuZGxlci5hZGRDb21tb25BY3Rpb24oXCJJbnNwZWN0XCIsIG5ldyBBY3Rpb25FeGFtaW5lKFdvcmxkU3RhdGUucGxheWVyLCBXb3JsZFN0YXRlLnBsYXllcikpO1xyXG4gICAgfVxyXG59KSk7IiwiYWJzdHJhY3QgY2xhc3MgUmVsYXRpb25IYW5kbGVyIHtcclxuICAgIHByb3RlY3RlZCByZWxhdGlvbnMgOiBBcnJheTxSZWxhdGlvbj47XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yICguLi5yZWxhdGlvbnMgOiBBcnJheSA8UmVsYXRpb24+KSB7XHJcbiAgICAgICAgcmVsYXRpb25zLmZvckVhY2gocmVsYXRpb24gPT4ge1xyXG4gICAgICAgICAgICByZWxhdGlvbi5zZXRIYW5kbGVyKHRoaXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucmVsYXRpb25zID0gcmVsYXRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZGRSZWxhdGlvbiAocmVsYXRpb24gOiBSZWxhdGlvbikge1xyXG4gICAgICAgIHRoaXMucmVsYXRpb25zLnB1c2gocmVsYXRpb24pO1xyXG4gICAgICAgIHJlbGF0aW9uLnNldEhhbmRsZXIodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFic3RyYWN0IHNldFJlbGF0aW9uIChyZWxhdGlvbiA6IFJlbGF0aW9uLCBsZWZ0IDogYW55LCByaWdodCA6IGFueSwgdmFsdWU/IDogYW55KSA6IGJvb2xlYW47XHJcbn1cclxuXHJcbmFic3RyYWN0IGNsYXNzIFJlbGF0aW9uIHtcclxuICAgIHB1YmxpYyBoYW5kbGVyIDogUmVsYXRpb25IYW5kbGVyO1xyXG5cclxuICAgIHB1YmxpYyBzZXRIYW5kbGVyIChoYW5kbGVyIDogUmVsYXRpb25IYW5kbGVyKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVyID0gaGFuZGxlcjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFzSGFuZGxlciAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlciAhPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFic3RyYWN0IHNldFJlbGF0aW9uIChsZWZ0IDogYW55LCByaWdodCA6IGFueSwgdmFsdWU/IDogYW55KSA6IHZvaWQ7XHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgdW5zZXRSaWdodCAocmlnaHQgOiBhbnkpIDogdm9pZDtcclxuICAgIHB1YmxpYyBhYnN0cmFjdCB1bnNldExlZnQgKGxlZnQgOiBhbnkpIDogdm9pZDtcclxuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRMZWZ0IChyaWdodCA6IGFueSkgOiBhbnk7XHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0UmlnaHQgKGxlZnQgOiBhbnkpIDogYW55O1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlU3RyaW5nIChvYmoxIDogYW55LCBvYmoyIDogYW55KSA6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKG9iajEgaW5zdGFuY2VvZiBPYmplY3QgJiYgb2JqMiBpbnN0YW5jZW9mIE9iamVjdCkge1xyXG4gICAgICAgICAgICBsZXQgaWQxID0gUmVsYXRpb24uZ2V0SWQob2JqMSk7XHJcbiAgICAgICAgICAgIGxldCBpZDIgPSBSZWxhdGlvbi5nZXRJZChvYmoyKTtcclxuICAgICAgICAgICAgcmV0dXJuIGlkMSA8IGlkMiA/XHJcbiAgICAgICAgICAgICAgICAoaWQxICsgXCI7XCIgKyBpZDIpIDpcclxuICAgICAgICAgICAgICAgIChpZDIgKyBcIjtcIiArIGlkMSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIG9iamVjdENvdW50ID0gMDtcclxuICAgIHByaXZhdGUgc3RhdGljIG9iamVjdElkRmllbGQgPSBcIl9SRUxBVElPTklOVEVSTkFMSURcIjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGlmIGdldElkID49IDAsIHRoZW4gb2JqIGlzIE5PVCBhbiBPYmplY3RcclxuICAgICAqIGlmIGdldElkICA8IDAsIHRoZW4gb2JqIGlzIGFuIE9iamVjdFxyXG4gICAgICogQHBhcmFtIG9ialxyXG4gICAgICogQHJldHVybnMge251bWJlcn1cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBnZXRJZCAob2JqIDogT2JqZWN0KSA6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKG9ialtSZWxhdGlvbi5vYmplY3RJZEZpZWxkXSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgb2JqW1JlbGF0aW9uLm9iamVjdElkRmllbGRdID0gUmVsYXRpb24ub2JqZWN0Q291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9ialtSZWxhdGlvbi5vYmplY3RJZEZpZWxkXTtcclxuICAgIH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9SZWxhdGlvbi50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi9GdW5jdGlvbnMudHNcIiAvPlxyXG5jbGFzcyBSZWxhdGlvbkhhbmRsZXJTdHJpY3RPbmVUb01hbnkgZXh0ZW5kcyBSZWxhdGlvbkhhbmRsZXIge1xyXG5cclxuICAgIHB1YmxpYyBzZXRSZWxhdGlvbiAocmVsYXRpb24gOiBSZWxhdGlvbiwgbGVmdCA6IGFueSwgcmlnaHQgOiBhbnksIHZhbHVlPyA6IGFueSkgOiBib29sZWFuIHtcclxuICAgICAgICAvLyBhIExFRlQgbXVzdCBub3QgY2lyY2xlIGluIG9uIGl0c2VsZlxyXG4gICAgICAgIC8vIElzIHJpZ2h0IGFueSBvZiB0aGUgbGVmdCdzIHBhcmVudHM/XHJcbiAgICAgICAgbGV0IHBhcmVudHMgPSB0aGlzLmdldEFsbExlZnQobGVmdCk7XHJcbiAgICAgICAgaWYgKHBhcmVudHMuaW5kZXhPZihyaWdodCkgIT0gLTEpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiW1JlbGF0aW9uXSBBdHRlbXB0IHRvIGNyZWF0ZSBhIGNpcmN1bGFyIHJlbGF0aW9uOlwiLCB0aGlzLCBsZWZ0LCByaWdodCk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQWxsb3dpbmcgdGhpcyB3b3VsZCBjcmVhdGUgYSBjaXJjdWxhciByZWxhdGlvblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gZnJvbSB0aGlzIHBvaW50IG9uIHdlJ2xsIGd1YXJhbnRlZSB0aGF0IHRoZSBuZXcgcmVsYXRpb24gY2FuIGJlIG1hZGUuXHJcbiAgICAgICAgLy8gQ2hhbmdlcyB3aWxsIG9jY3VyLCBzbyBcInJldHVybiBmYWxzZVwiIGlzIG5vIGxvbmdlciBhY2NlcHRhYmxlLlxyXG4gICAgICAgIC8vIGEgUklHSFQgY2FuIG9ubHkgcG9pbnQgdG8gYSBzaW5nbGUgTEVGVFxyXG4gICAgICAgIHRoaXMudW5zZXRSaWdodChyaWdodCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1bnNldCAodGhpbmcgOiBhbnkpIHtcclxuICAgICAgICB0aGlzLnVuc2V0TGVmdCh0aGluZyk7XHJcbiAgICAgICAgdGhpcy51bnNldFJpZ2h0KHRoaW5nKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdW5zZXRMZWZ0IChsZWZ0OiBhbnkpIHtcclxuICAgICAgICB0aGlzLnJlbGF0aW9ucy5mb3JFYWNoKHJlbGF0aW9uID0+IHtcclxuICAgICAgICAgICAgcmVsYXRpb24udW5zZXRMZWZ0KGxlZnQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1bnNldFJpZ2h0IChyaWdodCA6IGFueSkge1xyXG4gICAgICAgIHRoaXMucmVsYXRpb25zLmZvckVhY2gocmVsYXRpb24gPT4ge1xyXG4gICAgICAgICAgICByZWxhdGlvbi51bnNldFJpZ2h0KHJpZ2h0KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBIG1hbnkgY2FuIG9ubHkgaGF2ZSBvbmUgb25lXHJcbiAgICBwdWJsaWMgZ2V0TGVmdCAocmlnaHQgOiBhbnkpIHtcclxuICAgICAgICBsZXQgcmVzdWx0O1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yZWxhdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5yZWxhdGlvbnNbaV0uZ2V0TGVmdChyaWdodCk7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyByZXR1cm5zIGFsbCBvbmVzIHRoYXQgYXJlIHJlbGV2YW50LlxyXG4gICAgICogU28gaW4gYSByZWxhdGlvbnNoaXAgbGlrZSBBIC0+IEIgLT4gQyBhbmQgYXNraW5nIGZvciBDLCB0aGlzIHdpbGwgcmV0dXJuXHJcbiAgICAgKiBCIGJlY2F1c2UgaXQncyByZWxhdGVkIHRvIEMgYW5kIHRoZW4gQSBiZWNhdXNlIHRoYXQncyByZWxhdGVkIHRvIEIuXHJcbiAgICAgKiBAcGFyYW0gcmlnaHRcclxuICAgICAqIEByZXR1cm5zIHtBcnJheX1cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEFsbExlZnQgKHJpZ2h0IDogYW55KSB7XHJcbiAgICAgICAgbGV0IG5ld1BhcmVudCA9IHRoaXMuZ2V0TGVmdChyaWdodCk7XHJcbiAgICAgICAgbGV0IHBhcmVudHMgPSBbXTtcclxuICAgICAgICB3aGlsZSAobmV3UGFyZW50ICE9IHVuZGVmaW5lZCApIHtcclxuICAgICAgICAgICAgcGFyZW50cy5wdXNoKG5ld1BhcmVudCk7XHJcbiAgICAgICAgICAgIG5ld1BhcmVudCA9IHRoaXMuZ2V0TGVmdChuZXdQYXJlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGFyZW50cztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QWxsTGVmdFR5cGUgKHJpZ2h0IDogYW55LCB0eXBlIDogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWxsTGVmdChyaWdodCkuZmlsdGVyKGxlZnQgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbGVmdCBpbnN0YW5jZW9mIHR5cGU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBoaWdoZXN0IE9uZSB0aGF0IGNhbiBiZSBmb3VuZC5cclxuICAgICAqIGZvciBBIC0+IEIgLT4gQyBhbmQgYXNraW5nIGZvciBDLCB0aGlzIHdvdWxkIHJldHVybiBBXHJcbiAgICAgKiBhcyB0aGF0J3MgdGhlIG9uZSBcIm9yaWdpbmF0aW5nXCIgdGhlIG90aGVyIHJlbGF0aW9ucy5cclxuICAgICAqIEBwYXJhbSByaWdodFxyXG4gICAgICogQHJldHVybnMge2FueX1cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldExhc3RMZWZ0IChyaWdodCA6IGFueSkge1xyXG4gICAgICAgIGxldCBwYXJlbnQgPSB0aGlzLmdldExlZnQocmlnaHQpO1xyXG4gICAgICAgIGxldCBuZXdQYXJlbnQgPSB0aGlzLmdldExlZnQocGFyZW50KTtcclxuICAgICAgICB3aGlsZSAobmV3UGFyZW50ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBwYXJlbnQgPSBuZXdQYXJlbnQ7XHJcbiAgICAgICAgICAgIG5ld1BhcmVudCA9IHRoaXMuZ2V0TGVmdChwYXJlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGFyZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRBbGxSaWdodCAobGVmdCA6IGFueSkge1xyXG4gICAgICAgIGxldCByaWdodHMgPSBbXTtcclxuICAgICAgICB0aGlzLnJlbGF0aW9ucy5mb3JFYWNoKHJlbGF0aW9uID0+IHtcclxuICAgICAgICAgICAgcmlnaHRzLnB1c2goLi4ucmVsYXRpb24uZ2V0UmlnaHQobGVmdCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGFycmF5VW5pcXVlKHJpZ2h0cyk7XHJcbiAgICAgICAgcmV0dXJuIHJpZ2h0cztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QWxsUmlnaHRUeXBlcyAobGVmdCA6IGFueSwgcmlnaHRUeXBlIDogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWxsUmlnaHQobGVmdCkuZmlsdGVyKHJpZ2h0ID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJpZ2h0IGluc3RhbmNlb2YgcmlnaHRUeXBlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcblxyXG5jbGFzcyBSZWxhdGlvbk9uZVRvTWFueSBleHRlbmRzIFJlbGF0aW9uIHtcclxuICAgIHByaXZhdGUgdmFsdWVzSGFzaCA6IHtbaWRpZCA6IHN0cmluZ10gOiBhbnl9ID0ge307XHJcbiAgICBwcml2YXRlIG9uZU1hcCA9IG5ldyBNYXA8YW55LCBBcnJheTxhbnk+PigpO1xyXG4gICAgcHJpdmF0ZSBtYW55TWFwID0gbmV3IE1hcDxhbnksIGFueT4oKTtcclxuXHJcbiAgICBwdWJsaWMgZ2V0VmFsdWUgKGxlZnQgOiBhbnksIHJpZ2h0IDogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzSGFzaFtSZWxhdGlvbi5jcmVhdGVTdHJpbmcobGVmdCwgcmlnaHQpXTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9ubHkgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIE9iamV0cyBjYW4gaGF2ZSB2YWx1ZXNcclxuICAgICAqIEBwYXJhbSBsZWZ0XHJcbiAgICAgKiBAcGFyYW0gcmlnaHRcclxuICAgICAqIEBwYXJhbSB2YWx1ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0VmFsdWUgKGxlZnQgOiBhbnksIHJpZ2h0IDogYW55LCB2YWx1ZSA6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLm1hbnlNYXAuZ2V0KHJpZ2h0KSA9PSBsZWZ0KSB7XHJcbiAgICAgICAgICAgIGxldCBzdHJpbmcgPSBSZWxhdGlvbi5jcmVhdGVTdHJpbmcobGVmdCwgcmlnaHQpO1xyXG4gICAgICAgICAgICBpZiAoc3RyaW5nICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXNIYXNoW3N0cmluZ10gPSB2YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0UmVsYXRpb24gKGxlZnQgOiBhbnksIHJpZ2h0IDogYW55LCB2YWx1ZT8gOiBhbnkpIHtcclxuICAgICAgICBsZXQgcHJvY2VlZDtcclxuICAgICAgICBpZiAodGhpcy5oYW5kbGVyICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBwcm9jZWVkID0gdGhpcy5oYW5kbGVyLnNldFJlbGF0aW9uKHRoaXMsIGxlZnQsIHJpZ2h0LCB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocHJvY2VlZCkge1xyXG4gICAgICAgICAgICAvLyBzb21ldGhpbmcgb24gdGhlIGxlZnQgY2FuJ3QgYmUgb24gdGhlIHJpZ2h0XHJcbiAgICAgICAgICAgIHRoaXMudW5zZXRSaWdodChsZWZ0KTtcclxuXHJcbiAgICAgICAgICAgIC8vIHNvbWV0aGluZyBvbiB0aGUgcmlnaHQgY2FuJ3QgYmUgb24gdGhlIGxlZnRcclxuICAgICAgICAgICAgdGhpcy51bnNldExlZnQocmlnaHQpO1xyXG5cclxuICAgICAgICAgICAgLy8gc29tZXRoaW5nIG9uIHRoZSByaWdodCBjYW4gb25seSBoYXZlIG9uZSBsZWZ0XHJcbiAgICAgICAgICAgIHRoaXMudW5zZXRSaWdodChyaWdodCk7XHJcblxyXG4gICAgICAgICAgICBsZXQgc3RyaW5nID0gUmVsYXRpb24uY3JlYXRlU3RyaW5nKGxlZnQsIHJpZ2h0KTtcclxuICAgICAgICAgICAgaWYgKHN0cmluZyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzSGFzaFtzdHJpbmddID0gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5tYW55TWFwLnNldChyaWdodCwgbGVmdCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9uZU1hcC5nZXQobGVmdCkgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uZU1hcC5zZXQobGVmdCwgW3JpZ2h0XSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uZU1hcC5nZXQobGVmdCkucHVzaChyaWdodCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldExlZnQgKHJpZ2h0IDogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFueU1hcC5nZXQocmlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRBbnlMZWZ0ICgpIHtcclxuICAgICAgICBsZXQgbGVmdCA9IFtdO1xyXG4gICAgICAgIHRoaXMub25lTWFwLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgbGVmdC5wdXNoKGtleSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYXJyYXlVbmlxdWUobGVmdCk7XHJcbiAgICAgICAgcmV0dXJuIGxlZnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEFueVJpZ2h0ICgpIHtcclxuICAgICAgICBsZXQgcmlnaHRzID0gW107XHJcbiAgICAgICAgdGhpcy5vbmVNYXAuZm9yRWFjaCgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgcmlnaHRzLnB1c2goLi4udmFsdWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGFycmF5VW5pcXVlKHJpZ2h0cyk7XHJcbiAgICAgICAgcmV0dXJuIHJpZ2h0cztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QW55UmlnaHRUeXBlICh0eXBlIDogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QW55UmlnaHQoKS5maWx0ZXIodmFsdWUgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiB0eXBlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc1JpZ2h0IChsZWZ0IDogYW55LCBuZWVkbGUgOiBhbnkpIHtcclxuICAgICAgICBsZXQgcmlnaHQgPSB0aGlzLm9uZU1hcC5nZXQobGVmdCk7XHJcbiAgICAgICAgaWYgKHJpZ2h0ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmlnaHQuaW5kZXhPZihuZWVkbGUpICE9IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFJpZ2h0IChsZWZ0IDogYW55KSB7XHJcbiAgICAgICAgbGV0IHJpZ2h0ID0gdGhpcy5vbmVNYXAuZ2V0KGxlZnQpO1xyXG4gICAgICAgIGlmIChyaWdodCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5yaWdodCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0UmlnaHRUeXBlIChsZWZ0IDogYW55LCB0eXBlIDogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UmlnaHQobGVmdCkuZmlsdGVyKHJpZ2h0ID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJpZ2h0IGluc3RhbmNlb2YgdHlwZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0UmlnaHRUeXBlT25lIChsZWZ0IDogYW55LCB0eXBlIDogYW55KSB7XHJcbiAgICAgICAgbGV0IHJpZ2h0cyA9IHRoaXMuZ2V0UmlnaHRUeXBlKGxlZnQsIHR5cGUpO1xyXG4gICAgICAgIGlmIChyaWdodHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmlnaHRzWzBdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0UmVsYXRpb25WYWx1ZSAobGVmdCA6IGFueSwgcmlnaHQgOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXNIYXNoW1JlbGF0aW9uLmNyZWF0ZVN0cmluZyhsZWZ0LCByaWdodCldO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1bnNldFJpZ2h0IChyaWdodCA6IGFueSkge1xyXG4gICAgICAgIGxldCBsZWZ0ID0gdGhpcy5tYW55TWFwLmdldChyaWdodCk7XHJcbiAgICAgICAgaWYgKGxlZnQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxldCBhbGxSaWdodCA9IHRoaXMub25lTWFwLmdldChsZWZ0KTtcclxuICAgICAgICAgICAgYWxsUmlnaHQuc3BsaWNlKGFsbFJpZ2h0LmluZGV4T2YocmlnaHQpLCAxKTtcclxuICAgICAgICAgICAgdGhpcy5tYW55TWFwLmRlbGV0ZShyaWdodCk7XHJcbiAgICAgICAgICAgIGlmIChhbGxSaWdodC5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vbmVNYXAuZGVsZXRlKGxlZnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBzdHJpbmcgPSBSZWxhdGlvbi5jcmVhdGVTdHJpbmcobGVmdCwgcmlnaHQpO1xyXG4gICAgICAgICAgICBpZiAoc3RyaW5nICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlKHRoaXMudmFsdWVzSGFzaFtzdHJpbmddKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdW5zZXRMZWZ0IChsZWZ0IDogYW55KSB7XHJcbiAgICAgICAgbGV0IGFsbFJpZ2h0ID0gdGhpcy5vbmVNYXAuZ2V0KGxlZnQpO1xyXG4gICAgICAgIGlmIChhbGxSaWdodCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgYWxsUmlnaHQuZm9yRWFjaCgocmlnaHQgOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFueU1hcC5kZWxldGUocmlnaHQpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHN0cmluZyA9IFJlbGF0aW9uLmNyZWF0ZVN0cmluZyhsZWZ0LCByaWdodCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3RyaW5nICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSh0aGlzLnZhbHVlc0hhc2hbc3RyaW5nXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLm9uZU1hcC5kZWxldGUobGVmdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL0VsZW1lbnRzL0NsYXNzZXMvU2F5LnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlJlbGF0aW9ucy9SZWxhdGlvbk9uZVRvTWFueS50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9FbGVtZW50cy9DbGFzc2VzL1NheS9TYXlJbWFnZS50c1wiIC8+XHJcblxyXG5pbnRlcmZhY2UgVGhpbmdPcHRpb25zIHtcclxuICAgIG5hbWU/IDogc3RyaW5nO1xyXG4gICAgcHJvcGVyTmFtZT8gOiBzdHJpbmc7XHJcbiAgICBkZXNjcmlwdGlvbj8gOiBTYXkgfCBhbnk7XHJcbiAgICB1bmlxdWU/IDogYm9vbGVhbjtcclxuICAgIGltYWdlPyA6IFNheUltYWdlIHwgc3RyaW5nO1xyXG4gICAgc2hpbnk/IDogYm9vbGVhbjtcclxufVxyXG5cclxuLy8gQSB0aGluZyBpcyBzb21ldGhpbmcgdGhhdCBleGlzdHMgaW4gdGhlIFdvcmxkXHJcbmNsYXNzIFRoaW5nIGltcGxlbWVudHMgUHJpbnRhYmxlIHtcclxuICAgIHByb3RlY3RlZCBuYW1lIDogc3RyaW5nO1xyXG4gICAgcHVibGljIHByb3Blcmx5TmFtZWQgOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIHNjZW5lcnkgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgZml4ZWRJblBsYWNlIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGFuaW1hdGVkIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHZpc2libGUgOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHB1YmxpYyB1bmlxdWUgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaW1hZ2UgOiBTYXlJbWFnZTtcclxuICAgIHByb3RlY3RlZCBzaGlueSA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgc2V0QWx0ZXJhdGlvbnMgOiBBcnJheTwodGhpc09iamVjdCA6IFRoaW5nLCBzaW1wbGVBbHRlcmF0aW9uT2JqZWN0IDoge1tpZCA6IHN0cmluZ10gOiBhbnl9KSA9PiB2b2lkPiA9IFtdO1xyXG4gICAgcHJvdGVjdGVkIGdldEFsdGVyYXRpb25zIDogQXJyYXk8KHRoaXNPYmplY3QgOiBUaGluZykgPT4ge1tpZCA6IHN0cmluZ10gOiBhbnl9PiA9IFtdO1xyXG4gICAgcHVibGljIGNsb25lIDogKGluY2x1ZGVDaGFuZ2VzPyA6IGJvb2xlYW4pID0+IFRoaW5nID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vbi11bmlxdWUgT2JqZWN0cyBjYW4ndCBiZSBjbG9uZWQuXCIpO1xyXG4gICAgfTtcclxuICAgIHB1YmxpYyBjbG9uZU9wdGlvbnMgOiBUaGluZ09wdGlvbnM7XHJcblxyXG4gICAgcHVibGljIGRlc2NyaXB0aW9uIDogU2F5IHwgc3RyaW5nIHwgKCgpID0+IFNheSB8IHN0cmluZyk7XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyB1bmlxdWVUaGluZ3MgOiB7W2lkIDogc3RyaW5nXSA6IFRoaW5nfSA9IHt9O1xyXG4gICAgcHVibGljIHN0YXRpYyB0aGluZ3MgOiB7W2lkIDogc3RyaW5nXSA6IEFycmF5PFRoaW5nPn0gPSB7fTtcclxuXHJcbiAgICAvLyBUaGlzIGlzIG5vdCBzYWZlLlxyXG4gICAgLy8gcHVibGljIGR1cGxpY2F0ZSAoKSB7XHJcbiAgICAvLyAgICAgcmV0dXJuIG5ldyAoPGFueT4gdGhpcy5jb25zdHJ1Y3RvcikoPFRoaW5nT3B0aW9ucz4ge1xyXG4gICAgLy8gICAgICAgICBuYW1lIDogdGhpcy5uYW1lLFxyXG4gICAgLy8gICAgICAgICBwcm9wZXJOYW1lIDogdGhpcy5wcm9wZXJseU5hbWVkID8gdGhpcy5uYW1lIDogdW5kZWZpbmVkLFxyXG4gICAgLy8gICAgICAgICBkZXNjcmlwdGlvbiA6IHRoaXMuZGVzY3JpcHRpb24sXHJcbiAgICAvLyAgICAgICAgIHVuaXF1ZSA6IHRoaXMudW5pcXVlLFxyXG4gICAgLy8gICAgICAgICBpbWFnZSA6IHRoaXMuaW1hZ2VcclxuICAgIC8vICAgICB9KTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKG9wdGlvbnM/IDogVGhpbmdPcHRpb25zKSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgPT0gdW5kZWZpbmVkID8ge30gOiBvcHRpb25zO1xyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5wcm9wZXJOYW1lICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLm5hbWUgPSBvcHRpb25zLnByb3Blck5hbWU7XHJcbiAgICAgICAgICAgIHRoaXMucHJvcGVybHlOYW1lZCA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLm5hbWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmFtZSA9IG9wdGlvbnMubmFtZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAoPGFueT4gdGhpcy5jb25zdHJ1Y3RvcikubmFtZTsgLy8gSWYgdGhlcmUgaXMgbm8gbmFtZSwgdXNlIENsYXNzIGFzIG5hbWVcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLmRlc2NyaXB0aW9uICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5kZXNjcmlwdGlvbiBpbnN0YW5jZW9mIFNheSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IG9wdGlvbnMuZGVzY3JpcHRpb247XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gbmV3IFNheShvcHRpb25zLmRlc2NyaXB0aW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMudW5pcXVlKSB7XHJcbiAgICAgICAgICAgIFRoaW5nLnN0b3JlVW5pcXVlKHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLnVuaXF1ZSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgVGhpbmcuc3RvcmVOb25VbmlxdWUodGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVPcHRpb25zID0gb3B0aW9ucztcclxuICAgICAgICAgICAgdGhpcy5jbG9uZSA9IChpbmNsdWRlQ2hhbmdlcz8gOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY29ucyA9IDxhbnk+IGV2YWwoKDxhbnk+IHRoaXMuY29uc3RydWN0b3IpLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgbGV0IG5ld1RoaW5nID0gPFRoaW5nPiBuZXcgY29ucyh0aGlzLmNsb25lT3B0aW9ucyk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVDaGFuZ2VzID09IHVuZGVmaW5lZCB8fCBpbmNsdWRlQ2hhbmdlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1RoaW5nLnNldENoYW5nZXModGhpcy5nZXRDaGFuZ2VzKCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXdUaGluZztcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLmltYWdlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5pbWFnZSBpbnN0YW5jZW9mIFNheUltYWdlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlID0gb3B0aW9ucy5pbWFnZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2UgPSBuZXcgU2F5SW1hZ2Uob3B0aW9ucy5pbWFnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2hpbnkgPSBvcHRpb25zLnNoaW55ID09IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkR2V0QWx0ZXJhdGlvbnMoKHRoaW5nIDogVGhpbmcpID0+IHtcclxuICAgICAgICAgICAgZnVuY3Rpb24gZ2V0Q2xvc2VzdFJvb20gKGN1cnJlbnRSb29tIDogUm9vbVJhbmRvbSwgcm9vbXMgOiBBcnJheTxSb29tUmFuZG9tPikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSb29tIGluc3RhbmNlb2YgUm9vbVJhbmRvbSAmJiByb29tcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9vbXMuc29ydCgoYSA6IFJvb21SYW5kb20sIGIgOiBSb29tUmFuZG9tKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGEgaW5zdGFuY2VvZiBSb29tUmFuZG9tKSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShiIGluc3RhbmNlb2YgUm9vbVJhbmRvbSkpIHJldHVybiAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGEgPSBhLmdldERpc3RhbmNlVG8oPFJvb21SYW5kb20+IGN1cnJlbnRSb29tKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRiID0gYi5nZXREaXN0YW5jZVRvKDxSb29tUmFuZG9tPiBjdXJyZW50Um9vbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYSAtIGRiO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uIDogcm9vbXNbMF0uZ2V0TmFtZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoVGhpbmcuRW5jbG9zZWRSZWxhdGlvbi5nZXRMZWZ0KHRoaW5nKSA9PSB0aGluZy5nZXRSb29tKCkgJiYgdGhpbmcuZ2V0Um9vbSgpICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaW5nLmdldFJvb20oKS5mb2RkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpbmcuaXNQbGF5ZXIoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBwdXQgYXQgY2xvc2VzdCByZW1lbWJlcmVkIHJvb21cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJvb21zID0gV29ybGRTdGF0ZS5nZXRSZW1lbWJlcmVkUm9vbXNBc1Jvb21zKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50Um9vbSA9IHRoaW5nLmdldFJvb20oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldENsb3Nlc3RSb29tKDxSb29tUmFuZG9tPiBjdXJyZW50Um9vbSwgPEFycmF5PFJvb21SYW5kb20+PiByb29tcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHV0IGF0IGNsb3Nlc3Qgcm9vbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcm9vbXMgPSB0aGluZy5nZXRSb29tKCkuZ2V0Q29ubmVjdGVkUm9vbXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRSb29tID0gdGhpbmcuZ2V0Um9vbSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm91bmRSb29tID0gZ2V0Q2xvc2VzdFJvb20oPFJvb21SYW5kb20+IGN1cnJlbnRSb29tLCA8QXJyYXk8Um9vbVJhbmRvbT4+IHJvb21zKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kUm9vbSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZFJvb207XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tcyA9ICg8UmVnaW9uPiBSZWdpb24uSW5SZWxhdGlvbi5nZXRMZWZ0KHRoaW5nLmdldFJvb20oKSkpLmdldFJvb21zKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Q2xvc2VzdFJvb20oPFJvb21SYW5kb20+IGN1cnJlbnRSb29tLCA8QXJyYXk8Um9vbVJhbmRvbT4+IHJvb21zKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb246IHRoaW5nLmdldFJvb20oKS5nZXROYW1lKClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRTZXRBbHRlcmF0aW9ucygodGhpbmcgOiBUaGluZywgY2hhbmdlcykgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hhbmdlcy5Mb2NhdGlvbiAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGxldCByb29tID0gUm9vbS5nZXRSb29tKGNoYW5nZXMuTG9jYXRpb24pO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJvb20gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9vbS5wbGFjZSh0aGluZyk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJVbmFibGUgdG8gcGxhY2UgXCIsIHRoaW5nLCBcIiBhdCByb29tIFwiLCBjaGFuZ2VzLkxvY2F0aW9uKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZGRHZXRBbHRlcmF0aW9ucyAobmV3R2V0KSB7XHJcbiAgICAgICAgdGhpcy5nZXRBbHRlcmF0aW9ucy5wdXNoKG5ld0dldCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGFkZHMgYSBmdW5jdGlvbiB0byBydW4gb3ZlciB3aGVuIGxvYWRpbmcgZnJvbSBhIHNhdmUgZmlsZS5cclxuICAgICAqIEFsd2F5cyByZW1lbWJlciB0aGF0IHNhdmUgZmlsZXMgYXJlIE5PVCBTQUZFLiBJZGVhbGx5IHdlIHNob3VsZCBjaGVjayBmb3IgaW52YWxpZCBpbmZvcm1hdGlvbixcclxuICAgICAqIGJ1dCBhdCBsZWFzdCBjaGVjayBpZiB0aGV5IGV4aXN0LCBiZWNhdXNlIGlmIHlvdSBhZGRlZCBzb21ldGhpbmcgbmV3LCBvbGQgc2F2ZXMgd2lsbCBub3QgaGF2ZSB0aGVtLlxyXG4gICAgICogSXQncyBva2F5IHRvIGJyZWFrIG9uIGJhZCBpbmZvcm1hdGlvbiBiZWNhdXNlIGlmIHNvbWVvbmUgZGVjaWRlZCB0byBoYWNrIHRoZWlyIHNhdmUsIHRoZW0gdGhleSBzaG91bGRcclxuICAgICAqIGRlYWwgd2l0aCB0aGUgaXNzdWVzLlxyXG4gICAgICogQHBhcmFtIG5ld1NldFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkU2V0QWx0ZXJhdGlvbnMgKG5ld1NldCkge1xyXG4gICAgICAgIHRoaXMuc2V0QWx0ZXJhdGlvbnMucHVzaChuZXdTZXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRDaGFuZ2VzICgpIDoge1tpZCA6IHN0cmluZ10gOiBhbnl9e1xyXG4gICAgICAgIGxldCBjaGFuZ2VzID0ge307XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdldEFsdGVyYXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBjaGFuZ2UgPSB0aGlzLmdldEFsdGVyYXRpb25zW2ldKHRoaXMpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gY2hhbmdlKSB7XHJcbiAgICAgICAgICAgICAgICBjaGFuZ2VzW2tleV0gPSBjaGFuZ2Vba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY2hhbmdlcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0Q2hhbmdlcyAoc2ltcGxlQWx0ZXJhdGlvbk9iamVjdCA6IHtbaWQgOiBzdHJpbmddIDogYW55fSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZXRBbHRlcmF0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB0aGlzLnNldEFsdGVyYXRpb25zW2ldKHRoaXMsIHNpbXBsZUFsdGVyYXRpb25PYmplY3QpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0U2hpbnkgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNoaW55O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXROYW1lIChuYW1lIDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTsgLy8gRG9uJ3QgcmVzdG9yZS4gVGhlIG9ubHkgdGhpbmcgdGhhdCBjaGFuZ2VzIG5hbWVzIGlzIHBsYXllci5cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0TmFtZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHN0b3JlTm9uVW5pcXVlICh0aGluZyA6IFRoaW5nKSB7XHJcbiAgICAgICAgaWYgKFRoaW5nLnRoaW5nc1t0aGluZy5uYW1lXSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgVGhpbmcudGhpbmdzW3RoaW5nLm5hbWVdID0gW3RoaW5nXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBUaGluZy50aGluZ3NbdGhpbmcubmFtZV0ucHVzaCh0aGluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Tm9uVW5pcXVlIChuYW1lIDogc3RyaW5nKSA6IEFycmF5PFRoaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIFRoaW5nLnRoaW5nc1tuYW1lXSA9PSB1bmRlZmluZWQgPyBbXSA6IFRoaW5nLnRoaW5nc1tuYW1lXTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldE9uZVRoaW5nIChuYW1lIDogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IHRoaW5nIDogVGhpbmcgPSBUaGluZy5nZXRVbmlxdWUobmFtZSk7XHJcbiAgICAgICAgaWYgKHRoaW5nID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBsZXQgdGhpbmdzID0gVGhpbmcuZ2V0Tm9uVW5pcXVlKG5hbWUpO1xyXG4gICAgICAgICAgICBpZiAodGhpbmdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaW5nID0gdGhpbmdzWzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGluZztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHN0b3JlVW5pcXVlICh1bmlxdWUgOiBUaGluZykge1xyXG4gICAgICAgIGlmIChUaGluZy51bmlxdWVUaGluZ3NbdW5pcXVlLm5hbWVdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4odW5pcXVlLm5hbWUsIFRoaW5nLnVuaXF1ZVRoaW5nc1t1bmlxdWUubmFtZV0sIG5ldyBFcnJvcihcIlVuaXF1ZSBUaGluZyBBbHJlYWR5IEV4aXN0c1wiKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgVGhpbmcudW5pcXVlVGhpbmdzW3VuaXF1ZS5uYW1lXSA9IHVuaXF1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRVbmlxdWUgKG5hbWUgOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gVGhpbmcudW5pcXVlVGhpbmdzW25hbWVdO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0VW5pcXVlcyAoKSA6IEFycmF5PFRoaW5nPiB7XHJcbiAgICAgICAgbGV0IHRoaW5ncyA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IG5hbWUgaW4gVGhpbmcudW5pcXVlVGhpbmdzKSB7XHJcbiAgICAgICAgICAgIHRoaW5ncy5wdXNoKFRoaW5nLnVuaXF1ZVRoaW5nc1tuYW1lXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGluZ3M7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFByaW50ZWROYW1lKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFByaW50ZWREZXNjcmlwdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRpb24gPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2F5IChcIllvdSBzZWUgbm90aGluZyBzcGVjaWFsIGFib3V0IFwiLCBuZXcgU2F5VGhlKCksIHRoaXMsIFwiLlwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZXNjcmlwdGlvbjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBJbnNpZGVSb29tUmVsYXRpb24gOiBSZWxhdGlvbk9uZVRvTWFueT0gbmV3IFJlbGF0aW9uT25lVG9NYW55KCk7XHJcbiAgICBwdWJsaWMgc3RhdGljIFBhcnRSZWxhdGlvbiA9IG5ldyBSZWxhdGlvbk9uZVRvTWFueSgpO1xyXG4gICAgcHVibGljIHN0YXRpYyBDYXJyeVJlbGF0aW9uID0gbmV3IFJlbGF0aW9uT25lVG9NYW55KCk7XHJcbiAgICBwdWJsaWMgc3RhdGljIFdpZWxkUmVsYXRpb24gPSBuZXcgUmVsYXRpb25PbmVUb01hbnkoKTtcclxuICAgIHB1YmxpYyBzdGF0aWMgV2VhclJlbGF0aW9uID0gbmV3IFJlbGF0aW9uT25lVG9NYW55KCk7XHJcbiAgICBwdWJsaWMgc3RhdGljIEVuY2xvc2VkUmVsYXRpb24gPSBuZXcgUmVsYXRpb25IYW5kbGVyU3RyaWN0T25lVG9NYW55KFRoaW5nLkluc2lkZVJvb21SZWxhdGlvbiwgVGhpbmcuUGFydFJlbGF0aW9uLCBUaGluZy5DYXJyeVJlbGF0aW9uLCBUaGluZy5XaWVsZFJlbGF0aW9uLCBUaGluZy5XZWFyUmVsYXRpb24pO1xyXG5cclxuICAgIHB1YmxpYyBnZXRQYXJ0T25lICgpIHtcclxuICAgICAgICByZXR1cm4gVGhpbmcuUGFydFJlbGF0aW9uLmdldExlZnQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldENhcnJ5T25lICgpIHtcclxuICAgICAgICByZXR1cm4gVGhpbmcuQ2FycnlSZWxhdGlvbi5nZXRMZWZ0KHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRXaWVsZE9uZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFRoaW5nLldpZWxkUmVsYXRpb24uZ2V0TGVmdCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0V2Vhck9uZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFRoaW5nLldlYXJSZWxhdGlvbi5nZXRMZWZ0KHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRFbmNsb3NlZE9uZSAoKSA6IFRoaW5nIHwgUm9vbSB7XHJcbiAgICAgICAgcmV0dXJuIFRoaW5nLkVuY2xvc2VkUmVsYXRpb24uZ2V0TGVmdCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVtb3ZlUGFydHMgKHBhcnRUeXBlPyA6IGFueSkge1xyXG4gICAgICAgIGxldCBwYXJ0cyA9IHRoaXMuZ2V0UGFydHMocGFydFR5cGUpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgVGhpbmcuUGFydFJlbGF0aW9uLnVuc2V0UmlnaHQocGFydHNbaV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0UGFydHMgKHBhcnRUeXBlPyA6IGFueSkge1xyXG4gICAgICAgIGlmIChwYXJ0VHlwZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFRoaW5nLlBhcnRSZWxhdGlvbi5nZXRSaWdodFR5cGUodGhpcywgcGFydFR5cGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gVGhpbmcuUGFydFJlbGF0aW9uLmdldFJpZ2h0KHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRQYXJ0c0J5TmFtZSAobmFtZSA6IHN0cmluZykgOiBBcnJheTxUaGluZz4ge1xyXG4gICAgICAgIGxldCBwYXJ0cyA9IHRoaXMuZ2V0UGFydHMoKTtcclxuICAgICAgICByZXR1cm4gcGFydHMuZmlsdGVyKChwYXJ0IDogVGhpbmcpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIChwYXJ0LmdldE5hbWUoKSA9PSBuYW1lKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0UGFydCAocGFydFR5cGU/IDogYW55KSB7XHJcbiAgICAgICAgaWYgKHBhcnRUeXBlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gVGhpbmcuUGFydFJlbGF0aW9uLmdldFJpZ2h0VHlwZU9uZSh0aGlzLCBwYXJ0VHlwZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBUaGluZy5QYXJ0UmVsYXRpb24uZ2V0UmlnaHQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gV2lsbCB1c3VhbGx5IHJldHVybiB0aGUgcm9vbSBhdCB3aGljaCB0aGlzIGlzLlxyXG4gICAgLy8gV2lsbCByZXR1cm4gdGhlIGhpZ2hlc3QgcGFyZW50IGlmIHRoYXQgcGFyZW50IGlzIG91dCBvZiB3b3JsZC5cclxuICAgIHB1YmxpYyBnZXRIaWdoZXN0RW5jbG9zZWRPbmUgKCkgOiBUaGluZyB8IFJvb20ge1xyXG4gICAgICAgIHJldHVybiBUaGluZy5FbmNsb3NlZFJlbGF0aW9uLmdldExhc3RMZWZ0KHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRIaWdoZXN0RW5jbG9zZWRPbmVOb3RSb29tICgpIDogVGhpbmcge1xyXG4gICAgICAgIGxldCBwYXJlbnQgPSBUaGluZy5FbmNsb3NlZFJlbGF0aW9uLmdldExlZnQodGhpcyk7XHJcbiAgICAgICAgaWYgKHBhcmVudCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgbGV0IG5ld1BhcmVudCA9IFRoaW5nLkVuY2xvc2VkUmVsYXRpb24uZ2V0TGVmdChwYXJlbnQpO1xyXG4gICAgICAgICAgICB3aGlsZSAobmV3UGFyZW50ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgcGFyZW50ID0gbmV3UGFyZW50O1xyXG4gICAgICAgICAgICAgICAgbmV3UGFyZW50ID0gVGhpbmcuRW5jbG9zZWRSZWxhdGlvbi5nZXRMZWZ0KHBhcmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFJvb20gKCkgOiBSb29tIHtcclxuICAgICAgICB2YXIgcGFydE9mID0gPFRoaW5nIHwgUm9vbT4gVGhpbmcuRW5jbG9zZWRSZWxhdGlvbi5nZXRMZWZ0KHRoaXMpO1xyXG4gICAgICAgIGlmIChwYXJ0T2YgaW5zdGFuY2VvZiBSb29tKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwYXJ0T2Y7XHJcbiAgICAgICAgfSBlbHNlIGlmIChwYXJ0T2YgaW5zdGFuY2VvZiBUaGluZykge1xyXG4gICAgICAgICAgICByZXR1cm4gcGFydE9mLmdldFJvb20oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlbW92ZUZyb21Sb29tICgpIHtcclxuICAgICAgICB0aGlzLmdldFJvb20oKS5yZW1vdmUodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzVmlzaWJsZVRvICh0aGluZyA6IFRoaW5nKSB7XHJcbiAgICAgICAgLy8gRWl0aGVyIGluIHRoZSBzYW1lIHJvb20gb3IgcGFydCBvZiAvd2llbGRlZCAvIGNhcnJpZWQgYnkgcGVyc29uXHJcbiAgICAgICAgcmV0dXJuICh0aGlzLmdldFJvb20oKSA9PSB0aGluZy5nZXRSb29tKCkgJiYgdGhpcy52aXNpYmxlKTtcclxuICAgICAgICAvLyBUT0RPIDogVXBkYXRlIHRoaXMgY29kZSBmb3IgdGhlIGNhc2VzIHdoZXJlIGEgY3JlYXR1cmUgaXMgbm90IHZpc2libGUgYnV0IHRoZSBvYnNlcnZlciBjYW4gc2VlIHRoZW0gYW55d2F5XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzUGxheWVyICgpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZFBhcnRzICguLi5wYXJ0cyA6IEFycmF5PFRoaW5nPikge1xyXG4gICAgICAgIHBhcnRzLmZvckVhY2gocGFydCA9PiB7XHJcbiAgICAgICAgICAgIFRoaW5nLlBhcnRSZWxhdGlvbi5zZXRSZWxhdGlvbih0aGlzLCBwYXJ0KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNVbmlxdWUgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVuaXF1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0Q2FycmllZCAodGhpbmcgOiBUaGluZykge1xyXG4gICAgICAgIFRoaW5nLkNhcnJ5UmVsYXRpb24uc2V0UmVsYXRpb24odGhpcywgdGhpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRXb3JuICh0aGluZyA6IFRoaW5nKSB7XHJcbiAgICAgICAgVGhpbmcuV2VhclJlbGF0aW9uLnNldFJlbGF0aW9uKHRoaXMsIHRoaW5nKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0V2llbGRlZCAodGhpbmcgOiBUaGluZykge1xyXG4gICAgICAgIFRoaW5nLldpZWxkUmVsYXRpb24uc2V0UmVsYXRpb24odGhpcywgdGhpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1bnNldENhcnJpZWQgKHRoaW5nIDogVGhpbmcpIHtcclxuICAgICAgICBpZiAoVGhpbmcuRW5jbG9zZWRSZWxhdGlvbi5nZXRBbGxSaWdodCh0aGlzKS5pbmRleE9mKHRoaW5nKSAhPSAtMSkge1xyXG4gICAgICAgICAgICBUaGluZy5FbmNsb3NlZFJlbGF0aW9uLnVuc2V0UmlnaHQodGhpbmcpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFJvb20oKS5wbGFjZSh0aGluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU28gbG9uZyBhcyBhIHRoaW5nIGlzIGluIGEgcmVsYXRpb24sIGl0IGNhbid0IGJlIGdhcmJhZ2UgY2xlYW5lZC5cclxuICAgICAqIElmIHlvdSdyZSB0aHJvd2luZyBhIHRoaW5nIGF3YXksIGRvIHJ1biBkZXN0cm95LlxyXG4gICAgICogV2FybmluZzogdGhpcyB3aWxsIGFsc28gZGVzdHJveSBldmVyeXRoaW5nIHRoYXQncyBiZWxvdyBpdC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGRlc3Ryb3kgKCkge1xyXG4gICAgICAgIGxldCByZWxhdGVkUmlnaHQgPSBUaGluZy5FbmNsb3NlZFJlbGF0aW9uLmdldEFsbFJpZ2h0KHRoaXMpO1xyXG4gICAgICAgIHJlbGF0ZWRSaWdodC5wdXNoKHRoaXMpO1xyXG4gICAgICAgIHJlbGF0ZWRSaWdodC5mb3JFYWNoKHJlbGF0ZWQgPT4ge1xyXG4gICAgICAgICAgICBUaGluZy5FbmNsb3NlZFJlbGF0aW9uLnVuc2V0KHJlbGF0ZWQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL0FjdGlvbi50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi9FbGVtZW50cy9DbGFzc2VzL1NheS9TYXlCb2xkLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uLy4uL0VsZW1lbnRzL0NsYXNzZXMvU2F5L1NheVRoZS50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi9FbGVtZW50cy9Nb2R1bGVzL0h5cGVybGlua0hhbmRsZXIudHNcIiAvPlxyXG5cclxuY2xhc3MgQWN0aW9uVGFrZSBleHRlbmRzIEFjdGlvbiB7XHJcbiAgICBwdWJsaWMgc3RhdGljIGNoZWNrIDogUnVsZWJvb2s8QWN0aW9uVGFrZT4gPSBuZXcgUnVsZWJvb2soXCJDaGVjayBUYWtpbmdcIik7XHJcbiAgICBwdWJsaWMgc3RhdGljIGNhcnJ5IDogUnVsZWJvb2s8QWN0aW9uVGFrZT4gPSBuZXcgUnVsZWJvb2soXCJDYXJyeSBvdXQgVGFraW5nXCIpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTmVlZHMgdG8gcmV0dXJuIGEgc3RyaW5nIGV4cGxhaW5pbmcgd2hhdCB0aGUgcGxheWVyIHdpbGwgZG8gaWYgaGUgZG9lcyB0aGlzIGFjdGlvbi5cclxuICAgICAqIEZvciBpbnN0YW5jZSwgQWN0aW9uVGFraW5nIHNob3VsZCByZXR1cm4gc29tZXRoaW5nIGxpa2UgcmV0dXJuIFwidGFrZSBcIiArIHRoaXMubm91bnNbMF0uZ2V0TmFtZSgpLFxyXG4gICAgICogICB3aGljaCB3b3VsZCByZWFkIGFzIFwidGFrZSB0aGluZ1wiLlxyXG4gICAgICogICByZW1lbWJlciB0aGF0IHRoaW5ncyBpbXBsZW1lbnQgUFJJTlRBQkxFIGludGVyZmFjZSwgc28geW91IGNhbiBnZXQgdGhlaXIgbmFtZXMuXHJcbiAgICAgKiBAcmV0dXJucyB7U2F5fVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0Q29tbWFuZFRleHQgKCkge1xyXG4gICAgICAgIHJldHVybiBcInRha2UgXCIgKyAodGhpcy5nZXROb3VuKDApICE9IHVuZGVmaW5lZCA/IHRoaXMuZ2V0Tm91bigwKS5nZXRQcmludGVkTmFtZSgpIDogXCJcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBkZWZhdWx0Q2FycnlUYWtpbmdSdWxlID0gbmV3IFJ1bGUoe1xyXG4gICAgICAgIG5hbWUgOiBcIlRha2luZyAtIEFkZCB0aGUgdGhpbmcgdG8geW91ciBpbnZlbnRvcnlcIixcclxuICAgICAgICBjb2RlIDogKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8QWN0aW9uVGFrZT4pID0+IHtcclxuICAgICAgICAgICAgbGV0IGFjdGlvbiA9IDxBY3Rpb25Hbz4gcnVsZWJvb2subm91bjtcclxuICAgICAgICAgICAgbGV0IGFjdG9yID0gYWN0aW9uLmFjdG9yO1xyXG4gICAgICAgICAgICBsZXQgdGhpbmcgPSAoPFRoaW5nPmFjdGlvbi5nZXROb3VuKDApKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGluZy5nZXRFbmNsb3NlZE9uZSgpICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIFBhcnQgT2YsIENhcnJpZWQgb3IgV2llbGRlZC4gSXQncyBlc3NlbnRpYWxseSBzdGVhbGluZy5cclxuICAgICAgICAgICAgICAgIFRoaW5nLkVuY2xvc2VkUmVsYXRpb24udW5zZXRSaWdodCh0aGluZyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGluZy5yZW1vdmVGcm9tUm9vbSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBUaGluZy5DYXJyeVJlbGF0aW9uLnNldFJlbGF0aW9uKGFjdG9yLCBhY3Rpb24uZ2V0Tm91bigwKSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoYWN0b3IgPT0gV29ybGRTdGF0ZS5wbGF5ZXIpIHtcclxuICAgICAgICAgICAgICAgIGFjdGlvbi5zYXkuYWRkKG5ldyBTYXlCb2xkKCg8VGhpbmc+IGFjdGlvbi5nZXROb3VuKDApKS5nZXRQcmludGVkTmFtZSgpICsgXCI6IFwiKSwgXCJUYWtlbi5cIik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb24uc2F5LmFkZChuZXcgU2F5VGhlKCksIGFjdG9yLCBcIiB0YWtlcyBcIiwgbmV3IFNheVRoZSh1bmRlZmluZWQsIHRydWUpLCAoPFRoaW5nPiBhY3Rpb24uZ2V0Tm91bigwKSksIFwiLlwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcblxyXG5BY3Rpb25UYWtlLmNoZWNrLmFkZFJ1bGUoXHJcbiAgICBuZXcgUnVsZSh7XHJcbiAgICAgICAgbmFtZSA6IFwiQ2hlY2sgVGFraW5nIC0gV2hvIGhhcyBpdCwgcmVhbGx5P1wiLFxyXG4gICAgICAgIHByaW9yaXR5IDogUnVsZS5QUklPUklUWV9ISUdIRVNULFxyXG4gICAgICAgIGNvZGUgOiAocnVsZWJvb2sgOiBSdWxlYm9va1J1bm5lcjxBY3Rpb25UYWtlPikgPT4ge1xyXG4gICAgICAgICAgICBsZXQgYWN0aW9uID0gPEFjdGlvbkdvPiBydWxlYm9vay5ub3VuO1xyXG4gICAgICAgICAgICBsZXQgYWN0b3IgPSBhY3Rpb24uYWN0b3I7XHJcbiAgICAgICAgICAgIGxldCB0aGluZyA9ICg8VGhpbmc+YWN0aW9uLmdldE5vdW4oMCkpO1xyXG4gICAgICAgICAgICBsZXQgb3duZXIgPSA8VGhpbmc+IHRoaW5nLmdldEVuY2xvc2VkT25lKCk7XHJcblxyXG4gICAgICAgICAgICBpZiAob3duZXIgPT0gYWN0b3Ipe1xyXG4gICAgICAgICAgICAgICAgaWYgKG93bmVyID09IFdvcmxkU3RhdGUucGxheWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnNheS5hZGQoXCJZb3UgYWxyZWFkeSBoYXZlIGl0LlwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pXHJcbik7XHJcblxyXG5BY3Rpb25UYWtlLmNoZWNrLmFkZFJ1bGUoXHJcbiAgICBuZXcgUnVsZSh7XHJcbiAgICAgICAgbmFtZSA6IFwiQ2hlY2sgVGFraW5nIC0gRG9udXQgc3RlYWxcIixcclxuICAgICAgICBjb2RlIDogKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8QWN0aW9uVGFrZT4pID0+IHtcclxuICAgICAgICAgICAgbGV0IGFjdGlvbiA9IDxBY3Rpb25Hbz4gcnVsZWJvb2subm91bjtcclxuICAgICAgICAgICAgbGV0IGFjdG9yID0gYWN0aW9uLmFjdG9yO1xyXG4gICAgICAgICAgICBsZXQgdGhpbmcgPSAoPFRoaW5nPmFjdGlvbi5nZXROb3VuKDApKTtcclxuICAgICAgICAgICAgbGV0IG93bmVyID0gPFRoaW5nPiB0aGluZy5nZXRFbmNsb3NlZE9uZSgpO1xyXG5cclxuICAgICAgICAgICAgaWYgKG93bmVyICE9IHVuZGVmaW5lZCAmJiBvd25lci5hbmltYXRlZCl7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWN0b3IgPT0gV29ybGRTdGF0ZS5wbGF5ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBhY3Rpb24uc2F5LmFkZChvd25lci5nZXRQcmludGVkTmFtZSgpICsgXCIgd291bGRuJ3QgbGlrZSB0aGF0LlwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pXHJcbik7XHJcblxyXG5BY3Rpb25UYWtlLmNoZWNrLmFkZFJ1bGUoXHJcbiAgICBuZXcgUnVsZSh7XHJcbiAgICAgICAgbmFtZSA6IFwiQ2hlY2sgVGFraW5nIC0gQ2FuJ3QgdGFrZSBmaXhlZCBpbiBwbGFjZVwiLFxyXG4gICAgICAgIGNvZGUgOiAocnVsZWJvb2sgOiBSdWxlYm9va1J1bm5lcjxBY3Rpb25UYWtlPikgPT4ge1xyXG4gICAgICAgICAgICBsZXQgYWN0aW9uID0gPEFjdGlvbkdvPiBydWxlYm9vay5ub3VuO1xyXG4gICAgICAgICAgICBsZXQgYWN0b3IgPSBhY3Rpb24uYWN0b3I7XHJcbiAgICAgICAgICAgIGxldCB0aGluZyA9ICg8VGhpbmc+YWN0aW9uLmdldE5vdW4oMCkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaW5nLmZpeGVkSW5QbGFjZSl7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWN0b3IgPT0gV29ybGRTdGF0ZS5wbGF5ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBhY3Rpb24uc2F5LmFkZChcIllvdSBjYW4ndCB0YWtlIHRoYXQuXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSlcclxuKTtcclxuXHJcbkFjdGlvblRha2UuY2FycnkuYWRkUnVsZShcclxuICAgIEFjdGlvblRha2UuZGVmYXVsdENhcnJ5VGFraW5nUnVsZVxyXG4pO1xyXG5cclxuRWxlbWVudHMuSHlwZXJsaW5rSGFuZGxlci5IeXBlcmxpbmtpbmdSdWxlYm9vay5hZGRSdWxlKG5ldyBSdWxlKFxyXG4gICAge1xyXG4gICAgICAgIG5hbWUgOiBcIkh5cGVybGluayAtIFRha2VcIixcclxuICAgICAgICBmaXJzdFByaW9yaXR5IDogUnVsZS5QUklPUklUWV9ISUdIRVNULFxyXG4gICAgICAgIGNvZGUgOiAocnVsZWJvb2sgOiBSdWxlYm9va1J1bm5lcjxUaGluZz4pID0+IHtcclxuICAgICAgICAgICAgbGV0IHRoaW5nID0gPFRoaW5nPiBydWxlYm9vay5ub3VuO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGluZy5hbmltYXRlZCAmJiAhdGhpbmcuZml4ZWRJblBsYWNlICYmIHRoaW5nLmdldFJvb20oKSA9PSBXb3JsZFN0YXRlLnBsYXllci5nZXRSb29tKCkgJiYgdGhpbmcuZ2V0RW5jbG9zZWRPbmUoKSBpbnN0YW5jZW9mIFJvb20pIHtcclxuICAgICAgICAgICAgICAgIEVsZW1lbnRzLkh5cGVybGlua0hhbmRsZXIuYWRkQXZhaWxhYmxlQWN0aW9uKFwiVGFrZVwiLCBuZXcgQWN0aW9uVGFrZShXb3JsZFN0YXRlLnBsYXllciwgdGhpbmcpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuKSk7IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL0FjdGlvbi50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9SdWxlLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1J1bGVib29rLnRzXCIgLz5cclxuXHJcbmNsYXNzIEFjdGlvbkdvIGV4dGVuZHMgQWN0aW9uIHtcclxuICAgIHB1YmxpYyBzdGF0aWMgY2hlY2sgPSBuZXcgUnVsZWJvb2s8QWN0aW9uR28+KFwiQ2hlY2sgR29pbmdcIik7XHJcbiAgICBwdWJsaWMgc3RhdGljIGNhcnJ5ID0gbmV3IFJ1bGVib29rPEFjdGlvbkdvPihcIkNhcnJ5IG91dCBHb2luZ1wiKTtcclxuXHJcbiAgICBwdWJsaWMgcm9vbUdvbmVGcm9tIDogUm9vbTtcclxuICAgIHB1YmxpYyByb29tR29uZVRvIDogUm9vbTtcclxuICAgIHB1YmxpYyBvcmlnaW5hbFRhcmdldCA6IFJvb20gfCBudW1iZXI7XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChhY3RvciA6IFRoaW5nLCAuLi5ub3VucyA6IEFycmF5PGFueT4pIHtcclxuICAgICAgICBzdXBlcihhY3RvciwgLi4ubm91bnMpO1xyXG4gICAgICAgIHRoaXMub3JpZ2luYWxUYXJnZXQgPSBub3Vuc1swXTtcclxuICAgICAgICB0aGlzLnJlcXVpcmVzTm91biA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVxdWlyZXNWaXNpYmlsaXR5ID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOZWVkcyB0byByZXR1cm4gYSBzdHJpbmcgZXhwbGFpbmluZyB3aGF0IHRoZSBwbGF5ZXIgd2lsbCBkbyBpZiBoZSBkb2VzIHRoaXMgYWN0aW9uLlxyXG4gICAgICogRm9yIGluc3RhbmNlLCBBY3Rpb25UYWtpbmcgc2hvdWxkIHJldHVybiBzb21ldGhpbmcgbGlrZSByZXR1cm4gXCJ0YWtlIFwiICsgdGhpcy5ub3Vuc1swXS5nZXROYW1lKCksXHJcbiAgICAgKiAgIHdoaWNoIHdvdWxkIHJlYWQgYXMgXCJ0YWtlIHRoaW5nXCIuXHJcbiAgICAgKiAgIHJlbWVtYmVyIHRoYXQgdGhpbmdzIGltcGxlbWVudCBQUklOVEFCTEUgaW50ZXJmYWNlLCBzbyB5b3UgY2FuIGdldCB0aGVpciBuYW1lcy5cclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRDb21tYW5kVGV4dCAoKSB7XHJcbiAgICAgICAgbGV0IG5hbWU7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yaWdpbmFsVGFyZ2V0ID09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgbmFtZSA9IERpcmVjdGlvbk5hbWVzW0RpcmVjdGlvblt0aGlzLm9yaWdpbmFsVGFyZ2V0XV07XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9yaWdpbmFsVGFyZ2V0IGluc3RhbmNlb2YgUm9vbSkge1xyXG4gICAgICAgICAgICBuYW1lID0gXCJ0byBcIiArICg8Um9vbT4gdGhpcy5vcmlnaW5hbFRhcmdldCkuZ2V0UHJpbnRlZE5hbWUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFwiZ28gXCIgKyBuYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgcnVsZUNoZWNrUmVzdG9yZU9yaWdpbmFsTm91biA9IEFjdGlvbkdvLmNoZWNrLmNyZWF0ZUFuZEFkZFJ1bGUoe1xyXG4gICAgICAgIGZpcnN0UHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0hJR0hFU1QsXHJcbiAgICAgICAgcHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0hJR0hFU1QsXHJcbiAgICAgICAgbmFtZSA6IFwiQ2hlY2sgR29pbmcgLSBSZXN0b3JlIG9yaWdpbmFsIG5vdW5cIixcclxuICAgICAgICBjb2RlIDogKHJ1bGVib29rKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBhY3Rpb24gPSBydWxlYm9vay5ub3VuO1xyXG4gICAgICAgICAgICBhY3Rpb24uc2V0Tm91bigwLCBhY3Rpb24ub3JpZ2luYWxUYXJnZXQpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgcnVsZUNoZWNrSXN0aGVyZWFjdG9yID0gQWN0aW9uR28uY2hlY2suY3JlYXRlQW5kQWRkUnVsZSh7XHJcbiAgICAgICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfSElHSEVTVCxcclxuICAgICAgICBwcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfSElHSEVTVCxcclxuICAgICAgICBuYW1lIDogXCJDaGVjayBHb2luZyAtIElzIHRoZXJlIGFuIGFjdG9yP1wiLFxyXG4gICAgICAgIGNvZGUgOiAocnVsZWJvb2spID0+IHtcclxuICAgICAgICAgICAgbGV0IGFjdGlvbiA9IDxBY3Rpb25Hbz4gcnVsZWJvb2subm91bjtcclxuICAgICAgICAgICAgaWYgKGFjdGlvbi5hY3RvciA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gUnVsZSBmYWlsc1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBydWxlQ2hlY2tDb252ZXJ0Um9vbVRvRGlyZWN0aW9uID0gQWN0aW9uR28uY2hlY2suY3JlYXRlQW5kQWRkUnVsZSh7XHJcbiAgICAgICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfSElHSEVTVCxcclxuICAgICAgICBwcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfSElHSCxcclxuICAgICAgICBuYW1lIDogXCJDaGFuZ2UgUm9vbSB0byBEaXJlY3Rpb25cIixcclxuICAgICAgICBjb2RlIDogKHJ1bGVib29rKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBhY3Rpb24gPSA8QWN0aW9uR28+IHJ1bGVib29rLm5vdW47XHJcblxyXG4gICAgICAgICAgICAvLyBTb21lb25lIGFza2VkIGZvciBhIHJvb20uLi5cclxuICAgICAgICAgICAgaWYgKGFjdGlvbi5nZXROb3VuKDApIGluc3RhbmNlb2YgUm9vbVJhbmRvbSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGFjdG9yID0gYWN0aW9uLmFjdG9yO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNSb29tID0gYWN0b3IuZ2V0Um9vbSgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNSb29tIGluc3RhbmNlb2YgUm9vbVJhbmRvbSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkUm9vbSA9IGFjdGlvbi5nZXROb3VuKDApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoY1Jvb20gPT0gZFJvb20pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdG9yLmlzUGxheWVyKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5zYXkuYWRkKFwiWW91IGFyZSBhbHJlYWR5IHRoZXJlIVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24uc3RvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29kZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdG9yID09IFdvcmxkU3RhdGUucGxheWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSAocm9vbTogUm9vbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdvcmxkU3RhdGUuaXNSb29tUmVtZW1iZXJlZChyb29tKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRpcmVjdGlvbiA9IGNSb29tLmdldEFTdGFyQmVzdERpcmVjdGlvblRvKGRSb29tLCBjb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0b3IuaXNQbGF5ZXIoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnNheS5hZGQoXCJZb3UgZG9uJ3QgcmVtZW1iZXIgaG93IHRvIGdldCB0aGVyZS5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5zZXROb3VuKDAsIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBydWxlQ2hlY2tJc3RoZXJlZGlyZWN0aW9uYW5kcm9vbSA9IEFjdGlvbkdvLmNoZWNrLmNyZWF0ZUFuZEFkZFJ1bGUoe1xyXG4gICAgICAgIG5hbWUgOiBcIkNoZWNrIEdvaW5nIC0gaXMgdGhlcmUgYSBkaXJlY3Rpb24/IERvZXMgaXQgbGVhZCBhbnl3aGVyZT9cIixcclxuICAgICAgICBjb2RlIDogKHJ1bGVib29rKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBhY3Rpb24gPSA8QWN0aW9uR28+IHJ1bGVib29rLm5vdW47XHJcbiAgICAgICAgICAgIGxldCBjUm9vbSA9IGFjdGlvbi5hY3Rvci5nZXRSb29tKCk7XHJcbiAgICAgICAgICAgIGlmIChjUm9vbSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gUnVsZSBmYWlscywgYWN0b3IgaXMgb3V0IG9mIHdvcmxkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGRpcmVjdGlvbiA9IGFjdGlvbi5nZXROb3VuKDApO1xyXG4gICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBSdWxlIGZhaWxzLCBubyBkaXJlY3Rpb25cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgbmV4dFJvb20gPSBjUm9vbS5jb25uZWN0aW9uc1tkaXJlY3Rpb25dO1xyXG4gICAgICAgICAgICBpZiAobmV4dFJvb20gPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFJ1bGUgZmFpbHMsIGNhbid0IGdvIGRpcmVjdGlvbiB0aGF0IGRvZXNuJ3QgaGF2ZSBhIHJvb21cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgYWN0aW9uLnJvb21Hb25lRnJvbSA9IGFjdGlvbi5hY3Rvci5nZXRSb29tKCk7XHJcbiAgICAgICAgICAgIGFjdGlvbi5yb29tR29uZVRvID0gbmV4dFJvb207XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBydWxlQ2FycnlNb3ZlID0gQWN0aW9uR28uY2FycnkuY3JlYXRlQW5kQWRkUnVsZSh7XHJcbiAgICAgICAgbmFtZSA6IFwiR29pbmcgLSBNb3ZlIEFjdG9yIHRvIE5leHQgUm9vbVwiLFxyXG4gICAgICAgIGNvZGUgOiAocnVsZWJvb2spID0+IHtcclxuICAgICAgICAgICAgbGV0IGFjdGlvbiA9IDxBY3Rpb25Hbz4gcnVsZWJvb2subm91bjtcclxuICAgICAgICAgICAgbGV0IHJvb21Hb25lRnJvbSA9IGFjdGlvbi5hY3Rvci5nZXRSb29tKCk7XHJcbiAgICAgICAgICAgIGxldCBkaXJlY3Rpb24gPSBhY3Rpb24uZ2V0Tm91bigwKTtcclxuICAgICAgICAgICAgbGV0IHJvb21Hb25lSW50byA9IHJvb21Hb25lRnJvbS5jb25uZWN0aW9uc1tkaXJlY3Rpb25dO1xyXG4gICAgICAgICAgICByb29tR29uZUludG8ucGxhY2UoYWN0aW9uLmFjdG9yKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBhY3RvciA9IGFjdGlvbi5hY3RvcjtcclxuICAgICAgICAgICAgaWYgKGFjdG9yID09IFdvcmxkU3RhdGUucGxheWVyKSB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb24uc2F5LmFkZChcIllvdSBnbyBcIiArIERpcmVjdGlvbk5hbWVzW0RpcmVjdGlvbltkaXJlY3Rpb25dXS50b0xvd2VyQ2FzZSgpICsgXCIuXCIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJvb21Hb25lRnJvbSA9PSBXb3JsZFN0YXRlLnBsYXllci5nZXRSb29tKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBhY3Rpb24uc2F5LmFkZChuZXcgU2F5VGhlKCksIGFjdG9yLCBcIiBnb2VzIFwiICsgRGlyZWN0aW9uTmFtZXNbRGlyZWN0aW9uW2RpcmVjdGlvbl1dLnRvTG93ZXJDYXNlKCkgKyBcIi5cIik7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBvcHBvc2l0ZU5hbWUgPSBEaXJlY3Rpb25OYW1lc1tcclxuICAgICAgICAgICAgICAgICAgICAgICAgT3Bwb3NpdGVEaXJlY3Rpb25bZGlyZWN0aW9uXVxyXG4gICAgICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnNheS5hZGQobmV3IFNheVRoZSgpLCBhY3RvciwgXCIgYXJyaXZlcyBmcm9tIHRoZSBcIiArIG9wcG9zaXRlTmFtZS50b0xvd2VyQ2FzZSgpICsgXCIuXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBydWxlQ2FycnlSZW1lbWJlclJvb21zID0gQWN0aW9uR28uY2FycnkuY3JlYXRlQW5kQWRkUnVsZSh7XHJcbiAgICAgICAgbmFtZSA6IFwiR29pbmcgLSBSZW1lbWJlciB0aGUgaW52b2x2ZWQgcm9vbXNcIixcclxuICAgICAgICBjb2RlIDogKHJ1bGVib29rKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBhY3Rpb24gPSA8QWN0aW9uR28+IHJ1bGVib29rLm5vdW47XHJcbiAgICAgICAgICAgIGxldCBhY3RvciA9IGFjdGlvbi5hY3RvcjtcclxuICAgICAgICAgICAgbGV0IHJvb21Hb25lSW50byA9IGFjdGlvbi5hY3Rvci5nZXRSb29tKCk7XHJcbiAgICAgICAgICAgIGxldCBkaXJlY3Rpb24gPSBhY3Rpb24uZ2V0Tm91bigwKTtcclxuICAgICAgICAgICAgbGV0IHJvb21Hb25lRnJvbSA9IHJvb21Hb25lSW50by5jb25uZWN0aW9uc1tPcHBvc2l0ZURpcmVjdGlvbltEaXJlY3Rpb25bZGlyZWN0aW9uXV1dO1xyXG5cclxuICAgICAgICAgICAgaWYgKGFjdG9yLmlzUGxheWVyKCkpIHtcclxuICAgICAgICAgICAgICAgIFdvcmxkU3RhdGUucmVtZW1iZXJSb29tKHJvb21Hb25lRnJvbSwgcm9vbUdvbmVJbnRvKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL0VsZW1lbnRzLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL1dvcmxkL0NsYXNzZXMvQWN0aW9uL0FjdGlvbkV4YW1pbmUudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vV29ybGQvQ2xhc3Nlcy9BY3Rpb24vQWN0aW9uR28udHNcIiAvPlxyXG5tb2R1bGUgRWxlbWVudHMuUm9vbUhhbmRsZXIge1xyXG4gICAgZXhwb3J0IHZhciBjdXJyZW50Um9vbVRhYiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY3VycmVudFJvb21UYWJcIik7XHJcbiAgICBleHBvcnQgdmFyIGN1cnJlbnRSb29tRGVzY3JpcHRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJvb21EZXNjcmlwdGlvblwiKTtcclxuICAgIGV4cG9ydCB2YXIgY3VycmVudFJvb21FeGl0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicm9vbUV4aXRzXCIpO1xyXG5cclxuICAgIGV4cG9ydCB2YXIgY3VycmVudFJvb21OYW1lIDogVGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXCIpO1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyb29tTmFtZVwiKS5hcHBlbmRDaGlsZChjdXJyZW50Um9vbU5hbWUpO1xyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBsaW5rT2JqZWN0cyAoKSB7XHJcbiAgICAgICAgbGV0IG9ianMgPSBjdXJyZW50Um9vbVRhYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicm9vbU9iamVjdFwiKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmpzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBsaW5rS2V5Q29kZSA9IENvbnRyb2xzLktleUhhbmRsZXIuZ2V0Rmlyc3RLZXlDb2RlKCk7XHJcbiAgICAgICAgICAgIENvbnRyb2xzLktleUhhbmRsZXIuYXBwbHlDb2RlKDxIVE1MRWxlbWVudD4gb2Jqc1tpXSwgbGlua0tleUNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZW1wdHlSb29tICgpIHtcclxuICAgICAgICB3aGlsZSAoY3VycmVudFJvb21EZXNjcmlwdGlvbi5maXJzdENoaWxkKSB7XHJcbiAgICAgICAgICAgIGN1cnJlbnRSb29tRGVzY3JpcHRpb24ucmVtb3ZlQ2hpbGQoY3VycmVudFJvb21EZXNjcmlwdGlvbi5maXJzdENoaWxkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHdoaWxlIChjdXJyZW50Um9vbUV4aXRzLmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICAgICAgY3VycmVudFJvb21FeGl0cy5yZW1vdmVDaGlsZChjdXJyZW50Um9vbUV4aXRzLmZpcnN0Q2hpbGQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY3VycmVudFJvb21OYW1lLm5vZGVWYWx1ZSA9IFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVJvb20gKCkge1xyXG4gICAgICAgIGVtcHR5Um9vbSgpO1xyXG5cclxuICAgICAgICBsZXQgcm9vbSA9IFdvcmxkU3RhdGUucGxheWVyLmdldFJvb20oKTtcclxuXHJcbiAgICAgICAgaWYgKHJvb20gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGN1cnJlbnRSb29tTmFtZS5ub2RlVmFsdWUgPSByb29tLmdldFByaW50ZWROYW1lKCk7XHJcblxyXG4gICAgICAgICAgICBsZXQgZGVzY3JpcHRpb24gPSByb29tLmRlc2NyaXB0aW9uLmdldEhUTUwoXCJwXCIsIFtcInJvb21EZXNjcmlwdGlvblwiXSk7XHJcbiAgICAgICAgICAgIGF3YWl0IGRlc2NyaXB0aW9uLnRoZW4odmFsdWUgPT4ge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIHAgPSB2YWx1ZVtpXTsgcCAhPSB1bmRlZmluZWQ7IHAgPSB2YWx1ZVsrK2ldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFJvb21EZXNjcmlwdGlvbi5hcHBlbmRDaGlsZChwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBsZXQgdGhpbmdzID0gcm9vbS5nZXRDb250YWluZWRBbmRWaXNpYmxlKCk7XHJcbiAgICAgICAgICAgIGlmICh0aGluZ3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRoaW5nTGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJwXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpbmdMaXN0LmNsYXNzTGlzdC5hZGQoXCJyb29tRGVzY3JpcHRpb25cIik7XHJcblxyXG4gICAgICAgICAgICAgICAgYXdhaXQgUHJpbnRpbmdWaXNpYmxlVGhpbmdzUnVsZWJvb2suZXhlY3V0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgbm91biA6IDxWaXNpYmxlVGhpbmdzT3B0aW9ucz4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGluZ3MgOiB0aGluZ3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lciA6IHRoaW5nTGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGN1cnJlbnRSb29tRGVzY3JpcHRpb24uYXBwZW5kQ2hpbGQodGhpbmdMaXN0KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwLCB2YWx1ZSA9IHJvb20uY29ubmVjdGlvbnNbaW5kZXhdOyBpbmRleCA8IHJvb20uY29ubmVjdGlvbnMubGVuZ3RoOyB2YWx1ZSA9IHJvb20uY29ubmVjdGlvbnNbKytpbmRleF0pIHtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJwXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHAuY2xhc3NMaXN0LmFkZChcInJvb21FeGl0XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxpbmsuY2xhc3NMaXN0LmFkZChcInJvb21EaXJlY3Rpb25cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShEaXJlY3Rpb25OYW1lc1tEaXJlY3Rpb25baW5kZXhdXSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBDb250cm9scy5MaW5rcy5tYWtlTGluayhsaW5rLCBuZXcgQWN0aW9uR28oV29ybGRTdGF0ZS5wbGF5ZXIsIGluZGV4KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgQ29udHJvbHMuS2V5SGFuZGxlci5hcHBseUNvZGUobGluaywgQ29udHJvbHMuS2V5SGFuZGxlci5nZXREaXJlY3Rpb25Db2RlQnlJbmRleChpbmRleCkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBwLmFwcGVuZENoaWxkKGxpbmspO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGlyZWN0aW9uUmVzdWx0ID0gXCI6IFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChXb3JsZFN0YXRlLmlzUm9vbVJlbWVtYmVyZWQodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvblJlc3VsdCArPSB2YWx1ZS5nZXRQcmludGVkTmFtZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvblJlc3VsdCArPSBcIkEgbmV3IHBsYWNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBwLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGRpcmVjdGlvblJlc3VsdCkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Um9vbUV4aXRzLmFwcGVuZENoaWxkKHApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgVmlzaWJsZVRoaW5nc09wdGlvbnMge1xyXG4gICAgICAgIGNvbnRhaW5lciA6IEhUTUxFbGVtZW50LFxyXG4gICAgICAgIHRoaW5ncyA6IEFycmF5PFRoaW5nPlxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTm91biA9IFZpc2libGVUaGluZ3NPcHRpb25zXHJcbiAgICAgKiBAdHlwZSB7UnVsZWJvb2t9XHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCB2YXIgUHJpbnRpbmdWaXNpYmxlVGhpbmdzUnVsZWJvb2sgPSBuZXcgUnVsZWJvb2soXCJQcmludGluZyB0aGUgbmFtZSBvZiB2aXNpYmxlIHRoaW5ncyBpbiBhIHJvb21cIik7XHJcblxyXG4gICAgZXhwb3J0IHZhciBQcmludEludHJvVG9WaXNpYmxlVGhpbmdzUnVsZSA9IG5ldyBSdWxlKHtcclxuICAgICAgICBuYW1lIDogXCJQcmludCBcXFwiWW91IGNhbiBzZWVcXFwiIHRleHRcIixcclxuICAgICAgICBmaXJzdFByaW9yaXR5IDogUnVsZS5QUklPUklUWV9ISUdILFxyXG4gICAgICAgIGNvZGUgOiAocnVsZWJvb2sgOiBSdWxlYm9va1J1bm5lcjxWaXNpYmxlVGhpbmdzT3B0aW9ucz4pID0+ICB7XHJcbiAgICAgICAgICAgIGxldCBub3VuID0gPFZpc2libGVUaGluZ3NPcHRpb25zPiBydWxlYm9vay5ub3VuO1xyXG4gICAgICAgICAgICBub3VuLmNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIllvdSBjYW4gc2VlIFwiKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBQcmludGluZ1Zpc2libGVUaGluZ3NSdWxlYm9vay5hZGRSdWxlKFByaW50SW50cm9Ub1Zpc2libGVUaGluZ3NSdWxlKTtcclxuXHJcbiAgICBleHBvcnQgdmFyIFByaW50VmlzaWJsZVRoaW5nc1J1bGUgPSBuZXcgUnVsZSh7XHJcbiAgICAgICAgbmFtZSA6IFwiUHJpbnQgYWxsIHZpc2libGUgdGhpbmdzXCIsXHJcbiAgICAgICAgY29kZSA6IGFzeW5jIChydWxlYm9vayA6IFJ1bGVib29rUnVubmVyPFZpc2libGVUaGluZ3NPcHRpb25zPikgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbm91biA9IDxWaXNpYmxlVGhpbmdzT3B0aW9ucz4gcnVsZWJvb2subm91bjtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub3VuLnRoaW5ncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbm91bi50aGluZ3NbaV07XHJcbiAgICAgICAgICAgICAgICBsZXQgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgICAgICAgICAgICAgbGluay5jbGFzc0xpc3QuYWRkKFwicm9vbU9iamVjdFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgc2F5IDogU2F5XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBUaGluZyAmJiB2YWx1ZS51bmlxdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBzYXkgPSBuZXcgU2F5KG5ldyBTYXlUaGUoZmFsc2UpLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHNheSA9IG5ldyBTYXkobmV3IFNheUFuKGZhbHNlKSwgdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYXdhaXQgc2F5LmdldFB1cmVFbGVtZW50cygpLnRoZW4odmFsdWUyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgZWxlbWVudCA9IHZhbHVlMltpXTsgZWxlbWVudCAhPSB1bmRlZmluZWQ7IGVsZW1lbnQgPSB2YWx1ZTJbKytpXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rLmFwcGVuZENoaWxkKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIENvbnRyb2xzLkxpbmtzLm1ha2VMaW5rKGxpbmssIG5ldyBBY3Rpb25FeGFtaW5lKFdvcmxkU3RhdGUucGxheWVyLCB2YWx1ZSkpO1xyXG4gICAgICAgICAgICAgICAgQ29udHJvbHMuS2V5SGFuZGxlci5hcHBseUNvZGUobGluaywgQ29udHJvbHMuS2V5SGFuZGxlci5nZXRGaXJzdEtleUNvZGUoKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgbm91bi5jb250YWluZXIuYXBwZW5kQ2hpbGQobGluayk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKChpICsgMSkgPCBub3VuLnRoaW5ncy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBub3VuLmNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIiwgXCIpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgUHJpbnRpbmdWaXNpYmxlVGhpbmdzUnVsZWJvb2suYWRkUnVsZShQcmludFZpc2libGVUaGluZ3NSdWxlKTtcclxuXHJcbiAgICBleHBvcnQgdmFyIFByaW50T3V0cm9Ub1Zpc2libGVUaGluZ3NSdWxlID0gbmV3IFJ1bGUoe1xyXG4gICAgICAgIG5hbWUgOiBcIlByaW50IFxcXCIuLi4gaGVyZVxcXCIgdGV4dFwiLFxyXG4gICAgICAgIGZpcnN0UHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0xPVyxcclxuICAgICAgICBjb2RlIDogKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8VmlzaWJsZVRoaW5nc09wdGlvbnM+KSA9PiAge1xyXG4gICAgICAgICAgICBsZXQgbm91biA9IDxWaXNpYmxlVGhpbmdzT3B0aW9ucz4gcnVsZWJvb2subm91bjtcclxuICAgICAgICAgICAgbm91bi5jb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCIgaGVyZS5cIikpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgUHJpbnRpbmdWaXNpYmxlVGhpbmdzUnVsZWJvb2suYWRkUnVsZShQcmludE91dHJvVG9WaXNpYmxlVGhpbmdzUnVsZSk7XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vVGhpbmcudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vQWN0aW9uL0FjdGlvblRha2UudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vRWxlbWVudHMvTW9kdWxlcy9Sb29tSGFuZGxlci50c1wiIC8+XHJcblxyXG5jbGFzcyBDb2luUG91Y2ggZXh0ZW5kcyBUaGluZyB7XHJcbiAgICBwcml2YXRlIGNvaW5zIDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBwdWJsaWMgYWRkQ29pbnMgKGNvaW5zIDogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5jb2lucyArPSBjb2lucztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVtb3ZlQ29pbnMgKGNvaW5zIDogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5jb2lucyAtPSBjb2lucztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0Q29pbnMgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvaW5zO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTaGlueSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29pbnMgPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAob3B0aW9ucyA6IFRoaW5nT3B0aW9ucykge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xyXG5cclxuICAgICAgICB0aGlzLmFkZEdldEFsdGVyYXRpb25zKChwdXJzZSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgY29pbnMgOiBwdXJzZS5nZXRDb2lucygpXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkU2V0QWx0ZXJhdGlvbnMoKHB1cnNlLCBjaGFuZ2VPYmopID0+IHtcclxuICAgICAgICAgICAgcHVyc2UuY29pbnMgPSAoY2hhbmdlT2JqLmNvaW5zKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGNhcnJ5T3V0VGFraW5nQ29pblBvdWNoZXMgPSBuZXcgUnVsZSh7XHJcbiAgICAgICAgbmFtZSA6IFwiQ2Fycnkgb3V0IHRha2luZyBjb2luIHBvdWNoZXNcIixcclxuICAgICAgICBmaXJzdFByaW9yaXR5IDogQWN0aW9uVGFrZS5kZWZhdWx0Q2FycnlUYWtpbmdSdWxlLmZpcnN0UHJpb3JpdHksXHJcbiAgICAgICAgcHJpb3JpdHkgOiBBY3Rpb25UYWtlLmRlZmF1bHRDYXJyeVRha2luZ1J1bGUucHJpb3JpdHkgKyAxLFxyXG4gICAgICAgIGNvZGUgOiBhc3luYyAocnVsZWJvb2sgOiBSdWxlYm9va1J1bm5lcjxBY3Rpb25UYWtlPikgPT4ge1xyXG4gICAgICAgICAgICBsZXQgYWN0aW9uID0gPEFjdGlvblRha2U+IHJ1bGVib29rLm5vdW47XHJcbiAgICAgICAgICAgIGxldCBhY3RvciA9IGFjdGlvbi5hY3RvcjtcclxuICAgICAgICAgICAgbGV0IHRoaW5nID0gKDxDb2luUG91Y2g+YWN0aW9uLmdldE5vdW4oMCkpO1xyXG4gICAgICAgICAgICBsZXQgYWN0b3JQb3VjaGVzID0gVGhpbmcuQ2FycnlSZWxhdGlvbi5nZXRSaWdodFR5cGUoYWN0b3IsIENvaW5Qb3VjaCk7XHJcblxyXG4gICAgICAgICAgICBpZiAoYWN0b3JQb3VjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGxldCB0aGluZ0NvaW5zID0gdGhpbmcuZ2V0Q29pbnMoKTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGluZ0NvaW5zID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJ1bGVib29rLnNraXBSdWxlKEFjdGlvblRha2UuZGVmYXVsdENhcnJ5VGFraW5nUnVsZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICg8Q29pblBvdWNoPiBhY3RvclBvdWNoZXNbMF0pLmFkZENvaW5zKHRoaW5nQ29pbnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaW5nLnJlbW92ZUNvaW5zKHRoaW5nLmdldENvaW5zKCkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0b3IgPT0gV29ybGRTdGF0ZS5wbGF5ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnNheS5hZGQoXCJZb3UgZW1wdHkgXCIsIG5ldyBTYXlUaGUoKSwgdGhpbmcsIFwiIGludG8geW91ciBcIiwgYWN0b3JQb3VjaGVzWzBdLCBcIi4gWW91ciBcIiwgYWN0b3JQb3VjaGVzWzBdLCBcIiBub3cgaGFzIFwiICsgYWN0b3JQb3VjaGVzWzBdLmdldENvaW5zKCkudG9TdHJpbmcoKSArIFwiIGNvaW5zLlwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24uc2F5LmFkZChuZXcgU2F5VGhlKCksIGFjdG9yLCBcIiBlbXB0aWVzIFwiLCBuZXcgU2F5VGhlKCksIHRoaW5nLCBcIiBpbnRvIFwiLCBTYXkuaGlzSGVyc0l0cyhhY3RvciksIGFjdG9yUG91Y2hlc1swXSwgXCIuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZ2l2ZSB0aGVtIHRoZSBvbCcgc3dpdGNoYXJvb1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBteUNvaW5zID0gYWN0b3JQb3VjaGVzWzBdLmdldENvaW5zKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0b3JQb3VjaGVzWzBdLnJlbW92ZUNvaW5zKG15Q29pbnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaW5nLmFkZENvaW5zKG15Q29pbnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3RvciA9PSBXb3JsZFN0YXRlLnBsYXllcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24uc2F5LmFkZChcIllvdSBlbXB0eSB5b3VyIFwiLCBhY3RvclBvdWNoZXNbMF0sIFwiIGludG8gXCIsIG5ldyBTYXlUaGUoKSwgdGhpbmcsIFwiLlwiLCBTYXkuUEFSQUdSQVBIX0JSRUFLKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRyb3AgPSBuZXcgQWN0aW9uRHJvcChhY3RvciwgYWN0b3JQb3VjaGVzWzBdKTtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBkcm9wLmV4ZWN1dGUoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRoaW5nLkVuY2xvc2VkUmVsYXRpb24uZ2V0TGVmdChhY3RvclBvdWNoZXNbMF0pID09IGFjdG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3RvciA9PSBXb3JsZFN0YXRlLnBsYXllcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnNheS5hZGQoXCJZb3UgY2FuJ3QgZ2V0IHJpZCBvZiB5b3VyIFwiLCBhY3RvclBvdWNoZXNbMF0sIFwiIVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb25kaXRpb25zIDogKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8QWN0aW9uVGFrZT4pID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuICgoPEFjdGlvblRha2U+IHJ1bGVib29rLm5vdW4pLmdldE5vdW4oMCkgaW5zdGFuY2VvZiBDb2luUG91Y2gpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcblxyXG5BY3Rpb25UYWtlLmNhcnJ5LmFkZFJ1bGUoQ29pblBvdWNoLmNhcnJ5T3V0VGFraW5nQ29pblBvdWNoZXMpO1xyXG5cclxuU2F5LmFmdGVyUHJpbnRpbmcuYWRkUnVsZShuZXcgUnVsZShcclxuICAgIHtcclxuICAgICAgICBuYW1lIDogXCJJbmNsdWRlIGNvbnRlbnRzIG9mIENvaW4gUG91Y2ggd2hpbGUgUHJpbnRpbmcgVmlzaWJsZSBUaGluZ3MgaW4gYSBSb29tXCIsXHJcbiAgICAgICAgY29kZSA6IChydWxlYm9vayA6IFJ1bGVib29rUnVubmVyPFNheT4pID0+IHtcclxuICAgICAgICAgICAgbGV0IHNheSA9IDxTYXk+IHJ1bGVib29rLm5vdW47XHJcbiAgICAgICAgICAgIGxldCBwb3VjaCA9IDxDb2luUG91Y2g+IHNheS5jdXJyZW50Tm91bjtcclxuICAgICAgICAgICAgc2F5LmN1cnJlbnROb3VuRWxlbWVudHMucHVzaChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIiB3aXRoIFwiICsgcG91Y2guZ2V0Q29pbnMoKS50b1N0cmluZygpICsgXCIgY29pbnNcIikpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29uZGl0aW9ucyA6IChydWxlYm9vayA6IFJ1bGVib29rUnVubmVyPFNheT4pID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIEVsZW1lbnRzLlJvb21IYW5kbGVyLlByaW50aW5nVmlzaWJsZVRoaW5nc1J1bGVib29rLmlzUnVubmluZygpXHJcbiAgICAgICAgICAgICAgICAmJiAoPFNheT4gcnVsZWJvb2subm91bikuY3VycmVudE5vdW4gaW5zdGFuY2VvZiBDb2luUG91Y2hcclxuICAgICAgICAgICAgICAgICYmICg8Q29pblBvdWNoPiAoPFNheT4gcnVsZWJvb2subm91bikuY3VycmVudE5vdW4pLmdldENvaW5zKCkgPiAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuKSk7XHJcblxyXG5BY3Rpb25FeGFtaW5lLmNhcnJ5LmFkZFJ1bGUobmV3IFJ1bGUoe1xyXG4gICAgbmFtZSA6IFwiUHJpbnQgZGVzY3JpcHRpb24gb2YgY29pbnMgaW4gQ29pbiBQb3VjaFwiLFxyXG4gICAgZmlyc3RQcmlvcml0eSA6IEFjdGlvbkV4YW1pbmUuUHJpbnREZXNjcmlwdGlvbk9mRXhhbWluZWRUaGluZ1J1bGUuZmlyc3RQcmlvcml0eSxcclxuICAgIHByaW9yaXR5IDogQWN0aW9uRXhhbWluZS5QcmludERlc2NyaXB0aW9uT2ZFeGFtaW5lZFRoaW5nUnVsZS5wcmlvcml0eSAtIDEsXHJcbiAgICBjb2RlIDogKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8QWN0aW9uRXhhbWluZT4pID0+IHtcclxuICAgICAgICBsZXQgYWN0aW9uID0gPEFjdGlvbkV4YW1pbmU+IHJ1bGVib29rLm5vdW47XHJcbiAgICAgICAgbGV0IHRoaW5nID0gPENvaW5Qb3VjaD4gYWN0aW9uLmdldE5vdW4oMCk7XHJcbiAgICAgICAgaWYgKHRoaW5nLmdldENvaW5zKCkgPiAwKSB7XHJcbiAgICAgICAgICAgIGFjdGlvbi5zYXkuYWRkKFwiIFRoZXJlIGFyZSBcIiArIHRoaW5nLmdldENvaW5zKCkudG9TdHJpbmcoKSArIFwiIGNvaW5zIGluIGl0LlwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBhY3Rpb24uc2F5LmFkZChcIiBUaGVyZSBhcmUgbm8gY29pbnMgaW4gaXQuXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjb25kaXRpb25zIDogKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8QWN0aW9uRXhhbWluZT4pID0+IHtcclxuICAgICAgICByZXR1cm4gKCg8QWN0aW9uRXhhbWluZT4gcnVsZWJvb2subm91bikuZ2V0Tm91bigwKSBpbnN0YW5jZW9mIENvaW5Qb3VjaCk7XHJcbiAgICB9XHJcbn0pKTsiLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vRWxlbWVudHMudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vV29ybGQvQ2xhc3Nlcy9SdWxlYm9vay50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9Xb3JsZC9DbGFzc2VzL1J1bGUudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vV29ybGQvQ2xhc3Nlcy9BY3Rpb24vQWN0aW9uRXhhbWluZS50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9Xb3JsZC9DbGFzc2VzL1RoaW5ncy9Db2luUG91Y2gudHNcIiAvPlxyXG5tb2R1bGUgRWxlbWVudHMuSW52ZW50b3J5SGFuZGxlciB7XHJcbiAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJpbnZlbnRvcnlUYXJnZXRcIik7XHJcblxyXG4gICAgZnVuY3Rpb24gZW1wdHkgKCkge1xyXG4gICAgICAgIHdoaWxlIChjb250YWluZXIuZmlyc3RDaGlsZCkge1xyXG4gICAgICAgICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmZpcnN0Q2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBwcmludEhlYWRlciAoaGVhZGVyIDogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwicFwiKTtcclxuICAgICAgICBwLmNsYXNzTGlzdC5hZGQoXCJpbnZlbnRvcnlIZWFkZXJcIik7XHJcbiAgICAgICAgcC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShoZWFkZXIgKyBcIjpcIikpO1xyXG4gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChwKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgY3VycmVudFJvdyA6IEhUTUxFbGVtZW50O1xyXG5cclxuICAgIGV4cG9ydCBsZXQgTGlua2luZ1RoaW5nID0gbmV3IFJ1bGVib29rPFRoaW5nPihcIkludmVudG9yeSAtIExpbmtzIGZvciBhIFRoaW5nXCIpO1xyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBwcmludFRoaW5nTGluayAoc2hvcnRjdXQgOiBzdHJpbmcsIGFjdGlvbiA6IEFjdGlvbikge1xyXG4gICAgICAgIGxldCBuYW1lTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgbmFtZUxpbmsuY2xhc3NMaXN0LmFkZChcImludmVudG9yeUxpbmtcIik7XHJcbiAgICAgICAgbmFtZUxpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc2hvcnRjdXQpKTtcclxuICAgICAgICBjdXJyZW50Um93LmFwcGVuZENoaWxkKG5hbWVMaW5rKTtcclxuXHJcbiAgICAgICAgQ29udHJvbHMuTGlua3MubWFrZUxpbmsobmFtZUxpbmssIGFjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJpbnRUaGluZyAodGhpbmcgOiBUaGluZykge1xyXG4gICAgICAgIGN1cnJlbnRSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgIGN1cnJlbnRSb3cuY2xhc3NMaXN0LmFkZChcImludmVudG9yeVJvd1wiKTtcclxuXHJcbiAgICAgICAgbGV0IG5hbWVMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICBuYW1lTGluay5jbGFzc0xpc3QuYWRkKFwiaW52ZW50b3J5TGlua1wiLCBcIm5hbWVcIik7XHJcbiAgICAgICAgbmFtZUxpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpbmcuZ2V0UHJpbnRlZE5hbWUoKSkpO1xyXG4gICAgICAgIGN1cnJlbnRSb3cuYXBwZW5kQ2hpbGQobmFtZUxpbmspO1xyXG5cclxuICAgICAgICBDb250cm9scy5MaW5rcy5tYWtlTGluayhuYW1lTGluaywgbmV3IEFjdGlvbkV4YW1pbmUoV29ybGRTdGF0ZS5wbGF5ZXIsIHRoaW5nKSk7XHJcblxyXG4gICAgICAgIGF3YWl0IExpbmtpbmdUaGluZy5leGVjdXRlKHtub3VuIDogdGhpbmd9KTtcclxuXHJcbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGN1cnJlbnRSb3cpO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiB0aGluZ1NvcnQgKGEgOiBUaGluZywgYiA6IFRoaW5nKSB7XHJcbiAgICAgICAgbGV0IG5hID0gYS5nZXRQcmludGVkTmFtZSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgbGV0IG5iID0gYi5nZXRQcmludGVkTmFtZSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKG5hIDwgbmIpIHJldHVybiAtMTtcclxuICAgICAgICBpZiAobmEgPiBuYikgcmV0dXJuIDE7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUludmVudG9yeSAoKSB7XHJcbiAgICAgICAgbGV0IHBsYXllciA9IFdvcmxkU3RhdGUucGxheWVyO1xyXG5cclxuICAgICAgICBlbXB0eSgpO1xyXG5cclxuICAgICAgICBsZXQgd2llbGRlZCA9IFRoaW5nLldpZWxkUmVsYXRpb24uZ2V0UmlnaHQocGxheWVyKS5zb3J0KHRoaW5nU29ydCk7XHJcbiAgICAgICAgbGV0IHdvcm4gPSBUaGluZy5XZWFyUmVsYXRpb24uZ2V0UmlnaHQocGxheWVyKS5zb3J0KHRoaW5nU29ydCk7XHJcbiAgICAgICAgbGV0IGNhcnJpZWQgPSBUaGluZy5DYXJyeVJlbGF0aW9uLmdldFJpZ2h0KHBsYXllcikuc29ydCh0aGluZ1NvcnQpO1xyXG5cclxuICAgICAgICBpZiAod2llbGRlZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHByaW50SGVhZGVyKFwiV2llbGRlZFwiKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aWVsZGVkLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBwcmludFRoaW5nKHdpZWxkZWRbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAod29ybi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHByaW50SGVhZGVyKFwiV29yblwiKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3b3JuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBwcmludFRoaW5nKHdvcm5baV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2FycmllZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHByaW50SGVhZGVyKFwiQ2FycmllZFwiKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYXJyaWVkLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBwcmludFRoaW5nKGNhcnJpZWRbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgcG91Y2ggPSA8QXJyYXk8Q29pblBvdWNoPj4gVGhpbmcuQ2FycnlSZWxhdGlvbi5nZXRSaWdodFR5cGUoV29ybGRTdGF0ZS5wbGF5ZXIsIENvaW5Qb3VjaCk7XHJcbiAgICAgICAgaWYgKHBvdWNoLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgbGV0IHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwicFwiKTtcclxuICAgICAgICAgICAgcC5jbGFzc0xpc3QuYWRkKFwiaW52ZW50b3J5R29sZFwiKTtcclxuICAgICAgICAgICAgbGV0IHMgOiBTYXk7XHJcbiAgICAgICAgICAgIGlmIChwb3VjaFswXS5nZXRDb2lucygpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgcyA9IG5ldyBTYXkoXCJUaGVyZSBhcmUgXCIgKyBwb3VjaFswXS5nZXRDb2lucygpLnRvU3RyaW5nKCkgKyBcIiBjb2lucyBpbiB5b3VyIFwiLCBwb3VjaFswXSwgXCIuXCIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcyA9IG5ldyBTYXkoXCJUaGVyZSBhcmUgbm8gY29pbnMgaW4geW91ciBcIiwgcG91Y2hbMF0sIFwiLlwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhd2FpdCBzLmdldFB1cmVFbGVtZW50cygpLnRoZW4oZWxlbWVudHMgPT4ge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBwLmFwcGVuZENoaWxkKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQocCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL0FjdGlvbi50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9SdWxlLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1J1bGVib29rLnRzXCIgLz5cclxuXHJcbmNsYXNzIEFjdGlvblJldHJhY2UgZXh0ZW5kcyBBY3Rpb24ge1xyXG4gICAgcHVibGljIHN0YXRpYyBjaGVjayA9IG5ldyBSdWxlYm9vazxBY3Rpb25SZXRyYWNlPihcIkNoZWNrIFJldHJhY2luZ1wiKTtcclxuICAgIHB1YmxpYyBzdGF0aWMgY2FycnkgPSBuZXcgUnVsZWJvb2s8QWN0aW9uUmV0cmFjZT4oXCJDYXJyeSBvdXQgUmV0cmFjaW5nXCIpO1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoYWN0b3IgOiBUaGluZywgLi4ubm91bnMgOiBBcnJheTxhbnk+KSB7XHJcbiAgICAgICAgc3VwZXIoYWN0b3IsIC4uLm5vdW5zKTtcclxuICAgICAgICB0aGlzLnJlcXVpcmVzTm91biA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVxdWlyZXNWaXNpYmlsaXR5ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZXF1aXJlc1R1cm4gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE5lZWRzIHRvIHJldHVybiBhIHN0cmluZyBleHBsYWluaW5nIHdoYXQgdGhlIHBsYXllciB3aWxsIGRvIGlmIGhlIGRvZXMgdGhpcyBhY3Rpb24uXHJcbiAgICAgKiBGb3IgaW5zdGFuY2UsIEFjdGlvblRha2luZyBzaG91bGQgcmV0dXJuIHNvbWV0aGluZyBsaWtlIHJldHVybiBcInRha2UgXCIgKyB0aGlzLm5vdW5zWzBdLmdldE5hbWUoKSxcclxuICAgICAqICAgd2hpY2ggd291bGQgcmVhZCBhcyBcInRha2UgdGhpbmdcIi5cclxuICAgICAqICAgcmVtZW1iZXIgdGhhdCB0aGluZ3MgaW1wbGVtZW50IFBSSU5UQUJMRSBpbnRlcmZhY2UsIHNvIHlvdSBjYW4gZ2V0IHRoZWlyIG5hbWVzLlxyXG4gICAgICogQHJldHVybnMge3N0cmluZ31cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldENvbW1hbmRUZXh0ICgpIHtcclxuICAgICAgICBsZXQgbmFtZTtcclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZ2V0Tm91bigwKSA9PSBcIm51bWJlclwiKSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSBEaXJlY3Rpb25OYW1lc1tEaXJlY3Rpb25bdGhpcy5nZXROb3VuKDApXV07XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldE5vdW4oMCkgaW5zdGFuY2VvZiBSb29tKSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSAoPFJvb20+IHRoaXMuZ2V0Tm91bigwKSkuZ2V0UHJpbnRlZE5hbWUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFwidGhpbmsgYWJvdXQgaG93IHRvIGdldCB0byBcIiArIG5hbWU7XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5BY3Rpb25SZXRyYWNlLmNoZWNrLmFkZFJ1bGUobmV3IFJ1bGUoe1xyXG4gICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfSElHSEVTVCxcclxuICAgIHByaW9yaXR5IDogUnVsZS5QUklPUklUWV9ISUdILFxyXG4gICAgbmFtZSA6IFwiQ2hhbmdlIFJvb20gdG8gRGlyZWN0aW9uXCIsXHJcbiAgICBjb2RlIDogKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8QWN0aW9uUmV0cmFjZT4pID0+IHtcclxuICAgICAgICBsZXQgYWN0aW9uID0gPEFjdGlvbkdvPiBydWxlYm9vay5ub3VuO1xyXG5cclxuICAgICAgICAvLyBTb21lb25lIGFza2VkIGZvciBhIHJvb20uLi5cclxuICAgICAgICBpZiAoYWN0aW9uLmdldE5vdW4oMCkgaW5zdGFuY2VvZiBSb29tKSB7XHJcbiAgICAgICAgICAgIGxldCBhY3RvciA9IGFjdGlvbi5hY3RvcjtcclxuICAgICAgICAgICAgbGV0IGNSb29tID0gYWN0b3IuZ2V0Um9vbSgpO1xyXG4gICAgICAgICAgICBpZiAoY1Jvb20gPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGRSb29tID0gYWN0aW9uLmdldE5vdW4oMCk7XHJcblxyXG4gICAgICAgICAgICBpZiAoY1Jvb20gPT0gZFJvb20pIHtcclxuICAgICAgICAgICAgICAgIGlmIChhY3Rvci5pc1BsYXllcigpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnNheS5hZGQoXCJZb3UgYXJlIGFscmVhZHkgdGhlcmUhXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYWN0aW9uLnN0b3AoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGNvZGU7XHJcblxyXG4gICAgICAgICAgICBpZiAoYWN0b3IgPT0gV29ybGRTdGF0ZS5wbGF5ZXIpIHtcclxuICAgICAgICAgICAgICAgIGNvZGUgPSAocm9vbSA6IFJvb20pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gV29ybGRTdGF0ZS5pc1Jvb21SZW1lbWJlcmVkKHJvb20pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgZGlyZWN0aW9uID0gY1Jvb20uYmVzdERpcmVjdGlvblRvKGRSb29tLCBjb2RlKTtcclxuICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhY3Rvci5pc1BsYXllcigpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnNheS5hZGQoXCJZb3UgZG9uJ3QgcmVtZW1iZXIgaG93IHRvIGdldCB0aGVyZS5cIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb24uc2V0Tm91bigwLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59KSk7XHJcblxyXG5BY3Rpb25SZXRyYWNlLmNhcnJ5LmFkZFJ1bGUobmV3IFJ1bGUoe1xyXG4gICAgbmFtZSA6IFwiUmV0cmFjaW5nIC0gRmluZCBEaXJlY3Rpb25cIixcclxuICAgIGNvZGUgOiAocnVsZWJvb2sgOiBSdWxlYm9va1J1bm5lcjxBY3Rpb25SZXRyYWNlPikgPT4ge1xyXG4gICAgICAgIGxldCBhY3Rpb24gPSA8QWN0aW9uUmV0cmFjZT4gcnVsZWJvb2subm91bjtcclxuXHJcbiAgICAgICAgYWN0aW9uLnNheS5hZGQoXCJUbyBnZXQgdGhlcmUsIHlvdSBzaG91bGQgZ28gXCIgKyBEaXJlY3Rpb25OYW1lc1tEaXJlY3Rpb25bYWN0aW9uLmdldE5vdW4oMCldXSArIFwiLlwiKTtcclxuICAgIH1cclxufSkpO1xyXG4iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vV29ybGQvQ2xhc3Nlcy9BY3Rpb24vQWN0aW9uUmV0cmFjZS50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9Xb3JsZC9DbGFzc2VzL0FjdGlvbi9BY3Rpb25Hby50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9Db250cm9scy9Nb2R1bGVzL0xpbmtzLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL0VsZW1lbnRzLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIkhvdmVySW5mby50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9DbGFzc2VzL1Jvb21Ob2RlLnRzXCIgLz5cclxubW9kdWxlIEVsZW1lbnRzLlJlbWVtYmVyZWRIYW5kbGVyIHtcclxuICAgIC8vdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVtZW1iZXJlZFJvb21zVGFyZ2V0XCIpO1xyXG4gICAgdmFyIG1hcFRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibWFwVGFyZ2V0XCIpO1xyXG4gICAgdmFyIGxhc3RNYXAgOiBSb29tUmFuZG9tTWFwO1xyXG4gICAgdmFyIGVsZW1lbnRzIDogeyBbeHkgOiBzdHJpbmddIDogUm9vbU5vZGV9O1xyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBlbXB0eSAoKSB7XHJcbiAgICAgICAgLy8gd2hpbGUgKHRhcmdldC5maXJzdENoaWxkKSB7XHJcbiAgICAgICAgLy8gICAgIHRhcmdldC5yZW1vdmVDaGlsZCh0YXJnZXQuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICBlbGVtZW50cyA9IHt9O1xyXG4gICAgICAgIGxhc3RNYXAgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgIHdoaWxlIChtYXBUYXJnZXQuZmlyc3RDaGlsZCkge1xyXG4gICAgICAgICAgICBtYXBUYXJnZXQucmVtb3ZlQ2hpbGQobWFwVGFyZ2V0LmZpcnN0Q2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlTWFwICgpIHtcclxuICAgICAgICBjb25zb2xlLmRlYnVnKFJ1bGVib29rLmdldEluZGVudGF0aW9uKCkgKyBcIltNQVBdIENyZWF0aW5nIE1hcFwiKTtcclxuXHJcbiAgICAgICAgbGV0IHJlZ2lvbnMgPSBSZWdpb24uSW5SZWxhdGlvbi5nZXRBbGxMZWZ0VHlwZShXb3JsZFN0YXRlLnBsYXllci5nZXRSb29tKCksIFJlZ2lvblJhbmRvbSk7XHJcbiAgICAgICAgbGV0IGJpZ2dlc3RSZWdpb24gPSA8UmVnaW9uUmFuZG9tPiByZWdpb25zW3JlZ2lvbnMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgaWYgKGJpZ2dlc3RSZWdpb24gPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGVtcHR5KCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChiaWdnZXN0UmVnaW9uLm1hcCAhPSBsYXN0TWFwKSB7XHJcbiAgICAgICAgICAgIGVtcHR5KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgYXdhaXQgdXBkYXRlT2xkTWFwKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBtYXAgPSBiaWdnZXN0UmVnaW9uLm1hcDtcclxuICAgICAgICBsYXN0TWFwID0gbWFwO1xyXG5cclxuICAgICAgICBtYXAudXBkYXRlQWxsTGltaXRzKCk7XHJcblxyXG4gICAgICAgIGZvciAobGV0IHkgPSBtYXAuaGlnaGVzdFk7IHkgPj0gbWFwLmxvd2VzdFk7IHktLSkge1xyXG4gICAgICAgICAgICBsZXQgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICAgICAgcm93LmNsYXNzTGlzdC5hZGQoXCJtYXBSb3dcIik7XHJcbiAgICAgICAgICAgIGZvciAobGV0IHggPSBtYXAubG93ZXN0WDsgeCA8PSBtYXAuaGlnaGVzdFg7IHgrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJvb20gPSBtYXAuZ2V0Um9vbSh4LCB5KTtcclxuICAgICAgICAgICAgICAgIGxldCByb29tTm9kZSA9IG5ldyBSb29tTm9kZShyb29tKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHJvb21Ob2RlLmNyZWF0ZVJvb21OYW1lRmxvYXRlcigpO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCByb29tRGl2ID0gcm9vbU5vZGUuZ2V0RWxlbWVudCgpO1xyXG4gICAgICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKHJvb21EaXYpO1xyXG5cclxuICAgICAgICAgICAgICAgIGVsZW1lbnRzW3gudG9TdHJpbmcoKSArIFwiO1wiICsgeS50b1N0cmluZygpXSA9IHJvb21Ob2RlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG1hcFRhcmdldC5hcHBlbmRDaGlsZChyb3cpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYXdhaXQgdXBkYXRlT2xkTWFwKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9sZE1hcCAoKSB7XHJcbiAgICAgICAgbGV0IG1hcCA9IGxhc3RNYXA7XHJcbiAgICAgICAgZm9yIChsZXQgeSA9IG1hcC5oaWdoZXN0WTsgeSA+PSBtYXAubG93ZXN0WTsgeS0tKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IHggPSBtYXAubG93ZXN0WDsgeCA8PSBtYXAuaGlnaGVzdFg7IHgrKykge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgZWxlbWVudHNbeC50b1N0cmluZygpICsgXCI7XCIgKyB5LnRvU3RyaW5nKCldLnVwZGF0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiLy8gLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL0VsZW1lbnRzLnRzXCIgLz5cclxuLy8gbW9kdWxlIEVsZW1lbnRzLlN0YXR1c0xpbmVIYW5kbGVyIHtcclxuLy8gICAgIHZhciBzdGF0dXNMaW5lRmxleCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3RhdHVzTGluZUZsZXhcIik7XHJcbi8vICAgICB2YXIgc3RhcnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXR1c0xpbmVTdGFydFwiKTtcclxuLy8gICAgIHZhciBlbmQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0YXR1c0xpbmVFbmRcIik7XHJcbi8vICAgICBlbmQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4vL1xyXG4vLyAgICAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpdmlkZXIgKCkge1xyXG4vLyAgICAgICAgIC8vIC5ub3Nocmlua0ZsZXguc3RhdHVzQ29sdW1uRGl2aWRlclxyXG4vLyAgICAgICAgIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4vLyAgICAgICAgIGRpdi5jbGFzc0xpc3QuYWRkKFwibm9zaHJpbmtGbGV4XCIsIFwic3RhdHVzQ29sdW1uRGl2aWRlclwiKTtcclxuLy8gICAgICAgICByZXR1cm4gZGl2O1xyXG4vLyAgICAgfVxyXG4vL1xyXG4vLyAgICAgZXhwb3J0IGZ1bmN0aW9uIHByaW50ICguLi5lbGVzIDogQXJyYXk8Tm9kZT4pIHtcclxuLy8gICAgICAgICBmb3IgKGxldCBlbGUgb2YgZWxlcykge1xyXG4vLyAgICAgICAgICAgICBzdGF0dXNMaW5lRmxleC5pbnNlcnRCZWZvcmUoZWxlLCBlbmQpO1xyXG4vLyAgICAgICAgIH1cclxuLy8gICAgIH1cclxuLy9cclxuLy8gICAgIGZ1bmN0aW9uIGVtcHR5ICgpIHtcclxuLy8gICAgICAgICB3aGlsZSAoc3RhcnQubmV4dFNpYmxpbmcgIT0gZW5kKSB7XHJcbi8vICAgICAgICAgICAgIHN0YXR1c0xpbmVGbGV4LnJlbW92ZUNoaWxkKHN0YXJ0Lm5leHRTaWJsaW5nKTtcclxuLy8gICAgICAgICB9XHJcbi8vICAgICB9XHJcbi8vXHJcbi8vICAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlU3RhdHVzTGluZSAoKSB7XHJcbi8vICAgICAgICAgZW1wdHkoKTtcclxuLy9cclxuLy8gICAgICAgICBsZXQgc2F5ID0gbmV3IFNheSgoPEh1bWFub2lkPiBXb3JsZFN0YXRlLnBsYXllcikuZ2V0U2hvcnRlc3REZXNjcmlwdGlvbigpKTtcclxuLy9cclxuLy8gICAgICAgICAoYXdhaXQgc2F5LmdldFB1cmVFbGVtZW50cygpKS5mb3JFYWNoKChlbGUpID0+IHtcclxuLy8gICAgICAgICAgICAgcHJpbnQoZWxlLCBjcmVhdGVEaXZpZGVyKCkpO1xyXG4vLyAgICAgICAgIH0pO1xyXG4vLyAgICAgfVxyXG4vLyB9IiwibW9kdWxlIERlYnVnIHtcclxuICAgIGV4cG9ydCBmdW5jdGlvbiBrbm93ZGV3YWUgKCkge1xyXG4gICAgICAgIGxldCBtYXAgPSBuZXcgTWFwTm90ZSh7XHJcbiAgICAgICAgICAgIG5hbWUgOiBcIkRlIFdhZVwiLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbiA6IFwiVGhpcyBtYXAgc2hvd3MgZGUgd2FlIGFsbCBkZSB3YWUgdG8gWmltYmFid2UuXCJcclxuICAgICAgICB9KTtcclxuICAgICAgICBtYXAuYWRkUm9vbSguLi5SZWdpb24uUmVnaW9uUm9vbS5nZXRBbnlSaWdodFR5cGUoUm9vbVJhbmRvbSkpO1xyXG4gICAgICAgIFdvcmxkU3RhdGUucGxheWVyLnNldENhcnJpZWQobWFwKTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gaHVydCAodGFyZ2V0IDogUGVyc29uIHwgQm9keXBhcnQsIGFtb3VudCA6IG51bWJlcikge1xyXG4gICAgICAgIGxldCBicCA6IEJvZHlwYXJ0O1xyXG4gICAgICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBQZXJzb24pIHtcclxuICAgICAgICAgICAgYnAgPSB0YXJnZXQuZ2V0UGFydChIdW1hbm9pZFRvcnNvKTtcclxuICAgICAgICAgICAgaWYgKGJwID09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0IGluc3RhbmNlb2YgQm9keXBhcnQpIHtcclxuICAgICAgICAgICAgYnAgPSB0YXJnZXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJwLmNoYW5nZVNvcmVuZXNzKGFtb3VudCk7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGdvVG8gKHN0ciA6IHN0cmluZykge1xyXG4gICAgICAgIC8vIGxldCB0aGluZyA9IFRoaW5nLmdldE9uZVRoaW5nKHN0cik7XHJcbiAgICAgICAgLy8gbGV0IHJvb20gOiBSb29tO1xyXG4gICAgICAgIC8vIGlmICh0aGluZyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAvLyAgICAgcm9vbSA9IHRoaW5nLmdldFJvb20oKTtcclxuICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgIC8vXHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlJ1bGVib29rLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlJ1bGUudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vRXZlcnlUdXJuLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL0Z1bmN0aW9ucy50c1wiIC8+XHJcblxyXG5pbnRlcmZhY2UgQUlPcHRpb25zIHtcclxuICAgIHdhbmRlcmVyPyA6IGJvb2xlYW4sXHJcbiAgICB3YW5kZXJzT24/IDogUmVnaW9uLFxyXG4gICAgcGlja3NTaGluaWVzPyA6IGJvb2xlYW5cclxufVxyXG5cclxuY2xhc3MgQUkge1xyXG4gICAgcHVibGljIHdhbmRlcmVyID0gdHJ1ZTtcclxuICAgIHB1YmxpYyB3YW5kZXJzT24gOiBSZWdpb247XHJcbiAgICBwdWJsaWMgd2FuZGVyQ2hhbmNlID0gNTA7XHJcbiAgICBwdWJsaWMgcGlja3NTaGluaWVzID0gdHJ1ZTtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKG9wdGlvbnMgOiBBSU9wdGlvbnMpIHtcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gb3B0aW9ucykge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBvcHRpb25zW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXhlY3V0aW5nIGFuIEFJIHJldHVybnMgYW4gQWN0aW9uLiBET0VTTidUIGV4ZWN1dGUgdGhlIGFjdGlvbiwganVzdCBmaW5kcyBpdCFcclxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPEFjdGlvbj59XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlIChhY3RvciA6IFRoaW5nKSA6IFByb21pc2U8QWN0aW9uPiB7XHJcbiAgICAgICAgbGV0IHByb21pc2UgOiBQcm9taXNlPEFjdGlvbj47XHJcbiAgICAgICAgLy8gVE9ETzogaWYgYWN0b3IuaXNJbkNvbWJhdCgpO1xyXG4gICAgICAgIGlmIChwcm9taXNlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBwcm9taXNlID0gQUkuY29tYmF0UnVsZXMuZXhlY3V0ZSh7XHJcbiAgICAgICAgICAgICAgICBub3VuIDogYWN0b3JcclxuICAgICAgICAgICAgfSwgLi4udGhpcy5leHRyYUNvbWJhdFJ1bGVzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBwcm9taXNlID0gQUkucnVsZXMuZXhlY3V0ZSh7XHJcbiAgICAgICAgICAgICAgICBub3VuIDogYWN0b3JcclxuICAgICAgICAgICAgfSwgLi4udGhpcy5leHRyYVJ1bGVzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCByZXN1bHQgOiBBY3Rpb24gPSBhd2FpdCBwcm9taXNlO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZGRSdWxlc0Jvb2sgKC4uLmJvb2tzIDogQXJyYXk8UnVsZWJvb2s8VGhpbmc+Pikge1xyXG4gICAgICAgIHRoaXMuZXh0cmFSdWxlcy5wdXNoKC4uLmJvb2tzKVxyXG4gICAgICAgIGFycmF5VW5pcXVlKHRoaXMuZXh0cmFSdWxlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZENvbWJhdFJ1bGVzQm9vayAoLi4uYm9va3MgOiBBcnJheTxSdWxlYm9vazxUaGluZz4+KSB7XHJcbiAgICAgICAgdGhpcy5leHRyYUNvbWJhdFJ1bGVzLnB1c2goLi4uYm9va3MpXHJcbiAgICAgICAgYXJyYXlVbmlxdWUodGhpcy5leHRyYUNvbWJhdFJ1bGVzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHJ1bGVzID0gbmV3IFJ1bGVib29rPFRoaW5nPihcIkRlZmF1bHQgQUkgUnVsZXNcIik7XHJcbiAgICBwdWJsaWMgZXh0cmFSdWxlcyA6IEFycmF5PFJ1bGVib29rPFRoaW5nPj4gPSBbXTtcclxuICAgIHB1YmxpYyBzdGF0aWMgY29tYmF0UnVsZXMgPSBuZXcgUnVsZWJvb2s8VGhpbmc+KFwiRGVmYXVsdCBBSSBDb21iYXQgUnVsZXNcIik7XHJcbiAgICBwdWJsaWMgZXh0cmFDb21iYXRSdWxlcyA6IEFycmF5PFJ1bGVib29rPFRoaW5nPj4gPSBbXTtcclxufVxyXG5cclxubW9kdWxlIEFJUnVsZXMge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGlzIG9yIGJlaGF2aW9yYWwgcnVsZXMgcmVnYXJkaW5nIHNvbWV0aGluZyB0aGF0IGlzIGhhcHBlbmluZyBSSUdIVCBOT1cuXHJcbiAgICAgKiBpLmUuIFJ1bGUgZm9yIHdoYXQgYSBtb25zdGVyIGRvZXMgd2hlbiB0aGUgcGxheWVyIGhhcyBqdXN0IGluc3VsdGVkIHRoZW0sIG9yIGZvciB3aGVuIHRoZSBwbGF5ZXIgdHJpZ2dlcnMgYW4gYWxhcm0sIGV0Yy5cclxuICAgICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCB2YXIgUFJJT1JJVFlfQUNUSU5HX09OX1NJVFVBVElPTiA9IDU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGlzIGZvciBiZWhhdmlvcmFsIHJ1bGVzIGFib3V0IHdoYXQgdGhlIE5QQyBTRUVTLlxyXG4gICAgICogaS5lLiBJcyB0aGVyZSBhIHNoaW55IG9uIHRoZSBncm91bmQgZm9yIG1lIHRvIHRha2U/IERvIEkgc2VlIHRoZSBwbGF5ZXIgYW5kIGlmIHNvIGhvdyBkbyBJIGZlZWwgYWJvdXQgaXQ/XHJcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAgICovXHJcbiAgICBleHBvcnQgdmFyIFBSSU9SSVRZX0FDVElOR19PTl9QTEFDRSA9IDM7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGlzIGZvciBydWxlcyBmb3Igd2hlbiB0aGUgTlBDIGhhcyBub3RoaW5nIGJldHRlciB0byBkby5cclxuICAgICAqIGkuZS4gU3RhbmRhcmQgZ3VhcmRpbmcgcm91dGVzLCBldGMuXHJcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAgICovXHJcbiAgICBleHBvcnQgdmFyIFBSSU9SSVRZX0FDVElOR19PTl9JRExFID0gMTtcclxufSIsImNsYXNzIFBlcnNvblN0YXQge1xyXG4gICAgcHVibGljIGlkIDogc3RyaW5nO1xyXG4gICAgcHJvdGVjdGVkIGRlc2NyaXB0aW9uIDogc3RyaW5nIHwgU2F5IHwgKCh2YWx1ZSA6IG51bWJlcikgPT4gc3RyaW5nIHwgU2F5KTtcclxuICAgIHB1YmxpYyBkZWZhdWx0VmFsdWUgOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIG1heFZhbHVlIDogbnVtYmVyID0gMTA7XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChpZCA6IHN0cmluZywgZGVzY3JpcHRpb24/IDogc3RyaW5nIHwgU2F5IHwgKCh2YWx1ZSA6IG51bWJlcikgPT4gc3RyaW5nIHwgU2F5KSkge1xyXG4gICAgICAgIHRoaXMuaWQgPSBpZDtcclxuICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24gPT0gdW5kZWZpbmVkID8gXCJOb3QgZGVmaW5lZFwiIDogZGVzY3JpcHRpb247XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldERlc2NyaXB0aW9uICh2YWx1ZSA6IG51bWJlcikgOiBTYXkgfCBzdHJpbmcgfCAoKHZhbHVlIDogbnVtYmVyKSA9PiAoc3RyaW5nIHwgU2F5KSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZXNjcmlwdGlvbiA9PSBcInN0cmluZ1wiIHx8IHRoaXMuZGVzY3JpcHRpb24gaW5zdGFuY2VvZiBTYXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRpb247XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRpb24odmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJQZXJzb25TdGF0LnRzXCIgLz5cclxuaW50ZXJmYWNlIEF0dHJpYnV0ZUJlYXJlciB7XHJcbiAgICBnZXRTdGF0IChhdHRyIDogQXR0cmlidXRlKSA6IG51bWJlcjtcclxuICAgIHNldFN0YXQgKGF0dHIgOiBBdHRyaWJ1dGUsIHZhbHVlIDogbnVtYmVyKSA6IHZvaWQ7XHJcbn1cclxuXHJcbmNsYXNzIEF0dHJpYnV0ZSBleHRlbmRzIFBlcnNvblN0YXQge1xyXG4gICAgcHVibGljIGRlZmF1bHRWYWx1ZSA6IG51bWJlciA9IDI7XHJcbiAgICBwdWJsaWMgbWF4VmFsdWUgOiBudW1iZXIgPSA1O1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoaWQgOiBzdHJpbmcsIGRlc2NyaXB0aW9uPyA6IHN0cmluZyB8IFNheSB8ICgodmFsdWUgOiBudW1iZXIpID0+IHN0cmluZyB8IFNheSksIGRlZlZhbHVlPyA6bnVtYmVyLCBtYXhWYWx1ZT86bnVtYmVyKSB7XHJcbiAgICAgICAgc3VwZXIoaWQsIGRlc2NyaXB0aW9uKTtcclxuICAgICAgICBpZiAoZGVmVmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gZGVmVmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobWF4VmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWF4VmFsdWUgPSBtYXhWYWx1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEF0dHJpYnV0ZS5BdHRyaWJ1dGVzW2lkXSA9IHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgQXR0cmlidXRlcyA6IHtbaWQgOiBzdHJpbmddIDogQXR0cmlidXRlfSA9IHt9O1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QXR0cmlidXRlcyAoKSB7XHJcbiAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gQXR0cmlidXRlLkF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgYXR0cmlidXRlcy5wdXNoKEF0dHJpYnV0ZS5BdHRyaWJ1dGVzW2tleV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYXR0cmlidXRlcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldEF0dHJpYnV0ZSAoaWQgOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gQXR0cmlidXRlLkF0dHJpYnV0ZXNbaWRdO1xyXG4gICAgfVxyXG59XHJcblxyXG5tb2R1bGUgQXR0cmlidXRlcyB7XHJcbiAgICBleHBvcnQgbGV0IFN0cmVuZ3RoID0gbmV3IEF0dHJpYnV0ZShcclxuICAgICAgICBcIlN0cmVuZ3RoXCIsXHJcbiAgICAgICAgdmFsdWUgPT4ge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IHJldHVybiBcIkhlcmN1bGVzJyBCaWdnZXIgQ291c2luXCI7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiAoXCJDaXJjdXMgU3Ryb25nXCIgKyAoKDxIdW1hbm9pZD4gV29ybGRTdGF0ZS5wbGF5ZXIpLmlzTWFsZSgpID8gXCJtYW5cIiA6IFwid29tYW5cIikpO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gXCJCZWFjaCBCdWxseVwiO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gKFwiQXZlcmFnZSBcIiArICgoPEh1bWFub2lkPiBXb3JsZFN0YXRlLnBsYXllcikuaXNNYWxlKCkgPyBcIkpvZVwiIDogXCJKYW5lXCIpKTtcclxuICAgICAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIFwiV2V0IE5vb2RsZVwiO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIFwiT3V0IG9mIGJvdW5kcy5cIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICk7XHJcbiAgICBleHBvcnQgbGV0IEFnaWxpdHkgPSBuZXcgQXR0cmlidXRlKFxyXG4gICAgICAgIFwiQWdpbGl0eVwiLFxyXG4gICAgICAgIHZhbHVlID0+IHtcclxuICAgICAgICAgICAgc3dpdGNoICh2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiByZXR1cm4gXCJDYXRsaWtlXCI7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBcIkd5bW5hc3RcIjtcclxuICAgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIFwiQWNjdXJhdGVcIjtcclxuICAgICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIFwiQ29tbW9uXCI7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDE6IHJldHVybiBcIkFjY2lkZW50LXByb25lXCI7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gXCJPdXQgb2YgYm91bmRzLlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBleHBvcnQgbGV0IEludGVsbGlnZW5jZSA9IG5ldyBBdHRyaWJ1dGUoXHJcbiAgICAgICAgXCJJbnRlbGxpZ2VuY2VcIixcclxuICAgICAgICB2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogcmV0dXJuIFwiR2VuaXVzXCI7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBcIkdpZnRlZFwiO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gXCJLbm93bGVkZ2VhYmxlXCI7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDI6IHJldHVybiBcIk5vcm1hbFwiO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gXCJEb29yXCI7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gXCJPdXQgb2YgYm91bmRzLlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBleHBvcnQgbGV0IENoYXJtID0gbmV3IEF0dHJpYnV0ZShcclxuICAgICAgICBcIkNoYXJtXCIsXHJcbiAgICAgICAgdmFsdWUgPT4ge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IHJldHVybiAoKDxIdW1hbm9pZD4gV29ybGRTdGF0ZS5wbGF5ZXIpLmlzTWFsZSgpID8gXCJDYXNhbm92YVwiIDogXCJTZWR1Y3RyZXNzXCIpO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiByZXR1cm4gXCJEaXBsb21hdFwiO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gKFwiQ2hlZXJ5IFNhbGVzXCIgKyAoKDxIdW1hbm9pZD4gV29ybGRTdGF0ZS5wbGF5ZXIpLmlzTWFsZSgpID8gXCJtYW5cIiA6IFwid29tYW5cIikpO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gXCJOb3QgZXZlbiB0cnlpbmdcIjtcclxuICAgICAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIFwiVW5wbGVhc2FudFwiO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIFwiT3V0IG9mIGJvdW5kcy5cIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgZXhwb3J0IGxldCBDb3JydXB0aW9uID0gbmV3IEF0dHJpYnV0ZShcclxuICAgICAgICBcIkNvcnJ1cHRpb25cIixcclxuICAgICAgICB2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIk5vdCBkZWZpbmVkXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIDAsIDEwMFxyXG4gICAgKTtcclxuXHJcblxyXG4gICAgZXhwb3J0IGxldCBHZW5kZXJJZGVudGl0eSA9IG5ldyBBdHRyaWJ1dGUoXHJcbiAgICAgICAgXCJHZW5kZXIgSWRlbnRpdHlcIixcclxuICAgICAgICB2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA+PSA3NSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiWW91IHN0cm9uZ2x5IGZlZWwsIGFuZCBhY3QsIGxpa2UgYSB3b21hbi5cIjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+PSA2MCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiWW91IGZlZWwsIGFuZCBhY3QsIGxpa2UgYSB3b21hbi5cIjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+PSA0MCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiWW91IGRvbid0IGZlZWwgbm9yIGFjdCBsaWtlIGFueSBwYXJ0aWN1bGFyIGdlbmRlci5cIjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAyMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiWW91IGZlZWwsIGFuZCBhY3QsIGxpa2UgYSBtYW4uXCI7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJZb3Ugc3Ryb25nbHkgZmVlbCwgYW5kIGFjdCwgbGlrZSBhIG1hbi5cIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgNTAsIDEwMFxyXG4gICAgKTtcclxuXHJcblxyXG4gICAgZXhwb3J0IGxldCBEZWdlbmVyYXRpb24gPSBuZXcgQXR0cmlidXRlKFxyXG4gICAgICAgIFwiRGVnZW5lcmF0aW9uXCIsXHJcbiAgICAgICAgdmFsdWUgPT4ge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgPj0gNzUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIlNleCBpcyBhYm91dCB0aGUgb25seSB0aGluZyBvbiB5b3VyIG1pbmQsIGFuZCB5b3UgZG9uJ3QgZXZlbiB0cnkgdG8gaGlkZSBpdCBhbnltb3JlLlwiO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID49IDYwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJTb21ldGltZXMgeW91IGNhbid0IGhpZGUgaG93IG5hdWdodHkgeW91J2QgbGlrZSB0byBiZS5cIjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+PSA0MCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPj0gMjApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIllvdXIgY29tcG9zdXJlIGlzIHBydWRpc2ggYW5kIGNhbG0uXCI7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJZb3UgaGF2ZSB0aGUgY29tcG9zdXJlIG9mIGEgc2FpbnQuXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIDMwLCAxMDBcclxuICAgICk7XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiUGVyc29uU3RhdC50c1wiIC8+XHJcbmludGVyZmFjZSBTa2lsbEJlYXJlciB7XHJcbiAgICBnZXRTa2lsbCAoYXR0ciA6IFNraWxsKSA6IG51bWJlcjtcclxuICAgIHNldFNraWxsIChhdHRyIDogU2tpbGwsIHZhbHVlIDogbnVtYmVyKSA6IHZvaWQ7XHJcbn1cclxuXHJcbmNsYXNzIFNraWxsIGV4dGVuZHMgUGVyc29uU3RhdCB7XHJcbiAgICBwdWJsaWMgZGVmYXVsdFZhbHVlIDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBtYXhWYWx1ZSA6IG51bWJlciA9IDU7XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChpZCA6IHN0cmluZywgZGVzY3JpcHRpb24/IDogc3RyaW5nIHwgU2F5IHwgKCh2YWx1ZSA6IG51bWJlcikgPT4gc3RyaW5nIHwgU2F5KSkge1xyXG4gICAgICAgIHN1cGVyKGlkLCBkZXNjcmlwdGlvbik7XHJcbiAgICAgICAgU2tpbGwuU2tpbGxzW2lkXSA9IHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgU2tpbGxzIDoge1tpZCA6IHN0cmluZ10gOiBTa2lsbH0gPSB7fTtcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFNraWxscyAoKSB7XHJcbiAgICAgICAgbGV0IHNraWxscyA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiBTa2lsbC5Ta2lsbHMpIHtcclxuICAgICAgICAgICAgc2tpbGxzLnB1c2goU2tpbGwuU2tpbGxzW2tleV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBza2lsbHMuc29ydCgoYSA6IFNraWxsLCBiIDogU2tpbGwpID0+IHtcclxuICAgICAgICAgICAgbGV0IG5hID0gYS5pZC50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgICAgICBsZXQgbmIgPSBiLmlkLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgICAgIGlmIChuYSA+IG5iKSByZXR1cm4gMTtcclxuICAgICAgICAgICAgaWYgKG5hIDwgbmIpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHNraWxscztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFNraWxsIChpZCA6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBTa2lsbC5Ta2lsbHNbaWRdO1xyXG4gICAgfVxyXG59XHJcblxyXG5tb2R1bGUgU2tpbGxzIHtcclxuICAgIGV4cG9ydCBsZXQgU3Vydml2YWwgPSBuZXcgU2tpbGwoXHJcbiAgICBcIlN1cnZpdmFsXCIsXHJcbiAgICAodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgc3dpdGNoICh2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiByZXR1cm4gXCJcIjtcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiBcIlwiO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gXCJcIjtcclxuICAgICAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIFwiQWxlcnQgQ2hpaHVhaHVhXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICApO1xyXG59IiwiLy8gQSBjb250YWluZXIgaGFzIHRoaW5ncyBpbnNpZGUgdGhhdCBjYW4gYmUgc2VlbiBhbmQgaW50ZXJhY3RlZCB3aXRoLlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vVGhpbmcudHNcIiAvPlxyXG5jbGFzcyBDb250YWluZXIgZXh0ZW5kcyBUaGluZyB7XHJcbiAgICBwdWJsaWMgcHV0ICguLi50aGluZ3MgOiBBcnJheTxUaGluZz4pIHtcclxuXHJcbiAgICB9XHJcbn0iLCIvLyBBIGNvcnBzZSBpcyBqdXN0IHRoZSBjb250YWluZXIgb2YgYSBkZWFkIHBlcnNvbi5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIkNvbnRhaW5lci50c1wiIC8+XHJcbmNsYXNzIENvcnBzZSBleHRlbmRzIENvbnRhaW5lciB7XHJcblxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1RoaW5nLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL0FJLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlBlcnNvbi9BdHRyaWJ1dGUudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiUGVyc29uL1NraWxsLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL0NvbnRhaW5lci9Db3Jwc2UudHNcIiAvPlxyXG4vKipcclxuICogQSBwZXJzb24gaXMgYSB0aGluZyB0aGF0IGhhcHBlbnMgdG8gYmUgXCJhbGl2ZVwiIGluIHNvbWUgc2lnbmlmaWNhbnQgd2F5LCBub3QgbmVjZXNzYXJpbHkgaHVtYW4uXHJcbiAqIEEgcm9ib3QgaXMgYSBwZXJzb24uXHJcbiAqIEEgZG9nIGlzIGEgcGVyc29uLlxyXG4gKlxyXG4gKiBGdWNrIHlvdXIgc3RhbmRhcmRzLlxyXG4gKi9cclxuY2xhc3MgUGVyc29uIGV4dGVuZHMgVGhpbmcgaW1wbGVtZW50cyBBdHRyaWJ1dGVCZWFyZXIsIFNraWxsQmVhcmVyIHtcclxuICAgIHB1YmxpYyBBSSA9IG5ldyBBSSh7fSk7XHJcbiAgICBwdWJsaWMgYW5pbWF0ZWQgPSB0cnVlO1xyXG5cclxuICAgIHB1YmxpYyBzb3JlbmVzcyA9IDA7XHJcbiAgICBwdWJsaWMgbGFzdEhlYWx0aFVwZGF0ZSA9IDA7XHJcblxyXG4gICAgcHVibGljIHN0YW1pbmEgPSAxMDtcclxuICAgIHB1YmxpYyBsYXN0U3RhbWluYVVwZGF0ZSA9IDA7XHJcbiAgICBwdWJsaWMgc3RhbWluYVBlclR1cm4gPSAxO1xyXG4gICAgcHVibGljIHN0YXRpYyBNQVhfU1RBTUlOQSA9IDEwO1xyXG4gICAgcHVibGljIHN0YXRpYyBTVFJFTkdUSF9TT1JFTkVTU19NVUxUSVBMSUVSID0gNDtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKG9wdGlvbnMgOiBUaGluZ09wdGlvbnMpIHtcclxuICAgICAgICBzdXBlcihvcHRpb25zKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRHZXRBbHRlcmF0aW9ucygocGVyc29uIDogUGVyc29uKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIExldCdzIG5vdCBkbyB0aGlzIGZvciBOUENzLiBJdCBjYW4gYnJlYWsgcGF0Y2hlcy5cclxuICAgICAgICAgICAgaWYgKHBlcnNvbi5pc1BsYXllcigpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIFN0YXRzOiB0aGlzLmF0dHJpYnV0ZVZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgIFNraWxsczogdGhpcy5za2lsbFZhbHVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRTZXRBbHRlcmF0aW9ucygocGVyc29uIDogUGVyc29uLCBjaGFuZ2VzKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIExldCdzIG5vdCBkbyB0aGlzIGZvciBOUENzLiBJdCBjYW4gYnJlYWsgcGF0Y2hlcy5cclxuICAgICAgICAgICAgaWYgKHBlcnNvbi5pc1BsYXllcigpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlcy5TdGF0cyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBuYW1lIGluIGNoYW5nZXMuU3RhdHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGF0dHIgPSBBdHRyaWJ1dGUuZ2V0QXR0cmlidXRlKG5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXR0ciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdChhdHRyLCBjaGFuZ2VzLlN0YXRzW25hbWVdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VzLlNraWxscyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBuYW1lIGluIGNoYW5nZXMuU2tpbGxzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhdHRyID0gU2tpbGwuZ2V0U2tpbGwobmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTa2lsbChhdHRyLCBjaGFuZ2VzLlNraWxsc1tuYW1lXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2hhbmdlSGVhbHRoIChuIDogbnVtYmVyKSB7XHJcbiAgICAgICAgbGV0IGJvZHlwYXJ0cyA9IDxBcnJheTxCb2R5cGFydD4+IHRoaXMuZ2V0UGFydHMoQm9keXBhcnQpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYm9keXBhcnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGJvZHlwYXJ0c1tpXS5jaGFuZ2VTb3JlbmVzcyhuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGVIZWFsdGgoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgaGVhbHRoIGFzIGEgbnVtYmVyIGZyb20gMCB0byAxMC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEhlYWx0aE9uU2NhbGUgKCkge1xyXG4gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKFxyXG4gICAgICAgICAgICAoKHRoaXMuZ2V0SGVhbHRoKCkgKiAxMCkgLyAodGhpcy5nZXRTdGF0KEF0dHJpYnV0ZXMuU3RyZW5ndGgpICogMikpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgY3VycmVudCBoZWFsdGguXHJcbiAgICAgKiBJbXBvcnRhbnQgPSBmb3JjZSB1cGRhdGUsIG90aGVyd2lzZSB1c2Ugc3VmZmljaWVudGx5IGFjY3VyYXRlIGN1cnJlbnQgdmFsdWUuIHRvIHByZXZlbnQgbG9vcGluZyB0b28gbXVjaC5cclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW1wb3J0YW50XHJcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0SGVhbHRoIChpbXBvcnRhbnQ/IDogYm9vbGVhbikge1xyXG4gICAgICAgIGlmIChpbXBvcnRhbnQgPT09IHRydWUgfHwgdGhpcy5sYXN0SGVhbHRoVXBkYXRlICE9IFdvcmxkU3RhdGUuZ2V0Q3VycmVudFR1cm4oKSkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUhlYWx0aCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5zb3JlbmVzcyAvICh0aGlzLmdldFN0YXQoQXR0cmlidXRlcy5TdHJlbmd0aCkgKiBQZXJzb24uU1RSRU5HVEhfU09SRU5FU1NfTVVMVElQTElFUilcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExhenkgdXBkYXRlcyBhbGxvdyB1cyB0byBjb3VudCBIZWFsdGgvU3RhbWluYSBmb3IgTlBDcyB3aXRob3V0IG92ZXJsb2FkaW5nIHRoZSBFdmVyeSBUdXJuIHJ1bGVib29rLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBkYXRlSGVhbHRoICgpIHtcclxuICAgICAgICBsZXQgaGVhbHRoID0gMDtcclxuICAgICAgICBsZXQgYm9keXBhcnRzID0gdGhpcy5nZXRQYXJ0cyhCb2R5cGFydCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBib2R5cGFydHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaGVhbHRoICs9IGJvZHlwYXJ0c1tpXS5nZXRXZWlnaHRlZFNvcmVuZXNzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc29yZW5lc3MgPSBoZWFsdGg7XHJcbiAgICAgICAgdGhpcy5sYXN0SGVhbHRoVXBkYXRlID0gV29ybGRTdGF0ZS5nZXRDdXJyZW50VHVybigpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjaGFuZ2VTdGFtaW5hIChuIDogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVTdGFtaW5hKCk7XHJcbiAgICAgICAgdGhpcy5zdGFtaW5hICs9IG47XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhbWluYSA+IFBlcnNvbi5NQVhfU1RBTUlOQSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0YW1pbmEgPSBQZXJzb24uTUFYX1NUQU1JTkE7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YW1pbmEgPCAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhbWluYSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBzdGFtaW5hIGFzIGEgbnVtYmVyIGZyb20gMCB0byAxMC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldFN0YW1pbmFPblNjYWxlICgpIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChcclxuICAgICAgICAgICAgKCh0aGlzLnN0YW1pbmEgKiAxMCkgLyBQZXJzb24uTUFYX1NUQU1JTkEpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlU3RhbWluYSAoKSB7XHJcbiAgICAgICAgdmFyIG5UdXJucyA9IFdvcmxkU3RhdGUuZ2V0Q3VycmVudFR1cm4oKSAtIHRoaXMubGFzdFN0YW1pbmFVcGRhdGU7XHJcbiAgICAgICAgdGhpcy5zdGFtaW5hICs9IHRoaXMuc3RhbWluYVBlclR1cm4gKiBuVHVybnM7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhbWluYSA+IFBlcnNvbi5NQVhfU1RBTUlOQSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0YW1pbmEgPSBQZXJzb24uTUFYX1NUQU1JTkE7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc1BsYXllciAoKSB7XHJcbiAgICAgICAgcmV0dXJuICg8YW55PiB0aGlzKSA9PSBXb3JsZFN0YXRlLnBsYXllcjtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXR0cmlidXRlVmFsdWUgOiB7W2lkIDogc3RyaW5nXSA6IG51bWJlcn0gPSB7fTtcclxuICAgIHByb3RlY3RlZCBza2lsbFZhbHVlIDoge1tpZCA6IHN0cmluZ10gOiBudW1iZXJ9ID0ge307XHJcblxyXG4gICAgcHVibGljIGdldFN0YXQgKHN0YXQgOiBBdHRyaWJ1dGUpIHtcclxuICAgICAgICBpZiAodGhpcy5hdHRyaWJ1dGVWYWx1ZVtzdGF0LmlkXSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVWYWx1ZVtzdGF0LmlkXSA9IHN0YXQuZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVWYWx1ZVtzdGF0LmlkXTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0U3RhdCAoc3RhdCA6IEF0dHJpYnV0ZSwgdmFsdWUgOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLmF0dHJpYnV0ZVZhbHVlW3N0YXQuaWRdID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNraWxsIChzdGF0IDogU2tpbGwpIHtcclxuICAgICAgICBpZiAodGhpcy5za2lsbFZhbHVlW3N0YXQuaWRdID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNraWxsVmFsdWVbc3RhdC5pZF0gPSBzdGF0LmRlZmF1bHRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2tpbGxWYWx1ZVtzdGF0LmlkXTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0U2tpbGwgKHN0YXQgOiBTa2lsbCwgdmFsdWUgOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLnNraWxsVmFsdWVbc3RhdC5pZF0gPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGllICgpIHtcclxuICAgICAgICBsZXQgY29ycHNlID0gbmV3IENvcnBzZSh7XHJcbiAgICAgICAgICAgIG5hbWUgOiB0aGlzLm5hbWUgKyBcIidzIGNvcnBzZVwiLFxyXG4gICAgICAgICAgICB1bmlxdWUgOiBmYWxzZSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb24gOiBuZXcgU2F5KFwiVGhlIGxpZmVsZXNzIGJvZHkgb2YgXCIsIHRoaXMsIFwiLiBNYXkgXCIsIG5ldyBTYXlIZVNoZUl0KHRoaXMpLCBcIiByZXN0IGluIHBlYWNlLlwiKVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb3Jwc2UucHV0KC4uLlRoaW5nLkNhcnJ5UmVsYXRpb24uZ2V0UmlnaHQodGhpcykpO1xyXG4gICAgICAgIGNvcnBzZS5wdXQoLi4uVGhpbmcuV2VhclJlbGF0aW9uLmdldFJpZ2h0KHRoaXMpKTtcclxuXHJcbiAgICAgICAgdGhpcy5nZXRSb29tKCkucGxhY2UoY29ycHNlKTtcclxuICAgICAgICBPdXRPZlBsYXkucmVtb3ZlRnJvbVBsYXkodGhpcyk7XHJcbiAgICB9XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi9DbGFzc2VzL1J1bGVib29rLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vQ2xhc3Nlcy9SdWxlLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIkNsYXNzZXMvVGhpbmdzL1BlcnNvbi50c1wiIC8+XHJcbm1vZHVsZSBFdmVyeVR1cm4ge1xyXG4gICAgZXhwb3J0IHZhciBFdmVyeVR1cm4gPSBuZXcgUnVsZWJvb2soXCJFdmVyeSBUdXJuXCIpO1xyXG5cclxuICAgIGV4cG9ydCB2YXIgUnVuQUlSdWxlID0gRXZlcnlUdXJuLmNyZWF0ZUFuZEFkZFJ1bGUoe1xyXG4gICAgICAgIG5hbWUgOiBcIlJ1biBOUEMgQUkgUnVsZVwiLFxyXG4gICAgICAgIGNvZGUgOiBhc3luYyBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIGlzQUlBdmFpbGFibGUgKHBlcnNvbiA6IFBlcnNvbikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChwZXJzb24gIT0gV29ybGRTdGF0ZS5wbGF5ZXJcclxuICAgICAgICAgICAgICAgICAgICAmJiAoKHBlcnNvbi5nZXRSb29tKCkgaW5zdGFuY2VvZiBSb29tUmFuZG9tXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmICg8Um9vbVJhbmRvbT4gcGVyc29uLmdldFJvb20oKSkucGxhY2VkKSkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgbGV0IHBlb3BsZSA9IDxBcnJheTxQZXJzb24+PiBUaGluZy5JbnNpZGVSb29tUmVsYXRpb24uZ2V0QW55UmlnaHRUeXBlKFBlcnNvbikuZmlsdGVyKGlzQUlBdmFpbGFibGUpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBlb3BsZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGFjdGlvbiA9IGF3YWl0IHBlb3BsZVtpXS5BSS5leGVjdXRlKHBlb3BsZVtpXSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcGVyc29uID0gcGVvcGxlW2ldO1xyXG4gICAgICAgICAgICAgICAgbGV0IHZpc2libGUgPSBwZW9wbGVbaV0uaXNWaXNpYmxlVG8oV29ybGRTdGF0ZS5wbGF5ZXIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByaW50VmFsdWU6IFNheSA9IGF3YWl0IGFjdGlvbi5leGVjdXRlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29uLmlzVmlzaWJsZVRvKFdvcmxkU3RhdGUucGxheWVyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApICYmIHByaW50VmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlci5wcmludEFzQ29udGVudChwcmludFZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBleHBvcnQgdmFyIGluY3JlbWVudFR1cm5Db3VudGVyUnVsZSA9IEV2ZXJ5VHVybi5jcmVhdGVBbmRBZGRSdWxlKHtcclxuICAgICAgICBmaXJzdFByaW9yaXR5OiBSdWxlLlBSSU9SSVRZX0xPV0VTVCxcclxuICAgICAgICBwcmlvcml0eTogUnVsZS5QUklPUklUWV9MT1dFU1QsXHJcbiAgICAgICAgbmFtZTogXCJJbmNyZW1lbnQgVHVybiBDb3VudGVyXCIsXHJcbiAgICAgICAgY29kZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBXb3JsZFN0YXRlLmluY3JlbWVudFdvcmxkVHVybigpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59IiwiLyoqXHJcbiAqIEN1cnJlbnQgcGxhbnM6XHJcbiAqIE1ha2UgY2hlY2tzIGhpZ2hlciBsZXZlbC4gSXQgc2hvdWxkIGJlIHNpbXBsZSB0byB3cml0ZSwgZXZlbiBpZiB0aGUgdW5kZXJseWluZyBjb2RlIGJlY29tZXMgbW9yZSBjb21wbGV4IGluIHRoZSBwcm9jZXNzLlxyXG4gKiBDaGVja3Mgc2hvdWxkIGJlIHNtYXJ0IGVub3VnaCB0byB1bmRlcnN0YW5kIHdoYXQga2luZCBvZiBzcGVjaWZpY2l0eSBpcyBiZWluZyB1c2VkIGluIHRoZSB0ZXN0LlxyXG4gKiBDaGVja3Mgc2hvdWxkIGFsc28gYmUgY2FwYWJsZSBvZiBzYXlpbmcgXCJ0aGlzIGZpdHMgdGhlIHNpdHVhdGlvbiBwZXJmZWN0bHlcIi5cclxuICogU2V4IHNjZW5lcyBzaG91bGQgY2hhbmdlIHZhcmlhYmxlcyB0aGF0IGFyZSB1c2VkIGluIGNoZWNrcy5cclxuICpcclxuICogQ3VycmVudCBob3cgdG86XHJcbiAqIENsYXNzOiBGdWNraW5nU2l0dWF0aW9uLCB3aGljaCBzaG91bGQgaW5jbHVkZSBhbGwgdGhlIHZhcmlhYmxlcyB0byB0aGUgY3VycmVudCBmdWNraW5nIHNjZW5lLlxyXG4gKiBDbGFzczogRnVja2luZ0NoZWNrLCB3aGljaCBzaG91bGQgaW5jbHVkZSBhIHBvcnRpb24gb2YgdmFyaWFibGVzIHRoYXQgYXJlIHRoZW4gY29tcGFyZWQgdG8gdGhlIEZ1Y2tpbmdTaXR1YXRpb24uXHJcbiAqIE1vZHVsZTogRnVja2luZywgd2hpY2ggY29udHJvbHMgd2hhdCBUaGluZ3MgYXJlIGZ1Y2tpbmcgd2hpY2ggVGhpbmdzIGFuZCBhcHBsaWVzIHRoZSBhYm92ZSB0d28uIFNob3VsZCBwcm92aWRlIGdlbmVyYXRvcnMgZm9yIEZ1Y2tpbmdDaGVjay5cclxuICovXHJcblxyXG5tb2R1bGUgRnVja2luZyB7XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vRWxlbWVudHMvQ2xhc3Nlcy9TYXkudHNcIiAvPlxyXG5lbnVtIERpcmVjdGlvbiB7XHJcbiAgICBOT1JUSCwgTk9SVEhFQVNULCBFQVNULFxyXG4gICAgU09VVEhFQVNULCBTT1VUSCwgU09VVEhXRVNULFxyXG4gICAgV0VTVCwgTk9SVEhXRVNULCBVUCwgRE9XTlxyXG59XHJcblxyXG5cclxuXHJcbnZhciBEaXJlY3Rpb25OYW1lcyA6IHtbaWQ6IHN0cmluZ10gOiBzdHJpbmd9ID0gKCgpID0+IHtcclxuICAgIGVudW0gbmFtZXMge1xyXG4gICAgICAgIE5PUlRIID0gXCJOb3J0aFwiLFxyXG4gICAgICAgIFNPVVRIID0gXCJTb3V0aFwiLFxyXG4gICAgICAgIEVBU1QgPSBcIkVhc3RcIixcclxuICAgICAgICBXRVNUID0gXCJXZXN0XCIsXHJcbiAgICAgICAgU09VVEhFQVNUID0gXCJTb3V0aGVhc3RcIixcclxuICAgICAgICBOT1JUSFdFU1QgPSBcIk5vcnRod2VzdFwiLFxyXG4gICAgICAgIFNPVVRIV0VTVCA9IFwiU291dGh3ZXN0XCIsXHJcbiAgICAgICAgTk9SVEhFQVNUID0gXCJOb3J0aGVhc3RcIixcclxuICAgICAgICBVUCA9IFwiRG93blwiLFxyXG4gICAgICAgIERPV04gPSBcIlVwXCJcclxuICAgIH07XHJcbiAgICBsZXQgb2JqIDoge1tpZDogc3RyaW5nXSA6IHN0cmluZ30gPSB7fTtcclxuICAgIGZvciAobGV0IG5hbWUgaW4gbmFtZXMpIHtcclxuICAgICAgICBvYmpbbmFtZV0gPSBuYW1lc1tuYW1lXTtcclxuICAgICAgICBvYmpbRGlyZWN0aW9uW25hbWVdXSA9IG5hbWVzW25hbWVdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9iajtcclxufSkoKTtcclxuXHJcbnZhciBPcHBvc2l0ZURpcmVjdGlvbiA6IHtbaWQgOiBudW1iZXJdIDogRGlyZWN0aW9ufSA9ICgoKSA9PiB7XHJcbiAgICBsZXQgb2JqID0ge307XHJcbiAgICBvYmpbRGlyZWN0aW9uLk5PUlRIXSA9IERpcmVjdGlvbi5TT1VUSDtcclxuICAgIG9ialtEaXJlY3Rpb24uU09VVEhdID0gRGlyZWN0aW9uLk5PUlRIO1xyXG4gICAgb2JqW0RpcmVjdGlvbi5FQVNUXSA9IERpcmVjdGlvbi5XRVNUO1xyXG4gICAgb2JqW0RpcmVjdGlvbi5XRVNUXSA9IERpcmVjdGlvbi5FQVNUO1xyXG4gICAgb2JqW0RpcmVjdGlvbi5TT1VUSEVBU1RdID0gRGlyZWN0aW9uLk5PUlRIV0VTVDtcclxuICAgIG9ialtEaXJlY3Rpb24uTk9SVEhXRVNUXSA9IERpcmVjdGlvbi5TT1VUSEVBU1Q7XHJcbiAgICBvYmpbRGlyZWN0aW9uLlNPVVRIV0VTVF0gPSBEaXJlY3Rpb24uTk9SVEhFQVNUO1xyXG4gICAgb2JqW0RpcmVjdGlvbi5OT1JUSEVBU1RdID0gRGlyZWN0aW9uLlNPVVRIV0VTVDtcclxuICAgIG9ialtEaXJlY3Rpb24uVVBdID0gRGlyZWN0aW9uLkRPV047XHJcbiAgICBvYmpbRGlyZWN0aW9uLkRPV05dID0gRGlyZWN0aW9uLlVQO1xyXG5cclxuICAgIC8vIE1ha2UgaXQgd29yayB3aXRoIHRoZSBuYW1lIHRvb1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBPYmplY3Qua2V5cyhEaXJlY3Rpb24pLmxlbmd0aCAvIDI7IGkrKykge1xyXG4gICAgICAgIG9ialtEaXJlY3Rpb25baV1dID0gb2JqW2ldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9iajtcclxufSkoKTtcclxuXHJcbmNsYXNzIFJvb20gaW1wbGVtZW50cyBQcmludGFibGUge1xyXG4gICAgcHJpdmF0ZSBuYW1lIDogc3RyaW5nO1xyXG4gICAgcHVibGljIGNvbm5lY3Rpb25zIDogQXJyYXk8Um9vbT47XHJcbiAgICBwdWJsaWMgZGVzY3JpcHRpb24gOiBTYXkgPSBuZXcgU2F5KCk7XHJcbiAgICBwdWJsaWMgZm9kZGVyIDogYm9vbGVhbjtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGlkPyA6IHN0cmluZywgZm9kZGVyPyA6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLm5hbWUgPSBpZCA9PSB1bmRlZmluZWQgPyBcIlJvb21cIiA6IGlkO1xyXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSBuZXcgQXJyYXkoUm9vbS5ESVJFQ1RJT05TLmxlbmd0aCk7IC8vIEFycmF5IHRoZSBzYW1lIHNpemUgYXMgZGlyZWN0aW9ucywgYnV0IGZpbGxlZCB3aXRoIHVuZGVmaW5lZFxyXG5cclxuICAgICAgICB0aGlzLmZvZGRlciA9IGZvZGRlcjtcclxuICAgICAgICBpZiAoZm9kZGVyICE9IHRydWUpIHtcclxuICAgICAgICAgICAgUm9vbS5hZGRSb29tKHRoaXMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0TmFtZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcGxhY2UgKHRoaW5nIDogVGhpbmcpIHtcclxuICAgICAgICBUaGluZy5JbnNpZGVSb29tUmVsYXRpb24uc2V0UmVsYXRpb24odGhpcywgdGhpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZW1vdmUgKHRoaW5nIDogVGhpbmcpIHtcclxuICAgICAgICAvLyBEb24ndCByZW1vdmUgc3R1ZmYgZnJvbSBvdGhlciByb29tc1xyXG4gICAgICAgIGlmIChUaGluZy5JbnNpZGVSb29tUmVsYXRpb24uZ2V0TGVmdCh0aGluZykgPT0gdGhpcykge1xyXG4gICAgICAgICAgICBUaGluZy5JbnNpZGVSb29tUmVsYXRpb24udW5zZXRSaWdodCh0aGluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRDb250YWluZWQgKCkgOiBBcnJheTxUaGluZz4ge1xyXG4gICAgICAgIHJldHVybiA8QXJyYXk8VGhpbmc+PiBUaGluZy5JbnNpZGVSb29tUmVsYXRpb24uZ2V0UmlnaHQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldENvbnRhaW5lZEFuZFZpc2libGVUbyAob2JzZXJ2ZXIgOiBUaGluZykgOiBBcnJheTxUaGluZz4ge1xyXG4gICAgICAgIGxldCBjb250YWluZWQgPSB0aGlzLmdldENvbnRhaW5lZCgpO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBbXTtcclxuXHJcbiAgICAgICAgY29udGFpbmVkLmZvckVhY2goKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZS52aXNpYmxlICYmIHZhbHVlICE9PSBvYnNlcnZlcikge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBESVJFQ1RJT05TIDogQXJyYXk8RGlyZWN0aW9uPiA9ICgoKSA9PiB7XHJcbiAgICAgICAgbGV0IGRpcmVjdGlvbnMgOiBBcnJheTxEaXJlY3Rpb24+ID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBPYmplY3Qua2V5cyhEaXJlY3Rpb24pLmxlbmd0aCAvIDI7IGkrKykge1xyXG4gICAgICAgICAgICBkaXJlY3Rpb25zLnB1c2goaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkaXJlY3Rpb25zO1xyXG4gICAgfSkoKTtcclxuXHJcbiAgICBwdWJsaWMgZ2V0Q29udGFpbmVkQW5kVmlzaWJsZSAoKSA6IEFycmF5PFRoaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29udGFpbmVkQW5kVmlzaWJsZVRvKFdvcmxkU3RhdGUucGxheWVyKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbWFwUm9vbSAociA6IFJvb20sIGRpcmVjdGlvbiA6IERpcmVjdGlvbikge1xyXG4gICAgICAgIGxldCBvcHBvc2l0ZURpcmVjdGlvbiA9IE9wcG9zaXRlRGlyZWN0aW9uW2RpcmVjdGlvbl07XHJcbiAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbnNbZGlyZWN0aW9uXSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiUmVwbGFjaW5nIGEgY29ubmVjdGVkIHJvb20uXCIsIHRoaXMsIFwiIGNvbm5lY3RlZCB0aHJvdWdoIFwiLCBkaXJlY3Rpb24sIFwiIHRvIFwiLCB0aGlzLmNvbm5lY3Rpb25zW2RpcmVjdGlvbl0pO1xyXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zW2RpcmVjdGlvbl0udW5tYXBSb29tKG9wcG9zaXRlRGlyZWN0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uc1tkaXJlY3Rpb25dID0gcjtcclxuXHJcbiAgICAgICAgaWYgKHIuY29ubmVjdGlvbnNbb3Bwb3NpdGVEaXJlY3Rpb25dICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJSZXBsYWNpbmcgYSBjb25uZWN0ZWQgcm9vbS5cIiwgciwgXCIgY29ubmVjdGVkIHRocm91Z2ggXCIsIG9wcG9zaXRlRGlyZWN0aW9uLCBcIiB0byBcIiwgci5jb25uZWN0aW9uc1tvcHBvc2l0ZURpcmVjdGlvbl0pO1xyXG4gICAgICAgICAgICByLnVubWFwUm9vbShvcHBvc2l0ZURpcmVjdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHIuY29ubmVjdGlvbnNbb3Bwb3NpdGVEaXJlY3Rpb25dID0gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdW5tYXBSb29tIChkaXJlY3Rpb24gOiBEaXJlY3Rpb24pIHtcclxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uc1tkaXJlY3Rpb25dICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBsZXQgciA9IHRoaXMuY29ubmVjdGlvbnNbZGlyZWN0aW9uXTtcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uc1tkaXJlY3Rpb25dID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICByLnVubWFwUm9vbShPcHBvc2l0ZURpcmVjdGlvbltkaXJlY3Rpb25dKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFByaW50ZWROYW1lICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5uYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRDb25uZWN0ZWRSb29tcyAoKSA6IEFycmF5PFJvb20+IHtcclxuICAgICAgICBsZXQgcm9vbXMgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25zLmZvckVhY2gocm9vbSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyb29tICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgcm9vbXMucHVzaChyb29tKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByb29tcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgcmV0dXJucyB0aGUgYmVzdCBkaXJlY3Rpb24gdG8gZm9sbG93IGlmIGdvaW5nIGZyb20gdGhlIGN1cnJlbnQgcm9vbSB0byBhbm90aGVyIHJvb20uXHJcbiAgICAgKiBUSElTIENPREUgSVMgUkVBTExZIEVYUEVOU0lWRSBBTkQgU0hPVUxEIE9OTFkgQkUgVVNFRCBBUyBBIExBU1QgUkVTT1JUXHJcbiAgICAgKiBXQVJOSU5HOiBUSElTIENPREUgV0lMTCBGQUlMIElGIFRIRSBUQVJHRVQgUk9PTSBJUyBUT08gRkFSIEZST00gVEhFIENVUlJFTlQgUk9PTSAoRk9SIFNFQ1VSSVRZIFJFQVNPTlMpLlxyXG4gICAgICogVGhpcyBjb2RlIHJ1bnMgdGhyb3VnaCBldmVyeS4gc2luZ2xlLiByb29tLiB0byBmaW5kIHRoZSBiZXN0IHJvdXRlIHRvIHRha2UuXHJcbiAgICAgKiBJZiB5b3UgbmVlZCBhbiBOUEMgdG8gc3RpY2sgdG8gYSByZWdpb24sIGRvbid0IGxldCBpdCBnbyBvdXQgb2YgaXQgaW4gdGhlIGZpcnN0IHBsYWNlIVxyXG4gICAgICogQHBhcmFtIHJvb21cclxuICAgICAqIEBwYXJhbSB2YWxpZGl0eUNvZGVcclxuICAgICAqIEByZXR1cm5zIHthbnl9XHJcbiAgICAgKi9cclxuICAgIC8vIFRPRE86IE1ha2UgdGhpcyBzaGl0IGZhc3RcclxuICAgIHB1YmxpYyBiZXN0RGlyZWN0aW9uVG8gKHJvb20gOiBSb29tLCB2YWxpZGl0eUNvZGU/IDogKHJvb20gOiBSb29tKSA9PiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKHZhbGlkaXR5Q29kZSA9PSB1bmRlZmluZWQpIHZhbGlkaXR5Q29kZSA9ICgpID0+IHtyZXR1cm4gdHJ1ZX07XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIE1heGltdW0gYW1vdW50IG9mIHN0ZXBzIHRoYXQgd2lsbCBiZSBjb25zaWRlcmVkIGZvciBhIHJvdXRlLlxyXG4gICAgICAgICAqIFRoaXMgaXMgdXNlZnVsIHRvIHByZXZlbnQgdGhlIGNvZGUgZnJvbSBzcGFubmluZyB0b28gbWFueSByb29tcywgYXMgZWFjaCByb29tIGNhbiBoYXZlIFJvb20uRElSRUNUSU9OUy5sZW5ndGggZGlyZWN0aW9ucyB0byBtYWtlIGFub3RoZXIgY2FsbCwgZXRjLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHR5cGUge251bWJlcn1cclxuICAgICAgICAgKi9cclxuICAgICAgICBsZXQgbWF4U3RlcHMgPSAxMDtcclxuICAgICAgICBtYXhTdGVwcyA9IG1heFN0ZXBzID4gV29ybGRTdGF0ZS5nZXRNYXhpbXVtUmVtZW1iZXJlZFJvb21zKCkgPyBtYXhTdGVwcyA6IFdvcmxkU3RhdGUuZ2V0TWF4aW11bVJlbWVtYmVyZWRSb29tcygpO1xyXG5cclxuICAgICAgICBsZXQgcmVjdXJzaXZlQmVzdFBhdGggPSAoY1BhdGggOiBBcnJheTxSb29tPiwgY1Jvb20gOiBSb29tLCBkZXN0aW5hdGlvbiA6IFJvb20pID0+IHtcclxuICAgICAgICAgICAgLy8gSWdub3JlIFwiYmFkXCIgcm9vbXNcclxuICAgICAgICAgICAgaWYgKCF2YWxpZGl0eUNvZGUoY1Jvb20pKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gUHJldmVudCB0aGUgY29kZSBmcm9tIHN0cmF5aW5nIHRvbyBmYXJcclxuICAgICAgICAgICAgaWYgKGNSb29tID09IGRlc3RpbmF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBtYXhTdGVwcyA9IG1heFN0ZXBzID4gY1BhdGgubGVuZ3RoID8gY1BhdGgubGVuZ3RoIDogbWF4U3RlcHM7IC8vIFN0b3AgY29uc2lkZXJpbmcgd29yc2Ugcm91dGVzXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY1BhdGg7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY1BhdGgubGVuZ3RoID4gbWF4U3RlcHMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcGF0aHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4IGluIFJvb20uRElSRUNUSU9OUykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkaXJlY3Rpb24gPSBSb29tLkRJUkVDVElPTlNbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXh0Um9vbSA9IGNSb29tLmNvbm5lY3Rpb25zW2RpcmVjdGlvbl07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRSb29tICE9IHVuZGVmaW5lZCAmJiBjUGF0aC5pbmRleE9mKG5leHRSb29tKSA9PSAtMSAmJiB2YWxpZGl0eUNvZGUobmV4dFJvb20pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXRoID0gcmVjdXJzaXZlQmVzdFBhdGgoY1BhdGguY29uY2F0KFtuZXh0Um9vbV0pLCBuZXh0Um9vbSwgZGVzdGluYXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGF0aCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhzLnB1c2gocGF0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgc2hvcnRlc3RJbmRleCA9IDA7XHJcbiAgICAgICAgICAgICAgICBwYXRocy5mb3JFYWNoKCh2YWx1ZSwgaW5kZXgsIGFycmF5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA8IHBhdGhzW3Nob3J0ZXN0SW5kZXhdLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG9ydGVzdEluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF0aHNbc2hvcnRlc3RJbmRleF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBsZXQgcGF0aHMgPSBBcnJheShSb29tLkRJUkVDVElPTlMubGVuZ3RoKTtcclxuICAgICAgICBsZXQgc2hvcnRlc3RJbmRleDtcclxuICAgICAgICBmb3IgKGxldCBpbmRleCBpbiBSb29tLkRJUkVDVElPTlMpIHtcclxuICAgICAgICAgICAgbGV0IGRpcmVjdGlvbiA9IFJvb20uRElSRUNUSU9OU1tpbmRleF07XHJcbiAgICAgICAgICAgIGxldCBuZXh0Um9vbSA9IHRoaXMuY29ubmVjdGlvbnNbZGlyZWN0aW9uXTtcclxuICAgICAgICAgICAgaWYgKG5leHRSb29tICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgcGF0aHNbZGlyZWN0aW9uXSA9IHJlY3Vyc2l2ZUJlc3RQYXRoKFt0aGlzLCBuZXh0Um9vbV0sIG5leHRSb29tLCByb29tKTtcclxuICAgICAgICAgICAgICAgIGlmIChwYXRoc1tkaXJlY3Rpb25dICE9IHVuZGVmaW5lZCAmJiAoc2hvcnRlc3RJbmRleCA9PSB1bmRlZmluZWQgfHwgcGF0aHNbc2hvcnRlc3RJbmRleF0ubGVuZ3RoID4gcGF0aHNbZGlyZWN0aW9uXS5sZW5ndGgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2hvcnRlc3RJbmRleCA9IGRpcmVjdGlvbjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc2hvcnRlc3RJbmRleDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldERpcmVjdGlvblhZWiAoZGlyZWN0aW9uIDogRGlyZWN0aW9uKSB7XHJcbiAgICAgICAgdmFyIHkgPSAwO1xyXG4gICAgICAgIGlmIChbRGlyZWN0aW9uLk5PUlRILCBEaXJlY3Rpb24uTk9SVEhFQVNULCBEaXJlY3Rpb24uTk9SVEhXRVNUXS5pbmRleE9mKGRpcmVjdGlvbikgIT0gLTEpIHtcclxuICAgICAgICAgICAgeSA9IDE7XHJcbiAgICAgICAgfSBlbHNlIGlmIChbRGlyZWN0aW9uLlNPVVRILCBEaXJlY3Rpb24uU09VVEhFQVNULCBEaXJlY3Rpb24uU09VVEhXRVNUXS5pbmRleE9mKGRpcmVjdGlvbikgIT0gLTEpIHtcclxuICAgICAgICAgICAgeSA9IC0xO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIHggPSAwO1xyXG4gICAgICAgIGlmIChbRGlyZWN0aW9uLkVBU1QsIERpcmVjdGlvbi5TT1VUSEVBU1QsIERpcmVjdGlvbi5OT1JUSEVBU1RdLmluZGV4T2YoZGlyZWN0aW9uKSAhPSAtMSkge1xyXG4gICAgICAgICAgICB4ID0gMTtcclxuICAgICAgICB9IGVsc2UgaWYgKFtEaXJlY3Rpb24uV0VTVCwgRGlyZWN0aW9uLlNPVVRIV0VTVCwgRGlyZWN0aW9uLk5PUlRIV0VTVF0uaW5kZXhPZihkaXJlY3Rpb24pICE9IC0xKSB7XHJcbiAgICAgICAgICAgIHggPSAtMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciB6ID0gZGlyZWN0aW9uID09IERpcmVjdGlvbi5VUCA/IDEgOlxyXG4gICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb24uRE9XTiA/IC0xIDpcclxuICAgICAgICAgICAgICAgICAwO1xyXG5cclxuICAgICAgICByZXR1cm4gW3gsIHksIHpdO1xyXG4gICAgfVxyXG4gICAgcHVibGljIHN0YXRpYyBzaGlmdCAoY29vcmRpbmF0ZXMgOiBBcnJheTxudW1iZXI+LCBkaXJlY3Rpb24gOiBudW1iZXIpIHtcclxuICAgICAgICBsZXQgY29vcmRpbmF0ZXNWZWN0b3IgPSBSb29tLmdldERpcmVjdGlvblhZWihkaXJlY3Rpb24pO1xyXG4gICAgICAgIGNvb3JkaW5hdGVzLmZvckVhY2goKHZhbHVlLCBpbmRleCwgYXJyYXkpID0+IHtcclxuICAgICAgICAgICAgY29vcmRpbmF0ZXNWZWN0b3JbaW5kZXhdICs9IGNvb3JkaW5hdGVzW2luZGV4XTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gY29vcmRpbmF0ZXNWZWN0b3I7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHN0YXRpYyByb29tcyA6IHtbaWQgOiBzdHJpbmddIDogUm9vbX0gPSB7fTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgc3RhdGljIGFkZFJvb20gKHJvb20gOiBSb29tKSB7XHJcbiAgICAgICAgUm9vbS5yb29tc1tyb29tLm5hbWVdID0gcm9vbTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFJvb21zICgpIDogQXJyYXk8Um9vbT4ge1xyXG4gICAgICAgIGxldCByb29tcyA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IG5hbWUgaW4gUm9vbS5yb29tcykge1xyXG4gICAgICAgICAgICByb29tcy5wdXNoKFJvb20ucm9vbXNbbmFtZV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcm9vbXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRSb29tIChpZCA6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBSb29tLnJvb21zW2lkXTtcclxuICAgIH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJDbGFzc2VzL1Jvb20udHNcIiAvPlxyXG5tb2R1bGUgT3V0T2ZQbGF5IHtcclxuICAgIC8qKiBUaGUgcmVhc29uIHdlIGhhdmUgdGhpcyBpcyBzbyB0aGF0IE5QQ3MgYWN0dWFsbHkgU0FWRSB3aGVuIHRoZXkncmUgZGVhZC4gVGhpbmdzIHRoYXQgYXJlIHNpbXBseSBvdXRzaWRlIG9mIHJvb21zIGRvIG5vdCBoYXZlIHRoZWlyIHBvc2l0aW9uIHN0b3JlZCwgc2luY2UgdGhleSBoYXZlIG5vIHBvc2l0aW9uLiAqKi9cclxuICAgIGV4cG9ydCBsZXQgSGVhdmVuID0gbmV3IFJvb20oXCJfX0hlYXZlbl9fUklQX19cIik7XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUZyb21QbGF5ICh0aGluZyA6IFRoaW5nKSB7XHJcbiAgICAgICAgSGVhdmVuLnBsYWNlKHRoaW5nKTtcclxuICAgIH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL0NsYXNzZXMvUnVsZWJvb2sudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi9DbGFzc2VzL1J1bGUudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiTWFjaGluZUJlZ2lucy50c1wiIC8+XHJcbm1vZHVsZSBQbGF5QmVnaW5zIHtcclxuICAgIGV4cG9ydCB2YXIgcnVsZWJvb2sgPSBuZXcgUnVsZWJvb2s8dm9pZD4oXCJQbGF5IEJlZ2luc1wiKTtcclxuICAgIGV4cG9ydCB2YXIgTE9BRF9GQUlMRUQgPSBmYWxzZTtcclxuICAgIGxldCBzdGFydGluZ1Jvb207XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGUgKCkge1xyXG4gICAgICAgIHJ1bGVib29rLmV4ZWN1dGUoe30pO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBzZXRTdGFydGluZ1Jvb20gKHJvb20gOiBSb29tKSB7XHJcbiAgICAgICAgaWYgKHN0YXJ0aW5nUm9vbSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiW0luaXRpYWxSb29tXSBNdWx0aXBsZSByZXF1ZXN0cyBmb3Igc3RhcnRpbmcgcm9vbSwgcGxlYXNlIGNoZWNrLlwiLCBzdGFydGluZ1Jvb20sIHJvb20pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdGFydGluZ1Jvb20gPSByb29tO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBsZXQgUHV0UGxheWVySW50b0ZpcnN0Um9vbSA9IHJ1bGVib29rLmNyZWF0ZUFuZEFkZFJ1bGUoe1xyXG4gICAgICAgIG5hbWUgOiBcIlBsYWNlIHBsYXllciBpbnRvIGluaXRpYWwgcm9vbVwiLFxyXG4gICAgICAgIGZpcnN0UHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0hJR0hFU1QsXHJcbiAgICAgICAgcHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX01FRElVTSxcclxuICAgICAgICBjb2RlIDogKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoV29ybGRTdGF0ZS5wbGF5ZXIuZ2V0Um9vbSgpICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhSdWxlYm9vay5nZXRJbmRlbnRhdGlvbigpICsgXCJbSW5pdGlhbFJvb21dIFBsYXllciBhbHJlYWR5IGluIGEgcm9vbS5cIiwgV29ybGRTdGF0ZS5wbGF5ZXIuZ2V0Um9vbSgpKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHN0YXJ0aW5nUm9vbS5wbGFjZShXb3JsZFN0YXRlLnBsYXllcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBleHBvcnQgdmFyIFJ1bkVtcHR5VHVyblNlcXVlbmNlUnVsZSA9IG5ldyBSdWxlICh7XHJcbiAgICAgICAgbmFtZSA6IFwiUnVuIEVtcHR5IFR1cm4gU2VxdWVuY2UgUnVsZVwiLFxyXG4gICAgICAgIGZpcnN0UHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0xPV0VTVCxcclxuICAgICAgICBwcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfTE9XRVNULFxyXG4gICAgICAgIGNvZGUgOiAocnVsZWJvb2syIDogUnVsZWJvb2tSdW5uZXI8dm9pZD4pID0+IHtcclxuICAgICAgICAgICAgVHVyblNlcXVlbmNlLmV4ZWN1dGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJ1bGVib29rLmFkZFJ1bGUoUnVuRW1wdHlUdXJuU2VxdWVuY2VSdWxlKTtcclxufVxyXG5cclxubW9kdWxlIE1hY2hpbmVCZWdpbnMge1xyXG4gICAgZXhwb3J0IGxldCBSdW5QbGF5QmVnaW5zID0gTWFjaGluZUJlZ2lucy5ydWxlYm9vay5jcmVhdGVBbmRBZGRSdWxlKHtcclxuICAgICAgICBmaXJzdFByaW9yaXR5IDogUnVsZS5QUklPUklUWV9MT1csXHJcbiAgICAgICAgbmFtZSA6IFwiUnVuIFBsYXkgQmVnaW5zXCIsXHJcbiAgICAgICAgY29kZSA6ICgpID0+IHtcclxuICAgICAgICAgICAgUGxheUJlZ2lucy5leGVjdXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn0iLCJtb2R1bGUgVGVzdHMge1xyXG4gICAgZXhwb3J0IHZhciBNSU5fRElDRSA9IDA7IC8vIERpY2VzIGNhbiBiZSA8IDBcclxuICAgIGV4cG9ydCB2YXIgTUFYX0RJQ0UgPSAzOyAvLyBEaWNlcyBjYW4gZ28gcmVhbCBoaWdoXHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHJvbGxEaWNlICgpIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKE1BWF9ESUNFIC0gTUlOX0RJQ0UpKSArIDEgKyBNSU5fRElDRTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gdGVzdCAoYXR0ciA6IG51bWJlciwgZGlmZmljdWx0eSA6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiAoYXR0ciArIHJvbGxEaWNlKCkpID49IGRpZmZpY3VsdHk7XHJcbiAgICB9XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vVGhpbmcudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vUm9vbS50c1wiIC8+XHJcbi8qKlxyXG4gKiBNYXBzIGNhbiBob2xkIGluZm9ybWF0aW9uIG9mIGNlcnRhaW4gcm9vbXMgb3IgYSByZWdpb24uXHJcbiAqIElmIGEgcGxheWVyIGhhcyBhIG1hcCwgYWxsIHRoZSByb29tcyBpbiB0aGUgbWFwIGFyZSBhbHdheXMgcmVtZW1iZXJlZC5cclxuICovXHJcbmNsYXNzIE1hcE5vdGUgZXh0ZW5kcyBUaGluZyB7XHJcbiAgICBwdWJsaWMgcm9vbXMgOiBBcnJheTxSb29tPiA9IFtdO1xyXG4gICAgcHVibGljIHJlZ2lvbnMgOiBBcnJheTxSZWdpb24+ID0gW107XHJcblxyXG4gICAgcHVibGljIGFkZFJvb20gKC4uLnJvb21zIDogQXJyYXk8Um9vbT4pIHtcclxuICAgICAgICByb29tcy5mb3JFYWNoKChyb29tKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucm9vbXMucHVzaChyb29tKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWRkUmVnaW9uICguLi5yZWdpb25zIDogQXJyYXk8UmVnaW9uPikge1xyXG4gICAgICAgIHJlZ2lvbnMuZm9yRWFjaChyZWdpb24gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlZ2lvbnMucHVzaChyZWdpb24pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjb250YWlucyAocm9vbSA6IFJvb20pIHtcclxuICAgICAgICBpZih0aGlzLnJvb21zLmluZGV4T2Yocm9vbSkgIT0gLTEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnJlZ2lvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlZ2lvbnNbaV0uZ2V0Um9vbXMoKS5pbmRleE9mKHJvb20pICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vVGhpbmcudHNcIiAvPlxyXG5pbnRlcmZhY2UgQm9keXBhcnRWYWx1ZVJlc3VsdCB7XHJcbiAgICB2YWx1ZSA6IG51bWJlcjtcclxuICAgIHdlaWdodCA6IG51bWJlcjtcclxufVxyXG5cclxuY2xhc3MgQm9keXBhcnQgZXh0ZW5kcyBUaGluZyB7XHJcbiAgICBwdWJsaWMgc3RhdGljIFdFSUdIVF9MT1dFU1QgPSAxO1xyXG4gICAgcHVibGljIHN0YXRpYyBXRUlHSFRfTE9XID0gMztcclxuICAgIHB1YmxpYyBzdGF0aWMgV0VJR0hUX01FRElVTSA9IDU7XHJcbiAgICBwdWJsaWMgc3RhdGljIFdFSUdIVF9ISUdIID0gNztcclxuICAgIHB1YmxpYyBzdGF0aWMgV0VJR0hUX0hJR0hFU1QgPSA5O1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgU0xVVFRJTkVTU19MT1dFU1RfU0FJTlRMWSA9IDA7XHJcbiAgICBwdWJsaWMgc3RhdGljIFNMVVRUSU5FU1NfTE9XX1BSVURFID0gMjU7XHJcbiAgICBwdWJsaWMgc3RhdGljIFNMVVRUSU5FU1NfTUVESVVNX0FWRVJBR0UgPSA1MDtcclxuICAgIHB1YmxpYyBzdGF0aWMgU0xVVFRJTkVTU19ISUdIX1NMVVQgPSA3NTtcclxuICAgIHB1YmxpYyBzdGF0aWMgU0xVVFRJTkVTU19ISUdIRVNUX1dIT1JFID0gMTAwO1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgR0VOREVSX0xPV0VTVF9NQU5MSUVTVCA9IDA7XHJcbiAgICBwdWJsaWMgc3RhdGljIEdFTkRFUl9MT1dfTUFOTFkgPSAyNTtcclxuICAgIHB1YmxpYyBzdGF0aWMgR0VOREVSX01FRElVTV9BTkRST0dZTkUgPSA1MDtcclxuICAgIHB1YmxpYyBzdGF0aWMgR0VOREVSX0hJR0hfRkVNSU5JTkUgPSA3NTtcclxuICAgIHB1YmxpYyBzdGF0aWMgR0VOREVSX0hJR0hFU1RfRkVNSU5JTkVTVCA9IDEwMDtcclxuXHJcbiAgICAvLyBUaGUgaGlnaGVyIHRoaXMgbnVtYmVyLCB0aGUgbW9yZSB0aGUgYm9keXBhcnQgd2lsbCBiZSB3b3J0aCBmb3IgaGVhbHRoLlxyXG4gICAgLy8gRm9yIGluc3RhbmNlLCBIRUFEIHNob3VsZCBiZSB3b3J0aCBtb3JlIHRoYW4gRklOR0VSTkFJTC5cclxuICAgIHB1YmxpYyBzb3JlbmVzc1dlaWdodCA6IG51bWJlciA9IDE7XHJcblxyXG4gICAgLy8gMCB0byAxMFxyXG4gICAgLy8gc2F5cyBob3cgZnVja2VkIHVwIHRoZSBib2R5cGFydCBpc1xyXG4gICAgcHVibGljIHNvcmVuZXNzIDogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvLyBIb3cgbXVjaCBzb3JlbmVzcyBpcyBoZWFsZWQgZXZlcnkgdHVyblxyXG4gICAgcHVibGljIHNvcmVuZXNzUGVyVHVybiA6IG51bWJlciA9IDAuMDU7XHJcblxyXG4gICAgLy8gTGFzdCB0dXJuIHNvcmVuZXNzIGdvdCB1cGRhdGVkXHJcbiAgICBwdWJsaWMgbGFzdFNvcmVuZXNzVXBkYXRlIDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKG9wdGlvbnM/IDogVGhpbmdPcHRpb25zKSB7XHJcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XHJcbiAgICAgICAgdGhpcy5hZGRHZXRBbHRlcmF0aW9ucygoYnAgOiBCb2R5cGFydCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgU29yZW5lc3MgOiBicC5zb3JlbmVzcyxcclxuICAgICAgICAgICAgICAgIEdlbmRlclZhbHVlIDogYnAuZ2VuZGVyVmFsdWUsXHJcbiAgICAgICAgICAgICAgICBTbHV0dGluZXNzIDogYnAuZ2V0U2x1dHRpbmVzcygpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRTZXRBbHRlcmF0aW9ucygoYnAgOiBCb2R5cGFydCwgY2hhbmdlcykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNvcmVuZXNzID0gY2hhbmdlcy5Tb3JlbmVzcztcclxuICAgICAgICAgICAgdGhpcy5nZW5kZXJWYWx1ZSA9IGNoYW5nZXMuR2VuZGVyVmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2x1dHRpbmVzcyA9IGNoYW5nZXMuU2x1dHRpbmVzcztcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlU29yZW5lc3MgKCkge1xyXG4gICAgICAgIGxldCBjVHVybiA9IFdvcmxkU3RhdGUuZ2V0Q3VycmVudFR1cm4oKTtcclxuICAgICAgICBpZiAoY1R1cm4gPiB0aGlzLmxhc3RTb3JlbmVzc1VwZGF0ZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zb3JlbmVzcyA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc29yZW5lc3MgLT0gKHRoaXMuc29yZW5lc3NQZXJUdXJuICogKGNUdXJuIC0gdGhpcy5sYXN0U29yZW5lc3NVcGRhdGUpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3JlbmVzcyA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvcmVuZXNzID0gMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmxhc3RTb3JlbmVzc1VwZGF0ZSA9IGNUdXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2hhbmdlU29yZW5lc3MgKHNvcmVuZXNzIDogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVTb3JlbmVzcygpO1xyXG4gICAgICAgIHRoaXMuc29yZW5lc3MgKz0gc29yZW5lc3M7XHJcbiAgICAgICAgaWYgKHRoaXMuc29yZW5lc3MgPCAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc29yZW5lc3MgPSAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0U29yZW5lc3MgKCkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlU29yZW5lc3MoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5zb3JlbmVzcztcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHVibGljIGdldFdlaWdodGVkU29yZW5lc3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U29yZW5lc3MoKSAqIHRoaXMuc29yZW5lc3NXZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNvcmVuZXNzV2VpZ2h0ICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zb3JlbmVzc1dlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaGVzZSBhcmUgdGhlIHNsb3RzIHRoZSBib2R5cGFydCBpcyB2aXNpYmxlIG9uXHJcbiAgICAvLyBTaG91bGQgdXNlIEh1bWFub2lkLlNMT1RfKiAhXHJcbiAgICBwdWJsaWMgc2xvdHMgOiBBcnJheTxudW1iZXI+ID0gW107XHJcbiAgICBwdWJsaWMgdmlzaWJsZVNsb3RzIDogQXJyYXk8bnVtYmVyPiA9IFtdO1xyXG5cclxuICAgIC8vIEdlbmRlclZhbHVlIGlzIGhvdyBtYXNjdWxpbmUvZmVtaW5pbmUgdGhpcyBib2R5cGFydCBpcy5cclxuICAgIC8vIEF0IDAgPSB0aGUgbW9zdCBtYXNjdWxpbmUgcG9zc2libGUsIGF0IDEwMCA9IHRoZSBtb3N0IGZlbWluaW5lIGV2ZXRlclxyXG4gICAgLy8gNTAgd291bGQgYmUgY29tcGxldGVseSBhbmRyb2d5bm91c1xyXG4gICAgcHVibGljIGdlbmRlclZhbHVlIDogbnVtYmVyID0gQm9keXBhcnQuR0VOREVSX01FRElVTV9BTkRST0dZTkU7XHJcblxyXG4gICAgLy8gTGlrZSB3aXRoIGhlYWx0aCwgdGhlIHdlaWdodCBtYWtlcyB0aGlzIGJvZHlwYXJ0IG1hdHRlciBtb3JlIGZvciBkZWNpZGluZyBnZW5kZXIuXHJcbiAgICAvLyBHZW5kZXIgcHJlc2VudGF0aW9uIGlzIG5vdCBhYm91dCBwcmV0dGluZXNzLCBzbywgZm9yIGluc3RhbmNlLCBoYXZpbmcgaHVnZSBicmVhc3RzIHdpbGxcclxuICAgIC8vIHN0cm9uZ2x5IHB1c2ggeW91IHRvIHRoZSBcImlzIGEgd29tYW5cIiBzaWRlLCBldmVuIGlmIHlvdSdyZSBtYW5seSBhcyBmdWNrIGV2ZXJ5d2hlcmUgZWxzZS5cclxuICAgIC8vIElmIHlvdSdyZSB0b28gbWFubHkgZXZlcnl3aGVyZSBlbHNlLCB0aG91Z2gsIHlvdSdsbCBwcm9iYWJseSBlbmQgdXAgY2xvc2VyIG9uIHRoZSBzcGVjdHJ1bSB0byBtYWxlXHJcbiAgICAvLyBvciBhdCBsZWFzdCBhbmRyb2d5bm91cywgd2hpY2ggbWlnaHQgcmVzdWx0IGluIG5vdCBwYXNzaW5nLlxyXG4gICAgcHVibGljIGdlbmRlcldlaWdodCA6IG51bWJlciA9IDE7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTbHV0dGluZXNzIGdvZXMgZnJvbSAwIHRvIDEwMC5cclxuICAgICAqIEEgYm9keXBhcnQncyBzbHV0dGluZXNzIGlzIGRlcGVuZGVudCBvbiBpdCBiZWluZyBzZWVuLlxyXG4gICAgICogQHR5cGUge251bWJlcn1cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNsdXR0aW5lc3MgOiBudW1iZXIgPSAxMDtcclxuXHJcbiAgICBwdWJsaWMgc2x1dHRpbmVzc1dlaWdodCA6IG51bWJlciA9IEJvZHlwYXJ0LldFSUdIVF9MT1dFU1Q7XHJcblxyXG4gICAgcHVibGljIGdldEdlbmRlcldlaWdodCAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2xvdHMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmdlbmRlcldlaWdodCAqICh0aGlzLnZpc2libGVTbG90cy5sZW5ndGggLyB0aGlzLnNsb3RzLmxlbmd0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEdlbmRlclZhbHVlICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZW5kZXJWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0V2VpZ2h0ZWRHZW5kZXJWYWx1ZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0R2VuZGVyVmFsdWUoKSAqIHRoaXMuZ2V0R2VuZGVyV2VpZ2h0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNsdXR0aW5lc3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2x1dHRpbmVzcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0U2x1dHRpbmVzc1dlaWdodCAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2xvdHMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnNsdXR0aW5lc3NXZWlnaHQgKiAodGhpcy52aXNpYmxlU2xvdHMubGVuZ3RoIC8gdGhpcy5zbG90cy5sZW5ndGgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRXZWlnaHRlZFNsdXR0aW5lc3NWYWx1ZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2x1dHRpbmVzcygpICogdGhpcy5nZXRTbHV0dGluZXNzV2VpZ2h0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVwZGF0ZVZpc2liaWxpdHkgKCkge1xyXG4gICAgICAgIHRoaXMudmlzaWJsZVNsb3RzID0gdGhpcy5zbG90cy5zbGljZSgwKTtcclxuICAgICAgICBsZXQgcGFyZW50ID0gVGhpbmcuUGFydFJlbGF0aW9uLmdldExlZnQodGhpcyk7XHJcbiAgICAgICAgaWYgKHBhcmVudCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgbGV0IGNsb3RoaW5nID0gPEFycmF5PENsb3RoaW5nPj5UaGluZy5XZWFyUmVsYXRpb24uZ2V0UmlnaHQocGFyZW50KTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjbG90aGluZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvdmVyaW5nID0gY2xvdGhpbmdbaV0uZ2V0Q292ZXJpbmdTbG90cygpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBjb3ZlcmluZy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpZHggPSB0aGlzLnZpc2libGVTbG90cy5pbmRleE9mKGNvdmVyaW5nW2tdKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID49IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlU2xvdHMuc3BsaWNlKGlkeCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpc2libGVTbG90cy5sZW5ndGggPT0gMCkgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzVW5jb3ZlcmVkICgpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVZpc2liaWxpdHkoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlU2xvdHMubGVuZ3RoID09IHRoaXMuc2xvdHMubGVuZ3RoICYmIHRoaXMuc2xvdHMubGVuZ3RoID4gMDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlU3RhdHVzICgpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVZpc2liaWxpdHkoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFNvcmVuZXNzICh0aGluZyA6IFRoaW5nKSB7XHJcbiAgICAgICAgbGV0IGJvZHlwYXJ0cyA9IFRoaW5nLlBhcnRSZWxhdGlvbi5nZXRSaWdodFR5cGUodGhpbmcsIEJvZHlwYXJ0KTtcclxuICAgICAgICBsZXQgc29yZW5lc3MgPSAwO1xyXG4gICAgICAgIGJvZHlwYXJ0cy5mb3JFYWNoKChib2R5cGFydCA6IEJvZHlwYXJ0KSA9PiB7XHJcbiAgICAgICAgICAgIHNvcmVuZXNzICs9IGJvZHlwYXJ0LmdldFdlaWdodGVkU29yZW5lc3MoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gc29yZW5lc3M7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRHZW5kZXJWYWx1ZU9uICh0aGluZyA6IFRoaW5nKSA6IEJvZHlwYXJ0VmFsdWVSZXN1bHQge1xyXG4gICAgICAgIGxldCB3ZWlnaHQgPSAwO1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IDA7XHJcblxyXG4gICAgICAgIGxldCBib2R5cGFydHMgPSBUaGluZy5QYXJ0UmVsYXRpb24uZ2V0UmlnaHRUeXBlKHRoaW5nLCBCb2R5cGFydCk7XHJcbiAgICAgICAgYm9keXBhcnRzLmZvckVhY2goKGJvZHlwYXJ0IDogQm9keXBhcnQpID0+IHtcclxuICAgICAgICAgICAgd2VpZ2h0ICs9IGJvZHlwYXJ0LmdldEdlbmRlcldlaWdodCgpO1xyXG4gICAgICAgICAgICB2YWx1ZSArPSBib2R5cGFydC5nZXRXZWlnaHRlZEdlbmRlclZhbHVlKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHdlaWdodCA6IHdlaWdodCxcclxuICAgICAgICAgICAgdmFsdWUgOiB2YWx1ZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRTbHV0dGluZXNzVmFsdWVPbiAodGhpbmcgOiBUaGluZykgOiBCb2R5cGFydFZhbHVlUmVzdWx0IHtcclxuICAgICAgICBsZXQgd2VpZ2h0ID0gMDtcclxuICAgICAgICBsZXQgdmFsdWUgPSAwO1xyXG5cclxuICAgICAgICBsZXQgYm9keXBhcnRzID0gVGhpbmcuUGFydFJlbGF0aW9uLmdldFJpZ2h0VHlwZSh0aGluZywgQm9keXBhcnQpO1xyXG4gICAgICAgIGJvZHlwYXJ0cy5mb3JFYWNoKChib2R5cGFydCA6IEJvZHlwYXJ0KSA9PiB7XHJcbiAgICAgICAgICAgIHdlaWdodCArPSBib2R5cGFydC5nZXRTbHV0dGluZXNzV2VpZ2h0KCk7XHJcbiAgICAgICAgICAgIHZhbHVlICs9IGJvZHlwYXJ0LmdldFdlaWdodGVkU2x1dHRpbmVzc1ZhbHVlKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHdlaWdodCA6IHdlaWdodCxcclxuICAgICAgICAgICAgdmFsdWUgOiB2YWx1ZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGFuZ2VzIHRoZSBib2R5cGFydCBzbyB0aGF0IGl0IG1hdGNoZXMgdGhlIGRlc2lyZWQgZ2VuZGVyVmFsdWUuXHJcbiAgICAgKiBUaGlzIG5lZWRzIHRvIGJlIGltcGxlbWVudGVkIGluIGFsbCBjbGFzc2VzIGluaGVyaXRpbmcgZnJvbSBCb2R5cGFydCwgYXMgbm90IGFsbCBib2R5cGFydHMgaGF2ZSBhIHNpbXBsZSBcImdlbmRlclZhbHVlXCIgdG8gYXNzaWduLlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGdlbmRlclZhbHVlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhcnJhbmdlR2VuZGVyVmFsdWUgKGdlbmRlclZhbHVlIDogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5nZW5kZXJWYWx1ZSA9IGdlbmRlclZhbHVlO1xyXG4gICAgICAgICg8SHVtYW5vaWQ+IHRoaXMuZ2V0UGFydE9uZSgpKS5pbnZhbGlkYXRlQ2FjaGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBdHRlbXB0cyB0byBpbmNyZWFzZSBGZW1pbmluaXR5IGJ5IDUgKiBhbW91bnQuIFdpbGwgcmVhZCBDdXJyZW50IEdlbmRlciBWYWx1ZSBhbmQgdHJ5IHRvIHJlYXNzaWduIGl0LlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGFtb3VudFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaW5jcmVhc2VGZW1pbmluaXR5IChhbW91bnQgOiBudW1iZXIpIHtcclxuICAgICAgICBsZXQgY3VycmVudEdWID0gdGhpcy5nZXRHZW5kZXJWYWx1ZSgpO1xyXG4gICAgICAgIHRoaXMuYXJyYW5nZUdlbmRlclZhbHVlKGN1cnJlbnRHViArICg1ICogYW1vdW50KSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXR0ZW1wdHMgdG8gaW5jcmVhc2UgTWFzY3VsaW5pdHkgYnkgNSAqIGFtb3VudC4gV2lsbCByZWFkIEN1cnJlbnQgR2VuZGVyIFZhbHVlIGFuZCB0cnkgdG8gcmVhc3NpZ24gaXQuXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYW1vdW50XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpbmNyZWFzZU1hc2N1bGluaXR5IChhbW91bnQgOiBudW1iZXIpIHtcclxuICAgICAgICBsZXQgY3VycmVudEdWID0gdGhpcy5nZXRHZW5kZXJWYWx1ZSgpO1xyXG4gICAgICAgIHRoaXMuYXJyYW5nZUdlbmRlclZhbHVlKGN1cnJlbnRHViAtICg1ICogYW1vdW50KSk7XHJcbiAgICB9XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vQm9keXBhcnQudHNcIiAvPlxyXG5jbGFzcyBTZXhTdGljayBleHRlbmRzIEJvZHlwYXJ0IHtcclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBob3cgd2lkZSB0aGUgbWVtYmVyIGlzLiBJZiB0aGlzIFNleFN0aWNrIGRlcGVuZHNvIG4gYXJvdXNhbCwgdGhpcyBmdW5jdGlvbiBuZWVkcyB0byBvY25zaWRlciB0aGF0LlxyXG4gICAgICogVGhpcyBpcyByZWxldmFudCB0byBob3cgbXVjaCBhIFNleEhvbGUgd2lsbCBiZSBzdHJldGNoZWQgb3V0IGJ5IHRoaXMgU2V4U3RpY2suXHJcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0V2lkZSAoKSA6IE1lYXN1cmUge1xyXG4gICAgICAgIHJldHVybiBuZXcgTWVhc3VyZSgpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGhvdyBsb25nIHRoZSBtZW1iZXIgaXMuIElmIHRoaXMgU2V4U3RpY2sgZGVwZW5kcyBvbiBhcm91c2FsLCB0aGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGNvbnNpZGVyIHRoYXQuXHJcbiAgICAgKiBUaGlzIGlzIHJlbGV2YW50IHRvIGhvdyBtdWNoIGEgU2V4SG9sZSB3aWxsIGJlIHN0cmV0Y2hlZCBvdXQgYnkgdGhpcyBTZXhTdGljay5cclxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRMb25nICgpIDogTWVhc3VyZXtcclxuICAgICAgICByZXR1cm4gbmV3IE1lYXN1cmUoKVxyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL0JvZHlwYXJ0LnRzXCIgLz5cclxuY2xhc3MgU2V4SG9sZSBleHRlbmRzIEJvZHlwYXJ0IHtcclxuXHJcbn0iLCJpbnRlcmZhY2UgTWVhc3VyZW1lbnQge1xyXG4gICAgZ2V0VGV4dCA6ICgpID0+IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgbWVhc3VyZSBpcyBBTFdBWVMgY3JlYXRlZCBpbiBDZW50aW1ldGVycy5cclxuICogSG93IGEgbWVhc3VyZSBnZXRzIGRpc3BsYXllZCBjYW4gZ2V0IGNoYW5nZWQgbGF0ZXIsIHNvIGFsd2F5cyB1c2UgdGhpcyBjbGFzcyBmb3IgbWVhc3VyZXMhXHJcbiAqIElmIHlvdSdyZSBhbWVyaWNhbiwgdXNlIHRoZSBoZWxwZXIgc3RhdGljIGZ1bmN0aW9ucyBmcm9tSW5jaGVzLCBmcm9tRmVldCB0byBnZXQgY2VudGltZXRlcnMuXHJcbiAqIEZvciBpbnN0YW5jZSwgNScxMFwiIHdvdWxkIGdldCBjcmVhdGVkIGFzOlxyXG4gKiBuZXcgTWVhc3VyZShNZWFzdXJlLmZyb21GZWV0KDUpICsgTWVhc3VyZS5mcm9tSW5jaGVzKDEwKVxyXG4gKlxyXG4gKiBJZiBtdWx0aXBsZSBtZWFzdXJlbWVudHMgYXJlIGFkZGVkLCBpdCdzIHRyZWF0ZWQgYXMgYXJlYSBvZiBzb21ldGhpbmcgc2ltcGxlIGxpa2UgcmVjdGFuZ2xlcyBvciBjdWJlcyBvciB3aGF0ZXZlciwgdGhleSdyZSBqdXN0IG11bHRpcGxpZWQuXHJcbiAqL1xyXG5jbGFzcyBNZWFzdXJlIGltcGxlbWVudHMgTWVhc3VyZW1lbnQge1xyXG4gICAgcHJpdmF0ZSB1bml0cyA6IG51bWJlcjtcclxuICAgIHByaXZhdGUgc2lkZXMgOiBudW1iZXI7XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yICguLi5zaWRlcyA6IEFycmF5PG51bWJlcj4pIHtcclxuICAgICAgICB0aGlzLnVuaXRzID0gMTtcclxuICAgICAgICBzaWRlcy5mb3JFYWNoKChzaWRlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudW5pdHMgKj0gc2lkZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNpZGVzID0gc2lkZXMubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgIFtcIjBcIiwgXCIxXCIsIFwiMlwiLCBcIjNcIiwgXCI0XCIsIFwiNVwiLCBcIjZcIiwgXCI3XCIsIFwiOFwiLCBcIjlcIl1cclxuICAgIHByaXZhdGUgc3VwZXJzY3JpcHQgPSAgIFtcIlwiICwgXCJcIiAsIFwiwrJcIiwgXCLCs1wiLCBcIuKBtFwiLCBcIuKBtVwiLCBcIuKBtlwiLCBcIuKBt1wiLCBcIuKBuFwiLCBcIuKBuVwiXTtcclxuXHJcbiAgICBwdWJsaWMgZ2V0VGV4dCAoKSB7XHJcbiAgICAgICAgbGV0IG1ldGVycyA9IE1hdGgucG93KHRoaXMuc2lkZXMsIDEwMCk7XHJcbiAgICAgICAgaWYgKHRoaXMudW5pdHMgPiBtZXRlcnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuICgrKHRoaXMudW5pdHMgLyBtZXRlcnMpLnRvRml4ZWQoMikpLnRvU3RyaW5nKCkgKyBcIm1cIiArIHRoaXMuc3VwZXJzY3JpcHRbdGhpcy5zaWRlc107XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudW5pdHMudG9TdHJpbmcoKSArIFwiY21cIiArIHRoaXMuc3VwZXJzY3JpcHRbdGhpcy5zaWRlc107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXROdW1iZXIgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVuaXRzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTaWRlcyAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2lkZXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBmcm9tSW5jaGVzIChpbmNoZXMgOiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gaW5jaGVzICogMi41NDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGZyb21GZWV0IChmZWV0IDogbnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIGZlZXQgKiAzMC40ODtcclxuICAgIH1cclxufVxyXG5cclxuY2xhc3MgTWVhc3VyZUxpcXVpZCBpbXBsZW1lbnRzIE1lYXN1cmVtZW50IHtcclxuICAgIHByaXZhdGUgdW5pdHMgOiBudW1iZXI7XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChtaWxsaWxpdGVycyA6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMudW5pdHMgPSBtaWxsaWxpdGVycztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0VGV4dCAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudW5pdHMgPiAxMDAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoKyh0aGlzLnVuaXRzIC8gMTAwMCkudG9GaXhlZCgyKSkudG9TdHJpbmcoKSArIFwiTFwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVuaXRzLnRvU3RyaW5nKCkgKyBcIm1MXCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUxpdGVycyAobGl0ZXJzIDogbnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIGxpdGVycyAqIDEwMDA7XHJcbiAgICB9XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vQm9keXBhcnQudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vSHVtYW5vaWQvSHVtYW5vaWQudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vU2V4U3RpY2sudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vU2V4SG9sZS50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi9NZWFzdXJlLnRzXCIgLz5cclxuY2xhc3MgSHVtYW5vaWRBcm1zIGV4dGVuZHMgQm9keXBhcnQge1xyXG4gICAgcHVibGljIHNvcmVuZXNzV2VpZ2h0ID0gQm9keXBhcnQuV0VJR0hUX0xPVztcclxuICAgIHB1YmxpYyBnZW5kZXJXZWlnaHQgPSBCb2R5cGFydC5XRUlHSFRfTUVESVVNO1xyXG4gICAgcHVibGljIHNsb3RzIDogQXJyYXk8bnVtYmVyPiA9IFtIdW1hbm9pZC5TTE9UX0FSTVNdO1xyXG5cclxuICAgIHB1YmxpYyBnZXQgc2x1dHRpbmVzc1dlaWdodCgpIHtcclxuICAgICAgICBpZiAoKDxIdW1hbm9pZD4gdGhpcy5nZXRQYXJ0T25lKCkpLmlzTWFsZSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBCb2R5cGFydC5XRUlHSFRfSElHSEVTVDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gQm9keXBhcnQuV0VJR0hUX01FRElVTTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldCBzbHV0dGluZXNzV2VpZ2h0KHZhbCkge31cclxuXHJcbiAgICBwdWJsaWMgZ2V0U2x1dHRpbmVzcyAoKSB7XHJcbiAgICAgICAgaWYgKCg8SHVtYW5vaWQ+IHRoaXMuZ2V0UGFydE9uZSgpKS5pc01hbGUoKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRHZW5kZXJWYWx1ZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAxMDAgLSB0aGlzLmdldEdlbmRlclZhbHVlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXREZXNjcmlwdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IGh1bWFub2lkID0gPEh1bWFub2lkPiB0aGlzLmdldFBhcnRPbmUoKTtcclxuICAgICAgICBsZXQgc3RyID0gaHVtYW5vaWQuZ2V0U3RhdChBdHRyaWJ1dGVzLlN0cmVuZ3RoKTtcclxuICAgICAgICBpZiAoc3RyID4gNCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJZb3VyIGFybXMgYW5kIGxlZ3MgYXJlIHJpZGljdWxvdXNseSBodWdlLCBzaG93aW5nIG9mZiBqdXN0IGhvdyBzdHJvbmcgeW91IGFyZS5cIjtcclxuICAgICAgICB9IGVsc2UgaWYgKHN0ciA+IDIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiWW91ciBhcm1zIGFuZCBsZWdzIGFyZSBwcmV0dHkgYmlnIGJlY2F1c2Ugb2YgeW91ciBtdXNjbGVzLlwiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc3RyID09IDIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiWW91IGxvb2sgbGlrZSB5b3UgZG9uJ3QgZXZlbiBsaWZ0LlwiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0R2VuZGVyVmFsdWUgKCkge1xyXG4gICAgICAgIGxldCBodW1hbm9pZCA9IDxIdW1hbm9pZD4gdGhpcy5nZXRQYXJ0T25lKCk7XHJcbiAgICAgICAgbGV0IHN0ciA9IGh1bWFub2lkLmdldFN0YXQoQXR0cmlidXRlcy5TdHJlbmd0aCk7XHJcbiAgICAgICAgcmV0dXJuIDIwICogc3RyO1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL0JvZHlwYXJ0LnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL0h1bWFub2lkL0h1bWFub2lkLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1NleFN0aWNrLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1NleEhvbGUudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vTWVhc3VyZS50c1wiIC8+XHJcbmNsYXNzIEh1bWFub2lkQnJlYXN0cyBleHRlbmRzIEJvZHlwYXJ0IHtcclxuICAgIHB1YmxpYyBzaXplIDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBzaWxpY29uZSA6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgbWlsayA6IG51bWJlciA9IDA7XHJcblxyXG4gICAgcHVibGljIHNvcmVuZXNzV2VpZ2h0ID0gQm9keXBhcnQuV0VJR0hUX01FRElVTTtcclxuICAgIHB1YmxpYyBnZW5kZXJXZWlnaHQgPSBCb2R5cGFydC5XRUlHSFRfSElHSDtcclxuICAgIHB1YmxpYyBzbG90cyA6IEFycmF5PG51bWJlcj4gPSBbSHVtYW5vaWQuU0xPVF9CUkVBU1RTXTtcclxuICAgIHB1YmxpYyBzbHV0dGluZXNzID0gQm9keXBhcnQuU0xVVFRJTkVTU19ISUdIX1NMVVQ7XHJcbiAgICBwdWJsaWMgc2x1dHRpbmVzc1dlaWdodCA9IEJvZHlwYXJ0LldFSUdIVF9NRURJVU07XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChvcHRpb25zPyA6IFRoaW5nT3B0aW9ucykge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMuYWRkR2V0QWx0ZXJhdGlvbnMoKHRoaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBTaXplIDogdGhpcy5zaXplLFxyXG4gICAgICAgICAgICAgICAgU2lsaWNvbmUgOiB0aGlzLnNpbGljb25lLFxyXG4gICAgICAgICAgICAgICAgTWlsayA6IHRoaXMubWlsa1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkU2V0QWx0ZXJhdGlvbnMoKHRoaW5nLCBjaGFuZ2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2l6ZSA9IGNoYW5nZXMuU2l6ZTtcclxuICAgICAgICAgICAgdGhpcy5zaWxpY29uZSA9IGNoYW5nZXMuU2lsaWNvbmU7XHJcbiAgICAgICAgICAgIHRoaXMubWlsayA9IGNoYW5nZXMuTWlsaztcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0U2l6ZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZSArIHRoaXMuc2lsaWNvbmUgKyB0aGlzLm1pbGs7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNpemVUZXh0ICgpIHtcclxuICAgICAgICByZXR1cm4gSHVtYW5vaWRCcmVhc3RzLmdldFNpemVUZXh0KHRoaXMuZ2V0U2l6ZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFNpemVUZXh0IChzaXplIDogbnVtYmVyKSB7XHJcbiAgICAgICAgbGV0IG5hbWVzID0gW1wiZmxhdFwiLCBcIkFBLWN1cFwiLCBcIkEtY3VwXCIsIFwiQi1jdXBcIiwgXCJDLWN1cFwiLCBcIkQtY3VwXCIsIFwiRS1jdXBcIiwgXCJGLWN1cFwiLCBcIkctY3VwXCIsIFwiSC1jdXBcIl07XHJcbiAgICAgICAgaWYgKHNpemUgPj0gbmFtZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIkhVR0VcIjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbmFtZXNbc2l6ZV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRHZW5kZXJWYWx1ZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIEh1bWFub2lkQnJlYXN0cy5nZXRHZW5kZXJGcm9tU2l6ZSh0aGlzLmdldFNpemUoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNsdXR0aW5lc3MgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEdlbmRlclZhbHVlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRHZW5kZXJGcm9tU2l6ZSAoc2l6ZSA6IG51bWJlcikge1xyXG4gICAgICAgIGlmIChzaXplIDw9IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIDIwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8PSAzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAyMCAqIHNpemU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIDgwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXJyYW5nZUdlbmRlclZhbHVlIChndiA6IG51bWJlcikge1xyXG4gICAgICAgIGlmIChndiA8PSAyMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNpemUgPSAwO1xyXG4gICAgICAgICAgICB0aGlzLnNpbGljb25lID0gMDtcclxuICAgICAgICAgICAgdGhpcy5taWxrID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGd2IDwgODApIHtcclxuICAgICAgICAgICAgdGhpcy5zaXplID0gTWF0aC5yb3VuZChndiAvIDIwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNpemUgPSA0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9Cb2R5cGFydC50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9IdW1hbm9pZC9IdW1hbm9pZC50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9TZXhTdGljay50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9TZXhIb2xlLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uLy4uL01lYXN1cmUudHNcIiAvPlxyXG5jbGFzcyBIdW1hbm9pZEJ1dHQgZXh0ZW5kcyBCb2R5cGFydCB7XHJcbiAgICBwdWJsaWMgc2l6ZSA6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgc2lsaWNvbmUgOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIHB1YmxpYyBzb3JlbmVzc1dlaWdodCA9IEJvZHlwYXJ0LldFSUdIVF9NRURJVU07XHJcbiAgICBwdWJsaWMgZ2VuZGVyV2VpZ2h0ID0gQm9keXBhcnQuV0VJR0hUX01FRElVTTtcclxuICAgIHB1YmxpYyBzbG90cyA6IEFycmF5PG51bWJlcj4gPSBbSHVtYW5vaWQuU0xPVF9CVVRUXTtcclxuICAgIHB1YmxpYyBzbHV0dGluZXNzID0gQm9keXBhcnQuU0xVVFRJTkVTU19ISUdIX1NMVVQ7XHJcbiAgICBwdWJsaWMgc2x1dHRpbmVzc1dlaWdodCA9IEJvZHlwYXJ0LldFSUdIVF9NRURJVU07XHJcblxyXG4gICAgcHVibGljIGdldFNsdXR0aW5lc3MgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFNpemUoKSAqIDMzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAob3B0aW9ucz8gOiBUaGluZ09wdGlvbnMpIHtcclxuICAgICAgICBzdXBlcihvcHRpb25zKTtcclxuICAgICAgICB0aGlzLmFkZEdldEFsdGVyYXRpb25zKCh0aGluZykgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgU2l6ZSA6IHRoaXMuc2l6ZSxcclxuICAgICAgICAgICAgICAgIFNpbGljb25lIDogdGhpcy5zaWxpY29uZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkU2V0QWx0ZXJhdGlvbnMoKHRoaW5nLCBjaGFuZ2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2l6ZSA9IGNoYW5nZXMuU2l6ZTtcclxuICAgICAgICAgICAgdGhpcy5zaWxpY29uZSA9IGNoYW5nZXMuU2lsaWNvbmU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNpemUgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNpemUgKyB0aGlzLnNpbGljb25lO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTaXplVGV4dCAoKSB7XHJcbiAgICAgICAgcmV0dXJuIEh1bWFub2lkQnV0dC5nZXRTaXplVGV4dCh0aGlzLmdldFNpemUoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRTaXplVGV4dCAoc2l6ZSA6IG51bWJlcikge1xyXG4gICAgICAgIGxldCBuYW1lcyA9IFtcImZsYXRcIiwgXCJ0aW55XCIsIFwicm91bmRcIiwgXCJwbHVtcFwiXTsgLy8gVE9ETzogZmluaXNoIHRoaXNcclxuICAgICAgICBpZiAoc2l6ZSA+PSBuYW1lcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiZ2FyZ2FudHVhblwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuYW1lc1tzaXplXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEdlbmRlclZhbHVlICgpIHtcclxuICAgICAgICByZXR1cm4gSHVtYW5vaWRCcmVhc3RzLmdldEdlbmRlckZyb21TaXplKHRoaXMuZ2V0U2l6ZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldEdlbmRlckZyb21TaXplIChzaXplIDogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKHNpemUgPD0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gMjA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzaXplIDw9IDIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDMwICogc2l6ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gODA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFRPRE86IFJFUExBQ0UgTlVNQkVSUyBXSVRIIFRBQkxFXHJcbiAgICBwdWJsaWMgYXJyYW5nZUdlbmRlclZhbHVlIChndiA6IG51bWJlcikge1xyXG4gICAgICAgIGlmIChndiA8PSAyMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNpemUgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZ3YgPD0gNjApIHtcclxuICAgICAgICAgICAgdGhpcy5zaXplID0gMTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNpemUgPSAzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9Cb2R5cGFydC50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9IdW1hbm9pZC9IdW1hbm9pZC50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9TZXhTdGljay50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9TZXhIb2xlLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uLy4uL01lYXN1cmUudHNcIiAvPlxyXG5jbGFzcyBIdW1hbm9pZEV4dHJlbWl0eSBleHRlbmRzIEJvZHlwYXJ0IHtcclxuICAgIHB1YmxpYyBuYWlsc1BhaW50ZWQgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgbmFpbENvbG9yID0gMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgbmFpbENvbG9yTmFtZXMgPSBbJ25vbmUnLCAncmVkJywgJ3BpbmsnXTtcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldENvbG9yIChpbmRleCA6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiBIdW1hbm9pZEV4dHJlbWl0eS5uYWlsQ29sb3JOYW1lc1tpbmRleF07XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChvcHRpb25zPyA6IFRoaW5nT3B0aW9ucykge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMuYWRkR2V0QWx0ZXJhdGlvbnMoKHRoaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBQYWludGVkIDogdGhpcy5uYWlsc1BhaW50ZWQsXHJcbiAgICAgICAgICAgICAgICBDb2xvciA6IHRoaXMubmFpbENvbG9yXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRTZXRBbHRlcmF0aW9ucygodGhpbmcsIGNoYW5nZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5uYWlsc1BhaW50ZWQgPSBjaGFuZ2VzLlBhaW50ZWQ7XHJcbiAgICAgICAgICAgIHRoaXMubmFpbENvbG9yID0gY2hhbmdlcy5Db2xvcjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0U2x1dHRpbmVzcyAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0R2VuZGVyVmFsdWUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0R2VuZGVyVmFsdWUgKCkge1xyXG4gICAgICAgIGxldCBuYWlsUGFpbnRlZENvcnJlY3Rpb24gPSB0aGlzLm5haWxDb2xvciAqIDUwOyAvLyBUT0RPOiBEb24ndCBsZWF2ZSB0aGlzIGFzLWlzLi4uIHRoZXJlIHNob3VsZCBiZSBwbGVudHkgb2YgY29sb3JzLlxyXG4gICAgICAgIGxldCBuYWlsUGFpbnRlZENvcnJlY3Rpb25XZWlnaHQgPSB0aGlzLm5haWxzUGFpbnRlZCA/IDMgOiAwO1xyXG5cclxuICAgICAgICBsZXQgZ3YgPSB0aGlzLmdlbmRlclZhbHVlO1xyXG4gICAgICAgIGxldCBndyA9IHRoaXMuZ2VuZGVyV2VpZ2h0O1xyXG5cclxuICAgICAgICByZXR1cm4gKChndiAqIGd3KSArIChuYWlsUGFpbnRlZENvcnJlY3Rpb24gKiBuYWlsUGFpbnRlZENvcnJlY3Rpb25XZWlnaHQpKSAvIChndyArIG5haWxQYWludGVkQ29ycmVjdGlvbldlaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFycmFuZ2VHZW5kZXJWYWx1ZSAoZ3YgOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLmdlbmRlclZhbHVlID0gZ3Y7IC8vIFRPRE86IFRoaXMgd2lsbCBiZSBleHRyZW1pdHkgc2l6ZS9hcHBlYXJhbmNlLiBNYXliZSBtYWtlIGl0IG1vcmUgZGV0YWlsZWQgaWYgaW50ZXJlc3RlZC5cclxuICAgICAgICB0aGlzLm5haWxzUGFpbnRlZCA9IGd2ID4gNjA7XHJcbiAgICAgICAgaWYgKHRoaXMubmFpbHNQYWludGVkKSB7XHJcbiAgICAgICAgICAgIGlmIChndiA+IDcwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5haWxDb2xvciA9IDI7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5haWxDb2xvciA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgKDxIdW1hbm9pZD4gdGhpcy5nZXRQYXJ0T25lKCkpLmludmFsaWRhdGVDYWNoZXMoKTtcclxuICAgIH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9Cb2R5cGFydC50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9IdW1hbm9pZC9IdW1hbm9pZC50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9TZXhTdGljay50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9TZXhIb2xlLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uLy4uL01lYXN1cmUudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiSHVtYW5vaWRFeHRyZW1pdHkudHNcIiAvPlxyXG5jbGFzcyBIdW1hbm9pZEZlZXQgZXh0ZW5kcyBIdW1hbm9pZEV4dHJlbWl0eSB7XHJcbiAgICBwdWJsaWMgc29yZW5lc3NXZWlnaHQgPSBCb2R5cGFydC5XRUlHSFRfTE9XO1xyXG4gICAgcHVibGljIGdlbmRlcldlaWdodCA9IEJvZHlwYXJ0LldFSUdIVF9MT1c7XHJcbiAgICBwdWJsaWMgc2xvdHMgOiBBcnJheTxudW1iZXI+ID0gW0h1bWFub2lkLlNMT1RfRkVFVF07XHJcblxyXG4gICAgcHVibGljIGdldERlc2NyaXB0aW9uICgpIHtcclxuICAgICAgICBsZXQgc2F5ID0gbmV3IFNheSgpO1xyXG4gICAgICAgIGlmICh0aGlzLmdlbmRlclZhbHVlID4gNTUpIHtcclxuICAgICAgICAgICAgc2F5LmFkZChcIllvdXIgZmVldCBhcmUgc21hbGwgYW5kIGN1dGUuXCIpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZW5kZXJWYWx1ZSA8IDQ1KSB7XHJcbiAgICAgICAgICAgIHNheS5hZGQoXCJZb3VyIGZlZXQgYXJlIGJpZyBhbmQgbWFubmlzaC5cIilcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubmFpbHNQYWludGVkKSB7XHJcbiAgICAgICAgICAgIHNheS5hZGQoXCIgWW91ciB0b2VuYWlscyBhcmUgcGFpbnRlZCBcIiArIEh1bWFub2lkRXh0cmVtaXR5LmdldENvbG9yKHRoaXMubmFpbENvbG9yKSArIFwiLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHNheTtcclxuICAgIH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9Cb2R5cGFydC50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9IdW1hbm9pZC9IdW1hbm9pZC50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9TZXhTdGljay50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9TZXhIb2xlLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uLy4uL01lYXN1cmUudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiSHVtYW5vaWRFeHRyZW1pdHkudHNcIiAvPlxyXG5jbGFzcyBIdW1hbm9pZEhhbmRzIGV4dGVuZHMgSHVtYW5vaWRFeHRyZW1pdHkge1xyXG4gICAgcHVibGljIHNvcmVuZXNzV2VpZ2h0ID0gQm9keXBhcnQuV0VJR0hUX0xPVztcclxuICAgIHB1YmxpYyBnZW5kZXJXZWlnaHQgPSBCb2R5cGFydC5XRUlHSFRfTUVESVVNO1xyXG4gICAgcHVibGljIHNsb3RzIDogQXJyYXk8bnVtYmVyPiA9IFtIdW1hbm9pZC5TTE9UX0hBTkRTXTtcclxuXHJcbiAgICBwdWJsaWMgZ2V0RGVzY3JpcHRpb24gKCkge1xyXG4gICAgICAgIGxldCBzYXkgPSBuZXcgU2F5KCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2VuZGVyVmFsdWUgPiA1NSkge1xyXG4gICAgICAgICAgICBzYXkuYWRkKFwiWW91ciBoYW5kcyBhcmUgZGVsaWNhdGUgYW5kIHNsZW5kZXIuXCIpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZW5kZXJWYWx1ZSA8IDQ1KSB7XHJcbiAgICAgICAgICAgIHNheS5hZGQoXCJZb3VyIGhhbmRzIGFyZSByb3VnaCBhbmQgbGFyZ2UuXCIpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm5haWxzUGFpbnRlZCkge1xyXG4gICAgICAgICAgICBzYXkuYWRkKFwiIFlvdXIgdG9lbmFpbHMgYXJlIHBhaW50ZWQgXCIgKyBIdW1hbm9pZEV4dHJlbWl0eS5nZXRDb2xvcih0aGlzLm5haWxDb2xvcikgKyBcIi5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzYXk7XHJcbiAgICB9XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vQm9keXBhcnQudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vSHVtYW5vaWQvSHVtYW5vaWQudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vU2V4U3RpY2sudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vU2V4SG9sZS50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi9NZWFzdXJlLnRzXCIgLz5cclxuY2xhc3MgSHVtYW5vaWRIZWFkIGV4dGVuZHMgQm9keXBhcnQge1xyXG4gICAgcHVibGljIHNvcmVuZXNzV2VpZ2h0ID0gQm9keXBhcnQuV0VJR0hUX01FRElVTTtcclxuICAgIHB1YmxpYyBnZW5kZXJXZWlnaHQgPSBCb2R5cGFydC5XRUlHSFRfTE9XO1xyXG4gICAgLy8gVE9ETzogbWFrZSB0aGVzZSBzbG90cyBhcyBvd24gYm9keXBhcnRzIHNvIHRoYXQgdGhleSBjYW4gYmUgaGFuZGxlZCBiZXR0ZXJcclxuICAgIHB1YmxpYyBzbG90cyA6IEFycmF5PG51bWJlcj4gPSBbSHVtYW5vaWQuU0xPVF9IRUFER0VBUiwgSHVtYW5vaWQuU0xPVF9IQUlSLCBIdW1hbm9pZC5TTE9UX0VBUlMsIEh1bWFub2lkLlNMT1RfRkFDRSwgSHVtYW5vaWQuU0xPVF9FWUVTLCAsIEh1bWFub2lkLlNMT1RfTk9TRSwgSHVtYW5vaWQuU0xPVF9NT1VUSF07XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vQm9keXBhcnQudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vSHVtYW5vaWQvSHVtYW5vaWQudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vU2V4U3RpY2sudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vU2V4SG9sZS50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi9NZWFzdXJlLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uLy4uLy4uLy4uL0VsZW1lbnRzL0NsYXNzZXMvU2F5L09uZU9mLnRzXCIgLz5cclxuY2xhc3MgSHVtYW5vaWRQZW5pcyBleHRlbmRzIFNleFN0aWNrIHtcclxuXHJcbiAgICBwdWJsaWMgc29yZW5lc3NXZWlnaHQgPSBCb2R5cGFydC5XRUlHSFRfSElHSDtcclxuICAgIHB1YmxpYyBnZW5kZXJWYWx1ZSA9IDI1O1xyXG4gICAgcHVibGljIGdlbmRlcldlaWdodCA9IEJvZHlwYXJ0LldFSUdIVF9ISUdIRVNUO1xyXG4gICAgcHVibGljIHNsb3RzIDogQXJyYXk8bnVtYmVyPiA9IFtIdW1hbm9pZC5TTE9UX0NST1RDSF9GUk9OVF07XHJcbiAgICBwdWJsaWMgc2x1dHRpbmVzcyA9IEJvZHlwYXJ0LlNMVVRUSU5FU1NfSElHSF9TTFVUO1xyXG4gICAgcHVibGljIHNsdXR0aW5lc3NXZWlnaHQgPSBCb2R5cGFydC5XRUlHSFRfTUVESVVNO1xyXG5cclxuICAgIHB1YmxpYyBmbGFjY2lkU2l6ZSA9IG5ldyBNZWFzdXJlKDYpO1xyXG4gICAgcHVibGljIGZsYWNjaWRXaWR0aCA9IG5ldyBNZWFzdXJlKDMpO1xyXG4gICAgcHVibGljIGVyZWN0U2l6ZSA9IG5ldyBNZWFzdXJlKDE1KTtcclxuICAgIHB1YmxpYyBlcmVjdFdpZHRoID0gbmV3IE1lYXN1cmUoNik7XHJcblxyXG4gICAgcHJpdmF0ZSBhcm91c2FsTWluaW11bSA6IG51bWJlciA9IDU7XHJcbiAgICBwcml2YXRlIGFyb3VzYWxFcmVjdCA6IG51bWJlciA9IDI1O1xyXG4gICAgcHJpdmF0ZSBmbGFjY2lkTXVsdCA6IG51bWJlcjtcclxuXHJcbiAgICBwdWJsaWMgZ2V0U2x1dHRpbmVzcyAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnVsZ2VTaXplKCkgKiAzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc0dyb3dlciAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmxhY2NpZE11bHQgPCAwLjU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChvcHRpb25zPyA6IFRoaW5nT3B0aW9ucykge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xyXG4gICAgICAgIGlmIChNYXRoLnJhbmRvbSgpID49IDAuNSkge1xyXG4gICAgICAgICAgICAvLyBncm93ZXI/XHJcbiAgICAgICAgICAgIHRoaXMuZmxhY2NpZE11bHQgPSAwLjMzO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHNob3dlcj9cclxuICAgICAgICAgICAgdGhpcy5mbGFjY2lkTXVsdCA9IDAuNzc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYWRkR2V0QWx0ZXJhdGlvbnMoKHRoaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBGU2l6ZSA6IHRoaXMuZmxhY2NpZFNpemUuZ2V0TnVtYmVyKCksXHJcbiAgICAgICAgICAgICAgICBGV2lkdGggOiB0aGlzLmZsYWNjaWRXaWR0aC5nZXROdW1iZXIoKSxcclxuICAgICAgICAgICAgICAgIEVTaXplIDogdGhpcy5lcmVjdFNpemUuZ2V0TnVtYmVyKCksXHJcbiAgICAgICAgICAgICAgICBFV2lkdGggOiB0aGlzLmVyZWN0V2lkdGguZ2V0TnVtYmVyKCksXHJcbiAgICAgICAgICAgICAgICBBTWluIDogdGhpcy5hcm91c2FsTWluaW11bSxcclxuICAgICAgICAgICAgICAgIEFFcmVjdCA6IHRoaXMuYXJvdXNhbEVyZWN0LFxyXG4gICAgICAgICAgICAgICAgRk11bHQgOiB0aGlzLmZsYWNjaWRNdWx0XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRTZXRBbHRlcmF0aW9ucygodGhpbmcsIGNoYW5nZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mbGFjY2lkU2l6ZSA9IG5ldyBNZWFzdXJlKGNoYW5nZXMuRlNpemUpO1xyXG4gICAgICAgICAgICB0aGlzLmZsYWNjaWRXaWR0aCA9IG5ldyBNZWFzdXJlKGNoYW5nZXMuRldpZHRoKTtcclxuICAgICAgICAgICAgdGhpcy5lcmVjdFNpemUgPSBuZXcgTWVhc3VyZShjaGFuZ2VzLkVTaXplKTtcclxuICAgICAgICAgICAgdGhpcy5lcmVjdFdpZHRoID0gbmV3IE1lYXN1cmUoY2hhbmdlcy5FV2lkdGgpO1xyXG4gICAgICAgICAgICB0aGlzLmFyb3VzYWxNaW5pbXVtID0gY2hhbmdlcy5BTWluO1xyXG4gICAgICAgICAgICB0aGlzLmFyb3VzYWxFcmVjdCA9IGNoYW5nZXMuQUVyZWN0O1xyXG4gICAgICAgICAgICB0aGlzLmZsYWNjaWRNdWx0ID0gY2hhbmdlcy5GTXVsdDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QWN0dWFsU2l6ZSAoKSB7XHJcbiAgICAgICAgbGV0IG1pbiA9IHRoaXMuZmxhY2NpZFNpemUuZ2V0TnVtYmVyKCk7XHJcbiAgICAgICAgbGV0IG1heCA9IHRoaXMuZXJlY3RTaXplLmdldE51bWJlcigpO1xyXG4gICAgICAgIGxldCB2YXJpYWJsZVNpemUgPSAobWF4IC0gbWluKTtcclxuXHJcbiAgICAgICAgbGV0IGZpbmFsU2l6ZSA9IG1pbiArICh2YXJpYWJsZVNpemUgKiB0aGlzLmdldEFyb3VzYWxQZXJjKCkpO1xyXG4gICAgICAgIHJldHVybiBmaW5hbFNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzQmlnICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRCdWxnZVNpemUoKSA+IDIyO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRBcm91c2FsUGVyYyAoKSB7XHJcbiAgICAgICAgLy9UT0RPOiBHZXQgYXJvdXNhbCBmcm9tIG93bmVyXHJcbiAgICAgICAgbGV0IGFyb3VzYWwgPSAwO1xyXG4gICAgICAgIGxldCBudW1TdGVwcyA9IHRoaXMuYXJvdXNhbEVyZWN0IC0gdGhpcy5hcm91c2FsTWluaW11bTtcclxuICAgICAgICBsZXQgYXJvdXNhbFBlcmMgPSAoYXJvdXNhbCAtIHRoaXMuYXJvdXNhbE1pbmltdW0pIC8gbnVtU3RlcHM7XHJcbiAgICAgICAgYXJvdXNhbFBlcmMgPSBhcm91c2FsUGVyYyA8IDAgPyAwIDpcclxuICAgICAgICAgICAgYXJvdXNhbFBlcmMgPiAxID8gMSA6XHJcbiAgICAgICAgICAgICAgICBhcm91c2FsUGVyYztcclxuICAgICAgICByZXR1cm4gYXJvdXNhbFBlcmM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzRmxhY2NpZCAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QXJvdXNhbFBlcmMoKSA8IDAuNjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNFcmVjdCAoKSB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzRmxhY2NpZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRBY3R1YWxXaWR0aCAoKSB7XHJcbiAgICAgICAgbGV0IG1pbiA9IHRoaXMuZmxhY2NpZFdpZHRoLmdldE51bWJlcigpO1xyXG4gICAgICAgIGxldCBtYXggPSB0aGlzLmVyZWN0V2lkdGguZ2V0TnVtYmVyKCk7XHJcbiAgICAgICAgbGV0IHZhcmlhYmxlU2l6ZSA9IChtYXggLSBtaW4pO1xyXG4gICAgICAgIGxldCBudW1TdGVwcyA9IHRoaXMuYXJvdXNhbEVyZWN0IC0gdGhpcy5hcm91c2FsTWluaW11bTtcclxuXHJcbiAgICAgICAgLy9UT0RPOiBHZXQgYXJvdXNhbCBmcm9tIG93bmVyXHJcbiAgICAgICAgbGV0IGFyb3VzYWwgPSAwO1xyXG4gICAgICAgIGxldCBhcm91c2FsUGVyYyA9IChhcm91c2FsIC0gdGhpcy5hcm91c2FsTWluaW11bSkgLyBudW1TdGVwcztcclxuICAgICAgICBhcm91c2FsUGVyYyA9IGFyb3VzYWxQZXJjIDwgMCA/IDAgOlxyXG4gICAgICAgICAgICBhcm91c2FsUGVyYyA+IDEgPyAxIDpcclxuICAgICAgICAgICAgICAgIGFyb3VzYWxQZXJjO1xyXG5cclxuICAgICAgICBsZXQgZmluYWxTaXplID0gbWluICsgKHZhcmlhYmxlU2l6ZSAqIGFyb3VzYWxQZXJjKTtcclxuICAgICAgICByZXR1cm4gZmluYWxTaXplO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRMb25nICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IE1lYXN1cmUodGhpcy5nZXRBY3R1YWxTaXplKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRXaWRlICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IE1lYXN1cmUodGhpcy5nZXRBY3R1YWxXaWR0aCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QnVsZ2VTaXplICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRBY3R1YWxTaXplKCkgKyAoMyAqIHRoaXMuZ2V0QWN0dWFsV2lkdGgoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNpemVUZXh0ICgpIHtcclxuICAgICAgICByZXR1cm4gSHVtYW5vaWRQZW5pcy5nZXRTaXplVGV4dCh0aGlzLmdldEJ1bGdlU2l6ZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFNpemVUZXh0IChzaXplIDogbnVtYmVyKSB7XHJcbiAgICAgICAgLy8gc2l6ZSA9IGxvbmcgKyAod2lkdGggKiAzKVxyXG4gICAgICAgIC8vIHNvIGxvbmcgZnJvbSAxIHRvIDIwLCBsZXRzIHNheVxyXG4gICAgICAgIC8vIHdpZHRoIGZyb20gMSB0byA2LCBzbyAzIHRvIDE4XHJcbiAgICAgICAgbGV0IHNpemVUYWJsZSA9IFtcclxuICAgICAgICAgICAgWzAsIFwibm9uZXhpc3RlbnRcIl0sXHJcbiAgICAgICAgICAgIFsxLCBcInRpbnlcIl0sIC8vIDNsIDJ3ID0gOVxyXG4gICAgICAgICAgICBbMjAsIFwic21hbGxcIl0sIC8vIDEwbCAzdyA9IDE5XHJcbiAgICAgICAgICAgIFsyMywgXCJtZWRpdW1cIl0sIC8vIDE0bCAzdyA9IDI0XHJcbiAgICAgICAgICAgIFsyNywgXCJiaWdcIl0sXHJcbiAgICAgICAgICAgIFszMiwgXCJodWdlXCJdLFxyXG4gICAgICAgICAgICBbMzYsIFwibW9uc3Ryb3VzXCJdXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgbGV0IGk7XHJcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IHNpemVUYWJsZS5sZW5ndGggJiYgc2l6ZVRhYmxlW2ldWzBdIDwgc2l6ZTsgaSsrKSB7fVxyXG4gICAgICAgIHJldHVybiBzaXplVGFibGVbaSAtIDFdWzFdO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRHZW5kZXJWYWx1ZSAoKSB7XHJcbiAgICAgICAgbGV0IHNpemVUYWJsZSA9IFtcclxuICAgICAgICAgICAgWzEwLCA2MF0sIC8vIDNsIDJ3ID0gOVxyXG4gICAgICAgICAgICBbMjAsIDQ1XSwgLy8gMTBsIDN3ID0gMTlcclxuICAgICAgICAgICAgWzIzLCAzNV0sIC8vIDE0bCAzdyA9IDI0XHJcbiAgICAgICAgICAgIFsyNywgMjhdLFxyXG4gICAgICAgICAgICBbMzIsIDI0XSxcclxuICAgICAgICAgICAgWzM2LCAxOF1cclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICBsZXQgaTtcclxuICAgICAgICBmb3IgKGkgPSAxOyBpIDwgc2l6ZVRhYmxlLmxlbmd0aCAmJiBzaXplVGFibGVbaV1bMF0gPCB0aGlzLmdldEFjdHVhbFNpemUoKTsgaSsrKSB7fVxyXG4gICAgICAgIHJldHVybiBzaXplVGFibGVbaSAtIDFdWzFdO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhcnJhbmdlR2VuZGVyVmFsdWUgKGd2IDogbnVtYmVyKSB7XHJcbiAgICAgICAgbGV0IHNpemVUYWJsZSA9IFtcclxuICAgICAgICAgICAgWzYwLCAzLCAyXSwgLy8gM2wgMncgPSA5XHJcbiAgICAgICAgICAgIFs0NSwgMTAsIDNdLCAvLyAxMGwgM3cgPSAxOVxyXG4gICAgICAgICAgICBbMzUsIDE0LCAzXSwgLy8gMTRsIDN3ID0gMjRcclxuICAgICAgICAgICAgWzI4LCAxNywgM10sXHJcbiAgICAgICAgICAgIFsyNCwgMTksIDRdLFxyXG4gICAgICAgICAgICBbMTgsIDIyLCA0LjVdXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgbGV0IGk7XHJcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IHNpemVUYWJsZS5sZW5ndGggJiYgc2l6ZVRhYmxlW2ldWzBdID4gZ3Y7IGkrKykge31cclxuXHJcbiAgICAgICAgdGhpcy5mbGFjY2lkU2l6ZSA9IG5ldyBNZWFzdXJlKHRoaXMuZmxhY2NpZE11bHQgKiBzaXplVGFibGVbaSAtIDFdWzFdKTtcclxuICAgICAgICB0aGlzLmZsYWNjaWRXaWR0aCA9IG5ldyBNZWFzdXJlKHRoaXMuZmxhY2NpZE11bHQgKiBzaXplVGFibGVbaSAtIDFdWzJdKTtcclxuICAgICAgICB0aGlzLmVyZWN0U2l6ZSA9IG5ldyBNZWFzdXJlKHNpemVUYWJsZVtpIC0gMV1bMV0pO1xyXG4gICAgICAgIHRoaXMuZXJlY3RXaWR0aCA9IG5ldyBNZWFzdXJlKHNpemVUYWJsZVtpIC0gMV1bMl0pO1xyXG5cclxuICAgICAgICAoPEh1bWFub2lkPiB0aGlzLmdldFBhcnRPbmUoKSkuaW52YWxpZGF0ZUNhY2hlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0U3lub255bSAoKSB7XHJcbiAgICAgICAgLy8gVE9ETzogQWRkIG1vcmUgd2hlbiBjcmVhdGl2ZS5cclxuICAgICAgICBsZXQgY29ja05hbWVzID0gW1xyXG4gICAgICAgICAgICBcImNvY2tcIixcclxuICAgICAgICAgICAgXCJkaWNrXCJcclxuICAgICAgICBdO1xyXG4gICAgICAgIHJldHVybiAobmV3IE9uZU9mKE9uZU9mLlBVUkVMWV9BVF9SQU5ET00sIC4uLmNvY2tOYW1lcykuZ2V0T25lKCkpO1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL0JvZHlwYXJ0LnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL0h1bWFub2lkL0h1bWFub2lkLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1NleFN0aWNrLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1NleEhvbGUudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vTWVhc3VyZS50c1wiIC8+XHJcbmNsYXNzIEh1bWFub2lkU2tpbiBleHRlbmRzIEJvZHlwYXJ0IHtcclxuICAgIHB1YmxpYyBzb3JlbmVzc1dlaWdodCA9IDA7XHJcbiAgICBwdWJsaWMgZ2VuZGVyV2VpZ2h0ID0gQm9keXBhcnQuV0VJR0hUX01FRElVTTtcclxuICAgIHB1YmxpYyBzbG90cyA6IEFycmF5PG51bWJlcj4gPSBbXHJcbiAgICAgICAgSHVtYW5vaWQuU0xPVF9GQUNFLCBIdW1hbm9pZC5TTE9UX05FQ0ssIEh1bWFub2lkLlNMT1RfU0hPVUxERVJTLFxyXG4gICAgICAgIEh1bWFub2lkLlNMT1RfQVJNUywgSHVtYW5vaWQuU0xPVF9IQU5EUywgSHVtYW5vaWQuU0xPVF9VUFBFUl9DSEVTVCxcclxuICAgICAgICBIdW1hbm9pZC5TTE9UX01JRFJJRkYsIEh1bWFub2lkLlNMT1RfV0FJU1QsIEh1bWFub2lkLlNMT1RfQkFDSyxcclxuICAgICAgICBIdW1hbm9pZC5TTE9UX0hJUFMsIEh1bWFub2lkLlNMT1RfQlVUVCwgSHVtYW5vaWQuU0xPVF9MRUdfVVBQRVIsXHJcbiAgICAgICAgSHVtYW5vaWQuU0xPVF9MRUdfTE9XRVJcclxuICAgIF07XHJcblxyXG4gICAgcHVibGljIHNraW5Tb2Z0bmVzcyA9IDU7IC8vIDAgdG8gMTAsIDAgYmVpbmcgcm91Z2ggYW5kIDEwIGJlaW5nIHNpbGt5XHJcbiAgICBwdWJsaWMgc2tpbkhhaXJpbmVzcyA9IDI7IC8vIDAgdG8gMTAsIDEwIGJlaW5nIGxpdGVyYWwgZ29yaWxsYSBhbmQgMCBiZWluZyBzbW9vdGggZXZlcnl3aGVyZSwgMX4yIHByb2JhYmx5IHNvbWUgYXJtcGl0IG9yIHNvbWV0aGluZ1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAob3B0aW9ucz8gOiBUaGluZ09wdGlvbnMpIHtcclxuICAgICAgICBzdXBlcihvcHRpb25zKTtcclxuICAgICAgICB0aGlzLmFkZEdldEFsdGVyYXRpb25zKCh0aGluZykgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgU29mdG5lc3MgOiB0aGlzLnNraW5Tb2Z0bmVzcyxcclxuICAgICAgICAgICAgICAgIEhhaXJpbmVzcyA6IHRoaXMuc2tpbkhhaXJpbmVzc1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkU2V0QWx0ZXJhdGlvbnMoKHRoaW5nLCBjaGFuZ2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2tpblNvZnRuZXNzID0gY2hhbmdlcy5Tb2Z0bmVzcztcclxuICAgICAgICAgICAgdGhpcy5za2luSGFpcmluZXNzID0gY2hhbmdlcy5IYWlyaW5lc3M7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNsdXR0aW5lc3MgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEdlbmRlclZhbHVlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldERlc2NyaXB0aW9uICgpIHtcclxuICAgICAgICBsZXQgb3duZXIgPSA8UGVyc29uPiB0aGlzLmdldFBhcnRPbmUoKTtcclxuICAgICAgICBsZXQgZ3JlZW4gPSAob3duZXIuZ2V0U3RhdChBdHRyaWJ1dGVzLkNvcnJ1cHRpb24pID4gNTApO1xyXG5cclxuICAgICAgICBsZXQgc2F5ID0gbmV3IFNheShcIllvdXIgc2tpbiBpcyBcIik7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNraW5Tb2Z0bmVzcyA+IDcpIHtcclxuICAgICAgICAgICAgc2F5LmFkZChcInBlcmZlY3RseSBzbW9vdGhcIik7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNraW5Tb2Z0bmVzcyA+IDQpIHtcclxuICAgICAgICAgICAgc2F5LmFkZChcInNtb290aFwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzYXkuYWRkKFwicm91Z2hcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzYXkuYWRkKFwiIGFuZCBcIik7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNraW5IYWlyaW5lc3MgPiA4KSB7XHJcbiAgICAgICAgICAgIHNheS5hZGQoXCJoYWlyeSwgbGlrZSBhIGdvcmlsbGEnc1wiKVxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5za2luSGFpcmluZXNzID4gNikge1xyXG4gICAgICAgICAgICBzYXkuYWRkKFwiaGFpcnlcIilcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2tpbkhhaXJpbmVzcyA+IDMpIHtcclxuICAgICAgICAgICAgc2F5LmFkZChcInNvbWV3aGF0IGhhaXJsZXNzXCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNheS5hZGQoXCJjb21wbGV0ZWx5IGhhaXJsZXNzXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2F5LmFkZChcIi5cIik7XHJcblxyXG4gICAgICAgIGlmIChncmVlbikge1xyXG4gICAgICAgICAgICBzYXkuYWRkKFwiIFRoZSB0YWludCBvZiB5b3VyIGNvcnJ1cHRpb24gaGFzIHR1cm5lZCB5b3VyIHNraW4gZ3JlZW4sIGxpa2UgYW4gb3JjJ3MuXCIpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gc2F5O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRHZW5kZXJWYWx1ZSAoKSB7XHJcbiAgICAgICAgbGV0IHNvZnRuZXNzUmFuayA9IHRoaXMuc2tpblNvZnRuZXNzICogMTAwO1xyXG4gICAgICAgIGxldCBoYWlyaW5lc3NSYW5rID0gMTAwMCAtICh0aGlzLnNraW5IYWlyaW5lc3MgKiAxMDApO1xyXG5cclxuICAgICAgICByZXR1cm4gKHNvZnRuZXNzUmFuayArIGhhaXJpbmVzc1JhbmspIC8gMjA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFycmFuZ2VHZW5kZXJWYWx1ZSAoZ2VuZGVyVmFsdWUgOiBudW1iZXIpIHtcclxuICAgICAgICBsZXQgaWRlYWwgPSBnZW5kZXJWYWx1ZSAvIDEwO1xyXG4gICAgICAgIHRoaXMuc2tpbkhhaXJpbmVzcz0gMTAgLSBNYXRoLnJvdW5kKGlkZWFsKTtcclxuICAgICAgICB0aGlzLnNraW5Tb2Z0bmVzcyAgPSBNYXRoLnJvdW5kKGlkZWFsKTtcclxuICAgICAgICAoPEh1bWFub2lkPiB0aGlzLmdldFBhcnRPbmUoKSkuaW52YWxpZGF0ZUNhY2hlcygpO1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL0JvZHlwYXJ0LnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL0h1bWFub2lkL0h1bWFub2lkLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1NleFN0aWNrLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1NleEhvbGUudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vTWVhc3VyZS50c1wiIC8+XHJcbi8vIFRPRE86IERlY2lkZSB3aHRoZXIgdGhlcmUgd2lsbCBiZSBhIHNlbWVuLXByb2R1Y2luZyBib2R5cGFydFxyXG5jbGFzcyBIdW1hbm9pZFRlc3RpY2xlcyBleHRlbmRzIEJvZHlwYXJ0IHtcclxuICAgIHB1YmxpYyBzaXplIDogbnVtYmVyID0gMTsgLy8gXCJOb3JtYWxcIlxyXG5cclxuICAgIHB1YmxpYyBzb3JlbmVzc1dlaWdodCA9IEJvZHlwYXJ0LldFSUdIVF9ISUdIO1xyXG4gICAgcHVibGljIGdlbmRlcldlaWdodCA9IEJvZHlwYXJ0LldFSUdIVF9ISUdIRVNUO1xyXG4gICAgcHVibGljIHNsb3RzIDogQXJyYXk8bnVtYmVyPiA9IFtIdW1hbm9pZC5TTE9UX0NST1RDSF9GUk9OVF07XHJcbiAgICBwdWJsaWMgc2x1dHRpbmVzcyA9IEJvZHlwYXJ0LlNMVVRUSU5FU1NfTUVESVVNX0FWRVJBR0U7XHJcbiAgICBwdWJsaWMgc2x1dHRpbmVzc1dlaWdodCA9IEJvZHlwYXJ0LldFSUdIVF9NRURJVU07XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChvcHRpb25zPyA6IFRoaW5nT3B0aW9ucykge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMuYWRkR2V0QWx0ZXJhdGlvbnMoKHRoaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBTaXplIDogdGhpcy5zaXplXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRTZXRBbHRlcmF0aW9ucygodGhpbmcsIGNoYW5nZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zaXplID0gY2hhbmdlcy5TaXplO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRCdWxnZVNpemUgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEdlbmRlcldlaWdodCAoKSB7XHJcbiAgICAgICAgcmV0dXJuIDgwOyAvLyBtYWxlIHNleCBvcmdhblxyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL0JvZHlwYXJ0LnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL0h1bWFub2lkL0h1bWFub2lkLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1NleFN0aWNrLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1NleEhvbGUudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vTWVhc3VyZS50c1wiIC8+XHJcbmNsYXNzIEh1bWFub2lkVmFnaW5hIGV4dGVuZHMgU2V4SG9sZSB7XHJcbiAgICBwdWJsaWMgZ2VuZGVyVmFsdWUgPSA4NTtcclxuICAgIHB1YmxpYyBnZW5kZXJXZWlnaHQgPSBCb2R5cGFydC5XRUlHSFRfSElHSEVTVDtcclxuICAgIHB1YmxpYyBzbG90cyA6IEFycmF5PG51bWJlcj4gPSBbSHVtYW5vaWQuU0xPVF9DUk9UQ0hfRlJPTlRdO1xyXG4gICAgcHVibGljIHNsdXR0aW5lc3MgPSA1MDtcclxuICAgIHB1YmxpYyBzbHV0dGluZXNzV2VpZ2h0ID0gQm9keXBhcnQuV0VJR0hUX01FRElVTTtcclxuXHJcbiAgICBwdWJsaWMgZ2V0U2x1dHRpbmVzcyAoKSB7XHJcbiAgICAgICAgLy8gcmV2ZXJzZSBmZW1pbmluaXR5IVxyXG4gICAgICAgIGxldCBzbHV0ID0gMTAwIC0gdGhpcy5nZW5kZXJWYWx1ZTsgLy8gZ2VuZGVyVmFsdWUgZ29lcyBmcm9tIDUwIHRvIDEwMCwgc28gdGhpcyBpcyA1MCBtYXguXHJcbiAgICAgICAgbGV0IG9ic2NlbmVseU9wZW4gPSBmYWxzZTsgLy8gVE9ETzogR3JhYiBmcm9tIHNleEhvbGUgb3Blbm5lc3MuXHJcblxyXG4gICAgICAgIHNsdXQgKz0gb2JzY2VuZWx5T3BlbiA/IDI1IDogMDtcclxuXHJcbiAgICAgICAgcmV0dXJuIHNsdXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldERlc2NyaXB0aW9uICgpIHtcclxuICAgICAgICBsZXQgc2F5ID0gbmV3IFNheShcIllvdXIgXCIpO1xyXG4gICAgICAgIGxldCBoYWlybGVzcyA9IHRoaXMuZ2VuZGVyVmFsdWUgPj0gODA7XHJcbiAgICAgICAgbGV0IHNtYWxsQ2xpdCA9IHRoaXMuZ2VuZGVyVmFsdWUgPj0gNTU7XHJcbiAgICAgICAgbGV0IGlubmllID0gdGhpcy5nZW5kZXJWYWx1ZSA+IDcwO1xyXG4gICAgICAgIGxldCBvYnNjZW5lbHlPcGVuID0gZmFsc2U7IC8vIFRPRE86IEdyYWIgZnJvbSBzZXhIb2xlIG9wZW5uZXNzLlxyXG5cclxuICAgICAgICBpZiAoaGFpcmxlc3MpIHtcclxuICAgICAgICAgICAgc2F5LmFkZChcImhhaXJsZXNzIFwiLCBTYXkuUFVTU1kpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNheS5hZGQoXCJoYWlyeSBcIiwgU2F5LlBVU1NZKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNheS5hZGQoXCIgXCIpO1xyXG5cclxuICAgICAgICBpZiAoaW5uaWUpIHtcclxuICAgICAgICAgICAgc2F5LmFkZChcImlzIHVzdWFsbHkgY29tcGxldGVseSBjb3ZlcmVkIGJ5IGl0cyBsaXBzXCIpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2F5LmFkZChcImhhcyBzb21lIGN1cnRhaW5zIGVzY2FwaW5nIGl0cyBsaXBzXCIpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXNtYWxsQ2xpdCkge1xyXG4gICAgICAgICAgICBzYXkuYWRkKFwiIGFuZCBoYXMgYW4gb3ZlcnNpemVkIGNsaXRcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzYXkuYWRkKFwiLlwiKTtcclxuXHJcbiAgICAgICAgaWYgKG9ic2NlbmVseU9wZW4pIHtcclxuICAgICAgICAgICAgc2F5LmFkZChcIiBJdCBpcyBjdXJyZW50bHkgc3RyZXRjaGVkIG9wZW4gb2JzY2VuZWx5LlwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBzYXk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFycmFuZ2VHZW5kZXJWYWx1ZSAoZ3YgOiBudW1iZXIpIHtcclxuICAgICAgICAvLyBQdXNzaWVzIHJhbmdlIGZyb20gNTAgdG8gMTAwIG9ubHkuXHJcbiAgICAgICAgZ3YgPSAoZ3YgLyAyKSArIDUwO1xyXG4gICAgICAgIHRoaXMuZ2VuZGVyVmFsdWUgPSBndjtcclxuICAgICAgICAoPEh1bWFub2lkPiB0aGlzLmdldFBhcnRPbmUoKSkuaW52YWxpZGF0ZUNhY2hlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFN5bm9ueW0gKCkge1xyXG4gICAgICAgIC8vIFRPRE86IEFkZCBtb3JlIHdoZW4gY3JlYXRpdmUuXHJcbiAgICAgICAgbGV0IGNvY2tOYW1lcyA9IFtcclxuICAgICAgICAgICAgXCJwdXNzeVwiLFxyXG4gICAgICAgICAgICBcIndvbWFuaG9vZFwiXHJcbiAgICAgICAgXTtcclxuICAgICAgICByZXR1cm4gKG5ldyBPbmVPZihPbmVPZi5QVVJFTFlfQVRfUkFORE9NLCAuLi5jb2NrTmFtZXMpLmdldE9uZSgpKTtcclxuICAgIH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9Cb2R5cGFydC50c1wiIC8+XHJcbmNsYXNzIEh1bWFub2lkVG9yc28gZXh0ZW5kcyBCb2R5cGFydCB7XHJcbiAgICAvLyBUaGlzIG9uZSBpcyBtb3N0bHkgdXNlZCBmb3Igc29yZW5lc3MuIEl0J3MgdGhlIGRlZmF1bHQgYXR0YWNrIHRhcmdldC5cclxuXHJcbiAgICBwdWJsaWMgZ2VuZGVyV2VpZ2h0IDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBzbHV0dGluZXNzV2VpZ2h0IDogbnVtYmVyID0gMDtcclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJIdW1hbm9pZC9IdW1hbm9pZEFybXMudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiSHVtYW5vaWQvSHVtYW5vaWRCcmVhc3RzLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIkh1bWFub2lkL0h1bWFub2lkQnV0dC50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJIdW1hbm9pZC9IdW1hbm9pZEV4dHJlbWl0eS50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJIdW1hbm9pZC9IdW1hbm9pZEZlZXQudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiSHVtYW5vaWQvSHVtYW5vaWRIYW5kcy50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJIdW1hbm9pZC9IdW1hbm9pZEhlYWQudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiSHVtYW5vaWQvSHVtYW5vaWRQZW5pcy50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJIdW1hbm9pZC9IdW1hbm9pZFNraW4udHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiSHVtYW5vaWQvSHVtYW5vaWRUZXN0aWNsZXMudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiSHVtYW5vaWQvSHVtYW5vaWRWYWdpbmEudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiSHVtYW5vaWQvSHVtYW5vaWRUb3Jzby50c1wiIC8+XHJcblxyXG5cclxuLy8gVE9ETzogQWRkIG5lY2sgaWYgdGhlcmUncyBhIHBvaW50IHRvIGl0IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1RoaW5nLnRzXCIgLz5cclxuaW50ZXJmYWNlIENsb3RoaW5nT3B0aW9ucyBleHRlbmRzIFRoaW5nT3B0aW9ucyB7XHJcbiAgICB0b3BEZXNjcmlwdGlvbj8gOiBTYXk7XHJcbiAgICBib3R0b21EZXNjcmlwdGlvbj8gOiBTYXk7XHJcbiAgICBmZWV0RGVzY3JpcHRpb24/IDogU2F5O1xyXG59XHJcblxyXG5pbnRlcmZhY2UgQ2xvdGhpbmdXZWFyZXJWYWx1ZSB7XHJcbiAgICB3ZWlnaHQgOiBudW1iZXI7XHJcbiAgICB2YWx1ZSA6IG51bWJlcjtcclxufVxyXG5cclxuY2xhc3MgQ2xvdGhpbmcgZXh0ZW5kcyBUaGluZyB7XHJcbiAgICBwdWJsaWMgc2xvdHMgOiBBcnJheTxudW1iZXI+ID0gW107XHJcbiAgICBwdWJsaWMgdHJhbnNwYXJlbnRTbG90cyA6IEFycmF5PG51bWJlcj4gPSBbXTtcclxuICAgIHB1YmxpYyBsYXllciA6IG51bWJlciA9IENsb3RoaW5nLkxBWUVSX01FRElVTTtcclxuICAgIHB1YmxpYyBpc1Zpc2libGUgPSBmYWxzZTtcclxuICAgIHB1YmxpYyB2aXNpYmxlT24gOiBBcnJheTxudW1iZXI+ID0gW107XHJcblxyXG4gICAgLy8gUGFkZGluZzogZ2V0cyBhZGRlZCB0byBjdXJyZW50IHNpemUuIENhbiBiZSBuZWdhdGl2ZVxyXG4gICAgLy8gbWF4OiBJZiBjdXJyZW50IHNpemUgPiBtYXgsIGN1cnJlbnQgc2l6ZSA9IG1heC4gT24gLTEgdGhpcyBpcyBub3QgY29uc2lkZXJlZC5cclxuICAgIC8vIHRpZ2h0OiBJZiBjdXJyZW50IHNpemUgPiB0aWdodCwgcGVyc29uIGJlY29tZXMgdGlnaHQuIE9uIC0xIHRoaXMgaXMgbm90IGNvbnNpZGVyZWQuXHJcbiAgICAvLyBsb29zZTogaWYgY3VycmVudCBzaXplIDwgbG9vc2UsIHBlcnNvbiBiZWNvbWVzIGxvb3NlIC0gY2FuIGJlIG92ZXJyaWRlbiBieSBjb3ZlcmluZyBjbG90aGVzXHJcbiAgICAvLyBJZiBzb21ldGhpbmcgaXMgbm90IHVzZWQsIGxlYXZlIGFzIHVuZGVmaW5lZFxyXG4gICAgLy8gV291bGQgYmUgZnVuIHRvIG1ha2UgdGhlbSBidXJzdCBpZiB0b28gbXVjaCBvdmVyIG1heCwgYnV0IHRoYXQncyBub3QgZ29pbmcgdG8gYmUgdXNlZCByaWdodCBub3dcclxuICAgIHB1YmxpYyBicmVhc3RQYWRkaW5nIDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBtYXhCcmVhc3RTaXplIDogbnVtYmVyID0gLTE7XHJcbiAgICBwdWJsaWMgdGlnaHRCcmVhc3RTaXplIDogbnVtYmVyID0gLTE7XHJcbiAgICBwdWJsaWMgbG9vc2VCcmVhc3RTaXplIDogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvLyBQYWRkaW5nOiBnZXRzIGFkZGVkIHRvIGN1cnJlbnQgc2l6ZS4gQ2FuIGJlIG5lZ2F0aXZlXHJcbiAgICAvLyBtYXg6IElmIGN1cnJlbnQgc2l6ZSA+IG1heCwgY3VycmVudCBzaXplID0gbWF4LiBPbiAtMSB0aGlzIGlzIG5vdCBjb25zaWRlcmVkLlxyXG4gICAgLy8gdGlnaHQ6IElmIGN1cnJlbnQgc2l6ZSA+IHRpZ2h0LCBwZXJzb24gYmVjb21lcyB0aWdodC4gT24gLTEgdGhpcyBpcyBub3QgY29uc2lkZXJlZC5cclxuICAgIC8vIGxvb3NlOiBpZiBjdXJyZW50IHNpemUgPCBsb29zZSwgcGVyc29uIGJlY29tZXMgbG9vc2UgLSBjYW4gYmUgb3ZlcnJpZGVuIGJ5IGNvdmVyaW5nIGNsb3RoZXNcclxuICAgIC8vIElmIHNvbWV0aGluZyBpcyBub3QgdXNlZCwgbGVhdmUgYXMgdW5kZWZpbmVkXHJcbiAgICAvLyBXb3VsZCBiZSBmdW4gdG8gbWFrZSB0aGVtIGJ1cnN0IGlmIHRvbyBtdWNoIG92ZXIgbWF4LCBidXQgdGhhdCdzIG5vdCBnb2luZyB0byBiZSB1c2VkIHJpZ2h0IG5vd1xyXG4gICAgcHVibGljIGNyb3RjaFBhZGRpbmcgOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIG1heENyb3RjaFNpemUgOiBudW1iZXIgPSAtMTtcclxuICAgIHB1YmxpYyB0aWdodENyb3RjaFNpemUgOiBudW1iZXIgPSAtMTtcclxuICAgIHB1YmxpYyBsb29zZUNyb3RjaFNpemUgOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8vIFBhZGRpbmc6IGdldHMgYWRkZWQgdG8gY3VycmVudCBzaXplLiBDYW4gYmUgbmVnYXRpdmVcclxuICAgIC8vIG1heDogSWYgY3VycmVudCBzaXplID4gbWF4LCBjdXJyZW50IHNpemUgPSBtYXguIE9uIC0xIHRoaXMgaXMgbm90IGNvbnNpZGVyZWQuXHJcbiAgICAvLyB0aWdodDogSWYgY3VycmVudCBzaXplID4gdGlnaHQsIHBlcnNvbiBiZWNvbWVzIHRpZ2h0LiBPbiAtMSB0aGlzIGlzIG5vdCBjb25zaWRlcmVkLlxyXG4gICAgLy8gbG9vc2U6IGlmIGN1cnJlbnQgc2l6ZSA8IGxvb3NlLCBwZXJzb24gYmVjb21lcyBsb29zZSAtIGNhbiBiZSBvdmVycmlkZW4gYnkgY292ZXJpbmcgY2xvdGhlc1xyXG4gICAgLy8gSWYgc29tZXRoaW5nIGlzIG5vdCB1c2VkLCBsZWF2ZSBhcyB1bmRlZmluZWRcclxuICAgIC8vIFdvdWxkIGJlIGZ1biB0byBtYWtlIHRoZW0gYnVyc3QgaWYgdG9vIG11Y2ggb3ZlciBtYXgsIGJ1dCB0aGF0J3Mgbm90IGdvaW5nIHRvIGJlIHVzZWQgcmlnaHQgbm93XHJcbiAgICBwdWJsaWMgYnV0dFBhZGRpbmcgOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIG1heEJ1dHRTaXplIDogbnVtYmVyID0gLTE7XHJcbiAgICBwdWJsaWMgdGlnaHRCdXR0U2l6ZSA6IG51bWJlciA9IC0xO1xyXG4gICAgcHVibGljIGxvb3NlQnV0dFNpemUgOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBhbnkgdGltZSBhbnl0aGluZyBjb3VsZCBjaGFuZ2UgY2xvdGhpbmcgb24gYSBwZXJzb24uXHJcbiAgICAgKiBSaXBwZWQgYSBjbG90aGluZz8gVXBkYXRlIGFsbCBjbG90aGVzLlxyXG4gICAgICogQ2hhbmdlZCBicmVhc3Qgc2l6ZT8gVXBkYXRlIGFsbCBjbG90aGVzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBkYXRlU3RhdHVzICgpIHtcclxuICAgICAgICB0aGlzLnZpc2libGVPbiA9IFtdO1xyXG4gICAgICAgIHRoaXMudmlzaWJsZU9uLnB1c2goLi4udGhpcy5zbG90cyk7XHJcbiAgICAgICAgbGV0IHdlYXJlciA9IFRoaW5nLldlYXJSZWxhdGlvbi5nZXRMZWZ0KHRoaXMpO1xyXG4gICAgICAgIGlmICh3ZWFyZXIgPT0gdW5kZWZpbmVkKSByZXR1cm47XHJcblxyXG4gICAgICAgIGxldCBjbG90aHMgPSBUaGluZy5XZWFyUmVsYXRpb24uZ2V0UmlnaHQod2VhcmVyKTtcclxuICAgICAgICBsZXQgY292ZXJlZFNsb3RzID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjbG90aHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHdvcm4gPSBjbG90aHNbaV07XHJcbiAgICAgICAgICAgIGlmICgod29ybiAhPSB0aGlzKSAmJiB3b3JuLmxheWVyID4gdGhpcy5sYXllcikge1xyXG4gICAgICAgICAgICAgICAgY292ZXJlZFNsb3RzLnB1c2goLi4ud29ybi5nZXRDb3ZlcmluZ1Nsb3RzKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnZpc2libGVPbiA9IHRoaXMudmlzaWJsZU9uLmZpbHRlcih2aXNpYmxlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGNvdmVyZWRTbG90cy5pbmRleE9mKHZpc2libGUpID09IC0xO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IHRoaXMudmlzaWJsZU9uLmxlbmd0aCA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldENvdmVyaW5nU2xvdHMgKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnRyYW5zcGFyZW50U2xvdHMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2xvdHMuc2xpY2UoMCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5zbG90cy5maWx0ZXIoKHZhbHVlLCBpbmRleCwgYXJyYXkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNwYXJlbnRTbG90cy5pbmRleE9mKHZhbHVlKSA9PSAtMTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIExBWUVSX0xPV0VTVCA9IDA7XHJcbiAgICBwdWJsaWMgc3RhdGljIExBWUVSX0xPVyA9IDU7XHJcbiAgICBwdWJsaWMgc3RhdGljIExBWUVSX01FRElVTSA9IDEwO1xyXG4gICAgcHVibGljIHN0YXRpYyBMQVlFUl9ISUdIID0gMTU7XHJcbiAgICBwdWJsaWMgc3RhdGljIExBWUVSX0hJR0hFU1QgPSAyMDtcclxuXHJcbiAgICBwdWJsaWMgZ2VuZGVyVmFsdWUgOiBudW1iZXIgPSA1MDtcclxuICAgIHB1YmxpYyBzbHV0dGluZXNzVmFsdWUgOiBudW1iZXIgPSA0MDtcclxuXHJcbiAgICBwdWJsaWMgZ2V0R2VuZGVyV2VpZ2h0ICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlT24ubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRHZW5kZXJWYWx1ZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZGVyVmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNsdXR0aW5lc3NXZWlnaHQgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVPbi5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNsdXR0aW5lc3NWYWx1ZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2x1dHRpbmVzc1ZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0R2VuZGVyVmFsdWVPbiAocCA6IFRoaW5nKSA6IENsb3RoaW5nV2VhcmVyVmFsdWUge1xyXG4gICAgICAgIGxldCB3ZWlnaHQgPSAwO1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IDA7XHJcbiAgICAgICAgbGV0IGNsb3RoZXMgPSBUaGluZy5XZWFyUmVsYXRpb24uZ2V0UmlnaHQocCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjbG90aGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHdlaWdodCArPSBjbG90aGVzW2ldLmdldEdlbmRlcldlaWdodCgpO1xyXG4gICAgICAgICAgICB2YWx1ZSArPSBjbG90aGVzW2ldLmdldEdlbmRlcldlaWdodCgpICogY2xvdGhlc1tpXS5nZXRHZW5kZXJWYWx1ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB3ZWlnaHQgOiB3ZWlnaHQsXHJcbiAgICAgICAgICAgIHZhbHVlIDogdmFsdWVcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0U2x1dHRpbmVzc1ZhbHVlT24gKHAgOiBUaGluZykgOiBDbG90aGluZ1dlYXJlclZhbHVlIHtcclxuICAgICAgICBsZXQgd2VpZ2h0ID0gMDtcclxuICAgICAgICBsZXQgdmFsdWUgPSAwO1xyXG4gICAgICAgIGxldCBjbG90aGVzID0gVGhpbmcuV2VhclJlbGF0aW9uLmdldFJpZ2h0KHApO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2xvdGhlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB3ZWlnaHQgKz0gY2xvdGhlc1tpXS5nZXRTbHV0dGluZXNzV2VpZ2h0KCk7XHJcbiAgICAgICAgICAgIHZhbHVlICs9IGNsb3RoZXNbaV0uZ2V0U2x1dHRpbmVzc1dlaWdodCgpICogY2xvdGhlc1tpXS5nZXRTbHV0dGluZXNzVmFsdWUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgd2VpZ2h0IDogd2VpZ2h0LFxyXG4gICAgICAgICAgICB2YWx1ZSA6IHZhbHVlXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vVGhpbmdzL0Nsb3RoaW5nLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL0FjdGlvbi50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9SdWxlLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1J1bGVib29rLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uLy4uL0VsZW1lbnRzL0NsYXNzZXMvU2F5L1NheUJvbGQudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vRWxlbWVudHMvTW9kdWxlcy9IeXBlcmxpbmtIYW5kbGVyLnRzXCIgLz5cclxuXHJcbmNsYXNzIEFjdGlvblJlbW92ZSBleHRlbmRzIEFjdGlvbiB7XHJcbiAgICBwdWJsaWMgc3RhdGljIGNoZWNrOiBSdWxlYm9vazxBY3Rpb25SZW1vdmU+ID0gbmV3IFJ1bGVib29rKFwiQ2hlY2sgUmVtb3ZpbmdcIik7XHJcbiAgICBwdWJsaWMgc3RhdGljIGNhcnJ5OiBSdWxlYm9vazxBY3Rpb25SZW1vdmU+ID0gbmV3IFJ1bGVib29rKFwiQ2Fycnkgb3V0IFJlbW92aW5nXCIpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTmVlZHMgdG8gcmV0dXJuIGEgc3RyaW5nIGV4cGxhaW5pbmcgd2hhdCB0aGUgcGxheWVyIHdpbGwgZG8gaWYgaGUgZG9lcyB0aGlzIGFjdGlvbi5cclxuICAgICAqIEZvciBpbnN0YW5jZSwgQWN0aW9uVGFraW5nIHNob3VsZCByZXR1cm4gc29tZXRoaW5nIGxpa2UgcmV0dXJuIFwidGFrZSBcIiArIHRoaXMubm91bnNbMF0uZ2V0TmFtZSgpLFxyXG4gICAgICogICB3aGljaCB3b3VsZCByZWFkIGFzIFwidGFrZSB0aGluZ1wiLlxyXG4gICAgICogICByZW1lbWJlciB0aGF0IHRoaW5ncyBpbXBsZW1lbnQgUFJJTlRBQkxFIGludGVyZmFjZSwgc28geW91IGNhbiBnZXQgdGhlaXIgbmFtZXMuXHJcbiAgICAgKiBAcmV0dXJucyB7U2F5fVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0Q29tbWFuZFRleHQgKCkge1xyXG4gICAgICAgIHJldHVybiBcInRha2Ugb2ZmIFwiICsgKHRoaXMuZ2V0Tm91bigwKSAhPSB1bmRlZmluZWQgPyB0aGlzLmdldE5vdW4oMCkuZ2V0UHJpbnRlZE5hbWUoKSA6IFwiXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRDbG90aGluZyAoKSA6IENsb3RoaW5ne1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldE5vdW4oMCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBjaGVja0lzV2VhcmFibGUgPSBBY3Rpb25SZW1vdmUuY2hlY2suY3JlYXRlQW5kQWRkUnVsZSh7XHJcbiAgICAgICAgbmFtZSA6IFwiSXMgbm91biBhIGNsb3RoaW5nXCIsXHJcbiAgICAgICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfSElHSEVTVCxcclxuICAgICAgICBjb2RlIDogKHJ1bm5lciA6IFJ1bGVib29rUnVubmVyPEFjdGlvblJlbW92ZT4pID0+IHtcclxuICAgICAgICAgICAgbGV0IGFjdGlvbiA9IHJ1bm5lci5ub3VuO1xyXG4gICAgICAgICAgICBsZXQgbm91biA9IGFjdGlvbi5nZXRDbG90aGluZygpO1xyXG4gICAgICAgICAgICBpZiAoIShub3VuIGluc3RhbmNlb2YgQ2xvdGhpbmcpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWN0aW9uLmFjdG9yID09IFdvcmxkU3RhdGUucGxheWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnNheS5hZGQoXCJZb3UgY2FuIG9ubHkgcmVtb3ZlIENsb3RoaW5nLlwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgY2hlY2tJc0hlbGQgPSBBY3Rpb25SZW1vdmUuY2hlY2suY3JlYXRlQW5kQWRkUnVsZSh7XHJcbiAgICAgICAgbmFtZSA6IFwiSXMgbm91biB3b3JuXCIsXHJcbiAgICAgICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfSElHSCxcclxuICAgICAgICBjb2RlIDogYXN5bmMgKHJ1bm5lciA6IFJ1bGVib29rUnVubmVyPEFjdGlvblJlbW92ZT4pID0+IHtcclxuICAgICAgICAgICAgbGV0IGFjdGlvbiA9IHJ1bm5lci5ub3VuO1xyXG4gICAgICAgICAgICBsZXQgbm91biA9IGFjdGlvbi5nZXRDbG90aGluZygpO1xyXG4gICAgICAgICAgICBpZiAoIVRoaW5nLldlYXJSZWxhdGlvbi5pc1JpZ2h0KGFjdGlvbi5hY3Rvciwgbm91bikpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24uYWN0b3IgPT0gV29ybGRTdGF0ZS5wbGF5ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBhY3Rpb24uc2F5LmFkZChcIllvdSBhcmUgbm90IHdlYXJpbmcgaXQuXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBjYXJyeURlZmF1bHQgPSBBY3Rpb25SZW1vdmUuY2FycnkuY3JlYXRlQW5kQWRkUnVsZSh7XHJcbiAgICAgICAgbmFtZSA6IFwiU2V0IENsb3RoaW5nIGFzIENhcnJpZWRcIixcclxuICAgICAgICBmaXJzdFByaW9yaXR5IDogUnVsZS5QUklPUklUWV9NRURJVU0sXHJcbiAgICAgICAgY29kZSA6IChydW5uZXIgOiBSdWxlYm9va1J1bm5lcjxBY3Rpb25SZW1vdmU+KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBhY3Rpb24gPSBydW5uZXIubm91bjtcclxuICAgICAgICAgICAgbGV0IG5vdW4gPSBhY3Rpb24uZ2V0Q2xvdGhpbmcoKTtcclxuICAgICAgICAgICAgVGhpbmcuQ2FycnlSZWxhdGlvbi5zZXRSZWxhdGlvbihhY3Rpb24uYWN0b3IsIG5vdW4pO1xyXG5cclxuICAgICAgICAgICAgbGV0IGFjdG9yID0gYWN0aW9uLmFjdG9yO1xyXG4gICAgICAgICAgICBsZXQgdGhpbmcgPSAoPFRoaW5nPmFjdGlvbi5nZXROb3VuKDApKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChhY3RvciA9PSBXb3JsZFN0YXRlLnBsYXllcikge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uLnNheS5hZGQobmV3IFNheUJvbGQodGhpbmcsIFwiOiBcIiksIFwiUmVtb3ZlZC5cIik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb24uc2F5LmFkZChuZXcgU2F5VGhlKCksIGFjdG9yLCBcIiB0YWtlcyBvZmYgXCIsIG5ldyBTYXlUaGUoKSwgdGhpbmcsIFwiLlwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcbi8qKlxyXG4gKiBIeXBlcmxpbmtpbmdcclxuICovXHJcbkVsZW1lbnRzLkh5cGVybGlua0hhbmRsZXIuSHlwZXJsaW5raW5nUnVsZWJvb2suYWRkUnVsZShuZXcgUnVsZShcclxuICAgIHtcclxuICAgICAgICBuYW1lIDogXCJIeXBlcmxpbmsgLSBSZW1vdmVcIixcclxuICAgICAgICBmaXJzdFByaW9yaXR5IDogUnVsZS5QUklPUklUWV9ISUdIRVNULFxyXG4gICAgICAgIGNvZGUgOiAocnVsZWJvb2sgOiBSdWxlYm9va1J1bm5lcjxUaGluZz4pID0+IHtcclxuICAgICAgICAgICAgbGV0IHRoaW5nID0gPFRoaW5nPiBydWxlYm9vay5ub3VuO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaW5nIGluc3RhbmNlb2YgQ2xvdGhpbmcgJiYgKFRoaW5nLldlYXJSZWxhdGlvbi5pc1JpZ2h0KFdvcmxkU3RhdGUucGxheWVyLCB0aGluZykpKSB7XHJcbiAgICAgICAgICAgICAgICBFbGVtZW50cy5IeXBlcmxpbmtIYW5kbGVyLmFkZEF2YWlsYWJsZUFjdGlvbihcIlJlbW92ZVwiLCBuZXcgQWN0aW9uUmVtb3ZlKFdvcmxkU3RhdGUucGxheWVyLCB0aGluZykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4pKTtcclxuXHJcbi8qKlxyXG4gSW52ZW50b3J5XHJcbiAqL1xyXG5FbGVtZW50cy5JbnZlbnRvcnlIYW5kbGVyLkxpbmtpbmdUaGluZy5hZGRSdWxlKG5ldyBSdWxlKFxyXG4gICAge1xyXG4gICAgICAgIG5hbWUgOiBcIkludmVudG9yeSAtIFJlbW92ZVwiLFxyXG4gICAgICAgIGZpcnN0UHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0xPV0VTVCxcclxuICAgICAgICBjb2RlIDogKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8VGhpbmc+KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCB0aGluZyA9IDxUaGluZz4gcnVsZWJvb2subm91bjtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGluZyBpbnN0YW5jZW9mIENsb3RoaW5nICYmIChUaGluZy5XZWFyUmVsYXRpb24uaXNSaWdodChXb3JsZFN0YXRlLnBsYXllciwgdGhpbmcpKSkge1xyXG4gICAgICAgICAgICAgICAgRWxlbWVudHMuSW52ZW50b3J5SGFuZGxlci5wcmludFRoaW5nTGluayhcIlJcIiwgbmV3IEFjdGlvblJlbW92ZShXb3JsZFN0YXRlLnBsYXllciwgdGhpbmcpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuKSk7IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1RoaW5ncy9DbG90aGluZy50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9BY3Rpb24udHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vUnVsZS50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9SdWxlYm9vay50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi9FbGVtZW50cy9DbGFzc2VzL1NheS9TYXlCb2xkLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uLy4uL0VsZW1lbnRzL01vZHVsZXMvSHlwZXJsaW5rSGFuZGxlci50c1wiIC8+XHJcblxyXG5jbGFzcyBBY3Rpb25XZWFyIGV4dGVuZHMgQWN0aW9uIHtcclxuICAgIHB1YmxpYyBzdGF0aWMgY2hlY2s6IFJ1bGVib29rPEFjdGlvbldlYXI+ID0gbmV3IFJ1bGVib29rKFwiQ2hlY2sgV2VhcmluZ1wiKTtcclxuICAgIHB1YmxpYyBzdGF0aWMgY2Fycnk6IFJ1bGVib29rPEFjdGlvbldlYXI+ID0gbmV3IFJ1bGVib29rKFwiQ2Fycnkgb3V0IFdlYXJpbmdcIik7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOZWVkcyB0byByZXR1cm4gYSBzdHJpbmcgZXhwbGFpbmluZyB3aGF0IHRoZSBwbGF5ZXIgd2lsbCBkbyBpZiBoZSBkb2VzIHRoaXMgYWN0aW9uLlxyXG4gICAgICogRm9yIGluc3RhbmNlLCBBY3Rpb25UYWtpbmcgc2hvdWxkIHJldHVybiBzb21ldGhpbmcgbGlrZSByZXR1cm4gXCJ0YWtlIFwiICsgdGhpcy5ub3Vuc1swXS5nZXROYW1lKCksXHJcbiAgICAgKiAgIHdoaWNoIHdvdWxkIHJlYWQgYXMgXCJ0YWtlIHRoaW5nXCIuXHJcbiAgICAgKiAgIHJlbWVtYmVyIHRoYXQgdGhpbmdzIGltcGxlbWVudCBQUklOVEFCTEUgaW50ZXJmYWNlLCBzbyB5b3UgY2FuIGdldCB0aGVpciBuYW1lcy5cclxuICAgICAqIEByZXR1cm5zIHtTYXl9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRDb21tYW5kVGV4dCAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFwid2VhciBcIiArICh0aGlzLmdldE5vdW4oMCkgIT0gdW5kZWZpbmVkID8gdGhpcy5nZXROb3VuKDApLmdldFByaW50ZWROYW1lKCkgOiBcIlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0Q2xvdGhpbmcgKCkgOiBDbG90aGluZ3tcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXROb3VuKDApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgY2hlY2tJc1dlYXJhYmxlID0gQWN0aW9uV2Vhci5jaGVjay5jcmVhdGVBbmRBZGRSdWxlKHtcclxuICAgICAgICBuYW1lIDogXCJJcyBub3VuIGEgY2xvdGhpbmdcIixcclxuICAgICAgICBmaXJzdFByaW9yaXR5IDogUnVsZS5QUklPUklUWV9ISUdIRVNULFxyXG4gICAgICAgIGNvZGUgOiAocnVubmVyIDogUnVsZWJvb2tSdW5uZXI8QWN0aW9uV2Vhcj4pID0+IHtcclxuICAgICAgICAgICAgbGV0IGFjdGlvbiA9IHJ1bm5lci5ub3VuO1xyXG4gICAgICAgICAgICBsZXQgbm91biA9IGFjdGlvbi5nZXRDbG90aGluZygpO1xyXG4gICAgICAgICAgICBpZiAoIShub3VuIGluc3RhbmNlb2YgQ2xvdGhpbmcpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWN0aW9uLmFjdG9yID09IFdvcmxkU3RhdGUucGxheWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnNheS5hZGQoXCJZb3UgY2FuIG9ubHkgd2VhciBDbG90aGluZy5cIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGNoZWNrSXNIZWxkID0gQWN0aW9uV2Vhci5jaGVjay5jcmVhdGVBbmRBZGRSdWxlKHtcclxuICAgICAgICBuYW1lIDogXCJJcyBub3VuIGhlbGRcIixcclxuICAgICAgICBmaXJzdFByaW9yaXR5IDogUnVsZS5QUklPUklUWV9ISUdILFxyXG4gICAgICAgIGNvZGUgOiBhc3luYyAocnVubmVyIDogUnVsZWJvb2tSdW5uZXI8QWN0aW9uV2Vhcj4pID0+IHtcclxuICAgICAgICAgICAgbGV0IGFjdGlvbiA9IHJ1bm5lci5ub3VuO1xyXG4gICAgICAgICAgICBsZXQgbm91biA9IGFjdGlvbi5nZXRDbG90aGluZygpO1xyXG4gICAgICAgICAgICBpZiAoIVRoaW5nLkNhcnJ5UmVsYXRpb24uaXNSaWdodChhY3Rpb24uYWN0b3IsIG5vdW4pKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWN0aW9uLmFjdG9yID09IFdvcmxkU3RhdGUucGxheWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnNheS5hZGQoXCIoZmlyc3QgdGFraW5nIHRoZSBcIiwgbm91biwgXCIpXCIsIFNheS5MSU5FX0JSRUFLKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCB0YWtpbmdBY3Rpb24gPSBuZXcgQWN0aW9uVGFrZShhY3Rpb24uYWN0b3IsIG5vdW4pO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGFraW5nQWN0aW9uLmV4ZWN1dGUoKTtcclxuICAgICAgICAgICAgICAgIGFjdGlvbi5zYXkuYWRkKHRha2luZ0FjdGlvbi5zYXkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFUaGluZy5DYXJyeVJlbGF0aW9uLmlzUmlnaHQoYWN0aW9uLmFjdG9yLCBub3VuKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgY2FycnlEZWZhdWx0ID0gQWN0aW9uV2Vhci5jYXJyeS5jcmVhdGVBbmRBZGRSdWxlKHtcclxuICAgICAgICBuYW1lIDogXCJTZXQgQ2xvdGhpbmcgYXMgV29yblwiLFxyXG4gICAgICAgIGZpcnN0UHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX01FRElVTSxcclxuICAgICAgICBjb2RlIDogKHJ1bm5lciA6IFJ1bGVib29rUnVubmVyPEFjdGlvbldlYXI+KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBhY3Rpb24gPSBydW5uZXIubm91bjtcclxuICAgICAgICAgICAgbGV0IG5vdW4gPSBhY3Rpb24uZ2V0Q2xvdGhpbmcoKTtcclxuICAgICAgICAgICAgVGhpbmcuV2VhclJlbGF0aW9uLnNldFJlbGF0aW9uKGFjdGlvbi5hY3Rvciwgbm91bik7XHJcblxyXG4gICAgICAgICAgICBsZXQgYWN0b3IgPSBhY3Rpb24uYWN0b3I7XHJcbiAgICAgICAgICAgIGxldCB0aGluZyA9ICg8VGhpbmc+YWN0aW9uLmdldE5vdW4oMCkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGFjdG9yID09IFdvcmxkU3RhdGUucGxheWVyKSB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb24uc2F5LmFkZChuZXcgU2F5Qm9sZCh0aGluZywgXCI6IFwiKSwgXCJXb3JuLlwiKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGFjdGlvbi5zYXkuYWRkKG5ldyBTYXlUaGUoKSwgYWN0b3IsIFwiIHB1dHMgb24gXCIsIG5ldyBTYXlUaGUoKSwgdGhpbmcsIFwiLlwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcblxyXG4vKipcclxuICogSHlwZXJsaW5raW5nXHJcbiAqL1xyXG5FbGVtZW50cy5IeXBlcmxpbmtIYW5kbGVyLkh5cGVybGlua2luZ1J1bGVib29rLmFkZFJ1bGUobmV3IFJ1bGUoXHJcbiAgICB7XHJcbiAgICAgICAgbmFtZSA6IFwiSHlwZXJsaW5rIC0gV2VhclwiLFxyXG4gICAgICAgIGZpcnN0UHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0hJR0hFU1QsXHJcbiAgICAgICAgY29kZSA6IChydWxlYm9vayA6IFJ1bGVib29rUnVubmVyPFRoaW5nPikgPT4ge1xyXG4gICAgICAgICAgICBsZXQgdGhpbmcgPSA8VGhpbmc+IHJ1bGVib29rLm5vdW47XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpbmcgaW5zdGFuY2VvZiBDbG90aGluZyAmJiAhKFRoaW5nLldlYXJSZWxhdGlvbi5pc1JpZ2h0KFdvcmxkU3RhdGUucGxheWVyLCB0aGluZykpKSB7XHJcbiAgICAgICAgICAgICAgICBFbGVtZW50cy5IeXBlcmxpbmtIYW5kbGVyLmFkZEF2YWlsYWJsZUFjdGlvbihcIldlYXJcIiwgbmV3IEFjdGlvbldlYXIoV29ybGRTdGF0ZS5wbGF5ZXIsIHRoaW5nKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbikpO1xyXG5cclxuLyoqXHJcbiBJbnZlbnRvcnlcclxuICovXHJcbkVsZW1lbnRzLkludmVudG9yeUhhbmRsZXIuTGlua2luZ1RoaW5nLmFkZFJ1bGUobmV3IFJ1bGUoXHJcbiAgICB7XHJcbiAgICAgICAgbmFtZSA6IFwiSW52ZW50b3J5IC0gV2VhclwiLFxyXG4gICAgICAgIGZpcnN0UHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0xPV0VTVCxcclxuICAgICAgICBjb2RlIDogKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8VGhpbmc+KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCB0aGluZyA9IDxUaGluZz4gcnVsZWJvb2subm91bjtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGluZyBpbnN0YW5jZW9mIENsb3RoaW5nICYmICEoVGhpbmcuV2VhclJlbGF0aW9uLmlzUmlnaHQoV29ybGRTdGF0ZS5wbGF5ZXIsIHRoaW5nKSkpIHtcclxuICAgICAgICAgICAgICAgIEVsZW1lbnRzLkludmVudG9yeUhhbmRsZXIucHJpbnRUaGluZ0xpbmsoXCJXXCIsIG5ldyBBY3Rpb25XZWFyKFdvcmxkU3RhdGUucGxheWVyLCB0aGluZykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4pKTsiLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vUGVyc29uLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL0JvZHlwYXJ0L0h1bWFub2lkUGFydHMudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vQWN0aW9uL0FjdGlvblJlbW92ZS50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9BY3Rpb24vQWN0aW9uV2Vhci50c1wiIC8+XHJcbi8vIFRPRE8gOiBJbXBsZW1lbnRzIExpcXVpZENvbnRhaW5lciBmb3IgTWlsayB1ZGRlcnMuIE1heWJlIHByb3N0YXRlcy5cclxuXHJcbmludGVyZmFjZSBIdW1hbm9pZE9wdGlvbnMgZXh0ZW5kcyBUaGluZ09wdGlvbnMge1xyXG4gICAgaXNNYWxlIDogYm9vbGVhbjtcclxufVxyXG5cclxuaW50ZXJmYWNlIEh1bWFub2lkR2VuZGVyIHtcclxuICAgIGhhc1BlbmlzIDogYm9vbGVhbjtcclxuICAgIGhhc1BlbmlzQnVsZ2UgOiBib29sZWFuO1xyXG4gICAgaGFzVmFnaW5hIDogYm9vbGVhbjtcclxuICAgIGhhc1RpdHMgOiBib29sZWFuO1xyXG4gICAgZ2VuZGVyVmFsdWUgOiBudW1iZXI7IC8vIE9ubHkgaW5jbHVkZXMgY2xvdGhpbmcgYW5kIGJvZHlwYXJ0cywgZ29vZCBtZWFzdXJlIGZvciBiaXNleHVhbCBOUENzXHJcbiAgICBnZW5kZXJWYWx1ZUNvcnJlY3RlZCA6IG51bWJlcjsgLy8gSW5jbHVkZXMgc2V4dWFsIGNoYXJhY3RlcmlzdGljcyBiZWluZyB2aXNpYmxlOiBicmVhc3Qgc2l6ZSBleGlzdGluZywgYSBjcm90Y2ggYnVsZ2UsIGV0Yy4gSGVhdmlseSBhbHRlcmVkIGJ5IGEgcGVuaXMvdmFnaW5hIGJlaW5nIG91dCBpbiB0aGUgb3BlblxyXG59XHJcblxyXG5pbnRlcmZhY2UgSHVtYW5vaWRTbHV0dGluZXNzIHtcclxuICAgIGhhbGZOYWtlZCA6IGJvb2xlYW47XHJcbiAgICBuYWtlZCA6IGJvb2xlYW47XHJcbiAgICBzbHV0dGluZXNzIDogbnVtYmVyOyAvLyBPbmx5IGluY2x1ZGVzIGNsb3RoaW5nXHJcbiAgICBzbHV0dGluZXNzQ29ycmVjdGVkIDogbnVtYmVyOyAvLyBJbmNsdWRlcyBtYW5uZXJpc21zIGNhdXNlZCBieSBwZXJzb25hbGl0eVxyXG59XHJcblxyXG5pbnRlcmZhY2UgSHVtYW5vaWRCdWxnZXMge1xyXG4gICAgYnJlYXN0cyA6IG51bWJlcjtcclxuICAgIGNyb3RjaCA6IG51bWJlcjtcclxuICAgIGJ1dHQgOiBudW1iZXI7XHJcbiAgICB3YWlzdCA6IG51bWJlcjtcclxufVxyXG5cclxuY2xhc3MgSHVtYW5vaWQgZXh0ZW5kcyBQZXJzb24ge1xyXG4gICAgcHVibGljIHN0YXRpYyBTRVhfTUFMRSA9IDA7XHJcbiAgICBwdWJsaWMgc3RhdGljIFNFWF9GRU1BTEUgPSAxO1xyXG4gICAgcHVibGljIHN0YXRpYyBTRVhfSEVSTSA9IDI7XHJcblxyXG4gICAgcHVibGljIGJyZWFzdFZpc2libGVTaXplID0gMDtcclxuICAgIHB1YmxpYyBpc0JyZWFzdFZpc2libGUgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpc0JyZWFzdFRpZ2h0ID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNCcmVhc3RMb29zZSA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBjcm90Y2hWaXNpYmxlU2l6ZSA9IDA7XHJcbiAgICBwdWJsaWMgaXNDcm90Y2hWaXNpYmxlID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNDcm90Y2hUaWdodCA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBidXR0VmlzaWJsZVNpemUgPSAwO1xyXG4gICAgcHVibGljIGlzQnV0dFZpc2libGUgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpc0J1dHRUaWdodCA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBpc0dlbmRlckNhY2hlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpc1NsdXR0aW5lc3NDYWNoZWQgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgY2FjaGVkR2VuZGVyVmFsdWUgOiBIdW1hbm9pZEdlbmRlcjtcclxuICAgIHB1YmxpYyBjYWNoZWRTbHV0dGluZXNzIDogSHVtYW5vaWRTbHV0dGluZXNzO1xyXG4gICAgcHVibGljIGNhY2hlZEJ1bGdlcyA6IEh1bWFub2lkQnVsZ2VzO1xyXG5cclxuICAgIHB1YmxpYyB1bmNvdmVyZWRTbG90cyA6IEFycmF5PG51bWJlcj4gPSBbXTtcclxuXHJcbiAgICBwdWJsaWMgaW52YWxpZGF0ZUNhY2hlcyAoKSB7XHJcbiAgICAgICAgdGhpcy5pc0dlbmRlckNhY2hlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTbHV0dGluZXNzQ2FjaGVkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEdlbmRlclZhbHVlICgpIDogSHVtYW5vaWRHZW5kZXIge1xyXG4gICAgICAgIGlmICghdGhpcy5pc1NsdXR0aW5lc3NDYWNoZWQpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVDYWNoZXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmNhY2hlZEdlbmRlclZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTbHV0dGluZXNzICgpIDogSHVtYW5vaWRTbHV0dGluZXNzIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNTbHV0dGluZXNzQ2FjaGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FjaGVzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZWRTbHV0dGluZXNzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRCdWxnZXMgKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0dlbmRlckNhY2hlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZWRCdWxnZXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVwZGF0ZUNhY2hlcyAoKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDbG90aGluZygpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2xvdHMoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUJvZHlwYXJ0cygpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQnVsZ2VzKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVHZW5kZXJWYWx1ZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2x1dHRpbmVzcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cGRhdGVTbG90cyAoKSB7XHJcbiAgICAgICAgdGhpcy51bmNvdmVyZWRTbG90cyA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgSHVtYW5vaWQuU0xPVF9TTE9UX0NPVU5UOyBpKyspIHsgdGhpcy51bmNvdmVyZWRTbG90cy5wdXNoKGkpOyB9XHJcblxyXG4gICAgICAgIGxldCBjbG90aGluZyA9IDxBcnJheTxDbG90aGluZz4+VGhpbmcuV2VhclJlbGF0aW9uLmdldFJpZ2h0VHlwZSh0aGlzLCBDbG90aGluZyk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjbG90aGluZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgY292ZXJpbmcgPSBjbG90aGluZ1tpXS5nZXRDb3ZlcmluZ1Nsb3RzKCk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgY292ZXJpbmcubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCBpZHggPSB0aGlzLnVuY292ZXJlZFNsb3RzLmluZGV4T2YoY292ZXJpbmdba10pO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlkeCA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51bmNvdmVyZWRTbG90cy5zcGxpY2UoaWR4LCAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMudW5jb3ZlcmVkU2xvdHMubGVuZ3RoID09IDApIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlR2VuZGVyVmFsdWUgKCkge1xyXG4gICAgICAgIGxldCBjbG90aGluZ0dlbmRlciA9IENsb3RoaW5nLmdldEdlbmRlclZhbHVlT24odGhpcyk7XHJcbiAgICAgICAgbGV0IGJvZHlwYXJ0R2VuZGVyID0gQm9keXBhcnQuZ2V0R2VuZGVyVmFsdWVPbih0aGlzKTtcclxuXHJcbiAgICAgICAgbGV0IGdlbmRlcldlaWdodCA9IGNsb3RoaW5nR2VuZGVyLndlaWdodCArIGJvZHlwYXJ0R2VuZGVyLndlaWdodDtcclxuICAgICAgICBsZXQgZ2VuZGVyVmFsdWUgPSBjbG90aGluZ0dlbmRlci52YWx1ZSArIGJvZHlwYXJ0R2VuZGVyLnZhbHVlO1xyXG4gICAgICAgIGxldCBjb3JyZWN0aW9uV2VpZ2h0ID0gQm9keXBhcnQuV0VJR0hUX0hJR0hFU1Q7XHJcbiAgICAgICAgbGV0IGNvcnJlY3Rpb25WYWx1ZSA9IHRoaXMuZ2V0U3RhdChBdHRyaWJ1dGVzLkdlbmRlcklkZW50aXR5KSAqIEJvZHlwYXJ0LldFSUdIVF9ISUdIRVNUOyAvLyBHZW5kZXIgSWRlbnRpdHkgaGFzIHdlaWdodCBmb3IgR2VuZGVyIFZhbHVlLiBJdCBpbmNsdWRlcyB0aGluZ3Mgc3VjaCBhcyBpbnRvbmF0aW9uIGFuZCBtYW5uZWlyaXNtcywgc28gaXQgY291bnRzLlxyXG5cclxuICAgICAgICBsZXQgaGFzUGVuaXMgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IGhhc1ZhZ2luYSA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5pc0Nyb3RjaFZpc2libGUpIHtcclxuICAgICAgICAgICAgLy8gRG9lcyB0aGlzIGhhdmUgYSB2YWdpbmEgb3Igbm90PyBJdCdzIHZpc2libGUsIHNvIGl0IGFmZmVjdHMgT0JWSU9VU0xZIE1BTEUvRkVNQUxFXHJcbiAgICAgICAgICAgIGlmIChUaGluZy5QYXJ0UmVsYXRpb24uZ2V0UmlnaHRUeXBlT25lKHRoaXMsIEh1bWFub2lkUGVuaXMpICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgaGFzUGVuaXMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaGFzVmFnaW5hID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBjb3JyZWN0aW9uVmFsdWUgKz0gMCAqIEJvZHlwYXJ0LldFSUdIVF9MT1dFU1Q7XHJcbiAgICAgICAgICAgICAgICBjb3JyZWN0aW9uV2VpZ2h0ICs9IEJvZHlwYXJ0LldFSUdIVF9MT1dFU1Q7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoVGhpbmcuUGFydFJlbGF0aW9uLmdldFJpZ2h0VHlwZU9uZSh0aGlzLCBIdW1hbm9pZFZhZ2luYSkgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNQZW5pcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaGFzVmFnaW5hID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNvcnJlY3Rpb25WYWx1ZSArPSAxMDAgKiBCb2R5cGFydC5XRUlHSFRfTE9XRVNUO1xyXG4gICAgICAgICAgICAgICAgY29ycmVjdGlvbldlaWdodCArPSBCb2R5cGFydC5XRUlHSFRfTE9XRVNUO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5icmVhc3RWaXNpYmxlU2l6ZSA+IDApIHtcclxuICAgICAgICAgICAgY29ycmVjdGlvblZhbHVlICs9IDEwMCAqIEJvZHlwYXJ0LldFSUdIVF9MT1dFU1Q7XHJcbiAgICAgICAgICAgIGNvcnJlY3Rpb25XZWlnaHQgKz0gQm9keXBhcnQuV0VJR0hUX0xPV0VTVDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNyb3RjaFZpc2libGVTaXplID4gMCAmJiAhaGFzVmFnaW5hKSB7XHJcbiAgICAgICAgICAgIGNvcnJlY3Rpb25WYWx1ZSArPSAwICogQm9keXBhcnQuV0VJR0hUX0xPV0VTVDtcclxuICAgICAgICAgICAgY29ycmVjdGlvbldlaWdodCArPSBCb2R5cGFydC5XRUlHSFRfTE9XRVNUO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGdlbmRlclZhbHVlRmluYWwgPSBnZW5kZXJWYWx1ZSAvIGdlbmRlcldlaWdodDtcclxuICAgICAgICBsZXQgZ2VuZGVyVmFsdWVDb3JyZWN0ZWQgPSAoZ2VuZGVyVmFsdWUgKyBjb3JyZWN0aW9uVmFsdWUpIC8gKGdlbmRlcldlaWdodCArIGNvcnJlY3Rpb25XZWlnaHQpO1xyXG5cclxuICAgICAgICB0aGlzLmNhY2hlZEdlbmRlclZhbHVlID0ge1xyXG4gICAgICAgICAgICBoYXNUaXRzIDogdGhpcy5icmVhc3RWaXNpYmxlU2l6ZSA+IDEsIC8vIGlnbm9yZSBtaWNyb3RpdHNcclxuICAgICAgICAgICAgaGFzUGVuaXNCdWxnZSA6IHRoaXMuY3JvdGNoVmlzaWJsZVNpemUgPiAwICYmICFoYXNWYWdpbmEsIC8vc2FmZSBndWFyZCBhZ2FpbnN0IHB1ZmZ5IHZhZ2luYXMgaWYgdGhleSBldmVyIGNvbWUgdXBcclxuICAgICAgICAgICAgaGFzUGVuaXMgOiBoYXNQZW5pcyxcclxuICAgICAgICAgICAgaGFzVmFnaW5hIDogaGFzVmFnaW5hLFxyXG4gICAgICAgICAgICBnZW5kZXJWYWx1ZSA6IGdlbmRlclZhbHVlRmluYWwsXHJcbiAgICAgICAgICAgIGdlbmRlclZhbHVlQ29ycmVjdGVkIDogZ2VuZGVyVmFsdWVDb3JyZWN0ZWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuaXNHZW5kZXJDYWNoZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc1Zpc2libGVPbiAoc2xvdCA6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVuY292ZXJlZFNsb3RzLmluZGV4T2Yoc2xvdCkgIT0gLTE7XHJcbiAgICB9XHJcblxyXG4gICAgLyogVE9ETzogVGhpcyB3aWxsIHN1Y2suIEdvYWxzOiBTbHV0dGluZXNzIG9mIGEgbmFrZWQgbm9ybWFsIHBlcnNvbiBzaG91bGQgYmUgYmV0d2VlbiA0NS01MC5cclxuICAgICAqICAgICAgICBBIG5ha2VkIHBlcnNvbiBzaG91bGQgbWF4IG91dCBhdCBhcm91bmQgODAgd2l0aCBURVJSSUJMRSBob2xlcy4gU28gc29tZSBjbG90aGluZyBpcyBzbHV0dGllciB0aGFuIGJlaW5nIG91dHJpZ2h0IG5ha2VkLCBhbmQgYmVpbmcgbmFrZWQgaXMgbm90IHRoYXQgc2x1dHR5IHVubGVzcyB5b3UncmUgZnVja2VkIHVwLlxyXG4gICAgICogICAgICAgIEJlaW5nIG1vc3RseSBjb3ZlcmVkIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBnZW5pdGFscyBzaG91bGQgYmUgc2VlbiBhcyB3b3JzZSB0aGFuIGJlaW5nIG5ha2UtZGVyIGFzIHdlbGwuIE1pZ2h0IGp1c3QgbGVhdmUgdGhhdCBmb3IgdGhlIG91dGZpdHMsIHRob3VnaC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHVwZGF0ZVNsdXR0aW5lc3MgKCkge1xyXG4gICAgICAgIC8vIFRPRE86IE1heWJlIHVzZSB0aGVzZS5cclxuICAgICAgICAvLyBsZXQgbmFrZWRCcmVha3BvaW50ID0gMC4zO1xyXG4gICAgICAgIC8vIGxldCBoYWxmbmFrZWRCcmVha3BvaW50ID0gMC41O1xyXG4gICAgICAgIGxldCBjbG90aGluZ1NsdXR0aW5lc3MgPSBDbG90aGluZy5nZXRTbHV0dGluZXNzVmFsdWVPbih0aGlzKTtcclxuICAgICAgICBsZXQgYm9keXBhcnRTbHV0dGluZXNzID0gQm9keXBhcnQuZ2V0U2x1dHRpbmVzc1ZhbHVlT24odGhpcyk7XHJcblxyXG4gICAgICAgIGxldCBzbHV0dGluZXNzV2VpZ2h0ID0gY2xvdGhpbmdTbHV0dGluZXNzLndlaWdodCArIGJvZHlwYXJ0U2x1dHRpbmVzcy53ZWlnaHQ7XHJcbiAgICAgICAgbGV0IHNsdXR0aW5lc3NWYWx1ZSA9IGNsb3RoaW5nU2x1dHRpbmVzcy52YWx1ZSArIGJvZHlwYXJ0U2x1dHRpbmVzcy52YWx1ZTtcclxuXHJcbiAgICAgICAgbGV0IGNvcnJlY3Rpb25XZWlnaHQgPSAwO1xyXG4gICAgICAgIGxldCBjb3JyZWN0aW9uVmFsdWUgPSAwO1xyXG5cclxuICAgICAgICBsZXQgc29tZXdoYXRTbHV0dHkgPSBbSHVtYW5vaWQuU0xPVF9NSURSSUZGLCBIdW1hbm9pZC5TTE9UX0xFR19VUFBFUiwgSHVtYW5vaWQuU0xPVF9XQUlTVCwgSHVtYW5vaWQuU0xPVF9ISVBTLCBIdW1hbm9pZC5TTE9UX0JBQ0tdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc29tZXdoYXRTbHV0dHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNWaXNpYmxlT24oc29tZXdoYXRTbHV0dHlbaV0pKSB7XHJcbiAgICAgICAgICAgICAgICBjb3JyZWN0aW9uV2VpZ2h0ICs9IDE7XHJcbiAgICAgICAgICAgICAgICBjb3JyZWN0aW9uVmFsdWUgKz0gNzU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB2ZXJ5U2x1dHR5ID0gW0h1bWFub2lkLlNMT1RfQlJFQVNUUywgSHVtYW5vaWQuU0xPVF9DUk9UQ0hfRlJPTlQsIEh1bWFub2lkLlNMT1RfQ1JPVENIX0JBQ0ssIEh1bWFub2lkLlNMT1RfQlVUVF07XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2ZXJ5U2x1dHR5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmlzaWJsZU9uKHZlcnlTbHV0dHlbaV0pKSB7XHJcbiAgICAgICAgICAgICAgICBjb3JyZWN0aW9uV2VpZ2h0ICs9IDM7XHJcbiAgICAgICAgICAgICAgICBjb3JyZWN0aW9uVmFsdWUgKz0gNzU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgodGhpcy5pc1Zpc2libGVPbi5sZW5ndGggLyBIdW1hbm9pZC5TTE9UX1NMT1RfQ09VTlQpID4gMC43NSkge1xyXG4gICAgICAgICAgICBsZXQgZXh0cmVtZVNsdXR0eSA9IFtIdW1hbm9pZC5TTE9UX0JSRUFTVFMsIEh1bWFub2lkLlNMT1RfQ1JPVENIX0ZST05ULCBIdW1hbm9pZC5TTE9UX0NST1RDSF9CQUNLLCBIdW1hbm9pZC5TTE9UX0JVVFRdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV4dHJlbWVTbHV0dHkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVmlzaWJsZU9uKGV4dHJlbWVTbHV0dHlbaV0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29ycmVjdGlvbldlaWdodCArPSA1O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvcnJlY3Rpb25WYWx1ZSArPSA4NTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGhhbGZOYWtlZCA6IGJvb2xlYW47XHJcbiAgICAgICAgbGV0IG5ha2VkIDogYm9vbGVhbjtcclxuICAgICAgICBpZiAoIXRoaXMuaXNNYWxlKCkpIHtcclxuICAgICAgICAgICAgaGFsZk5ha2VkID0gKHRoaXMuaXNWaXNpYmxlT24ubGVuZ3RoIC8gSHVtYW5vaWQuU0xPVF9TTE9UX0NPVU5UKSA8IDAuNSAmJlxyXG4gICAgICAgICAgICAgICAgIXRoaXMuaXNWaXNpYmxlT25BcnJheShbSHVtYW5vaWQuU0xPVF9CUkVBU1RTLCBIdW1hbm9pZC5TTE9UX0NST1RDSF9GUk9OVCwgSHVtYW5vaWQuU0xPVF9DUk9UQ0hfQkFDS10pO1xyXG4gICAgICAgICAgICBuYWtlZCA9ICh0aGlzLmlzVmlzaWJsZU9uLmxlbmd0aCAvIEh1bWFub2lkLlNMT1RfU0xPVF9DT1VOVCkgPCAwLjMgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNWaXNpYmxlT25BcnJheShbSHVtYW5vaWQuU0xPVF9CUkVBU1RTLCBIdW1hbm9pZC5TTE9UX0NST1RDSF9GUk9OVCwgSHVtYW5vaWQuU0xPVF9DUk9UQ0hfQkFDSywgSHVtYW5vaWQuU0xPVF9CVVRUXSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaGFzQnJlYXN0cygpKSB7XHJcbiAgICAgICAgICAgICAgICBoYWxmTmFrZWQgPSAodGhpcy5pc1Zpc2libGVPbi5sZW5ndGggLyBIdW1hbm9pZC5TTE9UX1NMT1RfQ09VTlQpIDwgMC41ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuaXNWaXNpYmxlT25BcnJheShbSHVtYW5vaWQuU0xPVF9CUkVBU1RTLCBIdW1hbm9pZC5TTE9UX0NST1RDSF9GUk9OVCwgSHVtYW5vaWQuU0xPVF9DUk9UQ0hfQkFDS10pO1xyXG4gICAgICAgICAgICAgICAgbmFrZWQgPSAodGhpcy5pc1Zpc2libGVPbi5sZW5ndGggLyBIdW1hbm9pZC5TTE9UX1NMT1RfQ09VTlQpIDwgMC4zICYmXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1Zpc2libGVPbkFycmF5KFtIdW1hbm9pZC5TTE9UX0JSRUFTVFMsIEh1bWFub2lkLlNMT1RfQ1JPVENIX0ZST05ULCBIdW1hbm9pZC5TTE9UX0NST1RDSF9CQUNLLCBIdW1hbm9pZC5TTE9UX0JVVFRdKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGhhbGZOYWtlZCA9ICh0aGlzLmlzVmlzaWJsZU9uLmxlbmd0aCAvIEh1bWFub2lkLlNMT1RfU0xPVF9DT1VOVCkgPCAwLjUgJiZcclxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5pc1Zpc2libGVPbkFycmF5KFtIdW1hbm9pZC5TTE9UX0NST1RDSF9GUk9OVCwgSHVtYW5vaWQuU0xPVF9DUk9UQ0hfQkFDS10pO1xyXG4gICAgICAgICAgICAgICAgbmFrZWQgPSAodGhpcy5pc1Zpc2libGVPbi5sZW5ndGggLyBIdW1hbm9pZC5TTE9UX1NMT1RfQ09VTlQpIDwgMC4zICYmXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1Zpc2libGVPbkFycmF5KFtIdW1hbm9pZC5TTE9UX0NST1RDSF9GUk9OVCwgSHVtYW5vaWQuU0xPVF9DUk9UQ0hfQkFDSywgSHVtYW5vaWQuU0xPVF9CVVRUXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzbHV0dGluZXNzVmFsdWVGaW5hbCA9IHNsdXR0aW5lc3NWYWx1ZSAvIHNsdXR0aW5lc3NXZWlnaHQ7XHJcbiAgICAgICAgbGV0IHNsdXR0aW5lc3NDb3JyZWN0ZWQgPSAoc2x1dHRpbmVzc1ZhbHVlICsgY29ycmVjdGlvblZhbHVlKSAvIChzbHV0dGluZXNzV2VpZ2h0ICsgY29ycmVjdGlvbldlaWdodCk7XHJcblxyXG4gICAgICAgIHRoaXMuY2FjaGVkU2x1dHRpbmVzcyA9IHtcclxuICAgICAgICAgICAgaGFsZk5ha2VkIDogaGFsZk5ha2VkLFxyXG4gICAgICAgICAgICBuYWtlZCA6IG5ha2VkLFxyXG4gICAgICAgICAgICBzbHV0dGluZXNzIDogc2x1dHRpbmVzc1ZhbHVlRmluYWwsXHJcbiAgICAgICAgICAgIHNsdXR0aW5lc3NDb3JyZWN0ZWQgOiBzbHV0dGluZXNzQ29ycmVjdGVkXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmlzU2x1dHRpbmVzc0NhY2hlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzVmlzaWJsZU9uQXJyYXkgKGFyciA6IEFycmF5PG51bWJlcj4pIHtcclxuICAgICAgICBmb3IgKGxldCBpID0wIDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNWaXNpYmxlT24oYXJyW2ldKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZGRNYWxlUGFydHMgKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pc01hbGUoKSAmJiAhdGhpcy5pc0hlcm0oKSkge1xyXG4gICAgICAgICAgICB0aGlzLmFkZFBhcnRzKFxyXG4gICAgICAgICAgICAgICAgbmV3IEh1bWFub2lkVGVzdGljbGVzKCksIG5ldyBIdW1hbm9pZFBlbmlzKClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pbnZhbGlkYXRlQ2FjaGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZEZlbWFsZVBhcnRzICgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNGZW1hbGUoKSAmJiAhdGhpcy5pc0hlcm0oKSkge1xyXG4gICAgICAgICAgICB0aGlzLmFkZFBhcnRzKFxyXG4gICAgICAgICAgICAgICAgbmV3IEh1bWFub2lkVmFnaW5hKClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pbnZhbGlkYXRlQ2FjaGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlbW92ZUdlbmRlcmVkUGFydHMgKCkge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlUGFydHMoSHVtYW5vaWRWYWdpbmEpO1xyXG4gICAgICAgIHRoaXMucmVtb3ZlUGFydHMoSHVtYW5vaWRQZW5pcyk7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVQYXJ0cyhIdW1hbm9pZFRlc3RpY2xlcyk7XHJcbiAgICAgICAgdGhpcy5pbnZhbGlkYXRlQ2FjaGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldEdlbmRlclZhbHVlICh2YWx1ZSA6IG51bWJlcikge1xyXG4gICAgICAgIGxldCBicCA9IHRoaXMuZ2V0UGFydHMoQm9keXBhcnQpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGJwW2ldIGluc3RhbmNlb2YgSHVtYW5vaWRCcmVhc3RzICYmIHRoaXMuaXNNYWxlKCkpIHsgLy8gZG9uJ3QgYWRkIGJyZWFzdHMgYXV0b21hdGljYWxseSB0byBhIG1hbGUhXHJcbiAgICAgICAgICAgICAgICBicFtpXS5hcnJhbmdlR2VuZGVyVmFsdWUoMCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBicFtpXS5hcnJhbmdlR2VuZGVyVmFsdWUodmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAob3B0aW9ucz8gOiBIdW1hbm9pZE9wdGlvbnMpIHtcclxuICAgICAgICBzdXBlcihvcHRpb25zKTtcclxuICAgICAgICB0aGlzLmFkZFBhcnRzKFxyXG4gICAgICAgICAgICBuZXcgSHVtYW5vaWRTa2luKCksIG5ldyBIdW1hbm9pZEhlYWQoKSwgbmV3IEh1bWFub2lkQXJtcygpLFxyXG4gICAgICAgICAgICBuZXcgSHVtYW5vaWRIYW5kcygpLCBuZXcgSHVtYW5vaWRCcmVhc3RzKCksIG5ldyBIdW1hbm9pZEZlZXQoKSxcclxuICAgICAgICAgICAgbmV3IEh1bWFub2lkVG9yc28oKSwgbmV3IEh1bWFub2lkQnV0dCgpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMuaXNNYWxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWFsZVBhcnRzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0R2VuZGVyVmFsdWUoMjUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmVtYWxlUGFydHMoKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRHZW5kZXJWYWx1ZSg3NSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmFkZEdldEFsdGVyYXRpb25zKChodW1hbm9pZCA6IEh1bWFub2lkKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIExldCdzIG5vdCBkbyB0aGlzIGZvciBOUENzLiBJdCBjYW4gYnJlYWsgcGF0Y2hlcy5cclxuICAgICAgICAgICAgaWYgKGh1bWFub2lkLmlzUGxheWVyKCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgSHVtYW5vaWRHZW5kZXI6IGh1bWFub2lkLmlzTWFsZSgpID8gSHVtYW5vaWQuU0VYX01BTEUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodW1hbm9pZC5pc0ZlbWFsZSgpID8gSHVtYW5vaWQuU0VYX0ZFTUFMRSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdW1hbm9pZC5TRVhfSEVSTVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkU2V0QWx0ZXJhdGlvbnMoKGh1bWFub2lkIDogSHVtYW5vaWQsIGNoYW5nZXMpID0+IHtcclxuICAgICAgICAgICAgLy8gTGV0J3Mgbm90IGRvIHRoaXMgZm9yIE5QQ3MuIEl0IGNhbiBicmVhayBwYXRjaGVzLlxyXG4gICAgICAgICAgICBpZiAoaHVtYW5vaWQuaXNQbGF5ZXIoKSkge1xyXG4gICAgICAgICAgICAgICAgaHVtYW5vaWQucmVtb3ZlR2VuZGVyZWRQYXJ0cygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoYW5nZXMuSHVtYW5vaWRHZW5kZXIgPT0gSHVtYW5vaWQuU0VYX01BTEUpIHtcclxuICAgICAgICAgICAgICAgICAgICBodW1hbm9pZC5hZGRNYWxlUGFydHMoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlcy5IdW1hbm9pZEdlbmRlciA9PSBIdW1hbm9pZC5TRVhfRkVNQUxFKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaHVtYW5vaWQuYWRkRmVtYWxlUGFydHMoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaHVtYW5vaWQuYWRkTWFsZVBhcnRzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaHVtYW5vaWQuYWRkRmVtYWxlUGFydHMoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cGRhdGVCb2R5cGFydHMgKCkge1xyXG4gICAgICAgIGxldCBwYXJ0cyA9IDxBcnJheTxCb2R5cGFydD4+IFRoaW5nLlBhcnRSZWxhdGlvbi5nZXRSaWdodFR5cGUodGhpcywgQm9keXBhcnQpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcGFydHNbaV0udXBkYXRlU3RhdHVzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cGRhdGVDbG90aGluZyAoKSB7XHJcbiAgICAgICAgbGV0IGNsb3RoZXMgPSA8QXJyYXk8Q2xvdGhpbmc+PiBUaGluZy5XZWFyUmVsYXRpb24uZ2V0UmlnaHRUeXBlKHRoaXMsIENsb3RoaW5nKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNsb3RoZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY2xvdGhlc1tpXS51cGRhdGVTdGF0dXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVwZGF0ZUJ1bGdlcyAoKSB7XHJcbiAgICAgICAgbGV0IGNsb3RoZXMgPSBUaGluZy5XZWFyUmVsYXRpb24uZ2V0UmlnaHRUeXBlKHRoaXMsIENsb3RoaW5nKS5zb3J0KGZ1bmN0aW9uIChhIDogQ2xvdGhpbmcsIGIgOiBDbG90aGluZykge1xyXG4gICAgICAgICAgICByZXR1cm4gYS5sYXllciAtIGIubGF5ZXI7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNCcmVhc3RWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzQ3JvdGNoVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc0J1dHRWaXNpYmxlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgbGV0IGJyYXMgPSBbXTtcclxuICAgICAgICBsZXQgYnV0dHMgPSBbXTtcclxuICAgICAgICBsZXQganVua3MgPSBbXTtcclxuXHJcbiAgICAgICAgY2xvdGhlcy5mb3JFYWNoKChjbG90aCA6IENsb3RoaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGNsb3RoLnVwZGF0ZVN0YXR1cygpO1xyXG4gICAgICAgICAgICBpZiAoY2xvdGguc2xvdHMuaW5kZXhPZihIdW1hbm9pZC5TTE9UX0JSRUFTVFMpICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBicmFzLnB1c2goY2xvdGgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNsb3RoLnRyYW5zcGFyZW50U2xvdHMuaW5kZXhPZihIdW1hbm9pZC5TTE9UX0JSRUFTVFMpID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0JyZWFzdFZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY2xvdGguc2xvdHMuaW5kZXhPZihIdW1hbm9pZC5TTE9UX0JVVFQpICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBidXR0cy5wdXNoKGNsb3RoKTtcclxuICAgICAgICAgICAgICAgIGlmIChjbG90aC50cmFuc3BhcmVudFNsb3RzLmluZGV4T2YoSHVtYW5vaWQuU0xPVF9CVVRUKSA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNCdXR0VmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjbG90aC5zbG90cy5pbmRleE9mKEh1bWFub2lkLlNMT1RfQ1JPVENIX0ZST05UKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAganVua3MucHVzaChjbG90aCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2xvdGgudHJhbnNwYXJlbnRTbG90cy5pbmRleE9mKEh1bWFub2lkLlNMT1RfQ1JPVENIX0ZST05UKSA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDcm90Y2hWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVCcmVhc3RTaXplcyhicmFzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUNyb3RjaFNpemVzKGp1bmtzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUJ1dHRTaXplcyhidXR0cyk7XHJcblxyXG4gICAgICAgIHRoaXMuY2FjaGVkQnVsZ2VzID0ge1xyXG4gICAgICAgICAgICBicmVhc3RzIDogdGhpcy5icmVhc3RWaXNpYmxlU2l6ZSxcclxuICAgICAgICAgICAgYnV0dCA6IHRoaXMuYnV0dFZpc2libGVTaXplLFxyXG4gICAgICAgICAgICBjcm90Y2ggOiB0aGlzLmNyb3RjaFZpc2libGVTaXplLFxyXG4gICAgICAgICAgICB3YWlzdCA6IDBcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRUb3BDbG90aE9uIChzbG90IDogbnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIFRoaW5nLldlYXJSZWxhdGlvbi5nZXRSaWdodFR5cGUodGhpcywgQ2xvdGhpbmcpLmZpbHRlcihvdGhlckNsb3RoID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG90aGVyQ2xvdGgudmlzaWJsZU9uLmluY2x1ZGVzKHNsb3QpO1xyXG4gICAgICAgIH0pLnNvcnQoKGEgOiBDbG90aGluZywgYiA6IENsb3RoaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBhLmxheWVyIC0gYi5sYXllcjtcclxuICAgICAgICB9KVswXTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlQnJlYXN0U2l6ZXMgKGJyYXMgOiBBcnJheTxDbG90aGluZz4pIHtcclxuICAgICAgICB0aGlzLmlzQnJlYXN0VGlnaHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzQnJlYXN0TG9vc2UgPSB0cnVlO1xyXG4gICAgICAgIGxldCBicmVhc3RzID0gPEh1bWFub2lkQnJlYXN0cz4gVGhpbmcuUGFydFJlbGF0aW9uLmdldFJpZ2h0VHlwZU9uZSh0aGlzLCBIdW1hbm9pZEJyZWFzdHMpO1xyXG4gICAgICAgIHRoaXMuYnJlYXN0VmlzaWJsZVNpemUgPSBicmVhc3RzLmdldFNpemUoKTtcclxuICAgICAgICBicmFzLmZvckVhY2goKGJyYSA6IENsb3RoaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChicmEudGlnaHRCcmVhc3RTaXplID49IDAgJiYgdGhpcy5icmVhc3RWaXNpYmxlU2l6ZSA+IGJyYS50aWdodEJyZWFzdFNpemUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNCcmVhc3RUaWdodCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChicmEubWF4QnJlYXN0U2l6ZSA+PSAwICYmIHRoaXMuYnJlYXN0VmlzaWJsZVNpemUgPiBicmEubWF4QnJlYXN0U2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5icmVhc3RWaXNpYmxlU2l6ZSA9IGJyYS5tYXhCcmVhc3RTaXplO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5icmVhc3RWaXNpYmxlU2l6ZSA+PSBicmEubG9vc2VCcmVhc3RTaXplKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzQnJlYXN0TG9vc2UgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5icmVhc3RWaXNpYmxlU2l6ZSArPSBicmEuYnJlYXN0UGFkZGluZztcclxuICAgICAgICAgICAgaWYgKHRoaXMuYnJlYXN0VmlzaWJsZVNpemUgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyZWFzdFZpc2libGVTaXplID0gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cGRhdGVDcm90Y2hTaXplcyAoY2xvdGhzIDogQXJyYXk8Q2xvdGhpbmc+KSB7XHJcbiAgICAgICAgdGhpcy5pc0Nyb3RjaFRpZ2h0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jcm90Y2hWaXNpYmxlU2l6ZSA9IDA7XHJcbiAgICAgICAgbGV0IHBlbmlzID0gPEh1bWFub2lkUGVuaXM+IFRoaW5nLlBhcnRSZWxhdGlvbi5nZXRSaWdodFR5cGVPbmUodGhpcywgSHVtYW5vaWRQZW5pcyk7XHJcbiAgICAgICAgbGV0IHRlc3RpY2xlcyA9IDxIdW1hbm9pZFRlc3RpY2xlcz4gVGhpbmcuUGFydFJlbGF0aW9uLmdldFJpZ2h0VHlwZU9uZSh0aGlzLCBIdW1hbm9pZFRlc3RpY2xlcyk7XHJcbiAgICAgICAgdGhpcy5jcm90Y2hWaXNpYmxlU2l6ZSA9IDA7XHJcbiAgICAgICAgaWYgKHBlbmlzICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLmNyb3RjaFZpc2libGVTaXplICs9IHBlbmlzLmdldEJ1bGdlU2l6ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGVzdGljbGVzICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLmNyb3RjaFZpc2libGVTaXplICs9IHRlc3RpY2xlcy5nZXRCdWxnZVNpemUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY3JvdGNoVmlzaWJsZVNpemUgPSBNYXRoLmZsb29yKHRoaXMuY3JvdGNoVmlzaWJsZVNpemUgKiAxMCkgLyAxMDtcclxuXHJcbiAgICAgICAgY2xvdGhzLmZvckVhY2goKHdvcm4gOiBDbG90aGluZykgPT4ge1xyXG4gICAgICAgICAgICBpZiAod29ybi50aWdodENyb3RjaFNpemUgPj0gMCAmJiB0aGlzLmNyb3RjaFZpc2libGVTaXplID4gd29ybi50aWdodENyb3RjaFNpemUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNDcm90Y2hUaWdodCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh3b3JuLm1heENyb3RjaFNpemUgPj0gMCAmJiB0aGlzLmNyb3RjaFZpc2libGVTaXplID4gd29ybi5tYXhDcm90Y2hTaXplKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyb3RjaFZpc2libGVTaXplID0gd29ybi5tYXhDcm90Y2hTaXplO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNyb3RjaFZpc2libGVTaXplICs9IHdvcm4uY3JvdGNoUGFkZGluZztcclxuICAgICAgICAgICAgaWYgKHRoaXMuY3JvdGNoVmlzaWJsZVNpemUgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyb3RjaFZpc2libGVTaXplID0gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cGRhdGVCdXR0U2l6ZXMgKGNsb3RocyA6IEFycmF5PENsb3RoaW5nPikge1xyXG4gICAgICAgIHRoaXMuaXNCdXR0VGlnaHQgPSBmYWxzZTtcclxuICAgICAgICBsZXQgYnV0dCA9IDxIdW1hbm9pZEJ1dHQ+IFRoaW5nLlBhcnRSZWxhdGlvbi5nZXRSaWdodFR5cGVPbmUodGhpcywgSHVtYW5vaWRCdXR0KTtcclxuICAgICAgICB0aGlzLmJ1dHRWaXNpYmxlU2l6ZSA9IGJ1dHQgPT0gdW5kZWZpbmVkID8gMCA6IGJ1dHQuZ2V0U2l6ZSgpO1xyXG5cclxuICAgICAgICBjbG90aHMuZm9yRWFjaCgod29ybiA6IENsb3RoaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh3b3JuLnRpZ2h0QnV0dFNpemUgPj0gMCAmJiB0aGlzLmJ1dHRWaXNpYmxlU2l6ZSA+IHdvcm4udGlnaHRCdXR0U2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0J1dHRUaWdodCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh3b3JuLm1heEJ1dHRTaXplID49IDAgJiYgdGhpcy5idXR0VmlzaWJsZVNpemUgPiB3b3JuLm1heEJ1dHRTaXplKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJ1dHRWaXNpYmxlU2l6ZSA9IHdvcm4ubWF4QnV0dFNpemU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuYnV0dFZpc2libGVTaXplICs9IHdvcm4uYnV0dFBhZGRpbmc7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmJ1dHRWaXNpYmxlU2l6ZSA8IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnV0dFZpc2libGVTaXplID0gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYXNCcmVhc3RzICgpIHtcclxuICAgICAgICBsZXQgYnJlYXN0cyA9IDxIdW1hbm9pZEJyZWFzdHM+IHRoaXMuZ2V0UGFydChIdW1hbm9pZEJyZWFzdHMpO1xyXG4gICAgICAgIGlmIChicmVhc3RzLnNpemUgPiAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzTWFsZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGFydHMoSHVtYW5vaWRQZW5pcykubGVuZ3RoID4gMCAmJiB0aGlzLmdldFBhcnRzKEh1bWFub2lkVmFnaW5hKS5sZW5ndGggPT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNGZW1hbGUgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFBhcnRzKEh1bWFub2lkUGVuaXMpLmxlbmd0aCA9PSAwICYmIHRoaXMuZ2V0UGFydHMoSHVtYW5vaWRWYWdpbmEpLmxlbmd0aCA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzSGVybSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGFydHMoSHVtYW5vaWRQZW5pcykubGVuZ3RoID4gMCAmJiB0aGlzLmdldFBhcnRzKEh1bWFub2lkVmFnaW5hKS5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTaG9ydGVzdERlc2NyaXB0aW9uICgpIHtcclxuICAgICAgICBsZXQgcGxheWVyR2VuZGVyID0gdGhpcy5nZXRHZW5kZXJWYWx1ZSgpO1xyXG4gICAgICAgIGxldCBwbGF5ZXJTbHV0dGluZXNzID0gdGhpcy5nZXRTbHV0dGluZXNzKCk7XHJcblxyXG4gICAgICAgIGxldCBwcmVzZW50YXRpb24gPSBcIlwiO1xyXG4gICAgICAgIGlmIChwbGF5ZXJTbHV0dGluZXNzLnNsdXR0aW5lc3NDb3JyZWN0ZWQgPiA3NSkge1xyXG4gICAgICAgICAgICBwcmVzZW50YXRpb24gKz0gKFwic2x1dHR5LCBcIik7XHJcbiAgICAgICAgfSBlbHNlIGlmIChwbGF5ZXJTbHV0dGluZXNzLnNsdXR0aW5lc3NDb3JyZWN0ZWQgPiAzNSkge1xyXG5cclxuICAgICAgICB9IGVsc2UgaWYgKHBsYXllclNsdXR0aW5lc3Muc2x1dHRpbmVzc0NvcnJlY3RlZCA+IDIwKSB7XHJcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbiArPSAoXCJwcnVkZSwgXCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbiArPSAoXCJzYWludGx5LCBcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocGxheWVyR2VuZGVyLmdlbmRlclZhbHVlQ29ycmVjdGVkIDwgNDApIHtcclxuICAgICAgICAgICAgcHJlc2VudGF0aW9uICs9IChcIm1hc2N1bGluZSBcIik7XHJcbiAgICAgICAgfSBlbHNlIGlmIChwbGF5ZXJHZW5kZXIuZ2VuZGVyVmFsdWVDb3JyZWN0ZWQgPCA2MCkge1xyXG4gICAgICAgICAgICBwcmVzZW50YXRpb24gKz0gKFwiYW5kcm9neW5vdXMgXCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbiArPSAoXCJmZW1pbmluZSBcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocGxheWVyR2VuZGVyLmhhc1RpdHMpIHtcclxuICAgICAgICAgICAgaWYgKHBsYXllckdlbmRlci5oYXNQZW5pcyB8fCBwbGF5ZXJHZW5kZXIuaGFzUGVuaXNCdWxnZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gU2hlbWFsZSBTdGF0dXMgKFRpdHMgKyBQZW5pcylcclxuICAgICAgICAgICAgICAgIHByZXNlbnRhdGlvbiArPSAoXCJzaGVtYWxlXCIpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBsYXllckdlbmRlci5oYXNWYWdpbmEpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlzIGEgd29tYW5cclxuICAgICAgICAgICAgICAgIHByZXNlbnRhdGlvbiArPSAoXCJ3b21hblwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIE5vIHRpdHNcclxuICAgICAgICAgICAgaWYgKHBsYXllckdlbmRlci5oYXNQZW5pcykge1xyXG4gICAgICAgICAgICAgICAgLy8gU2ltcGx5IG1hbGVcclxuICAgICAgICAgICAgICAgIGlmIChwbGF5ZXJHZW5kZXIuZ2VuZGVyVmFsdWVDb3JyZWN0ZWQgPCA2MCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByZXNlbnRhdGlvbiArPSAoXCJtYW5cIik7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHByZXNlbnRhdGlvbiArPSAoXCJ0cmFwXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBsYXllckdlbmRlci5oYXNQZW5pc0J1bGdlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBQb3NzaWJsZSBTaGVtYWxlIHN0YXR1cyAtIGhhcyBidWxnZSBhbmQgdGl0cyBtYXliZSBnZXQgYmV0dGVyIHRlcm1zIHNvbWV0aW1lXHJcbiAgICAgICAgICAgICAgICBpZiAocGxheWVyR2VuZGVyLmdlbmRlclZhbHVlQ29ycmVjdGVkIDwgNjApIHtcclxuICAgICAgICAgICAgICAgICAgICBwcmVzZW50YXRpb24gKz0gKFwibWFuXCIpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBwcmVzZW50YXRpb24gKz0gKFwidHJhcFwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChwbGF5ZXJHZW5kZXIuaGFzVmFnaW5hKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpcyBhIHdvbWFuXHJcbiAgICAgICAgICAgICAgICBwcmVzZW50YXRpb24gKz0gKFwid29tYW5cIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBwcmVzZW50YXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBTTE9UX0hBSVIgPSAwO1xyXG4gICAgcHVibGljIHN0YXRpYyBTTE9UX0hFQURHRUFSID0gMTtcclxuICAgIHB1YmxpYyBzdGF0aWMgU0xPVF9GQUNFID0gMjtcclxuICAgIHB1YmxpYyBzdGF0aWMgU0xPVF9FQVJTID0gMztcclxuICAgIHB1YmxpYyBzdGF0aWMgU0xPVF9FWUVTID0gNDtcclxuICAgIHB1YmxpYyBzdGF0aWMgU0xPVF9OT1NFID0gNTtcclxuICAgIHB1YmxpYyBzdGF0aWMgU0xPVF9NT1VUSCA9IDY7XHJcbiAgICBwdWJsaWMgc3RhdGljIFNMT1RfTkVDSyA9IDc7XHJcbiAgICBwdWJsaWMgc3RhdGljIFNMT1RfU0hPVUxERVJTID0gODtcclxuICAgIHB1YmxpYyBzdGF0aWMgU0xPVF9BUk1TID0gOTtcclxuICAgIHB1YmxpYyBzdGF0aWMgU0xPVF9IQU5EUyA9IDEwO1xyXG4gICAgcHVibGljIHN0YXRpYyBTTE9UX0ZJTkdFUlMgPSAxMTtcclxuICAgIHB1YmxpYyBzdGF0aWMgU0xPVF9GSU5HRVJOQUlMUyA9IDEyO1xyXG4gICAgcHVibGljIHN0YXRpYyBTTE9UX1VQUEVSX0NIRVNUID0gMTM7XHJcbiAgICBwdWJsaWMgc3RhdGljIFNMT1RfTUlEUklGRiA9IDE0O1xyXG4gICAgcHVibGljIHN0YXRpYyBTTE9UX1dBSVNUID0gMTU7XHJcbiAgICBwdWJsaWMgc3RhdGljIFNMT1RfQkFDSyA9IDE2O1xyXG4gICAgcHVibGljIHN0YXRpYyBTTE9UX0hJUFMgPSAxNztcclxuICAgIHB1YmxpYyBzdGF0aWMgU0xPVF9DUk9UQ0hfRlJPTlQgPSAxODtcclxuICAgIHB1YmxpYyBzdGF0aWMgU0xPVF9DUk9UQ0hfQkFDSyA9IDE5O1xyXG4gICAgcHVibGljIHN0YXRpYyBTTE9UX0JVVFQgPSAyMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgU0xPVF9MRUdfVVBQRVIgPSAyMTtcclxuICAgIHB1YmxpYyBzdGF0aWMgU0xPVF9MRUdfTE9XRVIgPSAyMjtcclxuICAgIHB1YmxpYyBzdGF0aWMgU0xPVF9GRUVUID0gMjM7XHJcbiAgICBwdWJsaWMgc3RhdGljIFNMT1RfRkVFVF9OQUlMUyA9IDI0O1xyXG4gICAgcHVibGljIHN0YXRpYyBTTE9UX0JSRUFTVFMgPSAyNTtcclxuICAgIHB1YmxpYyBzdGF0aWMgU0xPVF9TTE9UX0NPVU5UID0gMjY7XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBjYWNoZUludmFsaWRhdGlvbkFjdGlvblJ1bGUgPSBuZXcgUnVsZSh7XHJcbiAgICAgICAgbmFtZSA6IFwiSW52YWxpZGF0ZSBodW1hbm9pZCBjYWNoZXNcIixcclxuICAgICAgICBmaXJzdFByaW9yaXR5IDogUnVsZS5QUklPUklUWV9MT1dFU1QsXHJcbiAgICAgICAgY29kZSA6IChydW5uZXIgOiBSdWxlYm9va1J1bm5lcjxBY3Rpb24+KSA9PiB7XHJcbiAgICAgICAgICAgICg8SHVtYW5vaWQ+IHJ1bm5lci5ub3VuLmFjdG9yKS5pbnZhbGlkYXRlQ2FjaGVzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb25kaXRpb25zIDogKHJ1bm5lciA6IFJ1bGVib29rUnVubmVyPEFjdGlvbj4pID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJ1bm5lci5ub3VuLmFjdG9yIGluc3RhbmNlb2YgSHVtYW5vaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRQbGF5ZXJEZXNjcmlwdGlvbiAoKSA6IFNheSB7XHJcbiAgICAgICAgbGV0IHNheSA9IG5ldyBTYXkoKTtcclxuXHJcbiAgICAgICAgc2F5LmFkZChcIllvdSBhcmUgXCIpO1xyXG5cclxuICAgICAgICBsZXQgcGxheWVyID0gPEh1bWFub2lkPiBXb3JsZFN0YXRlLnBsYXllcjtcclxuXHJcbiAgICAgICAgbGV0IG1hbGUgPSBwbGF5ZXIuZ2V0UGFydHMoSHVtYW5vaWRQZW5pcykubGVuZ3RoID4gMDtcclxuICAgICAgICBsZXQgZmVtYWxlID0gcGxheWVyLmdldFBhcnRzKEh1bWFub2lkVmFnaW5hKS5sZW5ndGggPiAwO1xyXG5cclxuICAgICAgICBpZiAobWFsZSAmJiBmZW1hbGUpIHtcclxuICAgICAgICAgICAgc2F5LmFkZCggXCJoZXJtYXBocm9kaXRlXCIpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobWFsZSkge1xyXG4gICAgICAgICAgICBzYXkuYWRkKFwibWFsZVwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzYXkuYWRkKFwiZmVtYWxlXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2F5LmFkZChcIi4gWW91IGFyZSBwcmVzZW50aW5nIGFzIFwiLCBuZXcgU2F5QW4oKSwgcGxheWVyLmdldFNob3J0ZXN0RGVzY3JpcHRpb24oKSArIFwiLiBcIik7XHJcblxyXG4gICAgICAgIHNheS5hZGQoQXR0cmlidXRlcy5HZW5kZXJJZGVudGl0eS5nZXREZXNjcmlwdGlvbihwbGF5ZXIuZ2V0U3RhdChBdHRyaWJ1dGVzLkdlbmRlcklkZW50aXR5KSkpO1xyXG5cclxuICAgICAgICAvL2xldCBndiA9IHBsYXllci5nZXRHZW5kZXJWYWx1ZSgpO1xyXG4gICAgICAgIGxldCBzdiA9IHBsYXllci5nZXRTbHV0dGluZXNzKCk7XHJcbiAgICAgICAgbGV0IGJ1bGdlcyA9IHBsYXllci5nZXRCdWxnZXMoKTtcclxuXHJcbiAgICAgICAgbGV0IGNvdmVyZWRQZXJjID0gMSAtIChwbGF5ZXIudW5jb3ZlcmVkU2xvdHMubGVuZ3RoIC8gSHVtYW5vaWQuU0xPVF9TTE9UX0NPVU5UKTtcclxuXHJcbiAgICAgICAgc2F5LmFkZChcIiBcIiwgKDxIdW1hbm9pZFNraW4+IHBsYXllci5nZXRQYXJ0KEh1bWFub2lkU2tpbikpLmdldERlc2NyaXB0aW9uKCkpO1xyXG5cclxuICAgICAgICBpZiAoc3YuaGFsZk5ha2VkKSB7XHJcbiAgICAgICAgICAgIHNheS5hZGQoXCIgWW91IGFyZSBhbG1vc3QgbmFrZWQuIFwiKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHN2Lm5ha2VkKSB7XHJcbiAgICAgICAgICAgIHNheS5hZGQoXCIgWW91IGFyZSBuYWtlZC4gXCIpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY292ZXJlZFBlcmMgPCAwLjIpIHtcclxuICAgICAgICAgICAgc2F5LmFkZChcIllvdSBhcmUgbm90IHNob3dpbmcgbXVjaCBvZiBpdCwgdGhvdWdoLlwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNheS5hZGQoQXR0cmlidXRlcy5EZWdlbmVyYXRpb24uZ2V0RGVzY3JpcHRpb24ocGxheWVyLmdldFN0YXQoQXR0cmlidXRlcy5EZWdlbmVyYXRpb24pKSk7XHJcblxyXG4gICAgICAgIHNheS5hZGQoU2F5LlBBUkFHUkFQSF9CUkVBSyk7XHJcblxyXG4gICAgICAgIHNheS5hZGQoKDxIdW1hbm9pZEFybXM+IHBsYXllci5nZXRQYXJ0KEh1bWFub2lkQXJtcykpLmdldERlc2NyaXB0aW9uKCksIFwiIFwiKTtcclxuICAgICAgICBzYXkuYWRkKCg8SHVtYW5vaWRIYW5kcz4gcGxheWVyLmdldFBhcnQoSHVtYW5vaWRIYW5kcykpLmdldERlc2NyaXB0aW9uKCksIFwiIFwiKTtcclxuICAgICAgICBzYXkuYWRkKCg8SHVtYW5vaWRGZWV0PiBwbGF5ZXIuZ2V0UGFydChIdW1hbm9pZEZlZXQpKS5nZXREZXNjcmlwdGlvbigpLCBcIiBcIik7XHJcblxyXG4gICAgICAgIGxldCBwZW5pcyA9IDxIdW1hbm9pZFBlbmlzPiBwbGF5ZXIuZ2V0UGFydChIdW1hbm9pZFBlbmlzKTtcclxuICAgICAgICBsZXQgdmFnaW5hID0gPEh1bWFub2lkVmFnaW5hPiBwbGF5ZXIuZ2V0UGFydChIdW1hbm9pZFZhZ2luYSk7XHJcbiAgICAgICAgaWYgKHBlbmlzICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBzYXkuYWRkKFwiWW91IGhhdmUgYSBcIixcclxuICAgICAgICAgICAgICAgIHBlbmlzLmdldFNpemVUZXh0KCksIChwZW5pcy5pc0ZsYWNjaWQoKSA/IFwiIGZsYWNjaWQgXCIgOiBcIiBlcmVjdCBcIiksXHJcbiAgICAgICAgICAgICAgICBTYXkuQ09DSywgXCIgYmV0d2VlbiB5b3VyIGxlZ3NcIlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoIXBlbmlzLmlzQmlnKCkgJiYgcGVuaXMuaXNHcm93ZXIoKSAmJiBwZW5pcy5pc0ZsYWNjaWQoKSkge1xyXG4gICAgICAgICAgICAgICAgc2F5LmFkZChcIiwgd2hpY2ggaXMgb2theSwgc2luY2UgeW91J3JlIGEgZ3Jvd2VyLCBub3QgYSBzaG93ZXJcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHBlbmlzLmlzVW5jb3ZlcmVkKCkpIHtcclxuICAgICAgICAgICAgICAgIGxldCBvbmVPZiA9IG5ldyBPbmVPZihPbmVPZi5QVVJFTFlfQVRfUkFORE9NLCAuLi5bXHJcbiAgICAgICAgICAgICAgICAgICAgXCIsIGl0IGlzIG5vdCBjb3ZlcmVkIGJ5IGFueSBjbG90aGluZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiLCBpdCBpcyBub3QgY292ZXJlZCBieSBhbnkgY2xvdGhlc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiLCBpdCBpcyB1bmNvdmVyZWRcIixcclxuICAgICAgICAgICAgICAgICAgICBcIiwgaXQgaXMgdmlzaWJsZSB0byBhbGxcIixcclxuICAgICAgICAgICAgICAgICAgICBcIiwgaXQgaXMgaGFuZ2luZyBmcmVlbHlcIlxyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgICAgICBzYXkuYWRkKG9uZU9mLmdldE9uZSgpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgdGVzdGljbGVzID0gPEh1bWFub2lkVGVzdGljbGVzPiBwbGF5ZXIuZ2V0UGFydChIdW1hbm9pZFRlc3RpY2xlcyk7XHJcbiAgICAgICAgICAgIGlmIChIdW1hbm9pZFBlbmlzLmdldFNpemVUZXh0KGJ1bGdlcy5jcm90Y2gpICE9IEh1bWFub2lkUGVuaXMuZ2V0U2l6ZVRleHQocGVuaXMuZ2V0QnVsZ2VTaXplKCkgKyB0ZXN0aWNsZXMuZ2V0QnVsZ2VTaXplKCkpKSB7XHJcbiAgICAgICAgICAgICAgICBzYXkuYWRkKFwiLCBidXQgaXQgbG9va3MgbGlrZSBpdCdzIGFjdHVhbGx5IFwiLCBIdW1hbm9pZFBlbmlzLmdldFNpemVUZXh0KGJ1bGdlcy5jcm90Y2gpLCBcIiBkdWUgdG8geW91ciBjbG90aGluZ1wiKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNheS5hZGQoXCIuIFwiKTtcclxuICAgICAgICAgICAgaWYgKHRlc3RpY2xlcyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE86IERlc2NyaWJlIHRlc3RpY2xlcy4gQXJlIHdlIG1ha2luZyB0aGVzZSB2YXJpYWJsZT9cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNheS5hZGQodmFnaW5hLmdldERlc2NyaXB0aW9uKCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9zYXkuYWRkKFNheS5QQVJBR1JBUEhfQlJFQUspO1xyXG5cclxuICAgICAgICBzYXkuYWRkKCBcIiBcIik7XHJcblxyXG4gICAgICAgIGxldCBicmVhc3RzID0gPEh1bWFub2lkQnJlYXN0cz4gcGxheWVyLmdldFBhcnQoSHVtYW5vaWRCcmVhc3RzKTtcclxuICAgICAgICBsZXQgYnV0dCA9IDxIdW1hbm9pZEJ1dHQ+IHBsYXllci5nZXRQYXJ0KEh1bWFub2lkQnV0dCk7XHJcblxyXG4gICAgICAgIHNheS5hZGQoXCJZb3UgaGF2ZSBcIiwgYnJlYXN0cy5nZXRTaXplVGV4dCgpLCBcIiBicmVhc3RzIGFuZCBhIFwiLCBidXR0LmdldFNpemVUZXh0KCksIFwiIGJ1dHQuXCIpO1xyXG5cclxuXHJcbiAgICAgICAgaWYgKGJ1bGdlcy5icmVhc3RzICE9IGJyZWFzdHMuZ2V0U2l6ZSgpICYmIGJ1bGdlcy5idXR0ICE9IGJ1dHQuZ2V0U2l6ZSgpKSB7XHJcbiAgICAgICAgICAgIHNheS5hZGQoXCIgWW91ciBjbG90aGluZyBtYWtlcyB5b3VyIGJyZWFzdHMgbG9vayBsaWtlIHRoZXkncmUgYWN0dWFsbHkgXCIsIEh1bWFub2lkQnJlYXN0cy5nZXRTaXplVGV4dChidWxnZXMuYnJlYXN0cyksXHJcbiAgICAgICAgICAgICAgICBcIiBhbmQgbWFrZSB5b3VyIGJ1dHQgYXBwZWFyIFwiLCBIdW1hbm9pZEJ1dHQuZ2V0U2l6ZVRleHQoYnVsZ2VzLmJ1dHQpLCBcIi5cIik7XHJcbiAgICAgICAgfSBlbHNlIGlmIChidWxnZXMuYnJlYXN0cyAhPSBicmVhc3RzLmdldFNpemUoKSkge1xyXG4gICAgICAgICAgICBzYXkuYWRkKFwiIFlvdXIgY2xvdGhpbmcgbWFrZXMgeW91ciBicmVhc3RzIGxvb2sgbGlrZSB0aGV5J3JlIGFjdHVhbGx5IFwiLCBIdW1hbm9pZEJyZWFzdHMuZ2V0U2l6ZVRleHQoYnVsZ2VzLmJyZWFzdHMpLCBcIi5cIik7XHJcbiAgICAgICAgfSBlbHNlIGlmIChidWxnZXMuYnV0dCAhPSBidXR0LmdldFNpemUoKSkge1xyXG4gICAgICAgICAgICBzYXkuYWRkKFwiIFlvdXIgY2xvdGhpbmcgbWFrZXMgeW91ciBidXR0IGFwcGVhciBcIiwgSHVtYW5vaWRCdXR0LmdldFNpemVUZXh0KGJ1bGdlcy5idXR0KSwgXCIuXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2F5LmFkZChTYXkuUEFSQUdSQVBIX0JSRUFLKTtcclxuXHJcbiAgICAgICAgbGV0IGNsb3RoaW5nU2x1dHRpbmVzcyA9IENsb3RoaW5nLmdldFNsdXR0aW5lc3NWYWx1ZU9uKHBsYXllcik7XHJcbiAgICAgICAgbGV0IGJvZHlwYXJ0U2x1dHRpbmVzcyA9IEJvZHlwYXJ0LmdldFNsdXR0aW5lc3NWYWx1ZU9uKHBsYXllcik7XHJcblxyXG4gICAgICAgIGlmIChjbG90aGluZ1NsdXR0aW5lc3Mud2VpZ2h0ID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgY2xvdGhpbmdTbHV0dGluZXNzRmluYWwgPSBjbG90aGluZ1NsdXR0aW5lc3MudmFsdWUgLyBjbG90aGluZ1NsdXR0aW5lc3Mud2VpZ2h0O1xyXG4gICAgICAgICAgICBpZiAoY2xvdGhpbmdTbHV0dGluZXNzRmluYWwgPiA3NSkge1xyXG4gICAgICAgICAgICAgICAgc2F5LmFkZChcIllvdXIgb3V0Zml0IGNhbiBvbmx5IGJlIGRlc2NyaWJlZCBhcyBcXFwid2hvcmUtaXNoXFxcIiwgaXQgaXMgZmFyIHRvbyBuYXN0eS5cIilcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjbG90aGluZ1NsdXR0aW5lc3NGaW5hbCA+IDYwKSB7XHJcbiAgICAgICAgICAgICAgICBzYXkuYWRkKFwiWW91ciBjbG90aGluZyBhcmUgb2J2aW91c2x5IG1ha2luZyB5b3UgbG9vayBhIGJpdCBuYXVnaHR5LlwiKVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNsb3RoaW5nU2x1dHRpbmVzc0ZpbmFsIDwgMzAgJiYgc3Yuc2x1dHRpbmVzc0NvcnJlY3RlZCA8IDMwKSB7XHJcbiAgICAgICAgICAgICAgICBzYXkuYWRkKFwiWW91ciBjbG90aGluZyBhcmUgZGVmaW5pdGVseSBhIGJpdCBwcnVkZS5cIilcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjbG90aGluZ1NsdXR0aW5lc3NGaW5hbCA8IDE1ICYmIHN2LnNsdXR0aW5lc3NDb3JyZWN0ZWQgPCAzMCkge1xyXG4gICAgICAgICAgICAgICAgc2F5LmFkZChcIllvdXIgb3V0Zml0IGlzIHNvIHBydWRlIHRoYXQgaXQgY291bGQgYmUgd29ybiBieSBhIHNhaW50LlwiKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzYXkuYWRkKFwiIFwiKTtcclxuXHJcbiAgICAgICAgaWYgKGJvZHlwYXJ0U2x1dHRpbmVzcy53ZWlnaHQgPiAwKSB7XHJcbiAgICAgICAgICAgIGxldCBib2R5cGFydFNsdXR0aW5lc3NGaW5hbCA9IGJvZHlwYXJ0U2x1dHRpbmVzcy52YWx1ZSAvIGJvZHlwYXJ0U2x1dHRpbmVzcy53ZWlnaHQ7XHJcbiAgICAgICAgICAgIGlmIChib2R5cGFydFNsdXR0aW5lc3NGaW5hbCA+IDc1KSB7XHJcbiAgICAgICAgICAgICAgICBzYXkuYWRkKFwiVGhlIHdheSB5b3VyIGJvZHkgaXMgbWFrZXMgeW91IGxvb2sgbGlrZSB5b3Ugd2VyZSBtYWRlIHB1cmVseSBmb3Igc2V4XCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvdmVyZWRQZXJjID4gMC43KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2F5LmFkZChcIiwgdGhhbmtmdWxseSBpdCdzIG1vc3RseSBjb3ZlcmVkXCIpXHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvdmVyZWRQZXJjIDwgMC4yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2F5LmFkZChcIiwgYW5kIHlvdSBkaWRuJ3QgZXZlbiBib3RoZXIgY292ZXJpbmcgaXQgdXBcIilcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHNheS5hZGQoXCIuXCIpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJvZHlwYXJ0U2x1dHRpbmVzc0ZpbmFsID4gNjApIHtcclxuICAgICAgICAgICAgICAgIHNheS5hZGQoXCJZb3VyIGJvZHkgZGVmaW5pdGVseSBoYXMgYSBsb3Qgb2Ygc2V4LWFwcGVhbCBnb2luZyBvblwiKTtcclxuICAgICAgICAgICAgICAgIGlmIChjb3ZlcmVkUGVyYyA+IDAuNykge1xyXG4gICAgICAgICAgICAgICAgICAgIHNheS5hZGQoXCIsIGFsdGhvdWdoIGl0J3MgY292ZXJlZFwiKVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb3ZlcmVkUGVyYyA8IDAuMikge1xyXG4gICAgICAgICAgICAgICAgICAgIHNheS5hZGQoXCIsIHByb3VkbHkgZGlzcGxheWVkIGZvciBhbGwgdG8gc2VlXCIpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBzYXkuYWRkKFwiLlwiKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChib2R5cGFydFNsdXR0aW5lc3NGaW5hbCA8IDMwKSB7XHJcbiAgICAgICAgICAgICAgICBzYXkuYWRkKFwiWW91IGhhdmUgdmVyeSBsaXR0bGUgc2V4LWFwcGVhbCwgbWF5YmUgeW91IGFyZSBhIGtpdGNoZW4gdGFibGU/XCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvdmVyZWRQZXJjID4gMC43KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2F5LmFkZChcIiBBdCBsZWFzdCB5b3UgY292ZXJlZCBpdCB1cC5cIilcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY292ZXJlZFBlcmMgPCAwLjIpIHtcclxuICAgICAgICAgICAgICAgICAgICBzYXkuYWRkKFwiIE1heWJlIHlvdSBjb3VsZCBjb3ZlciBpdCB1cCBhIGJpdC5cIilcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2F5LmFkZChTYXkuUEFSQUdSQVBIX0JSRUFLKTtcclxuXHJcblxyXG5cclxuICAgICAgICBsZXQgc3RhdHMgPSBuZXcgU2F5TGVmdFJpZ2h0KCk7XHJcblxyXG4gICAgICAgIHN0YXRzLmFkZExlZnQobmV3IFNheUJvbGQoXCJTdHJlbmd0aDogXCIpLCBBdHRyaWJ1dGVzLlN0cmVuZ3RoLmdldERlc2NyaXB0aW9uKHBsYXllci5nZXRTdGF0KEF0dHJpYnV0ZXMuU3RyZW5ndGgpKSk7XHJcbiAgICAgICAgc3RhdHMuYWRkTGVmdChTYXkuTElORV9CUkVBSyk7XHJcbiAgICAgICAgc3RhdHMuYWRkTGVmdChuZXcgU2F5Qm9sZChcIkFnaWxpdHk6IFwiKSwgQXR0cmlidXRlcy5BZ2lsaXR5LmdldERlc2NyaXB0aW9uKHBsYXllci5nZXRTdGF0KEF0dHJpYnV0ZXMuQWdpbGl0eSkpKTtcclxuICAgICAgICBzdGF0cy5hZGRMZWZ0KFNheS5MSU5FX0JSRUFLKTtcclxuICAgICAgICBzdGF0cy5hZGRMZWZ0KG5ldyBTYXlCb2xkKFwiQ2hhcm06IFwiKSwgQXR0cmlidXRlcy5DaGFybS5nZXREZXNjcmlwdGlvbihwbGF5ZXIuZ2V0U3RhdChBdHRyaWJ1dGVzLkNoYXJtKSkpO1xyXG4gICAgICAgIHN0YXRzLmFkZExlZnQoU2F5LkxJTkVfQlJFQUspO1xyXG4gICAgICAgIHN0YXRzLmFkZExlZnQobmV3IFNheUJvbGQoXCJJbnRlbGxpZ2VuY2U6IFwiKSwgQXR0cmlidXRlcy5JbnRlbGxpZ2VuY2UuZ2V0RGVzY3JpcHRpb24ocGxheWVyLmdldFN0YXQoQXR0cmlidXRlcy5JbnRlbGxpZ2VuY2UpKSk7XHJcblxyXG4gICAgICAgIFNraWxsLmdldFNraWxscygpLmZvckVhY2goKHNraWxsOiBTa2lsbCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocGxheWVyLmdldFNraWxsKHNraWxsKSA+IDApIHtcclxuICAgICAgICAgICAgICAgIHN0YXRzLmFkZFJpZ2h0KG5ldyBTYXlCb2xkKHNraWxsLmlkICsgXCI6IFwiKSwgc2tpbGwuZ2V0RGVzY3JpcHRpb24ocGxheWVyLmdldFNraWxsKHNraWxsKSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHNheS5hZGQoc3RhdHMpO1xyXG5cclxuICAgICAgICByZXR1cm4gc2F5O1xyXG4gICAgfVxyXG59XHJcblxyXG5BY3Rpb25XZWFyLmNhcnJ5LmFkZFJ1bGUoSHVtYW5vaWQuY2FjaGVJbnZhbGlkYXRpb25BY3Rpb25SdWxlKTtcclxuQWN0aW9uUmVtb3ZlLmNhcnJ5LmFkZFJ1bGUoSHVtYW5vaWQuY2FjaGVJbnZhbGlkYXRpb25BY3Rpb25SdWxlKTsiLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiQ2xhc3Nlcy9UaGluZ3MvUGVyc29uLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIkNsYXNzZXMvVGhpbmdzL01hcE5vdGUudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiQ2xhc3Nlcy9UaGluZ3MvSHVtYW5vaWQvSHVtYW5vaWQudHNcIiAvPlxyXG5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIkNsYXNzZXMvUnVsZWJvb2sudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiQ2xhc3Nlcy9SdWxlLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIkNsYXNzZXMvU2F2ZS9TdG9yZWRWYXJpYWJsZS50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJQbGF5QmVnaW5zLnRzXCIgLz5cclxubW9kdWxlIFdvcmxkU3RhdGUge1xyXG4gICAgdmFyIHdvcmxkVHVybiA6IG51bWJlciA9IDA7XHJcbiAgICB2YXIgcGxheWVyVHVybiA6IG51bWJlciA9IDA7XHJcbiAgICBleHBvcnQgdmFyIHBsYXllciA6IEh1bWFub2lkID0gbmV3IEh1bWFub2lkKHtpc01hbGUgOiBmYWxzZX0pO1xyXG5cclxuICAgIHBsYXllci5kZXNjcmlwdGlvbiA9IEh1bWFub2lkLmdldFBsYXllckRlc2NyaXB0aW9uO1xyXG5cclxuICAgIHZhciByZW1lbWJlcmVkUm9vbXMgPSBuZXcgU3RvcmVkVmFyaWFibGU8QXJyYXk8c3RyaW5nPj4oe1xyXG4gICAgICAgIGlkIDogXCJSZW1lbWJlcmVkIFJvb21zXCIsXHJcbiAgICAgICAgdmFsdWUgOiBbXVxyXG4gICAgfSk7XHJcblxyXG4gICAgdmFyIHJlbWVtYmVyZWRGb2RkZXIgOiBBcnJheTxSb29tPiA9IFtdO1xyXG5cclxuICAgIGxldCByZW1lbWJlcmVkUm9vbXNGb3JJbnRlbGxpZ2VuY2UgPSAyO1xyXG4gICAgbGV0IHJlbWVtYmVyZWRSb29tc0ZvclN1cnZpdmFsID0gMTtcclxuXHJcbiAgICBleHBvcnQgdmFyIFJlbWVtYmVyaW5nUm9vbVJ1bGVib29rIDogUnVsZWJvb2s8Um9vbT4gPSBuZXcgUnVsZWJvb2soXCJSZW1lbWJlcmluZyBSb29tIHNvbWV0aGluZ1wiKTtcclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gaXNUdXJuV2FpdGluZyAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHdvcmxkVHVybiA8IHBsYXllclR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGluY3JlbWVudFdvcmxkVHVybiAoKSB7XHJcbiAgICAgICAgd29ybGRUdXJuKys7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGluY3JlbWVudFBsYXllclR1cm4gKCkge1xyXG4gICAgICAgIHBsYXllclR1cm4rKztcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZ2V0Q3VycmVudFR1cm4gKCkge1xyXG4gICAgICAgIHJldHVybiBwbGF5ZXJUdXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBzZXRDdXJyZW50VHVybiAodHVybiA6IG51bWJlcikge1xyXG4gICAgICAgIHBsYXllclR1cm4gPSB0dXJuO1xyXG4gICAgICAgIHdvcmxkVHVybiA9IHR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGxldCBSZW1lbWJlcmluZ1Jvb21Jbkxpc3QgPSBSZW1lbWJlcmluZ1Jvb21SdWxlYm9vay5jcmVhdGVBbmRBZGRSdWxlKHtcclxuICAgICAgICBuYW1lIDogXCJJcyByb29tIGxpc3RlZCBpbiByZW1lbWJlcmVkIHJvb21zP1wiLFxyXG4gICAgICAgIGZpcnN0UHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0xPV0VTVCxcclxuICAgICAgICBwcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfTE9XLFxyXG4gICAgICAgIGNvZGUgOiBydW5uZXIgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVtZW1iZXJlZFJvb21zLnZhbHVlLmluZGV4T2YocnVubmVyLm5vdW4uZ2V0TmFtZSgpKSAhPSAtMSB8fCByZW1lbWJlcmVkRm9kZGVyLmluZGV4T2YocnVubmVyLm5vdW4pICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGV4cG9ydCBsZXQgUmVtZW1iZXJpbmdSb29tSW5NYXAgPSBSZW1lbWJlcmluZ1Jvb21SdWxlYm9vay5jcmVhdGVBbmRBZGRSdWxlKHtcclxuICAgICAgICBuYW1lIDogXCJJcyByb29tIHNob3duIG9uIGEgbWFwP1wiLFxyXG4gICAgICAgIGZpcnN0UHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0xPV0VTVCxcclxuICAgICAgICBwcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfTE9XRVNULFxyXG4gICAgICAgIGNvZGUgOiBydW5uZXIgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbWFwcyA9IDxBcnJheTxNYXBOb3RlPj4gVGhpbmcuQ2FycnlSZWxhdGlvbi5nZXRSaWdodFR5cGUocGxheWVyLCBNYXBOb3RlKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobWFwc1tpXS5jb250YWlucyhydW5uZXIubm91bikpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc1Jvb21SZW1lbWJlcmVkIChyb29tIDogUm9vbSkgOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUmVtZW1iZXJpbmdSb29tUnVsZWJvb2suZXhlY3V0ZSh7bm91biA6IHJvb219KTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0ID09IHRydWU7IC8vIGNhbiByZXR1cm4gXCJ1bmRlZmluZWRcIlxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBnZXRSZW1lbWJlcmVkUm9vbXMgKCkge1xyXG4gICAgICAgIHJldHVybiByZW1lbWJlcmVkUm9vbXMudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGdldFJlbWVtYmVyZWRSb29tc0FzUm9vbXMgKCkgOiBBcnJheTxSb29tPiB7XHJcbiAgICAgICAgbGV0IHJvb21zID0gW107XHJcbiAgICAgICAgcmVtZW1iZXJlZFJvb21zLnZhbHVlLmZvckVhY2gocm9vbU5hbWUgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcm9vbSA9IFJvb20uZ2V0Um9vbShyb29tTmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChyb29tICE9IHVuZGVmaW5lZCkgcm9vbXMucHVzaChyb29tKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJvb21zO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBnZXRNYXhpbXVtUmVtZW1iZXJlZFJvb21zICgpIHtcclxuICAgICAgICBsZXQgaW50Um9vbXMgPSBwbGF5ZXIuZ2V0U3RhdChBdHRyaWJ1dGVzLkludGVsbGlnZW5jZSkgKiByZW1lbWJlcmVkUm9vbXNGb3JJbnRlbGxpZ2VuY2U7XHJcbiAgICAgICAgbGV0IHNraWxsUm9vbXMgPSBwbGF5ZXIuZ2V0U2tpbGwoU2tpbGxzLlN1cnZpdmFsKSAqIHJlbWVtYmVyZWRSb29tc0ZvclN1cnZpdmFsO1xyXG4gICAgICAgIHJldHVybiBpbnRSb29tcyArIHNraWxsUm9vbXM7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHRydW5jYXRlUm9vbXMgKCkge1xyXG4gICAgICAgIHdoaWxlIChyZW1lbWJlcmVkUm9vbXMudmFsdWUubGVuZ3RoID4gZ2V0TWF4aW11bVJlbWVtYmVyZWRSb29tcygpKXtcclxuICAgICAgICAgICAgcmVtZW1iZXJlZFJvb21zLnZhbHVlLnBvcCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gcmVtZW1iZXJSb29tICguLi5yb29tcyA6IEFycmF5PFJvb20+KSB7XHJcbiAgICAgICAgcm9vbXMuZm9yRWFjaCgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUm9vbSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlLmZvZGRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZW1lbWJlcmVkRm9kZGVyLmluZGV4T2YodmFsdWUpID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbWVtYmVyZWRGb2RkZXIucHVzaCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaWR4ID0gcmVtZW1iZXJlZFJvb21zLnZhbHVlLmluZGV4T2YodmFsdWUuZ2V0TmFtZSgpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbWVtYmVyZWRSb29tcy52YWx1ZS5zcGxpY2UoaWR4LCAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVtZW1iZXJlZFJvb21zLnZhbHVlLnVuc2hpZnQodmFsdWUuZ2V0TmFtZSgpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRydW5jYXRlUm9vbXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gc2F2ZVN0YXRlICgpIHtcclxuICAgICAgICBsZXQgdGhpbmdzID0ge1xyXG4gICAgICAgICAgICBjYXJyaWVkOiBbXSxcclxuICAgICAgICAgICAgd29ybjogW10sXHJcbiAgICAgICAgICAgIHdpZWxkZWQ6IFtdXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgVGhpbmdzIDogdGhpbmdzXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgbGV0IENvcnJlY3RSZW1lbWJlcmVkUm9vbXNSdWxlID0gUGxheUJlZ2lucy5ydWxlYm9vay5jcmVhdGVBbmRBZGRSdWxlKHtcclxuICAgICAgICBuYW1lIDogXCJDb3JyZWN0IHJlbWVtYmVyZWQgcm9vbXNcIixcclxuICAgICAgICBmaXJzdFByaW9yaXR5IDogUnVsZS5QUklPUklUWV9MT1dFU1QsXHJcbiAgICAgICAgcHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX01FRElVTSxcclxuICAgICAgICBjb2RlIDogKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgYWxsUm9vbXMgPSByZW1lbWJlcmVkUm9vbXMudmFsdWU7XHJcbiAgICAgICAgICAgIGxldCBjdXJyZW50Um9vbSA9IFdvcmxkU3RhdGUucGxheWVyLmdldFJvb20oKTtcclxuICAgICAgICAgICAgaWYgKGFsbFJvb21zLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZW1lbWJlcmVkUm9vbXMudmFsdWUgPSBbY3VycmVudFJvb20uZ2V0TmFtZSgpXTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgbmV3Um9vbXMgPSBbXTtcclxuXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZWx5QWRkUm9vbXMgKHJvb20gOiBSb29tKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocm9vbSBpbnN0YW5jZW9mIFJvb21SYW5kb20pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocm9vbS5mb2RkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtZW1iZXJlZEZvZGRlci5wdXNoKHJvb20pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByb29tLmNvbm5lY3Rpb25zLmZvckVhY2goKG5ld1Jvb20pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZWx5QWRkUm9vbXMobmV3Um9vbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWxsUm9vbXMuaW5kZXhPZihyb29tLmdldE5hbWUoKSkgIT0gLTEgJiYgbmV3Um9vbXMuaW5kZXhPZihyb29tLmdldE5hbWUoKSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3Um9vbXMucHVzaChyb29tLmdldE5hbWUoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb20uY29ubmVjdGlvbnMuZm9yRWFjaCgobmV3Um9vbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlbHlBZGRSb29tcyhuZXdSb29tKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZWN1cnNpdmVseUFkZFJvb21zKGN1cnJlbnRSb29tKTtcclxuICAgICAgICAgICAgcmVtZW1iZXJlZFJvb21zLnZhbHVlID0gbmV3Um9vbXM7XHJcbiAgICAgICAgfVxyXG4gICAgfSlcclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJSZWxhdGlvbnMvUmVsYXRpb25PbmVUb01hbnkudHNcIiAvPlxyXG5jbGFzcyBSZWdpb24ge1xyXG4gICAgcHVibGljIG5hbWUgOiBzdHJpbmc7XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChuYW1lIDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIFJlZ2lvblJvb20gPSBuZXcgUmVsYXRpb25PbmVUb01hbnkoKTtcclxuICAgIHB1YmxpYyBzdGF0aWMgUmVnaW9uUmVnaW9uID0gbmV3IFJlbGF0aW9uT25lVG9NYW55KCk7XHJcbiAgICBwdWJsaWMgc3RhdGljIEluUmVsYXRpb24gPSBuZXcgUmVsYXRpb25IYW5kbGVyU3RyaWN0T25lVG9NYW55KFJlZ2lvbi5SZWdpb25SZWdpb24sIFJlZ2lvbi5SZWdpb25Sb29tKTtcclxuXHJcbiAgICBwdWJsaWMgcGxhY2UgKC4uLnJvb21zIDogQXJyYXk8Um9vbSB8IFJlZ2lvbj4pIHtcclxuICAgICAgICByb29tcy5mb3JFYWNoKHJvb20gPT4ge1xyXG4gICAgICAgICAgICBpZiAocm9vbSBpbnN0YW5jZW9mIFJvb20pIHtcclxuICAgICAgICAgICAgICAgIFJlZ2lvbi5SZWdpb25Sb29tLnNldFJlbGF0aW9uKHRoaXMsIHJvb20pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgUmVnaW9uLlJlZ2lvblJlZ2lvbi5zZXRSZWxhdGlvbih0aGlzLCByb29tKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRSb29tcyAoKSB7XHJcbiAgICAgICAgbGV0IHJvb21zID0gPEFycmF5PFJvb20+PiBSZWdpb24uUmVnaW9uUm9vbS5nZXRSaWdodCh0aGlzKTtcclxuICAgICAgICBSZWdpb24uUmVnaW9uUmVnaW9uLmdldFJpZ2h0KHRoaXMpLmZvckVhY2goKHJlZ2lvbiA6IFJlZ2lvbikgPT4ge1xyXG4gICAgICAgICAgICAoPEFycmF5PFJvb20+PiBSZWdpb24uUmVnaW9uUm9vbS5nZXRSaWdodChyZWdpb24pKS5mb3JFYWNoKChyb29tIDogUm9vbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcm9vbXMucHVzaChyb29tKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJvb21zO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjb250YWluc1Jvb20gKHJvb20gOiBSb29tKSB7XHJcbiAgICAgICAgbGV0IGRpcmVjdGx5Q29udGFpbmVkID0gUmVnaW9uLlJlZ2lvblJvb20uZ2V0TGVmdChyb29tKSA9PSB0aGlzO1xyXG4gICAgICAgIGlmIChkaXJlY3RseUNvbnRhaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKFJlZ2lvbi5SZWdpb25SZWdpb24uZ2V0TGVmdCh0aGlzKSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um9vbXMoKS5pbmRleE9mKHJvb20pICE9IC0xOyAvLyBJZiBpdCdzIG5vdCBkaXJlY3RseSBjb250YWluZWQsIHdlIGhhdmUgdG8gY2hlY2sgcm9vbXMgZm9yIGV2ZXJ5IHJlZ2lvbiB0aGF0IGNvbnRhaW5zIHRoaXMgb25lIGFuZCBJIGRvbid0IGNhcmUgZW5vdWdoIHRvIGRvIHRoYXQgcmlnaHQgbm93XHJcbiAgICAgICAgICAgIC8vIFRPRE86IG9wdGltaXplIHRoaXMuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY29udGFpbnMgKHRoaW5nIDogVGhpbmcpIHtcclxuICAgICAgICBsZXQgcm9vbSA9IHRoaW5nLmdldFJvb20oKTtcclxuICAgICAgICBpZiAocm9vbSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCByZWdpb25zID0gUmVnaW9uLkluUmVsYXRpb24uZ2V0QWxsTGVmdChyb29tKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlZ2lvbnMuaW5kZXhPZih0aGlzKSAhPSAtMTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCIvKipcclxuICogV2FybmluZzogU2h1ZmZsZXJzIHdpbGwgYWx0ZXIgdGhlIGdpdmVuIGFycmF5XHJcbiAqL1xyXG5jbGFzcyBTaHVmZmxlcjxUPiB7XHJcbiAgICBwcml2YXRlIGFycmF5IDogQXJyYXk8VD47XHJcbiAgICBwcml2YXRlIHBvc2l0aW9uID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1heWJlIHVzZSBzZWVkZWQgcmFuZG9tIHNvbWUgZGF5XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcm5nIDogKCkgPT4gbnVtYmVyO1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoYXJyYXkgOiBBcnJheTxUPiwgcm5nPyA6ICgpID0+IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMucm5nID0gcm5nID09IHVuZGVmaW5lZCA/IE1hdGgucmFuZG9tIDogcm5nO1xyXG4gICAgICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVzdGFydCAoKSB7XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGEgcmFuZG9tIGVsZW1lbnQgZnJvbSB0aGUgU2h1ZmZsZXIgQXJyYXlcclxuICAgICAqIENhbiBiZSBjYWxsZWQgcmVwZWF0ZWRseVxyXG4gICAgICogV2hlbiB0aGVyZSBhcmUgbm8gbW9yZSBlbGVtZW50cyBsZWZ0LCByZXR1cm5zIHVuZGVmaW5lZFxyXG4gICAgICogQHJldHVybnMge1R9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRPbmUgKCkgOiBUIHtcclxuICAgICAgICAvLyBnZXQgYSByYW5kb20gZWxlbWVudCBmcm9tIHRoaXMucG9zaXRpb24gdG8gKGFycmF5Lmxlbmd0aCAtIDEpXHJcbiAgICAgICAgLy8gc3RvcmUgaXQgbG9jYWxseVxyXG4gICAgICAgIC8vIHN3aXRjaCBpdCB3aXRoIGFycmF5W3RoaXMucG9zaXRpb25dXHJcbiAgICAgICAgLy8gcmV0dXJuIGl0XHJcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb24gPj0gdGhpcy5hcnJheS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcih0aGlzLnJuZygpICogKHRoaXMuYXJyYXkubGVuZ3RoIC0gdGhpcy5wb3NpdGlvbikpICsgdGhpcy5wb3NpdGlvbjtcclxuICAgICAgICBsZXQgbG9jYWxDb3B5ID0gdGhpcy5hcnJheVt0aGlzLnBvc2l0aW9uXTtcclxuICAgICAgICB0aGlzLmFycmF5W3RoaXMucG9zaXRpb25dID0gdGhpcy5hcnJheVtyYW5kb21JbmRleF07XHJcbiAgICAgICAgdGhpcy5hcnJheVtyYW5kb21JbmRleF0gPSBsb2NhbENvcHk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5wb3NpdGlvbisrXTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZXJlIHNob3VsZCBiZSBubyByZWFzb24gdG8gdXNlIHRoaXMgd2l0aCB0aGUgXCJnZXRPbmVcIiBjb2RlIGFib3ZlLlxyXG4gICAgICogQHJldHVybnMge1RbXX1cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldFNodWZmbGVkICgpIDogQXJyYXk8VD4ge1xyXG4gICAgICAgIGxldCBhcnJheSA9IHRoaXMuYXJyYXkuc2xpY2UoMCk7XHJcbiAgICAgICAgdmFyIG0gPSBhcnJheS5sZW5ndGgsIHQsIGk7XHJcbiAgICAgICAgd2hpbGUgKG0pIHtcclxuICAgICAgICAgICAgaSA9IE1hdGguZmxvb3IodGhpcy5ybmcoKSAqIG0tLSk7XHJcbiAgICAgICAgICAgIHQgPSBhcnJheVttXTtcclxuICAgICAgICAgICAgYXJyYXlbbV0gPSBhcnJheVtpXTtcclxuICAgICAgICAgICAgYXJyYXlbaV0gPSB0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGFycmF5O1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL0FJLnRzXCIgLz5cclxubW9kdWxlIEFJUnVsZXMge1xyXG4gICAgZXhwb3J0IHZhciBQaWNrU2hpbnkgPSBBSS5ydWxlcy5jcmVhdGVBbmRBZGRSdWxlKHtcclxuICAgICAgICBuYW1lIDogXCJQaWNrIFNoaW5pZXNcIixcclxuICAgICAgICBmaXJzdFByaW9yaXR5IDogQUlSdWxlcy5QUklPUklUWV9BQ1RJTkdfT05fUExBQ0UsXHJcbiAgICAgICAgY29uZGl0aW9ucyA6IChydW5uZXIgOiBSdWxlYm9va1J1bm5lcjxQZXJzb24+KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBwZXJzb24gPSBydW5uZXIubm91bjtcclxuICAgICAgICAgICAgcmV0dXJuIHBlcnNvbi5BSS5waWNrc1NoaW5pZXM7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb2RlIDogKHJ1bm5lciA6IFJ1bGVib29rUnVubmVyPFBlcnNvbj4pID0+IHtcclxuICAgICAgICAgICAgbGV0IHBlcnNvbiA9IHJ1bm5lci5ub3VuO1xyXG4gICAgICAgICAgICBsZXQgcm9vbSA9IHBlcnNvbi5nZXRSb29tKCk7XHJcbiAgICAgICAgICAgIGxldCB2aXNpYmxlVGhpbmdzID0gcm9vbS5nZXRDb250YWluZWRBbmRWaXNpYmxlVG8ocGVyc29uKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh2aXNpYmxlVGhpbmdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmlzaWJsZVRoaW5ncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdmlzaWJsZVRoaW5nc1tpXS5maXhlZEluUGxhY2UgJiYgdmlzaWJsZVRoaW5nc1tpXS5nZXRTaGlueSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQWN0aW9uVGFrZShwZXJzb24sIHZpc2libGVUaGluZ3NbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL0FJLnRzXCIgLz5cclxubW9kdWxlIEFJUnVsZXMge1xyXG4gICAgZXhwb3J0IHZhciBXYW5kZXIgPSBBSS5ydWxlcy5jcmVhdGVBbmRBZGRSdWxlKHtcclxuICAgICAgICBuYW1lIDogXCJXYW5kZXJcIixcclxuICAgICAgICBmaXJzdFByaW9yaXR5IDogQUlSdWxlcy5QUklPUklUWV9BQ1RJTkdfT05fSURMRSxcclxuICAgICAgICBjb25kaXRpb25zIDogKHJ1bm5lciA6IFJ1bGVib29rUnVubmVyPFBlcnNvbj4pID0+IHtcclxuICAgICAgICAgICAgbGV0IHBlcnNvbiA9IHJ1bm5lci5ub3VuO1xyXG4gICAgICAgICAgICByZXR1cm4gcGVyc29uLkFJLndhbmRlcmVyICYmIChNYXRoLnJhbmRvbSgpICogMTAwKSA+IHBlcnNvbi5BSS53YW5kZXJDaGFuY2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb2RlIDogKHJ1bm5lciA6IFJ1bGVib29rUnVubmVyPFBlcnNvbj4pID0+IHtcclxuICAgICAgICAgICAgbGV0IHBlcnNvbiA9IHJ1bm5lci5ub3VuO1xyXG4gICAgICAgICAgICBsZXQgcm9vbSA9IDxSb29tUmFuZG9tPiBwZXJzb24uZ2V0Um9vbSgpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBlcnNvbi5BSS53YW5kZXJzT24gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzdGljayB0byByZWdpb24gd2hpbGUgd2FuZGVyaW5nXHJcbiAgICAgICAgICAgICAgICBpZiAocGVyc29uLkFJLndhbmRlcnNPbi5jb250YWluc1Jvb20ocm9vbSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBBbHJlZHkgaW4gcmVnaW9uLCBzbyBqdXN0IHdhbmRlciBvZmYgaW5zaWRlIGl0XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbm5lY3Rpb25zID0gcm9vbS5jb25uZWN0aW9ucy5zbGljZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCByZWFsQ29ubmVjdGlvbnMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbm5lY3Rpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uc1tpXSAhPSB1bmRlZmluZWQgJiYgcGVyc29uLkFJLndhbmRlcnNPbi5jb250YWluc1Jvb20oY29ubmVjdGlvbnNbaV0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsQ29ubmVjdGlvbnMucHVzaChpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGlyZWN0aW9uID0gKChuZXcgU2h1ZmZsZXIocmVhbENvbm5lY3Rpb25zKSkuZ2V0T25lKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQWN0aW9uR28ocGVyc29uLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm4gdG8gcmVnaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ2lvblJvb21zID0gcGVyc29uLkFJLndhbmRlcnNPbi5nZXRSb29tcygpLmZpbHRlcigoYSA6IFJvb20pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBSb29tUmFuZG9tICYmIGEucGxhY2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIElkZWFsbHkgd2UnZCBhY3R1YWxseSBtYWtlIGEgcGF0aCB0byBpdCBhbmQgY2hlY2sgdGhlIGRpc3RhbmNlLCBzaW5jZSBtYXplcyBjYW4gbWFrZSBpdCBiZSBsb25nZXIgdGhhbiBpdCByZWFsbHkgaXNcclxuICAgICAgICAgICAgICAgICAgICAvLyBCdXQgdGhpcyBpcyBxdWljayBhbmQgZGlydHkgZW5vdWdoLiBBbmQgc2luY2UgcmVnaW9ucyBhcmUgY2xvc2VseSBwYWNrZWQsIGV2ZW4gaWYgdGhpcyBpcyBub3QgcmVhbGx5IHRoZSBjbG9zZXN0IHJvb20sIHRoZSBOUEMgd2lsbCBlbmQgdXBcclxuICAgICAgICAgICAgICAgICAgICAvLyBlbnRlcmluZyB0aGUgcmVnaW9uIGVhcmxpZXIgYnkgYWNjaWRlbnQuXHJcbiAgICAgICAgICAgICAgICAgICAgcmVnaW9uUm9vbXMuc29ydCgoYSA6IFJvb21SYW5kb20sIGIgOiBSb29tUmFuZG9tKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkaXN0ID0gYS5nZXREaXN0YW5jZVRvKGIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlzdCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtZGlzdDsgLy8gVGhpcyBtZWFucyB0aGF0IHRoZSBsYXRlc3QgZWxlbWVudCB3aWxsIGJlIHRoZSBjbG9zZXN0LlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7IC8vIFRoaXMgbWVhbnMgdGhhdCB0aGUgZmlyc3QgZWxlbWVudHMgd2lsbCBiZSB1bnJlYWNoYWJsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0YXJnZXRSb29tID0gcmVnaW9uUm9vbXMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBY3Rpb25HbyhwZXJzb24sIHRhcmdldFJvb20pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8ganVzdCB3YW5kZXIgaW4gcmFuZG9tIGRpcmVjdGlvblxyXG4gICAgICAgICAgICAgICAgbGV0IGRpcmVjdGlvbiA9IHJvb20uZ2V0Q29ubmVjdGVkRGlyZWN0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFjdGlvbkdvKHBlcnNvbiwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL0FjdGlvbi50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9SdWxlLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1J1bGVib29rLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uLy4uL0VsZW1lbnRzL0NsYXNzZXMvU2F5L1NheUJvbGQudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vRWxlbWVudHMvTW9kdWxlcy9IeXBlcmxpbmtIYW5kbGVyLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uLy4uL0VsZW1lbnRzL01vZHVsZXMvSW52ZW50b3J5SGFuZGxlci50c1wiIC8+XHJcblxyXG5jbGFzcyBBY3Rpb25Ecm9wIGV4dGVuZHMgQWN0aW9uIHtcclxuICAgIHB1YmxpYyBzdGF0aWMgY2hlY2sgPSBuZXcgUnVsZWJvb2s8QWN0aW9uRHJvcD4oXCJDaGVjayBEcm9wcGluZ1wiKTtcclxuICAgIHB1YmxpYyBzdGF0aWMgY2FycnkgPSBuZXcgUnVsZWJvb2s8QWN0aW9uRHJvcD4oXCJDYXJyeSBvdXQgRHJvcHBpbmdcIik7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOZWVkcyB0byByZXR1cm4gYSBzdHJpbmcgZXhwbGFpbmluZyB3aGF0IHRoZSBwbGF5ZXIgd2lsbCBkbyBpZiBoZSBkb2VzIHRoaXMgYWN0aW9uLlxyXG4gICAgICogRm9yIGluc3RhbmNlLCBBY3Rpb25UYWtpbmcgc2hvdWxkIHJldHVybiBzb21ldGhpbmcgbGlrZSByZXR1cm4gXCJ0YWtlIFwiICsgdGhpcy5ub3Vuc1swXS5nZXROYW1lKCksXHJcbiAgICAgKiAgIHdoaWNoIHdvdWxkIHJlYWQgYXMgXCJ0YWtlIHRoaW5nXCIuXHJcbiAgICAgKiAgIHJlbWVtYmVyIHRoYXQgdGhpbmdzIGltcGxlbWVudCBQUklOVEFCTEUgaW50ZXJmYWNlLCBzbyB5b3UgY2FuIGdldCB0aGVpciBuYW1lcy5cclxuICAgICAqIEByZXR1cm5zIHtTYXl9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRDb21tYW5kVGV4dCAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFwiZHJvcCBcIiArICh0aGlzLmdldE5vdW4oMCkgIT0gdW5kZWZpbmVkID8gdGhpcy5nZXROb3VuKDApLmdldFByaW50ZWROYW1lKCkgOiBcIlwiKTtcclxuICAgIH1cclxufVxyXG5cclxuQWN0aW9uRHJvcC5jaGVjay5hZGRSdWxlKFxyXG4gICAgbmV3IFJ1bGUoe1xyXG4gICAgICAgIG5hbWUgOiBcIkNoZWNrIERyb3BwaW5nIC0gQXJlIHlvdSBXZWFyaW5nIGl0P1wiLFxyXG4gICAgICAgIGZpcnN0UHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0xPV0VTVCxcclxuICAgICAgICBjb2RlIDogYXN5bmMgKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8QWN0aW9uRHJvcD4pID0+IHtcclxuICAgICAgICAgICAgbGV0IGFjdGlvbiA9IDxBY3Rpb25Hbz4gcnVsZWJvb2subm91bjtcclxuICAgICAgICAgICAgbGV0IGFjdG9yID0gYWN0aW9uLmFjdG9yO1xyXG4gICAgICAgICAgICBsZXQgdGhpbmcgPSAoPFRoaW5nPmFjdGlvbi5nZXROb3VuKDApKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChUaGluZy5XZWFyUmVsYXRpb24uZ2V0TGVmdCh0aGluZykgPT0gYWN0b3IgfHwgVGhpbmcuV2llbGRSZWxhdGlvbi5nZXRMZWZ0KHRoaW5nKSA9PSBhY3Rvcil7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWN0aW9uLmFjdG9yID09IFdvcmxkU3RhdGUucGxheWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnNheS5hZGQoXCIoZmlyc3QgdGFraW5nIG9mZiB0aGUgXCIsIHRoaW5nLCBcIilcIiwgU2F5LkxJTkVfQlJFQUspO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IHRha2luZ0FjdGlvbiA9IG5ldyBBY3Rpb25SZW1vdmUoYWN0b3IsIHRoaW5nKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRha2luZ0FjdGlvbi5leGVjdXRlKCk7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb24uc2F5LmFkZCh0YWtpbmdBY3Rpb24uc2F5KTtcclxuICAgICAgICAgICAgICAgIGlmIChUaGluZy5XZWFyUmVsYXRpb24uZ2V0TGVmdCh0aGluZykgPT0gYWN0b3IgfHwgVGhpbmcuV2llbGRSZWxhdGlvbi5nZXRMZWZ0KHRoaW5nKSA9PSBhY3Rvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGFjdGlvbi5zYXkuYWRkKFNheS5MSU5FX0JSRUFLKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pXHJcbik7XHJcblxyXG5BY3Rpb25Ecm9wLmNoZWNrLmFkZFJ1bGUoXHJcbiAgICBuZXcgUnVsZSh7XHJcbiAgICAgICAgbmFtZSA6IFwiQ2hlY2sgRHJvcHBpbmcgLSBEbyB5b3UgaGF2ZSBpdD8/XCIsXHJcbiAgICAgICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfTE9XRVNULFxyXG4gICAgICAgIGNvZGUgOiAocnVsZWJvb2sgOiBSdWxlYm9va1J1bm5lcjxBY3Rpb25Ecm9wPikgPT4ge1xyXG4gICAgICAgICAgICBsZXQgYWN0aW9uID0gPEFjdGlvbkdvPiBydWxlYm9vay5ub3VuO1xyXG4gICAgICAgICAgICBsZXQgYWN0b3IgPSBhY3Rpb24uYWN0b3I7XHJcbiAgICAgICAgICAgIGxldCB0aGluZyA9ICg8VGhpbmc+YWN0aW9uLmdldE5vdW4oMCkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKFRoaW5nLkNhcnJ5UmVsYXRpb24uZ2V0TGVmdCh0aGluZykgIT0gYWN0b3Ipe1xyXG4gICAgICAgICAgICAgICAgaWYgKGFjdG9yID09IFdvcmxkU3RhdGUucGxheWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnNheS5hZGQoXCJZb3UgZG9uJ3QgaGF2ZSBpdC5cIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9KVxyXG4pO1xyXG5cclxuQWN0aW9uRHJvcC5jYXJyeS5hZGRSdWxlKFxyXG4gICAgbmV3IFJ1bGUoe1xyXG4gICAgICAgIG5hbWUgOiBcIkRyb3BwaW5nIC0gUGxhY2UgdGhlIG5vdW4gb24gdGhlIGZsb29yXCIsXHJcbiAgICAgICAgY29kZSA6IChydWxlYm9vayA6IFJ1bGVib29rUnVubmVyPEFjdGlvbkRyb3A+KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBhY3Rpb24gPSA8QWN0aW9uR28+IHJ1bGVib29rLm5vdW47XHJcbiAgICAgICAgICAgIGxldCBhY3RvciA9IGFjdGlvbi5hY3RvcjtcclxuICAgICAgICAgICAgbGV0IHRoaW5nID0gKDxUaGluZz5hY3Rpb24uZ2V0Tm91bigwKSk7XHJcblxyXG4gICAgICAgICAgICBUaGluZy5FbmNsb3NlZFJlbGF0aW9uLnVuc2V0UmlnaHQodGhpbmcpO1xyXG5cclxuICAgICAgICAgICAgYWN0b3IuZ2V0Um9vbSgpLnBsYWNlKHRoaW5nKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChhY3RvciA9PSBXb3JsZFN0YXRlLnBsYXllcikge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uLnNheS5hZGQobmV3IFNheUJvbGQoKDxUaGluZz4gYWN0aW9uLmdldE5vdW4oMCkpLmdldFByaW50ZWROYW1lKCkgKyBcIjogXCIpLCBcIkRyb3BwZWQuXCIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uLnNheS5hZGQobmV3IFNheVRoZSgpLCBhY3RvciwgXCIgZHJvcHMgXCIsIG5ldyBTYXlUaGUoKSwgKDxUaGluZz4gYWN0aW9uLmdldE5vdW4oMCkpLCBcIiBvbiB0aGUgZmxvb3IuXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSlcclxuKTtcclxuXHJcbi8qKlxyXG4gKiBIeXBlcmxpbmtpbmdcclxuICovXHJcbkVsZW1lbnRzLkh5cGVybGlua0hhbmRsZXIuSHlwZXJsaW5raW5nUnVsZWJvb2suYWRkUnVsZShuZXcgUnVsZShcclxuICAgIHtcclxuICAgICAgICBuYW1lIDogXCJIeXBlcmxpbmsgLSBEcm9wXCIsXHJcbiAgICAgICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfSElHSEVTVCxcclxuICAgICAgICBjb2RlIDogKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8VGhpbmc+KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCB0aGluZyA9IDxUaGluZz4gcnVsZWJvb2subm91bjtcclxuXHJcbiAgICAgICAgICAgIGlmIChUaGluZy5DYXJyeVJlbGF0aW9uLmdldExlZnQodGhpbmcpID09IFdvcmxkU3RhdGUucGxheWVyIHx8IFRoaW5nLldpZWxkUmVsYXRpb24uZ2V0TGVmdCh0aGluZykgPT0gV29ybGRTdGF0ZS5wbGF5ZXIgfHwgVGhpbmcuV2VhclJlbGF0aW9uLmdldExlZnQodGhpbmcpID09IFdvcmxkU3RhdGUucGxheWVyKSB7XHJcbiAgICAgICAgICAgICAgICBFbGVtZW50cy5IeXBlcmxpbmtIYW5kbGVyLmFkZEF2YWlsYWJsZUFjdGlvbihcIkRyb3BcIiwgbmV3IEFjdGlvbkRyb3AoV29ybGRTdGF0ZS5wbGF5ZXIsIHRoaW5nKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbikpO1xyXG5cclxuLyoqXHJcbiBJbnZlbnRvcnlcclxuICovXHJcbkVsZW1lbnRzLkludmVudG9yeUhhbmRsZXIuTGlua2luZ1RoaW5nLmFkZFJ1bGUobmV3IFJ1bGUoXHJcbiAgICB7XHJcbiAgICAgICAgbmFtZSA6IFwiSW52ZW50b3J5IC0gRHJvcFwiLFxyXG4gICAgICAgIGZpcnN0UHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0xPV0VTVCxcclxuICAgICAgICBjb2RlIDogKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8VGhpbmc+KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCB0aGluZyA9IDxUaGluZz4gcnVsZWJvb2subm91bjtcclxuXHJcbiAgICAgICAgICAgIEVsZW1lbnRzLkludmVudG9yeUhhbmRsZXIucHJpbnRUaGluZ0xpbmsoXCJEXCIsIG5ldyBBY3Rpb25Ecm9wKFdvcmxkU3RhdGUucGxheWVyLCB0aGluZykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuKSk7IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL0FjdGlvbi50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi9FbGVtZW50cy9Nb2R1bGVzL0ludmVudG9yeUhhbmRsZXIudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vRWxlbWVudHMvQ2xhc3Nlcy9TYXkudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vRWxlbWVudHMvQ2xhc3Nlcy9TYXkvU2F5Qm9sZC50c1wiIC8+XHJcblxyXG5jbGFzcyBBY3Rpb25JbnZlbnRvcnkgZXh0ZW5kcyBBY3Rpb24ge1xyXG4gICAgcHVibGljIHJlcXVpcmVzVHVybiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHJlcXVpcmVzTm91biA9IGZhbHNlO1xyXG4gICAgcHVibGljIHJlcXVpcmVzVmlzaWJpbGl0eSA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgY2hlY2sgOiBSdWxlYm9vazxBY3Rpb25JbnZlbnRvcnk+ID0gbmV3IFJ1bGVib29rKFwiQ2hlY2sgVGFraW5nIEludmVudG9yeVwiKTtcclxuICAgIHB1YmxpYyBzdGF0aWMgY2FycnkgOiBSdWxlYm9vazxBY3Rpb25JbnZlbnRvcnk+ID0gbmV3IFJ1bGVib29rKFwiQ2Fycnkgb3V0IFRha2luZyBJbnZlbnRvcnlcIik7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOZWVkcyB0byByZXR1cm4gYSBzdHJpbmcgZXhwbGFpbmluZyB3aGF0IHRoZSBwbGF5ZXIgd2lsbCBkbyBpZiBoZSBkb2VzIHRoaXMgYWN0aW9uLlxyXG4gICAgICogRm9yIGluc3RhbmNlLCBBY3Rpb25UYWtpbmcgc2hvdWxkIHJldHVybiBzb21ldGhpbmcgbGlrZSByZXR1cm4gXCJ0YWtlIFwiICsgdGhpcy5ub3Vuc1swXS5nZXROYW1lKCksXHJcbiAgICAgKiAgIHdoaWNoIHdvdWxkIHJlYWQgYXMgXCJ0YWtlIHRoaW5nXCIuXHJcbiAgICAgKiAgIHJlbWVtYmVyIHRoYXQgdGhpbmdzIGltcGxlbWVudCBQUklOVEFCTEUgaW50ZXJmYWNlLCBzbyB5b3UgY2FuIGdldCB0aGVpciBuYW1lcy5cclxuICAgICAqIEByZXR1cm5zIHtTYXl9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRDb21tYW5kVGV4dCAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFwidGFrZSBpbnZlbnRvcnlcIjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIGNyZWF0ZUJ1dHRvbiAodGhpbmcgOiBUaGluZywgcmVzb2x2ZSA6ICh0IDogVGhpbmcpID0+IHZvaWQpIHtcclxuICAgICAgICBsZXQgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJwXCIpO1xyXG4gICAgICAgIHAuY2xhc3NMaXN0LmFkZChcImNob2ljZVwiKTtcclxuICAgICAgICBsZXQgZWxlbWVudHMgPSBhd2FpdCAoKG5ldyBTYXkodGhpbmcpKS5nZXRQdXJlRWxlbWVudHMoKSk7XHJcbiAgICAgICAgZWxlbWVudHMuZm9yRWFjaChlbGUgPT4ge1xyXG4gICAgICAgICAgICBwLmFwcGVuZENoaWxkKGVsZSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHAuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgICAgICAgICAgcmVzb2x2ZSh0aGluZyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIENvbnRyb2xzLktleUhhbmRsZXIuYXBwbHlDb2RlKHAsIENvbnRyb2xzLktleUhhbmRsZXIuZ2V0Rmlyc3RLZXlDb2RlKCkpO1xyXG5cclxuICAgICAgICByZXR1cm4gcDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGNoZWNrSW52ZW50b3J5UnVsZSA9IEFjdGlvbkludmVudG9yeS5jaGVjay5jcmVhdGVBbmRBZGRSdWxlKHtcclxuICAgICAgICBuYW1lIDogXCJMaXN0IGludmVudG9yeSBhcyBvcHRpb25zXCIsXHJcbiAgICAgICAgY29kZSA6IGFzeW5jIChydWxlYm9vayA6IFJ1bGVib29rUnVubmVyPEFjdGlvblRha2U+KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBwbGF5ZXIgPSBXb3JsZFN0YXRlLnBsYXllcjtcclxuICAgICAgICAgICAgbGV0IHdpZWxkZWQgPSBUaGluZy5XaWVsZFJlbGF0aW9uLmdldFJpZ2h0KHBsYXllcikuc29ydChFbGVtZW50cy5JbnZlbnRvcnlIYW5kbGVyLnRoaW5nU29ydCk7XHJcbiAgICAgICAgICAgIGxldCB3b3JuID0gVGhpbmcuV2VhclJlbGF0aW9uLmdldFJpZ2h0KHBsYXllcikuc29ydChFbGVtZW50cy5JbnZlbnRvcnlIYW5kbGVyLnRoaW5nU29ydCk7XHJcbiAgICAgICAgICAgIGxldCBjYXJyaWVkID0gVGhpbmcuQ2FycnlSZWxhdGlvbi5nZXRSaWdodChwbGF5ZXIpLnNvcnQoRWxlbWVudHMuSW52ZW50b3J5SGFuZGxlci50aGluZ1NvcnQpO1xyXG5cclxuICAgICAgICAgICAgbGV0IGJ1dHRvbnM7XHJcbiAgICAgICAgICAgIGxldCBjaG9zZW5Qcm9taXNlID0gbmV3IFByb21pc2UoKGFzeW5jIHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICAgICAgQ29udHJvbHMuS2V5SGFuZGxlci5yZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNheSA9IG5ldyBTYXkoKTtcclxuICAgICAgICAgICAgICAgIGlmICh3aWVsZGVkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBzYXkuYWRkKG5ldyBTYXlCb2xkKFwiV2llbGRlZDpcIiksIFNheS5MSU5FX0JSRUFLKTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdpZWxkZWQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2F5LmFkZChhd2FpdCBBY3Rpb25JbnZlbnRvcnkuY3JlYXRlQnV0dG9uKHdpZWxkZWRbaV0sIHJlc29sdmUpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHdvcm4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzYXkuc2VxdWVuY2UubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXkuYWRkKFNheS5QQVJBR1JBUEhfQlJFQUspO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBzYXkuYWRkKG5ldyBTYXlCb2xkKFwiV29ybjpcIiksIFNheS5MSU5FX0JSRUFLKTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdvcm4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2F5LmFkZChhd2FpdCBBY3Rpb25JbnZlbnRvcnkuY3JlYXRlQnV0dG9uKHdvcm5baV0sIHJlc29sdmUpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGNhcnJpZWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzYXkuc2VxdWVuY2UubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXkuYWRkKFNheS5QQVJBR1JBUEhfQlJFQUspO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBzYXkuYWRkKG5ldyBTYXlCb2xkKFwiQ2FycmllZDpcIiksIFNheS5MSU5FX0JSRUFLKTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhcnJpZWQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2F5LmFkZChhd2FpdCBBY3Rpb25JbnZlbnRvcnkuY3JlYXRlQnV0dG9uKGNhcnJpZWRbaV0sIHJlc29sdmUpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHNheS5zZXF1ZW5jZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgYnV0dG9ucyA9IGF3YWl0IHNheS5nZXRIVE1MQ29udGVudCgpO1xyXG4gICAgICAgICAgICAgICAgRWxlbWVudHMuQ3VycmVudFR1cm5IYW5kbGVyLnByaW50KC4uLihidXR0b25zKSk7XHJcbiAgICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBjaG9zZW5UaGluZyA9IGF3YWl0IGNob3NlblByb21pc2U7XHJcbiAgICAgICAgICAgIGlmIChjaG9zZW5UaGluZyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlci51bnByaW50KC4uLmJ1dHRvbnMpO1xyXG4gICAgICAgICAgICAgICAgQ29udHJvbHMuS2V5SGFuZGxlci5yZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBY3Rpb25FeGFtaW5lKFdvcmxkU3RhdGUucGxheWVyLCBjaG9zZW5UaGluZyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBydWxlYm9vay5ub3VuLnNheS5hZGQoXCJZb3UgaGF2ZSBub3RoaW5nLlwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcblxyXG5FbGVtZW50cy5IeXBlcmxpbmtIYW5kbGVyLkNvbW1vbkFjdGlvbnNSdWxlYm9vay5hZGRSdWxlKG5ldyBSdWxlKHtcclxuICAgIG5hbWUgOiBcIkFkZCBUYWtlIEludmVudG9yeSBDb21tYW5kIFJ1bGVcIixcclxuICAgIGZpcnN0UHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0xPV0VTVCxcclxuICAgIHByaW9yaXR5IDogUnVsZS5QUklPUklUWV9NRURJVU0sXHJcbiAgICBjb2RlIDogKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8dm9pZD4pID0+IHtcclxuICAgICAgICBFbGVtZW50cy5IeXBlcmxpbmtIYW5kbGVyLmFkZENvbW1vbkFjdGlvbihcIkludmVudG9yeVwiLCBuZXcgQWN0aW9uSW52ZW50b3J5KFdvcmxkU3RhdGUucGxheWVyKSk7XHJcbiAgICB9XHJcbn0pKTsiLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vQWN0aW9uLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uLy4uL0VsZW1lbnRzL01vZHVsZXMvSHlwZXJsaW5rSGFuZGxlci50c1wiIC8+XHJcbmNsYXNzIEFjdGlvblNhdmVHYW1lIGV4dGVuZHMgQWN0aW9uIHtcclxuICAgIHB1YmxpYyByZXF1aXJlc1R1cm4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyByZXF1aXJlc05vdW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyByZXF1aXJlc1Zpc2liaWxpdHkgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBzdGF0aWMgY2hlY2sgOiBSdWxlYm9vazxBY3Rpb25TYXZlR2FtZT4gPSBuZXcgUnVsZWJvb2soXCJDaGVjayBTYXZpbmdcIik7XHJcbiAgICBwdWJsaWMgc3RhdGljIGNhcnJ5IDogUnVsZWJvb2s8QWN0aW9uU2F2ZUdhbWU+ID0gbmV3IFJ1bGVib29rKFwiQ2Fycnkgb3V0IFNhdmluZ1wiKTtcclxuXHJcbiAgICBwdWJsaWMgZ2V0Q29tbWFuZFRleHQgKCkge1xyXG4gICAgICAgIHJldHVybiBcInNhdmUgdG8gZmlsZVwiO1xyXG4gICAgfVxyXG59XHJcblxyXG5BY3Rpb25TYXZlR2FtZS5jYXJyeS5hZGRSdWxlKG5ldyBSdWxlKHtcclxuICAgIG5hbWUgOiBcIlNhdmUgdGhlIGdhbWVcIixcclxuICAgIGNvZGUgOiBydW5uZXIgPT4ge1xyXG4gICAgICAgIFNhdmVIYW5kbGVyLnNhdmVUb0ZpbGUoKTtcclxuICAgICAgICBydW5uZXIubm91bi5zYXkuYWRkKFwiU2F2ZWQuXCIpO1xyXG4gICAgfVxyXG59KSk7XHJcblxyXG5FbGVtZW50cy5IeXBlcmxpbmtIYW5kbGVyLkNvbW1vbkFjdGlvbnNSdWxlYm9vay5hZGRSdWxlKG5ldyBSdWxlKHtcclxuICAgIG5hbWUgOiBcIkFkZCBTYXZlIENvbW1hbmQgUnVsZVwiLFxyXG4gICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfTE9XRVNULFxyXG4gICAgcHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0xPV0VTVCxcclxuICAgIGNvZGUgOiAocnVsZWJvb2sgOiBSdWxlYm9va1J1bm5lcjx2b2lkPikgPT4ge1xyXG4gICAgICAgIEVsZW1lbnRzLkh5cGVybGlua0hhbmRsZXIuYWRkQ29tbW9uQWN0aW9uKFwiU2F2ZVwiLCBuZXcgQWN0aW9uU2F2ZUdhbWUoV29ybGRTdGF0ZS5wbGF5ZXIpKTtcclxuICAgIH1cclxufSkpOyIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9BY3Rpb24udHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vRWxlbWVudHMvTW9kdWxlcy9IeXBlcmxpbmtIYW5kbGVyLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uLy4uL0VsZW1lbnRzL0NsYXNzZXMvU2F5L1NheUhlU2hlSXQudHNcIiAvPlxyXG5cclxuY2xhc3MgQWN0aW9uVGFsayBleHRlbmRzIEFjdGlvbiB7XHJcbiAgICBwdWJsaWMgc3RhdGljIFBSSU9SSVRZX1NJVFVBVElPTl9ESUFMT0dVRSA9IDk7XHJcbiAgICBwdWJsaWMgc3RhdGljIFBSSU9SSVRZX1BPU1NFU1NJT05fRElBTE9HVUUgPSA3O1xyXG4gICAgcHVibGljIHN0YXRpYyBQUklPUklUWV9MT0NBVElPTl9ESUFMT0dVRSA9IDU7XHJcbiAgICBwdWJsaWMgc3RhdGljIFBSSU9SSVRZX0NPTU1PTl9ESUFMT0dVRSA9IDM7XHJcbiAgICBwdWJsaWMgc3RhdGljIFBSSU9SSVRZX0dMT0JBTF9ESUFMT0dVRSA9IDE7XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBjaGVjazogUnVsZWJvb2s8QWN0aW9uVGFsaz4gPSBuZXcgUnVsZWJvb2soXCJDaGVjayBUYWxraW5nXCIpO1xyXG4gICAgcHVibGljIHN0YXRpYyBjYXJyeTogUnVsZWJvb2s8QWN0aW9uVGFsaz4gPSBuZXcgUnVsZWJvb2soXCJDYXJyeSBvdXQgVGFsa2luZ1wiKTtcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGRlZmF1bHRDYXJyeVRhbGtpbmdSdWxlID0gQWN0aW9uVGFsay5jYXJyeS5jcmVhdGVBbmRBZGRSdWxlKHtcclxuICAgICAgICBuYW1lIDogXCJUYWxraW5nIC0gRG9lc24ndCB3YW50IHRvIHRhbGtcIixcclxuICAgICAgICBmaXJzdFByaW9yaXR5IDogLTEsXHJcbiAgICAgICAgcHJpb3JpdHkgOiAtMSxcclxuICAgICAgICBjb2RlIDogKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8QWN0aW9uVGFrZT4pID0+IHtcclxuICAgICAgICAgICAgbGV0IGFjdGlvbiA9IDxBY3Rpb25Hbz4gcnVsZWJvb2subm91bjtcclxuICAgICAgICAgICAgLy9sZXQgYWN0b3IgPSBhY3Rpb24uYWN0b3I7XHJcbiAgICAgICAgICAgIGxldCB0aGluZyA9ICg8VGhpbmc+YWN0aW9uLmdldE5vdW4oMCkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaW5nIGluc3RhbmNlb2YgUGVyc29uKSB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb24uc2F5ID0gbmV3IFNheShcIkl0IGRvZXNuJ3QgbG9vayBsaWtlIFwiLCBuZXcgU2F5SGVTaGVJdCh0aGluZyksIFwiIHdhbnRzIHRvIHRhbGsuXCIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uLnNheSA9IG5ldyBTYXkoXCJIb3cgYXJlIHlvdSBnb2luZyB0byB0YWxrIHRvIHRoYXQ/XCIpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBwdWJsaWMgZ2V0Q29tbWFuZFRleHQgKCkge1xyXG4gICAgICAgIHJldHVybiBcInRhbGsgdG8gXCIgKyAodGhpcy5nZXROb3VuKDApICE9IHVuZGVmaW5lZCA/IHRoaXMuZ2V0Tm91bigwKS5nZXRQcmludGVkTmFtZSgpIDogXCJcIik7XHJcbiAgICB9XHJcbn1cclxuXHJcbkVsZW1lbnRzLkh5cGVybGlua0hhbmRsZXIuSHlwZXJsaW5raW5nUnVsZWJvb2suYWRkUnVsZShuZXcgUnVsZShcclxuICAgIHtcclxuICAgICAgICBuYW1lIDogXCJIeXBlcmxpbmsgLSBUYWxrXCIsXHJcbiAgICAgICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfSElHSEVTVCxcclxuICAgICAgICBjb2RlIDogKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8VGhpbmc+KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCB0aGluZyA9IDxUaGluZz4gcnVsZWJvb2subm91bjtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGluZyBpbnN0YW5jZW9mIFBlcnNvbiAmJiB0aGluZy5nZXRSb29tKCkgPT0gV29ybGRTdGF0ZS5wbGF5ZXIuZ2V0Um9vbSgpKSB7XHJcbiAgICAgICAgICAgICAgICBFbGVtZW50cy5IeXBlcmxpbmtIYW5kbGVyLmFkZEF2YWlsYWJsZUFjdGlvbihcIlRhbGtcIiwgbmV3IEFjdGlvblRhbGsoV29ybGRTdGF0ZS5wbGF5ZXIsIHRoaW5nKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbikpOyIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9BY3Rpb24udHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vRWxlbWVudHMvTW9kdWxlcy9IeXBlcmxpbmtIYW5kbGVyLnRzXCIgLz5cclxuY2xhc3MgQWN0aW9uV2FpdCBleHRlbmRzIEFjdGlvbiB7XHJcbiAgICBwdWJsaWMgcmVxdWlyZXNUdXJuID0gdHJ1ZTtcclxuICAgIHB1YmxpYyByZXF1aXJlc05vdW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyByZXF1aXJlc1Zpc2liaWxpdHkgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBzdGF0aWMgY2hlY2sgOiBSdWxlYm9vazxBY3Rpb25XYWl0PiA9IG5ldyBSdWxlYm9vayhcIkNoZWNrIFdhaXRpbmdcIik7XHJcbiAgICBwdWJsaWMgc3RhdGljIGNhcnJ5IDogUnVsZWJvb2s8QWN0aW9uV2FpdD4gPSBuZXcgUnVsZWJvb2soXCJDYXJyeSBvdXQgV2FpdGluZ1wiKTtcclxuXHJcbiAgICBwdWJsaWMgZ2V0Q29tbWFuZFRleHQgKCkge1xyXG4gICAgICAgIHJldHVybiBcIndhaXRcIjtcclxuICAgIH1cclxufVxyXG5cclxuQWN0aW9uV2FpdC5jYXJyeS5hZGRSdWxlKG5ldyBSdWxlKHtcclxuICAgIG5hbWUgOiBcIlByaW50IHdhaXRpbmcgbWVzc2FnZVwiLFxyXG4gICAgY29kZSA6IHJ1bm5lciA9PiB7XHJcbiAgICAgICAgaWYgKHJ1bm5lci5ub3VuLmFjdG9yID09IFdvcmxkU3RhdGUucGxheWVyKSB7XHJcbiAgICAgICAgICAgIHJ1bm5lci5ub3VuLnNheS5hZGQoXCJZb3Ugd2FpdC5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59KSk7XHJcblxyXG5FbGVtZW50cy5IeXBlcmxpbmtIYW5kbGVyLkNvbW1vbkFjdGlvbnNSdWxlYm9vay5hZGRSdWxlKG5ldyBSdWxlKHtcclxuICAgIG5hbWUgOiBcIkFkZCBXYWl0IENvbW1hbmQgUnVsZVwiLFxyXG4gICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfSElHSEVTVCxcclxuICAgIHByaW9yaXR5IDogUnVsZS5QUklPUklUWV9NRURJVU0sXHJcbiAgICBjb2RlIDogKHJ1bGVib29rIDogUnVsZWJvb2tSdW5uZXI8dm9pZD4pID0+IHtcclxuICAgICAgICBFbGVtZW50cy5IeXBlcmxpbmtIYW5kbGVyLmFkZENvbW1vbkFjdGlvbihcIldhaXRcIiwgbmV3IEFjdGlvbldhaXQoV29ybGRTdGF0ZS5wbGF5ZXIpKTtcclxuICAgIH1cclxufSkpOyIsImNsYXNzIENvbnRlbnREZXNjcmlwdGlvbiB7XHJcbiAgICBwdWJsaWMgbmFtZSA6IHN0cmluZztcclxuICAgIHB1YmxpYyBncm91cCA6IENvbnRlbnRVbml0IHwgQ29udGVudEdyb3VwO1xyXG4gICAgcHVibGljIGRlc2NyaXB0aW9uIDogU2F5IHwgKChkZXNjcmlwdGlvbiA6IENvbnRlbnREZXNjcmlwdGlvbiwgZ3JvdXAgOiBDb250ZW50VW5pdCB8IENvbnRlbnRHcm91cCkgPT4gU2F5KTtcclxuICAgIHByaXZhdGUgc2FpZENvdW50ID0gMDtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKG5hbWUgOiBzdHJpbmcsIGdyb3VwIDogQ29udGVudFVuaXQgfCBDb250ZW50R3JvdXApIHtcclxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgICAgIHRoaXMuZ3JvdXAgPSBncm91cDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0U2NvcmUgKCkge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5ncm91cCkuZ2V0U2NvcmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0RGVzY3JpcHRpb24gKGdyb3VwIDogQ29udGVudFVuaXQgfCBDb250ZW50R3JvdXApIDogU2F5IHtcclxuICAgICAgICB0aGlzLnNhaWRDb3VudCsrO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZXNjcmlwdGlvbiA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRpb24odGhpcywgZ3JvdXApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5kZXNjcmlwdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0RGVzY3JpcHRpb24gKGRlc2NyaXB0aW9uIDogU2F5IHwgc3RyaW5nIHwgKChkZXNjcmlwdGlvbiA6IENvbnRlbnREZXNjcmlwdGlvbiwgZ3JvdXAgOiBDb250ZW50VW5pdCB8IENvbnRlbnRHcm91cCkgPT4gU2F5KSApIHtcclxuICAgICAgICBpZiAoIShkZXNjcmlwdGlvbiBpbnN0YW5jZW9mIFNheSkpIHtcclxuICAgICAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IG5ldyBTYXkoZGVzY3JpcHRpb24pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBwaWNrRGVzY3JpcHRpb25zIChjZGEgOiBBcnJheTxDb250ZW50RGVzY3JpcHRpb24+LCB0YXJnZXQgOiBDb250ZW50R3JvdXAgfCBDb250ZW50VW5pdCkgOiBBcnJheTxTYXk+IHtcclxuICAgICAgICBsZXQgYSA9IGNkYS5zbGljZSgpO1xyXG4gICAgICAgIGxldCBncm91cHMgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKGEubGVuZ3RoIC0gaSkpICsgaTtcclxuICAgICAgICAgICAgbGV0IHRlbXAgPSBhW2ldO1xyXG4gICAgICAgICAgICBhW2ldID0gYVtyYW5kb21JbmRleF07XHJcbiAgICAgICAgICAgIGFbcmFuZG9tSW5kZXhdID0gdGVtcDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEFmdGVyIHNodWZmbGluZyB0aGUgbGlzdCwgZGVzY3JpcHRpb25zIHdpdGggdGhlIGhpZ2hlc3Qgc2NvcmVzIGdvIGF0IHRoZSB0b3AsIGFuZCBiZXR3ZWVuIHRob3NlIHRoZSBvbmVzIHdpdGggdGhlIGxvd2VzdCBzYWlkQ291bnRzIGdvIGZpcnN0XHJcbiAgICAgICAgLy8gSWYgbXVsdGlwbGUgZGVzY3JpcHRpb25zIGhhdmUgdGhlIHNhbWUgc2NvcmUvc2FpZENvdW50LCB0aGV5IGFyZSBwaWNrZWQgcmFuZG9tbHkgZHVlIHRvIHRoZSBwcmV2aW91cyBzaHVmZmxpbmcuXHJcbiAgICAgICAgYS5zb3J0KChhIDogQ29udGVudERlc2NyaXB0aW9uLCBiIDogQ29udGVudERlc2NyaXB0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIERpdmlzaW9uIGJ5IHNhaWRDb3VudCBmb3Igbm93LCB0byBpbmNyZWFzZSByb3RhdGl2aXR5IG9mIGRlc2NyaXB0aW9uc1xyXG4gICAgICAgICAgICAvLyBSZWR1Y2UgcHJlY2lzaW9uIG9uIGZpbmFsIG51bWJlciB0byBkZWNyZWFzZSB0aGUgbGlrZWxpaG9vZCBvZiBwcmludGluZyB0aGUgc2FtZSBkZXNjcmlwdGlvbnMgYWx3YXlzIGluIHRoZSBzYW1lIG9yZGVyXHJcbiAgICAgICAgICAgIGxldCBwcmVjaXNpb24gPSA1O1xyXG4gICAgICAgICAgICBsZXQgc2NvcmVBID0gTWF0aC5mbG9vcihwcmVjaXNpb24gKiBhLmdldFNjb3JlKCkgLyAoYS5zYWlkQ291bnQgKyAxKSkgLyBwcmVjaXNpb247XHJcbiAgICAgICAgICAgIGxldCBzY29yZUIgPSBNYXRoLmZsb29yKHByZWNpc2lvbiAqIGIuZ2V0U2NvcmUoKSAvIChiLnNhaWRDb3VudCArIDEpKSAvIHByZWNpc2lvbjtcclxuICAgICAgICAgICAgaWYgKHNjb3JlQSAhPSBzY29yZUIpIHJldHVybiBzY29yZUIgLSBzY29yZUE7XHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBhLmZvckVhY2goZGVzY3JpcHRpb24gPT4ge1xyXG4gICAgICAgICAgICBncm91cHMucHVzaChkZXNjcmlwdGlvbi5ncm91cCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxldCBtYXRjaGVzID0gKDxhbnk+IHRhcmdldCkubWF0Y2hBZ2FpbnN0KDxhbnk+IGdyb3Vwcyk7XHJcbiAgICAgICAgaWYgKG1hdGNoZXMgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBbXTtcclxuICAgICAgICAgICAgbWF0Y2hlcy5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYVtpXS5nZXREZXNjcmlwdGlvbih0YXJnZXQpKTtcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBTYXkoXCIgXCIpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiTm8gZGVzY3JpcHRpb24gYXZhaWxhYmxlIGZvclwiLCB0YXJnZXQpO1xyXG4gICAgICAgICAgICByZXR1cm4gW25ldyBTYXkoXCJXYXJuaW5nOiBObyBkZXNjcmlwdGlvbiBhdmFpbGFibGUgZm9yIHRoZSBjdXJyZW50IHNpdHVhdGlvbi4gUGxlYXNlIHJlcG9ydCBzbyBpdCBjYW4gYmUgY29ycmVjdGVkLlwiKV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiaW50ZXJmYWNlIENvbnRlbnREaWZmZXJlbnRpYWxDb21wYXJpc29uUmVzdWx0IHtcclxuICAgIG1hdGNoaW5nIDogQXJyYXk8VGhpbmcgfCB0eXBlb2YgVGhpbmcgfCBDb250ZW50RGlmZmVyZW50aWFsIHwgQ29udGVudE1hcmtlcj47XHJcbiAgICB1bm1hdGNoZWQgOiBBcnJheTxUaGluZyB8IHR5cGVvZiBUaGluZyB8IENvbnRlbnREaWZmZXJlbnRpYWwgfCBDb250ZW50TWFya2VyPjtcclxufVxyXG5cclxuY2xhc3MgQ29udGVudERpZmZlcmVudGlhbCB7XHJcbiAgICBwdWJsaWMgbm91bnMgOiBBcnJheTxUaGluZyB8IHR5cGVvZiBUaGluZyB8IENvbnRlbnREaWZmZXJlbnRpYWwgfCBDb250ZW50TWFya2VyPiA9IFtdO1xyXG4gICAgcHVibGljIHNjb3JlIDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKC4uLm5vdW5zIDogQXJyYXk8YW55Pikge1xyXG4gICAgICAgIHRoaXMuYWRkTm91biguLi5ub3Vucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZE5vdW4gKC4uLm5vdW5zIDogQXJyYXk8YW55Pikge1xyXG4gICAgICAgIG5vdW5zLmZvckVhY2gobm91biA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubm91bnMucHVzaChub3VuKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNjb3JlID0gdGhpcy5nZXRTY29yZSgpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXROb3VucyAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubm91bnM7XHJcbiAgICB9XHJcblx0XHJcblx0cHVibGljIHJlcGxhY2VOb3VucyAoLi4ubm91bnMgOiBBcnJheTxhbnk+KSB7XHJcblx0XHR0aGlzLm5vdW5zID0gbm91bnM7XHJcblx0XHRyZXR1cm4gdGhpcztcclxuXHR9XHJcblxyXG4gICAgcHVibGljIGlzTWF0Y2ggKGNkIDogQ29udGVudERpZmZlcmVudGlhbCwgYWxsb3dQYXJ0aWFsID0gZmFsc2UpIHtcclxuICAgICAgICBsZXQgY2hlY2sgPSB0aGlzLmdldFVubWF0Y2hlZChjZCk7XHJcbiAgICAgICAgaWYgKChhbGxvd1BhcnRpYWwgfHwgY2hlY2sudW5tYXRjaGVkLmxlbmd0aCA9PSAwKSAmJiBjaGVjay5tYXRjaGluZy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNoZWNrLm1hdGNoaW5nLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hlY2sudW5tYXRjaGVkLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIShjaGVjay51bm1hdGNoZWRbaV0gaW5zdGFuY2VvZiBDb250ZW50TWFya2VyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCg8Q29udGVudE1hcmtlcj4gY2hlY2sudW5tYXRjaGVkW2ldKS5pc0ltcG9ydGFudCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0VW5tYXRjaGVkIChjZCA6IENvbnRlbnREaWZmZXJlbnRpYWwpIDogQ29udGVudERpZmZlcmVudGlhbENvbXBhcmlzb25SZXN1bHQge1xyXG4gICAgICAgIGxldCB1bm1hdGNoZWQgPSBjZC5ub3Vucy5zbGljZSgpO1xyXG4gICAgICAgIGxldCBtYXRjaGluZyA9IHRoaXMubm91bnMuc2xpY2UoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gbWF0Y2hpbmcubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgayA9IHVubWF0Y2hlZC5sZW5ndGggLSAxOyBrID49IDA7IGstLSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKENvbnRlbnREaWZmZXJlbnRpYWwuY29tcGFyZU5vdW5zKG1hdGNoaW5nW2ldLCB1bm1hdGNoZWRba10pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdW5tYXRjaGVkLnNwbGljZShrLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBtYXRjaGluZy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbWF0Y2hpbmcgOiBtYXRjaGluZyxcclxuICAgICAgICAgICAgdW5tYXRjaGVkIDogdW5tYXRjaGVkXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0U2NvcmUgKCkge1xyXG4gICAgICAgIGxldCBoaWdoZXN0ID0gMDtcclxuICAgICAgICBsZXQgY291bnQgPSB0aGlzLm5vdW5zLmxlbmd0aDtcclxuXHJcbiAgICAgICAgdGhpcy5ub3Vucy5mb3JFYWNoKChub3VuKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBsZXZlbCA9IENvbnRlbnREaWZmZXJlbnRpYWwuZ2V0Tm91bkxldmVsKG5vdW4pO1xyXG4gICAgICAgICAgICBpZiAoaGlnaGVzdCA8IGxldmVsKSB7XHJcbiAgICAgICAgICAgICAgICBoaWdoZXN0ID0gbGV2ZWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGhpZ2hlc3QgKyAoY291bnQgLyAxMDApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Tm91bkxldmVsIChub3VuIDogVGhpbmcgfCB0eXBlb2YgVGhpbmcgfCBDb250ZW50RGlmZmVyZW50aWFsIHwgQ29udGVudE1hcmtlcikge1xyXG4gICAgICAgIGlmIChub3VuID09IHVuZGVmaW5lZCB8fCBub3VuID09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygbm91biA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgaWYgKDxhbnk+bm91bi5wcm90b3R5cGUgaW5zdGFuY2VvZiBUaGluZykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHNwZWNpZml0eSA9IDI7IC8vIFZhZ3VlIFRoaW5nXHJcbiAgICAgICAgICAgICAgICBsZXQgcGFyZW50Q2xhc3MgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobm91bik7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAocGFyZW50Q2xhc3MgIT0gVGhpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICBzcGVjaWZpdHkgKz0gMC4xO1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudENsYXNzID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHBhcmVudENsYXNzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBzcGVjaWZpdHk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMi41OyAvLyBJdCdzIG5vdCBhIFwiVGhpbmdcIiwgc28gaXQncyBwcm9iYWJseSBhIHdlaXJkIGNsYXNzLCB3aGljaCBpcyBraW5kIG9mIHNwZWNpZmljXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKG5vdW4gaW5zdGFuY2VvZiBUaGluZykge1xyXG4gICAgICAgICAgICByZXR1cm4gNDsgLy8gU3BlY2lmaWMgdGhpbmdcclxuICAgICAgICB9IGVsc2UgaWYgKG5vdW4gaW5zdGFuY2VvZiBDb250ZW50RGlmZmVyZW50aWFsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAxOyAvLyBNaW5vciB0aGluZ1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAwLjU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgY29tcGFyZU5vdW5zIChhIDogVGhpbmcgfCB0eXBlb2YgVGhpbmcgfCBDb250ZW50RGlmZmVyZW50aWFsIHwgQ29udGVudE1hcmtlciwgYiA6IFRoaW5nIHwgdHlwZW9mIFRoaW5nIHwgQ29udGVudERpZmZlcmVudGlhbCB8IENvbnRlbnRNYXJrZXIpIHtcclxuICAgICAgICBpZiAoYSA9PSB1bmRlZmluZWQgfHwgYSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIGEgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgIC8vIGIgbXVzdCBpbmhlcml0IGEgb3IgYmUgYVxyXG4gICAgICAgICAgICByZXR1cm4gYiA9PSBhIHx8IGIgaW5zdGFuY2VvZiBhIHx8ICh0eXBlb2YgYiA9PSBcImZ1bmN0aW9uXCIgJiYgKDxhbnk+YikucHJvdG90eXBlIGluc3RhbmNlb2YgYSlcclxuICAgICAgICB9IGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBUaGluZykge1xyXG4gICAgICAgICAgICAvLyBiIG11c3QgYmUgYVxyXG4gICAgICAgICAgICByZXR1cm4gYiA9PSBhO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYSA9PT0gYjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzTWF0Y2ggKG1hdGNoRnJvbSA6IEFycmF5PENvbnRlbnREaWZmZXJlbnRpYWw+LCBtYXRjaEFnYWluc3QgOiBBcnJheTxDb250ZW50RGlmZmVyZW50aWFsPikge1xyXG4gICAgICAgIGxldCB1bm1hdGNoZWQgPSBtYXRjaEFnYWluc3Quc2xpY2UoKTtcclxuICAgICAgICBsZXQgbWF0Y2hpbmcgPSBtYXRjaEZyb20uc2xpY2UoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gbWF0Y2hpbmcubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgayA9IHVubWF0Y2hlZC5sZW5ndGggLSAxOyBrID49IDA7IGstLSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoaW5nW2ldLmlzTWF0Y2godW5tYXRjaGVkW2tdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHVubWF0Y2hlZC5zcGxpY2UoaywgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmcuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh1bm1hdGNoZWQubGVuZ3RoID09IDAgJiYgbWF0Y2hpbmcubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmICh1bm1hdGNoZWQubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG9ubHkgdGhpbmcgbWlzc2luZyBhcmUgdW5pbXBvcnRhbnQgQ29udGVudE1hcmtlcnNcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRjaGluZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IG5vdW5zID0gbWF0Y2hpbmdbaV0uZ2V0Tm91bnMoKTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbm91bnMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIShub3Vuc1trXSBpbnN0YW5jZW9mIENvbnRlbnRNYXJrZXIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKDxDb250ZW50TWFya2VyPiBub3Vuc1trXSkuaXNJbXBvcnRhbnQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIE5vdGhpbmcgaW1wb3J0YW50IGZvdW5kXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn0iLCJlbnVtIENvbnRlbnRHcm91cE1hdGNoIHtcclxuICAgIE5PX01BVENILFxyXG4gICAgUEFSVElBTF9NQVRDSCxcclxuICAgIFBFUkZFQ1RfTUFUQ0hcclxufVxyXG5cclxuaW50ZXJmYWNlIENvbnRlbnRHcm91cE1hdGNoUmVzdWx0IHtcclxuICAgIHR5cGUgOiBDb250ZW50R3JvdXBNYXRjaDtcclxuICAgIHVubWF0Y2hlZCA6IEFycmF5PENvbnRlbnRVbml0PjtcclxufVxyXG5cclxuY2xhc3MgQ29udGVudEdyb3VwIHtcclxuICAgIHByaXZhdGUgdW5pdHMgOiBBcnJheTxDb250ZW50VW5pdD4gPSBbXTtcclxuICAgIHByaXZhdGUgbWF0Y2hpbmcgOiBBcnJheTxDb250ZW50VW5pdD47XHJcblxyXG4gICAgY29uc3RydWN0b3IgKC4uLnVuaXRzIDogQXJyYXk8Q29udGVudFVuaXQ+KSB7XHJcbiAgICAgICAgdW5pdHMuZm9yRWFjaCh1bml0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hZGRVbml0KHVuaXQpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZFVuaXQgKHVuaXQgOiBDb250ZW50VW5pdCkge1xyXG4gICAgICAgIHRoaXMudW5pdHMucHVzaCh1bml0KTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVzZXQgKCkge1xyXG4gICAgICAgIHRoaXMubWF0Y2hpbmcgPSB0aGlzLnVuaXRzLnNsaWNlKCk7XHJcbiAgICB9XHJcblx0XHJcblx0cHVibGljIGlzTWF0Y2hpbmcgKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMubWF0Y2hpbmcubGVuZ3RoO1xyXG5cdH1cclxuXHJcbiAgICBwdWJsaWMgc2V0TWF0Y2hpbmcgKG1hdGNoaW5nIDogQXJyYXk8Q29udGVudFVuaXQ+KSB7XHJcbiAgICAgICAgdGhpcy5tYXRjaGluZyA9IG1hdGNoaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc01hdGNoIChjZyA6IENvbnRlbnRHcm91cCkgOiBDb250ZW50R3JvdXBNYXRjaFJlc3VsdCB7XHJcbiAgICAgICAgbGV0IHVubWF0Y2hlZCA9IGNnLm1hdGNoaW5nLnNsaWNlKCk7XHJcbiAgICAgICAgbGV0IG1hdGNoaW5nID0gdGhpcy51bml0cy5zbGljZSgpO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gbWF0Y2hpbmcubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgayA9IHVubWF0Y2hlZC5sZW5ndGggLSAxOyBrID49IDA7IGstLSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoaW5nW2ldLmlzTWF0Y2godW5tYXRjaGVkW2tdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHVubWF0Y2hlZC5zcGxpY2UoaywgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmcuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0eXBlIDogbWF0Y2hpbmcubGVuZ3RoID4gMCA/IENvbnRlbnRHcm91cE1hdGNoLk5PX01BVENIIDpcclxuICAgICAgICAgICAgICAgICAgICB1bm1hdGNoZWQubGVuZ3RoID09IDAgPyBDb250ZW50R3JvdXBNYXRjaC5QRVJGRUNUX01BVENIIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudEdyb3VwTWF0Y2guUEFSVElBTF9NQVRDSCxcclxuICAgICAgICAgICAgdW5tYXRjaGVkIDogdW5tYXRjaGVkXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTY29yZSAoKSB7XHJcbiAgICAgICAgbGV0IHNjb3JlID0gMDtcclxuICAgICAgICB0aGlzLnVuaXRzLmZvckVhY2godW5pdCA9PiB7XHJcbiAgICAgICAgICAgIHNjb3JlICs9IHVuaXQuZ2V0U2NvcmUoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHNjb3JlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBtYXRjaEFnYWluc3QgKGEgOiBBcnJheTxDb250ZW50R3JvdXA+KSA6IEFycmF5PG51bWJlcj4ge1xyXG4gICAgICAgIGxldCBtYXRjaGVzID0gW107XHJcbiAgICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgbWF0Y2ggPSBhW2ldLmlzTWF0Y2godGhpcyk7XHJcbiAgICAgICAgICAgIGlmIChtYXRjaC50eXBlICE9IENvbnRlbnRHcm91cE1hdGNoLk5PX01BVENIKSB7XHJcbiAgICAgICAgICAgICAgICBtYXRjaGVzLnB1c2goaSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldE1hdGNoaW5nKG1hdGNoLnVubWF0Y2hlZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTWF0Y2hpbmcoKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxufSIsImNsYXNzIENvbnRlbnRNYXJrZXIge1xyXG4gICAgcHVibGljIG5hbWUgOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGltcG9ydGFudCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvciAobmFtZSA6IHN0cmluZywgaW1wb3J0YW50PyA6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgICAgIHRoaXMuaW1wb3J0YW50ID0gaW1wb3J0YW50ID09IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzSW1wb3J0YW50ICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbXBvcnRhbnQ7XHJcbiAgICB9XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiQ29udGVudERpZmZlcmVudGlhbC50c1wiIC8+XHJcbmNsYXNzIENvbnRlbnRVbml0IHtcclxuICAgIHB1YmxpYyBjYXRlZ29yaWVzIDogQXJyYXk8Q29udGVudERpZmZlcmVudGlhbD4gPSBbXTtcclxuXHJcbiAgICBwdWJsaWMgYWRkQ2F0ZWdvcnkgKC4uLm5vdW5zIDogQXJyYXk8VGhpbmcgfCB0eXBlb2YgVGhpbmcgfCBDb250ZW50RGlmZmVyZW50aWFsPikge1xyXG4gICAgICAgIHRoaXMuY2F0ZWdvcmllcy5wdXNoKG5ldyBDb250ZW50RGlmZmVyZW50aWFsKC4uLm5vdW5zKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzTWF0Y2ggKGN1IDogQ29udGVudFVuaXQpIHtcclxuICAgICAgICByZXR1cm4gQ29udGVudERpZmZlcmVudGlhbC5pc01hdGNoKHRoaXMuY2F0ZWdvcmllcywgY3UuY2F0ZWdvcmllcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNjb3JlICgpIHtcclxuICAgICAgICBsZXQgc2NvcmUgPSAwO1xyXG4gICAgICAgIHRoaXMuY2F0ZWdvcmllcy5mb3JFYWNoKGRpZmYgPT4ge1xyXG4gICAgICAgICAgICBzY29yZSArPSBkaWZmLnNjb3JlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gc2NvcmUgLyB0aGlzLmNhdGVnb3JpZXMubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBtYXRjaEFnYWluc3QgKGEgOiBBcnJheTxDb250ZW50VW5pdD4pIDogQXJyYXk8bnVtYmVyPiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChhW2ldLmlzTWF0Y2godGhpcykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBbaV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vQ29udGVudERlc2NyaXB0aW9uLnRzXCIgLz5cclxuLyoqXHJcbiAqIFF1aWNrIENoZWF0IFNoZWV0IG9mIG1hcmtlcnMhXHJcbiAqIFdoZW4gbWFraW5nIGEgZGVzY3JpcHRpb24gdGFrZSB0aGVzZSBtYXJrZXJzIGludG8gYWNjb3VudCB3aGlsZSBkZXNjcmliaW5nIHRoZSBhY3Rpb24hIElmIGEgbWFya2VyIGRlc2NyaWJlcyBzb21ldGhpbmdcclxuICogcGxlYXNlIGluY2x1ZGUgaXQgaWYgeW91IGFkZCBpdCB0byB0aGUgZGVzY3JpcHRpb24uIEV4YW1wbGU6IGlmIHlvdSBkZXNjcmliZSB0aGUgYXR0YWNrIGFzIGEgXCJoZWF2eSBoaXQhXCIsIG1ha2Ugc3VyZVxyXG4gKiB0byBhZGQgdGhlIEhJR0hfREFNQUdFIG1hcmtlciwgd2UgZG9uJ3Qgd2FudCBhIFwiaGVhdnkgaGl0IVwiIHRvIGJlIGRpc3BsYXllZCBmb3IgYW4gYXR0YWNrIHRoYXQgY2F1c2VkIDEgZGFtYWdlLlxyXG4gKlxyXG4gKiBNYW5kYXRvcnkgTWFya2VycyAtIEluY2x1ZGUgb25seSBvbmUgYW5kIGNsb25lIGRlc2NyaXB0aW9uIGZvciBlYWNoXHJcbiAqIENvbWJhdEhpdC5GVUxMX0RPREdFXHJcbiAqIENvbWJhdEhpdC5QQVJUSUFMX0RPREdFXHJcbiAqIENvbWJhdEhpdC5GVUxMX0hJVFxyXG4gKlxyXG4gKiBNYW5kYXRvcnkgTWFya2VycyAtIEluY2x1ZGUgb25seSBvbmUgYW5kIGNsb25lIGRlc2NyaXB0aW9uIGZvciBlYWNoLiBUaGVzZSBkb24ndCBzaG93IHVwIGluIEZVTExfRE9ER0VcclxuICogQ29tYmF0UmVzdWx0LktOT0NLRURcclxuICogQ29tYmF0UmVzdWx0LktOT0NLRURfT0ZGXHJcbiAqIENvbWJhdFJlc3VsdC5LSUxMRURcclxuICpcclxuICogTm9uLU1hbmRhdG9yeSBNYXJrZXJzIC0gSW5jbHVkZSBhdCBtb3N0IG9uZSBwZXIgZGVzY3JpcHRpb24sIG5vbmUgbWFrZXMgYSBkZXNjcmlwdGlvbiBmaXQgbW9yZSBhdHRhY2tzLiBUaGVzZSBkb24ndCBzaG93IHVwIGluIEZVTExfRE9ER0UuXHJcbiAqIENvbWJhdERhbWFnZS5MT1dfREFNQUdFXHJcbiAqIENvbWJhdERhbWFnZS5NRURJVU1fREFNQUdFXHJcbiAqIENvbWJhdERhbWFnZS5ISUdIX0RBTUFHRVxyXG4gKi9cclxuY2xhc3MgQ29tYmF0RGVzY3JpcHRpb24gZXh0ZW5kcyBDb250ZW50RGVzY3JpcHRpb24ge1xyXG4gICAgcHVibGljIHN0YXRpYyBERVNDUklQVElPTlMgPSBbXTtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKG5hbWUgOiBzdHJpbmcpIHtcclxuICAgICAgICBzdXBlcihuYW1lLCBuZXcgQ29udGVudEdyb3VwKCkpO1xyXG4gICAgICAgIENvbWJhdERlc2NyaXB0aW9uLkRFU0NSSVBUSU9OUy5wdXNoKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZGRVbml0ICgpIHtcclxuICAgICAgICBsZXQgdW5pdCA9IG5ldyBDb21iYXRVbml0KCk7XHJcbiAgICAgICAgKDxDb250ZW50R3JvdXA+IHRoaXMuZ3JvdXApLmFkZFVuaXQodW5pdCk7XHJcbiAgICAgICAgcmV0dXJuIHVuaXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXREZXNjcmlwdGlvbiAodGFyZ2V0IDogQ29udGVudEdyb3VwKSB7XHJcbiAgICAgICAgcmV0dXJuIENvbnRlbnREZXNjcmlwdGlvbi5waWNrRGVzY3JpcHRpb25zKENvbWJhdERlc2NyaXB0aW9uLkRFU0NSSVBUSU9OUywgdGFyZ2V0KTtcclxuICAgIH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9Db250ZW50TWFya2VyLnRzXCIgLz5cclxuLyoqXHJcbiAqIFRoZXNlIGFyZSB0aGUgb3ZlcmFsbCByZXN1bHRzIG9mIHRoZSByb2xsLiBFdmVyeSBhdHRhY2sgd2lsbCBoYXZlIGF0IGxlYXN0IG9uZSBvZiB0aGVzZS5cclxuICogSWYgbWFraW5nIGEgbmV3IGRlc2NyaXB0aW9uLCB5b3Ugc2hvdWxkIGNsb25lIGl0IGZvciBlYWNoIENvbWJhdFJlc3VsdCB2YXJpYW50LlxyXG4gKi9cclxuY2xhc3MgQ29tYmF0SGl0IGV4dGVuZHMgQ29udGVudE1hcmtlciB7XHJcbiAgICBwdWJsaWMgc3RhdGljIEZVTExfRE9ER0UgPSBuZXcgQ29tYmF0SGl0KFwiRnVsbCBEb2RnZVwiLCB0cnVlKTtcclxuICAgIHB1YmxpYyBzdGF0aWMgUEFSVElBTF9ET0RHRSA9IG5ldyBDb21iYXRIaXQoXCJQYXJ0aWFsIERvZGdlXCIsIHRydWUpO1xyXG4gICAgcHVibGljIHN0YXRpYyBGVUxMX0hJVCA9IG5ldyBDb21iYXRIaXQoXCJGdWxsIEhpdFwiLCB0cnVlKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoZXNlIGFyZSBtYXJrZXJzIHRoYXQgZXhwbGFpbiBob3cgbXVjaCBkYW1hZ2Ugd2FzIGNhdXNlZCBieSB0aGUgYXR0YWNrLlxyXG4gKiBMb3cvSGlnaCBpcyByZWxhdGl2ZSB0byBhIHBlcmNlbnRhZ2Ugb2Ygb3ZlcmFsbCBIUC4gTG93IDwgMjUlLCBNZWRpdW0gPCA1MCUsIEhpZ2ggPj0gNTAlIG9mIG1heCBoZWFsdGguXHJcbiAqIFRoZXNlIGFyZSBub24tbWFuZGF0b3J5LCBidXQgaWYgZGVzY3JpYmluZyB0aGUgYW1vdW50IG9mIGRhbWFnZSBjYXVzZWQgb25lIG9mIHRoZW0gc2hvdWxkIGJlIGluY2x1ZGVkLlxyXG4gKiBOb3RlOiB3aGlsZSBhIGRlc2NyaXB0aW9uIHdpdGhvdXQgYW55IG9mIHRoZXNlIHdpbGwgc3RpbGwgd29yaywgYSBkZXNjcmlwdGlvbiB3aXRoIG1vcmUgdGhhbiBvbmUgd2lsbCBuZXZlciBiZSBwaWNrZWQuXHJcbiAqL1xyXG5jbGFzcyBDb21iYXREYW1hZ2UgZXh0ZW5kcyBDb250ZW50TWFya2VyIHtcclxuICAgIHB1YmxpYyBzdGF0aWMgTE9XX0RBTUFHRSA9IG5ldyBDb21iYXREYW1hZ2UoXCJMb3cgRGFtYWdlXCIpO1xyXG4gICAgcHVibGljIHN0YXRpYyBNRURJVU1fREFNQUdFID0gbmV3IENvbWJhdERhbWFnZShcIk1lZGl1bSBEYW1hZ2VcIik7XHJcbiAgICBwdWJsaWMgc3RhdGljIEhJR0hfREFNQUdFID0gbmV3IENvbWJhdERhbWFnZShcIkhpZ2ggRGFtYWdlXCIpO1xyXG59XHJcblxyXG4vKipcclxuICogVGhlc2UgYXJlIG1hcmtlcnMgdGhhdCBleHBsYWluIHdoYXQgaGFwcGVuZWQgYmVjYXVzZSBvZiB0aGUgYXR0YWNrLlxyXG4gKiBUaGV5IGFyZSBtYW5kYXRvcnkuXHJcbiAqIFdoZW4gbWFraW5nIGFuIGF0dGFjaywgeW91IHNob3VsZCBjbG9uZSB0aGUgZGVzY3JpcHRpb24gZm9yIGVhY2ggb2YgdGhvc2UsIGFkZGluZyB0aGlzIGluZm9ybWF0aW9uIHRvIGl0LlxyXG4gKi9cclxuY2xhc3MgQ29tYmF0UmVzdWx0IGV4dGVuZHMgQ29udGVudE1hcmtlciB7XHJcbiAgICBwdWJsaWMgc3RhdGljIEtOT0NLRUQgPSBuZXcgQ29tYmF0UmVzdWx0KFwiVGFyZ2V0IHdhcyBrbm9ja2VkIGRvd24gYnkgdGhlIGF0dGFja1wiLCB0cnVlKTtcclxuICAgIHB1YmxpYyBzdGF0aWMgS05PQ0tFRF9PRkYgPSBuZXcgQ29tYmF0UmVzdWx0KFwiVGFyZ2V0IHdhcyBrbm9ja2VkIG9mZiBieSB0aGUgYXR0YWNrLCBiZWNvbWluZyB1bmNvbnNjaW91c1wiLCB0cnVlKTtcclxuICAgIHB1YmxpYyBzdGF0aWMgS0lMTEVEID0gbmV3IENvbWJhdFJlc3VsdChcIlRhcmdldCB3YXMga2lsbGVkIGJ5IHRoaXMgYXR0YWNrXCIsIHRydWUpO1xyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL0NvbnRlbnRVbml0LnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL1RoaW5ncy9QZXJzb24udHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vVGhpbmdzL0JvZHlwYXJ0L1NleEhvbGUudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vVGhpbmdzL0JvZHlwYXJ0L1NleFN0aWNrLnRzXCIgLz5cclxuY2xhc3MgQ29tYmF0VW5pdCBleHRlbmRzIENvbnRlbnRVbml0IHtcclxuXHRwcml2YXRlIGFjdG9yIDogQ29udGVudERpZmZlcmVudGlhbCA9IG5ldyBDb250ZW50RGlmZmVyZW50aWFsKFBlcnNvbik7XHJcblx0cHJpdmF0ZSB0YXJnZXQgOiBDb250ZW50RGlmZmVyZW50aWFsID0gbmV3IENvbnRlbnREaWZmZXJlbnRpYWwoUGVyc29uKTtcclxuXHRwcml2YXRlIHdlYXBvbiA6IENvbnRlbnREaWZmZXJlbnRpYWwgPSBuZXcgQ29udGVudERpZmZlcmVudGlhbChUaGluZyk7XHJcblx0cHJpdmF0ZSBtYXJrZXJzIDogQ29udGVudERpZmZlcmVudGlhbCA9IG5ldyBDb250ZW50RGlmZmVyZW50aWFsKCk7XHJcblxyXG5cdHB1YmxpYyBjb25zdHJ1Y3RvciAoKSB7XHJcblx0XHRzdXBlcigpO1xyXG5cdH1cclxuXHJcblx0cHVibGljIHNldEFjdG9yIChpdCA6IFRoaW5nIHwgdHlwZW9mIFRoaW5nKSB7XHJcblx0XHR0aGlzLmFjdG9yID0gbmV3IENvbnRlbnREaWZmZXJlbnRpYWwoaXQpO1xyXG5cdFx0cmV0dXJuIHRoaXM7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgc2V0VGFyZ2V0IChpdCA6IFRoaW5nIHwgdHlwZW9mIFRoaW5nKSB7XHJcblx0XHR0aGlzLnRhcmdldCA9IG5ldyBDb250ZW50RGlmZmVyZW50aWFsKGl0KTtcclxuXHRcdHJldHVybiB0aGlzO1xyXG5cdH1cclxuXHJcblx0cHVibGljIHNldFdlYXBvbiAoaXQgOiBUaGluZyB8IHR5cGVvZiBUaGluZykge1xyXG5cdFx0dGhpcy53ZWFwb24gPSBuZXcgQ29udGVudERpZmZlcmVudGlhbChpdCk7XHJcblx0XHRyZXR1cm4gdGhpcztcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBhZGRNYXJrZXIgKG1hcmtlciA6IENvbnRlbnRNYXJrZXIpIHtcclxuXHRcdHRoaXMubWFya2Vycy5hZGROb3VuKG1hcmtlcik7XHJcblx0XHRyZXR1cm4gdGhpcztcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBnZXRTY29yZSAoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5hY3Rvci5nZXRTY29yZSgpICsgdGhpcy50YXJnZXQuZ2V0U2NvcmUoKSArIHRoaXMud2VhcG9uLmdldFNjb3JlKCkgKyB0aGlzLm1hcmtlcnMuZ2V0U2NvcmUoKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBpc01hdGNoIChjdSA6IENvbWJhdFVuaXQpIHtcclxuXHRcdGlmIChjdSBpbnN0YW5jZW9mIENvbWJhdFVuaXQpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuYWN0b3IuaXNNYXRjaChjdS5hY3RvcikgJiYgdGhpcy50YXJnZXQuaXNNYXRjaChjdS50YXJnZXQpICYmXHJcblx0XHRcdFx0dGhpcy53ZWFwb24uaXNNYXRjaChjdS53ZWFwb24pICYmIHRoaXMubWFya2Vycy5pc01hdGNoKGN1Lm1hcmtlcnMpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9Db250ZW50RGVzY3JpcHRpb24udHNcIiAvPlxyXG5jbGFzcyBGdWNraW5nRGVzY3JpcHRpb24gZXh0ZW5kcyBDb250ZW50RGVzY3JpcHRpb24ge1xyXG4gICAgcHVibGljIHN0YXRpYyBERVNDUklQVElPTlMgPSBbXTtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKG5hbWUgOiBzdHJpbmcpIHtcclxuICAgICAgICBzdXBlcihuYW1lLCBuZXcgQ29udGVudEdyb3VwKCkpO1xyXG4gICAgICAgIEZ1Y2tpbmdEZXNjcmlwdGlvbi5ERVNDUklQVElPTlMucHVzaCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWRkVW5pdCAoKSB7XHJcbiAgICAgICAgbGV0IHVuaXQgPSBuZXcgRnVja2luZ1VuaXQoKTtcclxuICAgICAgICAoPENvbnRlbnRHcm91cD4gdGhpcy5ncm91cCkuYWRkVW5pdCh1bml0KTtcclxuICAgICAgICByZXR1cm4gdW5pdDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldERlc2NyaXB0aW9uICh0YXJnZXQgOiBDb250ZW50R3JvdXApIHtcclxuICAgICAgICByZXR1cm4gQ29udGVudERlc2NyaXB0aW9uLnBpY2tEZXNjcmlwdGlvbnMoRnVja2luZ0Rlc2NyaXB0aW9uLkRFU0NSSVBUSU9OUywgdGFyZ2V0KTtcclxuICAgIH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9Db250ZW50TWFya2VyLnRzXCIgLz5cclxuLyoqXHJcbiAqIENIRUFUIFNIRUVUIEZPUiBGVUNLSU5HIE1BUktFUlNcclxuICpcclxuICogTWFuZGF0b3J5IGlmIHByZXNlbnQgLSBUaGVzZSBtYXkgYWxsIGFwcGVhciBhdCBvbmNlIG9yIHNlcGFyYXRlZGx5ISBNdWx0aXBsZXMgaXMgYWx3YXlzIHJhcmVyLCBzbyB5b3UgY2FuIGdldCBhd2F5IHdpdGggbGVzcyBkZXNjcmlwdGlvbnNcclxuICogRnVja2luZ1N0YXRlLkNVTV9TVEFSVFxyXG4gKiBGdWNraW5nU3RhdGUuQ1VNTUlOR1xyXG4gKiBGdWNraW5nU3RhdGUuQ1VNX0VORFxyXG4gKlxyXG4gKiBNYW5kYXRvcnkgaWYgcHJlc2VudCAtIHRoZXNlIGFsd2F5cyBhY2NvbXBhbnkgdGhlIG9uZXMgYWJvdmUsIHRoZXkgbmV2ZXIgYXBwZWFyIHdpdGhvdXQgYXQgbGVhc3Qgb25lIG9mIHRoZSBvbmVzIGFib3ZlLiBUaGV5IG1pZ2h0IGJlIGJvdGggYXQgb25jZSwgYnV0IHZlcnkgZmV3IGVuZW1pZXMgZG8gdGhhdCBzbyBhbHdheXMgY2hlY2sgdGhlIGVuZW15IGZpcnN0XHJcbiAqIEZ1Y2tpbmdTdGF0ZS5DVU1fSU5TSURFXHJcbiAqIEZ1Y2tpbmdTdGF0ZS5DVU1fT1VUU0lERVxyXG4gKlxyXG4gKiBNYW5kYXRvcnkgaWYgcHJlc2VudCAtIFRoZXNlIG1heSBhbGwgYXBwZWFyIGF0IG9uY2Ugb3Igc2VwYXJhdGVkbHkhIE11bHRpcGxlcyBpcyBhbHdheXMgcmFyZXIsIHNvIHlvdSBjYW4gZ2V0IGF3YXkgd2l0aCBsZXNzIGRlc2NyaXB0aW9uc1xyXG4gKiBGdWNraW5nU3RhdGUuUEVORVRSQVRJTkdcclxuICogRnVja2luZ1N0YXRlLlJFTU9WSU5HXHJcbiAqL1xyXG5cclxuY2xhc3MgRnVja2luZ1N0eWxlIGV4dGVuZHMgQ29udGVudE1hcmtlciB7XHJcbiAgICBwdWJsaWMgc3RhdGljIEdFTlRMRSA9IG5ldyBGdWNraW5nU3R5bGUoXCJHZW50bGVcIik7XHJcbiAgICBwdWJsaWMgc3RhdGljIFJPVUdIID0gbmV3IEZ1Y2tpbmdTdHlsZShcIlJvdWdoXCIpO1xyXG59XHJcblxyXG5jbGFzcyBGdWNraW5nU3RhdGUgZXh0ZW5kcyBDb250ZW50TWFya2VyIHtcclxuICAgIHB1YmxpYyBzdGF0aWMgUEVORVRSQVRJTkcgPSBuZXcgRnVja2luZ1N0YXRlKFwiUGVuZXRyYXRpb24gU3RhcnRcIiwgdHJ1ZSk7XHJcbiAgICBwdWJsaWMgc3RhdGljIFJFTU9WSU5HID0gbmV3IEZ1Y2tpbmdTdGF0ZShcIlJlbW92aW5nIFN0aWNrXCIsIHRydWUpO1xyXG4gICAgcHVibGljIHN0YXRpYyBTUEVFRElOR19VUCA9IG5ldyBGdWNraW5nU3RhdGUoXCJTcGVlZGluZyB1cFwiLHRydWUpO1xyXG4gICAgcHVibGljIHN0YXRpYyBDVU1fU1RBUlQgPSBuZXcgRnVja2luZ1N0YXRlKFwiU3RhcnRlZCBDdW1taW5nXCIsIHRydWUpO1xyXG4gICAgcHVibGljIHN0YXRpYyBDVU1NSU5HID0gbmV3IEZ1Y2tpbmdTdGF0ZShcIkN1bW1pbmdcIiwgdHJ1ZSk7XHJcbiAgICBwdWJsaWMgc3RhdGljIENVTV9FTkQgPSBuZXcgRnVja2luZ1N0YXRlKFwiRmluaXNoZWQgQ3VtbWluZ1wiLCB0cnVlKTtcclxuICAgIHB1YmxpYyBzdGF0aWMgQ1VNX0lOU0lERSA9IG5ldyBGdWNraW5nU3RhdGUoXCJDdW0gSW5zaWRlXCIsIHRydWUpO1xyXG4gICAgcHVibGljIHN0YXRpYyBDVU1fT1VUU0lERSA9IG5ldyBGdWNraW5nU3RhdGUoXCJDdW0gT3V0c2lkZVwiLCB0cnVlKTtcclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9Db250ZW50VW5pdC50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9UaGluZ3MvUGVyc29uLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL1RoaW5ncy9Cb2R5cGFydC9TZXhIb2xlLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL1RoaW5ncy9Cb2R5cGFydC9TZXhTdGljay50c1wiIC8+XHJcbmNsYXNzIEZ1Y2tpbmdVbml0IGV4dGVuZHMgQ29udGVudFVuaXQge1xyXG4gICAgcHJpdmF0ZSBmdWNrZXIgOiBDb250ZW50RGlmZmVyZW50aWFsID0gbmV3IENvbnRlbnREaWZmZXJlbnRpYWwoUGVyc29uKTtcclxuICAgIHByaXZhdGUgZnVja2VkIDogQ29udGVudERpZmZlcmVudGlhbCA9IG5ldyBDb250ZW50RGlmZmVyZW50aWFsKFBlcnNvbik7XHJcbiAgICBwcml2YXRlIGhvbGUgOiBDb250ZW50RGlmZmVyZW50aWFsID0gbmV3IENvbnRlbnREaWZmZXJlbnRpYWwoU2V4SG9sZSk7XHJcbiAgICBwcml2YXRlIHN0aWNrIDogQ29udGVudERpZmZlcmVudGlhbCA9IG5ldyBDb250ZW50RGlmZmVyZW50aWFsKFNleFN0aWNrKTtcclxuICAgIHByaXZhdGUgbWFya2VycyA6IENvbnRlbnREaWZmZXJlbnRpYWwgPSBuZXcgQ29udGVudERpZmZlcmVudGlhbCgpO1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0RnVja2VyIChpdCA6IFRoaW5nIHwgdHlwZW9mIFRoaW5nKSB7XHJcbiAgICAgICAgdGhpcy5mdWNrZXIgPSBuZXcgQ29udGVudERpZmZlcmVudGlhbChpdCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldEZ1Y2tlZCAoaXQgOiBUaGluZyB8IHR5cGVvZiBUaGluZykge1xyXG4gICAgICAgIHRoaXMuZnVja2VkID0gbmV3IENvbnRlbnREaWZmZXJlbnRpYWwoaXQpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRIb2xlIChpdCA6IFRoaW5nIHwgdHlwZW9mIFRoaW5nKSB7XHJcbiAgICAgICAgdGhpcy5ob2xlID0gbmV3IENvbnRlbnREaWZmZXJlbnRpYWwoaXQpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRTdGljayAoaXQgOiBUaGluZyB8IHR5cGVvZiBUaGluZykge1xyXG4gICAgICAgIHRoaXMuc3RpY2sgPSBuZXcgQ29udGVudERpZmZlcmVudGlhbChpdCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZE1hcmtlciAobWFya2VyIDogQ29udGVudE1hcmtlcikge1xyXG4gICAgICAgIHRoaXMubWFya2Vycy5hZGROb3VuKG1hcmtlcik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNjb3JlICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mdWNrZXIuZ2V0U2NvcmUoKSArIHRoaXMuZnVja2VkLmdldFNjb3JlKCkgKyB0aGlzLmhvbGUuZ2V0U2NvcmUoKSArIHRoaXMuc3RpY2suZ2V0U2NvcmUoKSArIHRoaXMubWFya2Vycy5nZXRTY29yZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc01hdGNoIChmdSA6IEZ1Y2tpbmdVbml0KSB7XHJcbiAgICAgICAgaWYgKGZ1IGluc3RhbmNlb2YgRnVja2luZ1VuaXQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnVja2VyLmlzTWF0Y2goZnUuZnVja2VyKSAmJiB0aGlzLmZ1Y2tlZC5pc01hdGNoKGZ1LmZ1Y2tlZCkgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuaG9sZS5pc01hdGNoKGZ1LmhvbGUpICYmIHRoaXMuc3RpY2suaXNNYXRjaChmdS5zdGljaykgJiYgdGhpcy5tYXJrZXJzLmlzTWF0Y2goZnUubWFya2Vycyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi9GdW5jdGlvbnMudHNcIiAvPlxyXG5jbGFzcyBCcmFuY2hpbmdPcHRpb24ge1xyXG4gICAgcHVibGljIHNheSA6IFNheTtcclxuICAgIHB1YmxpYyBhcHBlYXJDb25kaXRpb24gOiAoKCkgPT4gYm9vbGVhbikgfCBib29sZWFuO1xyXG4gICAgcHVibGljIHByZXZpb3VzbHlQaWNrZWQgOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChzYXkgOiBTYXksIGFwcGVhckNvbmRpdGlvbj8gOiAoKCkgPT4gYm9vbGVhbikgfCBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5zYXkgPSBzYXk7XHJcbiAgICAgICAgdGhpcy5hcHBlYXJDb25kaXRpb24gPSBhcHBlYXJDb25kaXRpb247XHJcbiAgICB9XHJcbn1cclxuXHJcbmNsYXNzIEJyYW5jaGluZ0RpYWxvZ3VlIHtcclxuICAgIHByaXZhdGUgb3B0aW9ucyA6IEFycmF5PEJyYW5jaGluZ09wdGlvbj4gPSBbXTtcclxuICAgIHByaXZhdGUgcmVzb2x2ZSA6IEZ1bmN0aW9uO1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoLi4ub3B0aW9ucyA6IEFycmF5PEJyYW5jaGluZ09wdGlvbj4pIHtcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbnMoLi4ub3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZE9wdGlvbnMgKC4uLm9wdGlvbnMgOiBBcnJheTxCcmFuY2hpbmdPcHRpb24+KSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnB1c2goLi4ub3B0aW9ucyk7XHJcbiAgICAgICAgYXJyYXlVbmlxdWUodGhpcy5vcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q2hvc2VuT3B0aW9uICgpIDogUHJvbWlzZTxCcmFuY2hpbmdPcHRpb24+IHtcclxuICAgICAgICBsZXQgdmFsaWRPcHRpb25zID0gW107XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCB2YWx1ZSA9IHRoaXMub3B0aW9uc1tpXTsgdmFsdWUgIT0gdW5kZWZpbmVkOyB2YWx1ZSA9IHRoaXMub3B0aW9uc1srK2ldKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZS5hcHBlYXJDb25kaXRpb24gPT0gdW5kZWZpbmVkIHx8ICh0eXBlb2YgdmFsdWUuYXBwZWFyQ29uZGl0aW9uID09IFwiZnVuY3Rpb25cIiAmJiB2YWx1ZS5hcHBlYXJDb25kaXRpb24oKSkgfHwgdmFsdWUuYXBwZWFyQ29uZGl0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZE9wdGlvbnMucHVzaCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBjaG9pY2VCdXR0b25zIDogQXJyYXk8SFRNTEVsZW1lbnQ+ID0gW107XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsaWRPcHRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHZhbGlkT3B0aW9uc1tpXTtcclxuICAgICAgICAgICAgbGV0IGNsYXNzZXMgPSBbXCJjaG9pY2VcIl07XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZS5wcmV2aW91c2x5UGlja2VkKSB7XHJcbiAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goXCJwaWNrZWRcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2hvaWNlQnV0dG9ucy5wdXNoKChhd2FpdCB2YWx1ZS5zYXkuZ2V0SFRNTChcInBcIiwgY2xhc3NlcykpWzBdKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBQbGF5ZXJJbnB1dCA6IFByb21pc2U8QnJhbmNoaW5nT3B0aW9uPiA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZXNvbHZlID0gcmVzb2x2ZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgQ29udHJvbHMuS2V5SGFuZGxlci5yZXNldCgpO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDAsIHZhbHVlID0gY2hvaWNlQnV0dG9uc1tpbmRleF07IHZhbHVlICE9IHVuZGVmaW5lZDsgdmFsdWUgPSBjaG9pY2VCdXR0b25zWysraW5kZXhdKSB7XHJcbiAgICAgICAgICAgIENvbnRyb2xzLktleUhhbmRsZXIuYXBwbHlDb2RlKHZhbHVlLCBDb250cm9scy5LZXlIYW5kbGVyLmdldEZpcnN0S2V5Q29kZSgpKTtcclxuICAgICAgICAgICAgdmFsdWUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZE9wdGlvbnNbaW5kZXhdLnByZXZpb3VzbHlQaWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlKHZhbGlkT3B0aW9uc1tpbmRleF0pO1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGF3YWl0IEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlci5wcmludCguLi5jaG9pY2VCdXR0b25zKTtcclxuXHJcbiAgICAgICAgbGV0IGNob2ljZSA9IGF3YWl0IFBsYXllcklucHV0O1xyXG5cclxuICAgICAgICBhd2FpdCBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIudW5wcmludCguLi5jaG9pY2VCdXR0b25zKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNob2ljZTtcclxuICAgIH1cclxufSIsImVudW0gTm9kZVR5cGUge1xyXG4gICAgTm9kZSwgVHJlZSwgVGV4dCwgU2V0LCBDaG9pY2UsIEJyYW5jaFxyXG59XHJcblxyXG5jbGFzcyBEaWFsb2d1ZU5vZGUge1xyXG4gICAgcHVibGljIHR5cGUgOiBOb2RlVHlwZSA9IE5vZGVUeXBlLk5vZGU7XHJcbiAgICAvLyBFbmQgbm9kZXMgYXJlIG5vdCBuZWNlc3NhcnkuIElmIG5leHQgaXMgdW5kZWZpbmVkLCB0aGVuIHRoYXQncyB0aGUgZW5kLlxyXG4gICAgLy9wdWJsaWMgc3RhdGljIEVORF9OT0RFID0gXCJFbmRcIjtcclxuICAgIHB1YmxpYyBpZCA6IHN0cmluZztcclxuICAgIHB1YmxpYyBuYW1lIDogc3RyaW5nO1xyXG5cclxuICAgIHByb3RlY3RlZCBuZXh0IDogc3RyaW5nO1xyXG4gICAgcHVibGljIGNob2ljZXMgOiBBcnJheTxzdHJpbmc+O1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoaWQgOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmlkID0gaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldE5hbWUgKG5hbWUgOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXROZXh0IChuZXh0IDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5uZXh0ID0gbmV4dDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0TmV4dCAoKSA6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubmV4dDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0Q2hvaWNlcyAoY2hvaWNlcyA6IEFycmF5PHN0cmluZz4pIHtcclxuICAgICAgICB0aGlzLmNob2ljZXMgPSBjaG9pY2VzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYXNDaG9pY2VzICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jaG9pY2VzICE9IHVuZGVmaW5lZCAmJiB0aGlzLmNob2ljZXMubGVuZ3RoID4gMDtcclxuICAgIH1cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJEaWFsb2d1ZU5vZGUudHNcIiAvPlxyXG5jbGFzcyBEaWFsb2d1ZUJyYW5jaCBleHRlbmRzIERpYWxvZ3VlTm9kZSB7XHJcbiAgICBwdWJsaWMgdHlwZSA9IE5vZGVUeXBlLkJyYW5jaDtcclxuICAgIHB1YmxpYyB2YXJpYWJsZSA6ICgpID0+IGFueSA9ICgpID0+IHtyZXR1cm4gZmFsc2U7fVxyXG4gICAgcHVibGljIGJyYW5jaElkcyA6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuICAgIHB1YmxpYyBicmFuY2hDb25kaXRpb25zIDogQXJyYXk8KCkgPT4gYW55PiA9IFtdO1xyXG5cclxuICAgIHB1YmxpYyBzZXRWYXJpYWJsZSAodmFyRnVuYyA6ICgpID0+IGFueSkge1xyXG4gICAgICAgIHRoaXMudmFyaWFibGUgPSB2YXJGdW5jO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZGRCcmFuY2ggKHRhcmdldGlkIDogc3RyaW5nLCB2YWx1ZUZ1bmMgOiAoKSA9PiBhbnkpIHtcclxuICAgICAgICB0aGlzLmJyYW5jaElkcy5wdXNoKHRhcmdldGlkKTtcclxuICAgICAgICB0aGlzLmJyYW5jaENvbmRpdGlvbnMucHVzaCh2YWx1ZUZ1bmMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXROZXh0ICgpIHtcclxuICAgICAgICBsZXQgdmFyaWFibGUgPSB0aGlzLnZhcmlhYmxlKCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJyYW5jaElkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgY29tcGFyaW5nID0gdGhpcy5icmFuY2hDb25kaXRpb25zW2ldKCk7XHJcbiAgICAgICAgICAgIGlmIChjb21wYXJpbmcgPT0gdmFyaWFibGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJyYW5jaElkc1tpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5uZXh0O1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIkRpYWxvZ3VlTm9kZS50c1wiIC8+XHJcbmNsYXNzIERpYWxvZ3VlVGV4dCBleHRlbmRzIERpYWxvZ3VlTm9kZSB7XHJcbiAgICBwdWJsaWMgdHlwZSA9IE5vZGVUeXBlLlRleHQ7XHJcbiAgICBwcml2YXRlIHNheUNyZWF0b3IgOiAoKSA9PiBTYXk7XHJcblxyXG4gICAgcHVibGljIHNldFNheSAoc2F5Q3JlYXRvciA6ICgpID0+IFNheSkge1xyXG4gICAgICAgIHRoaXMuc2F5Q3JlYXRvcj0gc2F5Q3JlYXRvcjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0U2F5ICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zYXlDcmVhdG9yKCk7XHJcbiAgICB9XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiRGlhbG9ndWVUZXh0LnRzXCIgLz5cclxuY2xhc3MgRGlhbG9ndWVDaG9pY2UgZXh0ZW5kcyBEaWFsb2d1ZVRleHQge1xyXG4gICAgcHVibGljIHR5cGUgPSBOb2RlVHlwZS5DaG9pY2U7XHJcbiAgICBwcml2YXRlIGNvbmRpdGlvbnMgOiAoKSA9PiBib29sZWFuID0gKCkgPT4geyByZXR1cm4gdHJ1ZTsgfTtcclxuXHJcbiAgICBwdWJsaWMgaXNBdmFpbGFibGUgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0Q29uZGl0aW9ucyAoY29uZGl0aW9ucyA6ICgpID0+IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmNvbmRpdGlvbnMgPSBjb25kaXRpb25zO1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIkRpYWxvZ3VlTm9kZS50c1wiIC8+XHJcbmNsYXNzIERpYWxvZ3VlTm9kZVRyZWUgZXh0ZW5kcyBEaWFsb2d1ZU5vZGUge1xyXG4gICAgcHVibGljIHR5cGUgPSBOb2RlVHlwZS5UcmVlO1xyXG4gICAgcHVibGljIHRyZWUgOiAoKSA9PiBEaWFsb2d1ZVRyZWU7XHJcblxyXG4gICAgcHVibGljIHNldFRyZWUgKHRyZWVGaW5kZXIgOiAoKSA9PiBEaWFsb2d1ZVRyZWUpIHtcclxuICAgICAgICB0aGlzLnRyZWUgPSB0cmVlRmluZGVyO1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIkRpYWxvZ3VlTm9kZS50c1wiIC8+XHJcbmNsYXNzIERpYWxvZ3VlU2V0IGV4dGVuZHMgRGlhbG9ndWVOb2RlIHtcclxuICAgIHB1YmxpYyB0eXBlID0gTm9kZVR5cGUuU2V0O1xyXG4gICAgcHJpdmF0ZSBjb2RlIDogKCkgPT4gKHZvaWQgfCBQcm9taXNlPHZvaWQ+KTtcclxuXHJcbiAgICBwdWJsaWMgc2V0RnVuY3Rpb24gKGNvZGUgOiAoKSA9PiAodm9pZCB8IFByb21pc2U8dm9pZD4pKSB7XHJcbiAgICAgICAgdGhpcy5jb2RlID0gY29kZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcnVuICgpIDogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvZGUoKTtcclxuICAgIH1cclxufSIsImNsYXNzIERpYWxvZ3VlVHJlZSB7XHJcbiAgICBwdWJsaWMgaWQgOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIG5vZGVzIDoge1tpZCA6IHN0cmluZ10gOiBEaWFsb2d1ZU5vZGV9ID0ge307XHJcbiAgICBwdWJsaWMgc3RhcnROb2RlIDogRGlhbG9ndWVOb2RlID0gdW5kZWZpbmVkO1xyXG4gICAgcHJpdmF0ZSByZXBlYXRDaG9pY2VzIDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBwcml2YXRlIGxhc3RQcmludGVkQ2hvaWNlIDogQXJyYXk8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoaWQgOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmlkID0gaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZE5vZGUgKG5vZGUgOiBEaWFsb2d1ZU5vZGUpIHtcclxuICAgICAgICB0aGlzLm5vZGVzW25vZGUuaWRdID0gbm9kZTtcclxuICAgICAgICBpZiAobm9kZS50eXBlID09IE5vZGVUeXBlLk5vZGUpIHtcclxuICAgICAgICAgICAgdGhpcy5ub2Rlc1tub2RlLm5hbWVdID0gbm9kZTsgLy8gVGhpcyBpcyBhIGxhYmVsIVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWRkU3RhcnROb2RlIChub2RlIDogRGlhbG9ndWVOb2RlKSB7XHJcbiAgICAgICAgdGhpcy5hZGROb2RlKG5vZGUpO1xyXG4gICAgICAgIHRoaXMuc3RhcnROb2RlID0gbm9kZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0Tm9kZSAoaWQgOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ub2Rlc1tpZF07XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldE5leHQgKG5vZGUgOiBEaWFsb2d1ZU5vZGUpIHtcclxuICAgICAgICBsZXQgbmV4dCA9IG5vZGUuZ2V0TmV4dCgpO1xyXG4gICAgICAgIGlmIChuZXh0ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXROb2RlKG5leHQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0UmVwZWF0Q2hvaWNlcyAoZG9JdCA6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLnJlcGVhdENob2ljZXMgPSBkb0l0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlIChzdGFydElkPyA6IHN0cmluZykge1xyXG5cclxuICAgICAgICBjb25zb2xlLmRlYnVnKFJ1bGVib29rLmdldEluZGVudGF0aW9uKCkgKyBcIltEaWFsb2d1ZVRyZWVdIFJ1bm5pbmcgXCIgKyB0aGlzLmlkKTtcclxuICAgICAgICBSdWxlYm9vay5pbmNyZWFzZUluZGVudGF0aW9uKHRoaXMpO1xyXG5cclxuICAgICAgICBsZXQgbm9kZSA6IERpYWxvZ3VlTm9kZTtcclxuICAgICAgICBpZiAoc3RhcnRJZCA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgbm9kZSA9IHRoaXMuc3RhcnROb2RlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG5vZGUgPSB0aGlzLmdldE5vZGUoc3RhcnRJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChub2RlID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIucHJpbnRBc0Vycm9yKFwiVW5hYmxlIHRvIHN0YXJ0IGRpYWxvZ3VlIFwiICsgdGhpcy5pZCArIFwiOiBBIHN0YXJ0aW5nIG5vZGUgY291bGQgbm90IGJlIGZvdW5kLlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHByZXZpb3VzTm9kZSA6IERpYWxvZ3VlTm9kZTtcclxuICAgICAgICB3aGlsZSAobm9kZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgbGV0IG5leHROb2RlID0gYXdhaXQgdGhpcy5wcm9jZXNzTm9kZShub2RlLCBwcmV2aW91c05vZGUpO1xyXG4gICAgICAgICAgICBwcmV2aW91c05vZGUgPSBub2RlO1xyXG4gICAgICAgICAgICBub2RlID0gbmV4dE5vZGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFJ1bGVib29rLmRlY3JlYXNlSW5kZW50YXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgcHJvY2Vzc05vZGUgKG5vZGUgOiBEaWFsb2d1ZU5vZGUsIHByZXZpb3VzTm9kZSA6IERpYWxvZ3VlTm9kZSkge1xyXG4gICAgICAgIGNvbnNvbGUuZGVidWcoUnVsZWJvb2suZ2V0SW5kZW50YXRpb24oKSArIFwiW1wiICsgbm9kZS50eXBlICsgXCJdIFwiICsgbm9kZS5pZCk7XHJcbiAgICAgICAgUnVsZWJvb2suaW5jcmVhc2VJbmRlbnRhdGlvbihub2RlKTtcclxuICAgICAgICBsZXQgZG9DaG9pY2VzID0gbm9kZS5oYXNDaG9pY2VzKCk7XHJcblxyXG4gICAgICAgIGlmIChub2RlLnR5cGUgPT0gTm9kZVR5cGUuVHJlZSkge1xyXG4gICAgICAgICAgICBhd2FpdCAoPERpYWxvZ3VlTm9kZVRyZWU+IG5vZGUpLnRyZWUoKS5leGVjdXRlKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT0gTm9kZVR5cGUuVGV4dCkge1xyXG4gICAgICAgICAgICBsZXQgc2F5ID0gKDxEaWFsb2d1ZVRleHQ+IG5vZGUpLmdldFNheSgpO1xyXG4gICAgICAgICAgICBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIucHJpbnRBc0NvbnRlbnQoc2F5KTtcclxuICAgICAgICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PSBOb2RlVHlwZS5TZXQpIHtcclxuICAgICAgICAgICAgbGV0IHJ1bm5pbmdTZXQgPSAoPERpYWxvZ3VlU2V0PiBub2RlKS5ydW4oKTtcclxuICAgICAgICAgICAgaWYgKHJ1bm5pbmdTZXQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBydW5uaW5nU2V0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZG9DaG9pY2VzKSB7XHJcbiAgICAgICAgICAgIC8vIE5leHQgbm9kZSBpcyBkZWNpZGVkIGJ5IHRoZSBjaG9pY2VzXHJcbiAgICAgICAgICAgIGxldCBicmFuY2hpbmdEaWFsb2d1ZSA9IG5ldyBCcmFuY2hpbmdEaWFsb2d1ZSgpO1xyXG4gICAgICAgICAgICBsZXQgY2hvaWNlcyA9IG5vZGUuY2hvaWNlcztcclxuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaG9pY2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2hvaWNlID0gPERpYWxvZ3VlQ2hvaWNlPiB0aGlzLmdldE5vZGUoY2hvaWNlc1tpXSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgYnJhbmNoaW5nT3B0aW9uID0gbmV3IEJyYW5jaGluZ09wdGlvbihjaG9pY2UuZ2V0U2F5KCksIGNob2ljZS5pc0F2YWlsYWJsZSgpKTtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMucHVzaChicmFuY2hpbmdPcHRpb24pO1xyXG4gICAgICAgICAgICAgICAgYnJhbmNoaW5nRGlhbG9ndWUuYWRkT3B0aW9ucyhicmFuY2hpbmdPcHRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBjaG9zZW5PcHRpb24gOiBCcmFuY2hpbmdPcHRpb24gPSBhd2FpdCBicmFuY2hpbmdEaWFsb2d1ZS5nZXRDaG9zZW5PcHRpb24oKTtcclxuICAgICAgICAgICAgbGV0IGNob3Nlbk5vZGVJZCA9IGNob2ljZXNbb3B0aW9ucy5pbmRleE9mKGNob3Nlbk9wdGlvbildO1xyXG4gICAgICAgICAgICBsZXQgY2hvc2VuTm9kZSA9IDxEaWFsb2d1ZUNob2ljZT4gdGhpcy5nZXROb2RlKGNob3Nlbk5vZGVJZCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5yZXBlYXRDaG9pY2VzKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2F5ID0gbmV3IFNheShuZXcgU2F5Qm9sZChcIiA+IFwiLCBjaG9zZW5Ob2RlLmdldFNheSgpKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhc3RQcmludGVkQ2hvaWNlID0gYXdhaXQgRWxlbWVudHMuQ3VycmVudFR1cm5IYW5kbGVyLmdldFNheUVsZW1lbnRzQXNDb250ZW50KHNheSk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIucHJpbnQoLi4udGhpcy5sYXN0UHJpbnRlZENob2ljZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoUnVsZWJvb2suZ2V0SW5kZW50YXRpb24oKSArIFwiW0Nob2ljZV0gUGlja2VkIFwiICsgY2hvc2VuTm9kZUlkKTtcclxuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhSdWxlYm9vay5nZXRJbmRlbnRhdGlvbigpICsgXCJbQ2hvaWNlXSBHb2luZyB0byBcIiArIGNob3Nlbk5vZGUuZ2V0TmV4dCgpKTtcclxuICAgICAgICAgICAgUnVsZWJvb2suaW5jcmVhc2VJbmRlbnRhdGlvbihjaG9zZW5Ob2RlSWQpO1xyXG4gICAgICAgICAgICBSdWxlYm9vay5kZWNyZWFzZUluZGVudGF0aW9uKCk7XHJcblxyXG4gICAgICAgICAgICBSdWxlYm9vay5kZWNyZWFzZUluZGVudGF0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE5leHQoY2hvc2VuTm9kZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgUnVsZWJvb2suZGVjcmVhc2VJbmRlbnRhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXROZXh0KG5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdW5wcmludExhc3RDaG9pY2UgKCkge1xyXG4gICAgICAgIEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlci51bnByaW50KC4uLnRoaXMubGFzdFByaW50ZWRDaG9pY2UpO1xyXG4gICAgfVxyXG59IiwibW9kdWxlIERpYWxvZ3VlVHJlZXMge1xyXG4gICAgLy8gbGV0IHRyZWVzIDoge1tuYW1lIDogc3RyaW5nXSA6IERpYWxvZ3VlVHJlZX0gPSB7fTtcclxuICAgIC8vXHJcbiAgICAvLyBleHBvcnQgZnVuY3Rpb24gYWRkVHJlZSh0cmVlIDogRGlhbG9ndWVUcmVlKSB7XHJcbiAgICAvLyAgICAgdHJlZXNbdHJlZS5pZF0gPSB0cmVlO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBwcmludHMgaW5mb3JtYXRpb24gYWJvdXQgdXNhZ2Ugb2YgZXZlcnkgRGlhbG9ndWVUcmVlIGF2YWlsYWJsZS5cclxuICAgICAqIE5vdGU6IEV2ZW4gdGhvdWdoIGEgRGlhbG9ndWVUcmVlIGlzIHJlZmVyZW5jZWQsIGl0ICptaWdodCogc3RpbGwgbm90IGJlIGFjY2Vzc2libGUgaWYgdGhlIGNvZGUgbGVhZGluZyB0byBpdCBpcyBmYXVsdHkuXHJcbiAgICAgKiBUaGlzIHNob3VsZCBiZSB1c2VkIHRvIGtub3cgd2hldGhlciBvciBub3QgYSBEaWFsb2d1ZVRyZWUgd2FzIFwiZm9yZ290dGVuXCIsIHNpbmNlIHRoZSBJREUgY2FuIG9ubHkgZG8gdGhpcyBtYW51YWxseS5cclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGZpbmRVbnVzZWRUcmVlcyAoKSB7XHJcbiAgICAgICAgbGV0IGFsbENvZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFwcENvZGVcIikuaW5uZXJIVE1MO1xyXG5cclxuICAgICAgICBsZXQgdXNlQ291bnQgPSB7fTtcclxuICAgICAgICBsZXQgdW51c2VkID0gW107XHJcblxyXG4gICAgICAgIGZvciAobGV0IGRpYWxvZ3VlTmFtZSBpbiBEaWFsb2d1ZVRyZWVzKSB7XHJcbiAgICAgICAgICAgIGlmIChkaWFsb2d1ZU5hbWUgIT0gXCJmaW5kVW51c2VkVHJlZXNcIikge1xyXG4gICAgICAgICAgICAgICAgLy8gVGhlIGZpcnN0IG1lbnRpb24gd2lsbCBiZSB0aGUgb25lIGRlZmluaW5nIGl0IHRvIGV4aXN0LCBzbyB3ZSBuZWVkIGF0IGxlYXN0IHR3byBvY2N1cnJlbmNlcyBmb3IgaXQgdG8gYmUgdXNlZC5cclxuICAgICAgICAgICAgICAgIGxldCBjb3VudCA9IG9jY3VycmVuY2VzKGFsbENvZGUsIFwiRGlhbG9ndWVUcmVlcy5cIiArIGRpYWxvZ3VlTmFtZSwgZmFsc2UpIC0gMTtcclxuICAgICAgICAgICAgICAgIGlmIChjb3VudCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB1c2VDb3VudFtkaWFsb2d1ZU5hbWVdID0gY291bnQ7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHVudXNlZC5wdXNoKGRpYWxvZ3VlTmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAobGV0IGRpYWxvZ3VlTmFtZSBpbiB1c2VDb3VudCkge1xyXG4gICAgICAgICAgICBsZXQgdGltZXMgPSB1c2VDb3VudFtkaWFsb2d1ZU5hbWVdO1xyXG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKFwiW0RpYWxvZ3VlVXNhZ2VdIFwiICsgZGlhbG9ndWVOYW1lICsgXCIgaXMgcmVmZXJlbmNlZCBcIiArIHRpbWVzICsgKHRpbWVzID4gMSA/IFwiIHRpbWVzLlwiIDogXCIgdGltZS5cIikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1bnVzZWQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIltEaWFsb2d1ZVVzYWdlXSBcIiArIHVudXNlZFtpXSArIFwiIGlzIG5ldmVyIHJlZmVyZW5jZWQgYW5kIHdpbGwgbm90IGFwcGVhciBpbi1nYW1lLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEZ1bmN0aW9uIHRoYXQgY291bnQgb2NjdXJyZW5jZXMgb2YgYSBzdWJzdHJpbmcgaW4gYSBzdHJpbmc7XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gc3RyaW5nICAgICAgICAgICAgICAgVGhlIHN0cmluZ1xyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHN1YlN0cmluZyAgICAgICAgICAgIFRoZSBzdWIgc3RyaW5nIHRvIHNlYXJjaCBmb3JcclxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2FsbG93T3ZlcmxhcHBpbmddICBPcHRpb25hbC4gKERlZmF1bHQ6ZmFsc2UpXHJcbiAgICAgKlxyXG4gICAgICogQGF1dGhvciBWaXRpbS51cyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS92aWN0b3JucGIvNzczNjg2NVxyXG4gICAgICogQHNlZSBVbml0IFRlc3QgaHR0cHM6Ly9qc2ZpZGRsZS5uZXQvVmljdG9ybnBiLzVheHVoOTZ1L1xyXG4gICAgICogQHNlZSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQwMDk3NTYvaG93LXRvLWNvdW50LXN0cmluZy1vY2N1cnJlbmNlLWluLXN0cmluZy83OTI0MjQwIzc5MjQyNDBcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gb2NjdXJyZW5jZXMoc3RyaW5nLCBzdWJTdHJpbmcsIGFsbG93T3ZlcmxhcHBpbmcpIHtcclxuXHJcbiAgICAgICAgc3RyaW5nICs9IFwiXCI7XHJcbiAgICAgICAgc3ViU3RyaW5nICs9IFwiXCI7XHJcbiAgICAgICAgaWYgKHN1YlN0cmluZy5sZW5ndGggPD0gMCkgcmV0dXJuIChzdHJpbmcubGVuZ3RoICsgMSk7XHJcblxyXG4gICAgICAgIHZhciBuID0gMCxcclxuICAgICAgICAgICAgcG9zID0gMCxcclxuICAgICAgICAgICAgc3RlcCA9IGFsbG93T3ZlcmxhcHBpbmcgPyAxIDogc3ViU3RyaW5nLmxlbmd0aDtcclxuXHJcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgICAgICAgcG9zID0gc3RyaW5nLmluZGV4T2Yoc3ViU3RyaW5nLCBwb3MpO1xyXG4gICAgICAgICAgICBpZiAocG9zID49IDApIHtcclxuICAgICAgICAgICAgICAgICsrbjtcclxuICAgICAgICAgICAgICAgIHBvcyArPSBzdGVwO1xyXG4gICAgICAgICAgICB9IGVsc2UgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuO1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1Jvb20udHNcIiAvPlxyXG5pbnRlcmZhY2UgVHJpY2tpZXJPcHRpb25zIHtcclxuICAgIHJlZ2lvbiA6IFJlZ2lvblJhbmRvbTtcclxuICAgIG1hcCA6IFJvb21SYW5kb21NYXA7XHJcbiAgICBvdGhlclJvb20gOiBSb29tUmFuZG9tO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVHJpY2t5T3B0aW9ucyBleHRlbmRzIFRyaWNraWVyT3B0aW9ucyB7XHJcbiAgICBvdGhlclJvb21EaXJlY3Rpb24gOiBudW1iZXI7XHJcbiAgICB0cmlja3lSb29tRGlyZWN0aW9uIDogbnVtYmVyO1xyXG4gICAgeCA6IG51bWJlcjtcclxuICAgIHkgOiBudW1iZXI7XHJcbn1cclxuXHJcbmludGVyZmFjZSBSb29tUmFuZG9tTm9kZSB7XHJcbiAgICByb29tIDogUm9vbVJhbmRvbTtcclxuICAgIGNvb3JkaW5hdGVzIDogQXJyYXk8bnVtYmVyPjtcclxuICAgIGRpc3RhbmNlIDogbnVtYmVyO1xyXG59XHJcblxyXG5jbGFzcyBSb29tUmFuZG9tIGV4dGVuZHMgUm9vbSB7XHJcbiAgICBwdWJsaWMgY29ubmVjdGFibGVPbiA6IEFycmF5PG51bWJlcj4gPSBbRGlyZWN0aW9uLk5PUlRILCBEaXJlY3Rpb24uU09VVEgsIERpcmVjdGlvbi5FQVNULCBEaXJlY3Rpb24uV0VTVF07XHJcbiAgICBwdWJsaWMgcmFuZG9taXphYmxlID0gdHJ1ZTsgLy8gbm9uLXJhbmRvbWl6YWJsZSByb29tcyBkb24ndCBnZXQgcGxhY2VkIGF1dG9tYXRpY2FsbHlcclxuICAgIHB1YmxpYyBwbGFjZWQgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBhcHBlYXJDaGFuY2UgPSA3NTtcclxuICAgIHB1YmxpYyBleHRyYUNvbm5lY3Rpb25DaGFuY2UgPSA3NTsgLy8gUmVxdWlyZXMgdHdvIHN1Y2Nlc3Nlc1xyXG4gICAgcHVibGljIGJhY2tncm91bmRJbWFnZSA9IFwidG9tYXRvXCI7XHJcblxyXG4gICAgcHVibGljIGxhc3RNYXAgOiBSb29tUmFuZG9tTWFwO1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoaWQ/IDogc3RyaW5nLCBmb2RkZXI/IDogYm9vbGVhbikge1xyXG4gICAgICAgIHN1cGVyKGlkLCBmb2RkZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRCYWNrZ3JvdW5kQ2xhc3MgKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzSW1hZ2VEZWZpbmVkKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFja2dyb3VuZEltYWdlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gXCJ0b21hdG9cIjtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzSW1hZ2VEZWZpbmVkICgpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcnVsZXMgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1tpXVsncnVsZXMnXSB8fCBkb2N1bWVudC5zdHlsZVNoZWV0c1tpXVsnY3NzUnVsZXMnXTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIHggaW4gcnVsZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJ1bGVzW3hdLnNlbGVjdG9yVGV4dCA9PSAnc3RyaW5nJyAmJiBydWxlc1t4XS5zZWxlY3RvclRleHQgPT0gXCIuXCIgKyB0aGlzLmJhY2tncm91bmRJbWFnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5hYmxlIHRvIHJlYWQgaW1hZ2VcIik7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNDb25uZWN0YWJsZU9uIChvcHBvc2l0ZURpcmVjdGlvbiA6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RhYmxlT24uaW5kZXhPZihvcHBvc2l0ZURpcmVjdGlvbikgIT0gLTE7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRyaWNreUNvZGUgOiAob3B0aW9ucyA6IFRyaWNreU9wdGlvbnMpID0+IGJvb2xlYW47XHJcblxyXG4gICAgcHVibGljIGdldEFueURpcmVjdGlvbiAob3B0aW9ucyA6IFRyaWNraWVyT3B0aW9ucykgOiBUcmlja3lPcHRpb25zIHtcclxuICAgICAgICBsZXQgZGlyZWN0aW9uU2h1ZmZsZXIgPSBuZXcgU2h1ZmZsZXI8bnVtYmVyPih0aGlzLmNvbm5lY3RhYmxlT24pO1xyXG4gICAgICAgIGZvciAobGV0IGRpcmVjdGlvbiA9IGRpcmVjdGlvblNodWZmbGVyLmdldE9uZSgpOyBkaXJlY3Rpb24gIT0gdW5kZWZpbmVkOyBkaXJlY3Rpb24gPSBkaXJlY3Rpb25TaHVmZmxlci5nZXRPbmUoKSkge1xyXG4gICAgICAgICAgICBsZXQgb3Bwb3NpdGVEaXJlY3Rpb24gPSBPcHBvc2l0ZURpcmVjdGlvbltEaXJlY3Rpb25bZGlyZWN0aW9uXV07XHJcbiAgICAgICAgICAgIGxldCBvdGhlckNvb3JkaW5hdGVzID0gb3B0aW9ucy5tYXAuZ2V0Q29vcmRpbmF0ZXMob3B0aW9ucy5vdGhlclJvb20pO1xyXG4gICAgICAgICAgICBsZXQgd291bGRiZUNvb3JkaW5hdGVzID0gUm9vbS5zaGlmdChvdGhlckNvb3JkaW5hdGVzLCBvcHBvc2l0ZURpcmVjdGlvbik7XHJcbiAgICAgICAgICAgIGxldCB0cmlja3lPcHRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgb3RoZXJSb29tIDogb3B0aW9ucy5vdGhlclJvb20sXHJcbiAgICAgICAgICAgICAgICBvdGhlclJvb21EaXJlY3Rpb24gOiBvcHBvc2l0ZURpcmVjdGlvbixcclxuICAgICAgICAgICAgICAgIHRyaWNreVJvb21EaXJlY3Rpb24gOiBkaXJlY3Rpb24sXHJcbiAgICAgICAgICAgICAgICBtYXAgOiBvcHRpb25zLm1hcCxcclxuICAgICAgICAgICAgICAgIHJlZ2lvbiA6IG9wdGlvbnMucmVnaW9uLFxyXG4gICAgICAgICAgICAgICAgeCA6IHdvdWxkYmVDb29yZGluYXRlc1swXSxcclxuICAgICAgICAgICAgICAgIHkgOiB3b3VsZGJlQ29vcmRpbmF0ZXNbMV1cclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUGxhY2VhYmxlKHRyaWNreU9wdGlvbnMpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJpY2t5T3B0aW9ucztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNQbGFjZWFibGUgKG9wdGlvbnMgOiBUcmlja3lPcHRpb25zKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzQ29ubmVjdGFibGVPbihvcHRpb25zLnRyaWNreVJvb21EaXJlY3Rpb24pIHx8ICFvcHRpb25zLm1hcC5pc0ZyZWUob3B0aW9ucy54LCBvcHRpb25zLnkpKSB7XHJcbiAgICAgICAgICAgIC8vIFRoaXMgY2FuJ3QgY29ubmVjdCB0aHJvdWdoIHRoYXQhXHJcbiAgICAgICAgICAgIC8vIFRoYXQgY29vcmRpbmF0ZSBpc24ndCBmcmVlIVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5vdGhlclJvb20gPT0gdW5kZWZpbmVkIHx8ICFvcHRpb25zLm90aGVyUm9vbS5pc0Nvbm5lY3RhYmxlT24ob3B0aW9ucy5vdGhlclJvb21EaXJlY3Rpb24pKSB7XHJcbiAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG90aGVyIHJvb20gdGhlcmU/XHJcbiAgICAgICAgICAgIC8vIFRoZSBvdGhlciByb29tIGRvZXNuJ3QgbGlrZSBpdCB0aGlzIHdheVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBEbyBJIGhhdmUgbXkgb3duIHRyaWNreSBjb2RlP1xyXG4gICAgICAgIGlmICh0aGlzLnRyaWNreUNvZGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRyaWNreUNvZGUob3B0aW9ucyk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldERpc3RhbmNlVG8gKHJvb20gOiBSb29tUmFuZG9tKSB7XHJcbiAgICAgICAgbGV0IG15Q29vcmRpbmF0ZXMgPSB0aGlzLmxhc3RNYXAuZ2V0Q29vcmRpbmF0ZXModGhpcyk7XHJcbiAgICAgICAgbGV0IG90aGVyQ29vcmRpbmF0ZXMgPSB0aGlzLmxhc3RNYXAuZ2V0Q29vcmRpbmF0ZXMocm9vbSk7XHJcbiAgICAgICAgaWYgKG15Q29vcmRpbmF0ZXMgIT0gdW5kZWZpbmVkICYmIG90aGVyQ29vcmRpbmF0ZXMgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxldCBjMSA9IG15Q29vcmRpbmF0ZXM7XHJcbiAgICAgICAgICAgIGxldCBjMiA9IG90aGVyQ29vcmRpbmF0ZXM7XHJcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyhjMVswXSAtIGMyWzBdKSArIE1hdGguYWJzKGMxWzFdIC0gYzJbMV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgc3VmZmljaWVudGx5IGZhc3QgZm9yIGNvbnN0YW50IHVzZS5cclxuICAgICAqIEBwYXJhbSBwYXRoRW5kXHJcbiAgICAgKiBAcGFyYW0gbWFwXHJcbiAgICAgKiBAcGFyYW0gYXZhaWxhYmxlUm9vbXNcclxuICAgICAqIEByZXR1cm5zIHtBcnJheX1cclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpbmRQYXRoVG8gKHBhdGhFbmQgOiBSb29tUmFuZG9tLCB2YWxpZFJvb20/IDogKHJvb20gOiBSb29tUmFuZG9tKSA9PiBib29sZWFuKSB7XHJcbiAgICAgICAgdmFsaWRSb29tID0gdmFsaWRSb29tID09IHVuZGVmaW5lZCA/ICgpID0+IHtyZXR1cm4gdHJ1ZTt9IDogdmFsaWRSb29tO1xyXG4gICAgICAgIGxldCBtYXAgPSB0aGlzLmxhc3RNYXA7XHJcbiAgICAgICAgbGV0IGVuZFBvc2l0aW9uID0gbWFwLmdldENvb3JkaW5hdGVzKHBhdGhFbmQpO1xyXG4gICAgICAgIGxldCBvcGVuID0gW107XHJcblxyXG4gICAgICAgIGxldCBkaXN0YW5jZSA9IChjMSwgYzIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKGMxWzBdIC0gYzJbMF0pICsgTWF0aC5hYnMoYzFbMV0gLSBjMlsxXSk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgbGV0IG5laWdoYm9ycyA9IChyb29tIDogUm9vbVJhbmRvbSwgeCA6IG51bWJlciwgeSA6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbmVpZ2hzID0gW107XHJcbiAgICAgICAgICAgIGZvciAobGV0IGRpcmVjdGlvbiA9IDA7IGRpcmVjdGlvbiA8IHJvb20uY29ubmVjdGlvbnMubGVuZ3RoOyBkaXJlY3Rpb24rKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IG90aGVyUm9vbSA9IHJvb20uY29ubmVjdGlvbnNbZGlyZWN0aW9uXTtcclxuICAgICAgICAgICAgICAgIGlmIChvdGhlclJvb20gIT0gdW5kZWZpbmVkICYmIG9wZW4uaW5kZXhPZihvdGhlclJvb20pID09IC0xICYmIHZhbGlkUm9vbSg8Um9vbVJhbmRvbT4gb3RoZXJSb29tKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkaXJDb29yZGluYXRlcyA9IFJvb20uc2hpZnQoW3gsIHldLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkaXIgPSBbb3RoZXJSb29tLCBkaXJDb29yZGluYXRlcywgZGlzdGFuY2UoZW5kUG9zaXRpb24sIGRpckNvb3JkaW5hdGVzKV07XHJcbiAgICAgICAgICAgICAgICAgICAgbmVpZ2hzLnB1c2goZGlyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbmVpZ2hzLnNvcnQoKGEsYikgPT4geyByZXR1cm4gKDxudW1iZXI+IGFbMl0pIC0gKDxudW1iZXI+IGJbMl0pO30pO1xyXG4gICAgICAgIH07XHJcblxyXG5cclxuICAgICAgICBsZXQgc2hvcnRlc3RQYXRoID0ge1xyXG4gICAgICAgICAgICBsZW5ndGggOiBtYXAuZ2V0Um9vbUNvdW50KClcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCBub1BhdGggPSBzaG9ydGVzdFBhdGg7XHJcbiAgICAgICAgbGV0IGNQYXRoID0gW107XHJcbiAgICAgICAgbGV0IGZpbmRQYXRoID0gKG15QXJyYXkpID0+IHtcclxuICAgICAgICAgICAgbGV0IHJvb20gPSBteUFycmF5WzBdO1xyXG4gICAgICAgICAgICBjUGF0aC5wdXNoKG15QXJyYXkpO1xyXG4gICAgICAgICAgICBpZiAocm9vbSA9PSBwYXRoRW5kKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2hvcnRlc3RQYXRoLmxlbmd0aCA+PSBjUGF0aC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBzaG9ydGVzdFBhdGggPSBjUGF0aC5zbGljZSgwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChzaG9ydGVzdFBhdGgubGVuZ3RoID4gKGNQYXRoLmxlbmd0aCkpIHtcclxuICAgICAgICAgICAgICAgIG9wZW4ucHVzaChyb29tKTtcclxuICAgICAgICAgICAgICAgIGxldCBvdGhlclJvb21zID0gbmVpZ2hib3JzKHJvb20sIG15QXJyYXlbMV1bMF0sIG15QXJyYXlbMV1bMV0pO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvdGhlclJvb21zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChjUGF0aC5sZW5ndGggKyAxKSA8IHNob3J0ZXN0UGF0aC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmluZFBhdGgob3RoZXJSb29tc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgb3Blbi5wb3AoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjUGF0aC5wb3AoKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBmaW5kUGF0aChbdGhpcywgbWFwLmdldENvb3JkaW5hdGVzKHRoaXMpXSk7XHJcbiAgICAgICAgcmV0dXJuIHNob3J0ZXN0UGF0aCAhPSBub1BhdGggPyBzaG9ydGVzdFBhdGggOiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEJlc3REaXJlY3Rpb25UbyAob3RoZXJSb29tIDogUm9vbVJhbmRvbSwgdmFsaWRSb29tPyA6IChyb29tIDogUm9vbVJhbmRvbSkgPT4gYm9vbGVhbikge1xyXG4gICAgICAgIGxldCBwYXRoID0gdGhpcy5maW5kUGF0aFRvKG90aGVyUm9vbSwgdmFsaWRSb29tKTtcclxuICAgICAgICBpZiAocGF0aCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbnMuaW5kZXhPZihwYXRoWzFdWzBdKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEFTdGFyUGF0aFRvIChvdGhlclJvb20gOiBSb29tUmFuZG9tLCB2YWxpZFJvb20/IDogKHJvb20gOiBSb29tUmFuZG9tKSA9PiBib29sZWFuKSB7XHJcbiAgICAgICAgdmFsaWRSb29tID0gdmFsaWRSb29tICE9IHVuZGVmaW5lZCA/IHZhbGlkUm9vbSA6ICgpID0+IHtyZXR1cm4gdHJ1ZX07XHJcblxyXG4gICAgICAgIGxldCBkaXN0YW5jZSA9IChjMSwgYzIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKGMxWzBdIC0gYzJbMF0pICsgTWF0aC5hYnMoYzFbMV0gLSBjMlsxXSk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgbGV0IGlzVmlzaXRlZCA9IChyb29tKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB2aXNpdGVkLmluZGV4T2Yocm9vbSkgIT0gLTE7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgbGV0IGdldE5laWdoYm9ycyA9IChub2RlIDogUm9vbVJhbmRvbU5vZGUpID0+IHtcclxuICAgICAgICAgICAgbGV0IG5laWdoYm9ycyA6IEFycmF5PFJvb21SYW5kb21Ob2RlPiA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBkaXJlY3Rpb24gPSAwOyBkaXJlY3Rpb24gPCBub2RlLnJvb20uY29ubmVjdGlvbnMubGVuZ3RoOyBkaXJlY3Rpb24rKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vZGUucm9vbS5jb25uZWN0aW9uc1tkaXJlY3Rpb25dICE9IHVuZGVmaW5lZCAmJiAhaXNWaXNpdGVkKG5vZGUucm9vbS5jb25uZWN0aW9uc1tkaXJlY3Rpb25dKSAmJiB2YWxpZFJvb20oPFJvb21SYW5kb20+IG5vZGUucm9vbS5jb25uZWN0aW9uc1tkaXJlY3Rpb25dKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb29yZGluYXRlcyA9IFJvb20uc2hpZnQobm9kZS5jb29yZGluYXRlcywgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICBuZWlnaGJvcnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb20gOiA8Um9vbVJhbmRvbT4gbm9kZS5yb29tLmNvbm5lY3Rpb25zW2RpcmVjdGlvbl0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzIDogY29vcmRpbmF0ZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlIDogZGlzdGFuY2UoY29vcmRpbmF0ZXMsIGVuZE5vZGUuY29vcmRpbmF0ZXMpXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmlzaXRlZC5wdXNoKDxSb29tUmFuZG9tPiBub2RlLnJvb20uY29ubmVjdGlvbnNbZGlyZWN0aW9uXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG5laWdoYm9ycztcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBsZXQgZ2V0Q2xvc2VzdFBhdGggPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBzaG9ydGVzdCA9IDA7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgb3Blbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGxhc3RQb2ludCA9IG9wZW5baV1bb3BlbltpXS5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgICAgIGlmIChsYXN0UG9pbnQuZGlzdGFuY2UgPCBvcGVuW3Nob3J0ZXN0XVtvcGVuW3Nob3J0ZXN0XS5sZW5ndGggLSAxXS5kaXN0YW5jZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNob3J0ZXN0ID0gaTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gc2hvcnRlc3Q7XHJcbiAgICAgICAgfTtcclxuXHJcblxyXG4gICAgICAgIGxldCBlbmROb2RlID0ge3Jvb20gOiBvdGhlclJvb20sIGNvb3JkaW5hdGVzIDogdGhpcy5sYXN0TWFwLmdldENvb3JkaW5hdGVzKG90aGVyUm9vbSksIGRpc3RhbmNlIDogMH07XHJcbiAgICAgICAgbGV0IHN0YXJ0Q29vcmRpbmF0ZXMgPSB0aGlzLmxhc3RNYXAuZ2V0Q29vcmRpbmF0ZXModGhpcyk7XHJcbiAgICAgICAgbGV0IHN0YXJ0Tm9kZSA9IHtyb29tIDogdGhpcywgY29vcmRpbmF0ZXMgOiBzdGFydENvb3JkaW5hdGVzLCBkaXN0YW5jZSA6IGRpc3RhbmNlKHN0YXJ0Q29vcmRpbmF0ZXMsIGVuZE5vZGUuY29vcmRpbmF0ZXMpfTtcclxuICAgICAgICBsZXQgb3BlbiA6IEFycmF5PEFycmF5PFJvb21SYW5kb21Ob2RlPj4gPSBbW3N0YXJ0Tm9kZV1dO1xyXG4gICAgICAgIGxldCBjbG9zZWQgOiBBcnJheTxBcnJheTxSb29tUmFuZG9tTm9kZT4+ID0gW107XHJcbiAgICAgICAgbGV0IHNob3J0ZXN0UGF0aCA9IHRoaXMubGFzdE1hcC5nZXRSb29tQ291bnQoKTtcclxuICAgICAgICBsZXQgc2hvcnRlc3RJbmRleDtcclxuICAgICAgICBsZXQgbXlQYXRoO1xyXG4gICAgICAgIGxldCBjbG9zZXN0ID0gMDtcclxuICAgICAgICBsZXQgdmlzaXRlZCA6IEFycmF5PFJvb21SYW5kb20+ID0gW3RoaXNdO1xyXG4gICAgICAgIHdoaWxlIChvcGVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgbXlQYXRoID0gb3Blbi5zcGxpY2UoY2xvc2VzdCwgMSlbMF07XHJcblxyXG4gICAgICAgICAgICBpZiAobXlQYXRoW215UGF0aC5sZW5ndGggLSAxXS5kaXN0YW5jZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcHVzaCA9IGNsb3NlZC5wdXNoKG15UGF0aCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobXlQYXRoLmxlbmd0aCA8IHNob3J0ZXN0UGF0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNob3J0ZXN0UGF0aCA9IG15UGF0aC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgc2hvcnRlc3RJbmRleCA9IHB1c2ggLSAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gbGF6eSwgZmlyc3QgcGF0aCBpcyB2ZXJ5IGxpa2VseSB0byBiZSB0aGUgYmVzdFxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbmVpZ2hib3JzID0gZ2V0TmVpZ2hib3JzKG15UGF0aFtteVBhdGgubGVuZ3RoIC0gMV0pO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZWlnaGJvcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBvcGVuLnB1c2gobXlQYXRoLmNvbmNhdChbbmVpZ2hib3JzW2ldXSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBvcGVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3BlbltpXS5sZW5ndGggPj0gc2hvcnRlc3RQYXRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3Blbi5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2xvc2VzdCA9IGdldENsb3Nlc3RQYXRoKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gY2xvc2VkW3Nob3J0ZXN0SW5kZXhdO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRBU3RhckJlc3REaXJlY3Rpb25UbyAob3RoZXJSb29tIDogUm9vbVJhbmRvbSwgdmFsaWRSb29tPyA6IChyb29tIDogUm9vbVJhbmRvbSkgPT4gYm9vbGVhbikge1xyXG4gICAgICAgIGxldCBwYXRoID0gdGhpcy5nZXRBU3RhclBhdGhUbyhvdGhlclJvb20sIHZhbGlkUm9vbSk7XHJcbiAgICAgICAgaWYgKHBhdGggIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb25zLmluZGV4T2YocGF0aFsxXS5yb29tKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldENvbm5lY3RlZERpcmVjdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IHNodWZmbGVyID0gbmV3IFNodWZmbGVyKFJvb20uRElSRUNUSU9OUyk7XHJcbiAgICAgICAgZm9yIChsZXQgZGlyZWN0aW9uID0gc2h1ZmZsZXIuZ2V0T25lKCk7IGRpcmVjdGlvbiAhPSB1bmRlZmluZWQ7IGRpcmVjdGlvbiA9IHNodWZmbGVyLmdldE9uZSgpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb25zW2RpcmVjdGlvbl0gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFRPRE86IFJldHVybiBhbGwgdGhpbmdzIG9mIHR5cGUgdGhhdCBhcmUgaW4gcGxhY2VkIFJvb21SYW5kb20uXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldEFjdGl2ZSAodHlwZSA6IHR5cGVvZiBUaGluZykge1xyXG5cclxuICAgIH1cclxufVxyXG5cclxuLy8gcmFuZG9tID0gbmV3IFJvb21SYW5kb20uLi5cclxuLy8gcmFuZG9tLmNvbm5lY3RhYmxlT24gPSBbUm9vbS5ESVJFQ1RJT05fTk9SVEgsIFJvb20uRElSRUNUSU9OX1NPVVRILi4uXSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9Sb29tLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlJvb21SYW5kb20udHNcIiAvPlxyXG5cclxuaW50ZXJmYWNlIE1hcENvb3JkaW5hdGVzIHtcclxuICAgIHggOiBudW1iZXI7XHJcbiAgICB5IDogbnVtYmVyO1xyXG4gICAgeiA6IG51bWJlcjtcclxufVxyXG5cclxuY2xhc3MgUm9vbVJhbmRvbU1hcCB7XHJcbiAgICBwcml2YXRlIHBvc2l0aW9uVGFibGUgOiB7W3ggOiBudW1iZXJdIDoge1t5IDogbnVtYmVyXSA6IFJvb21SYW5kb219fSA9IHt9O1xyXG4gICAgcHJpdmF0ZSByb29tTWFwID0gbmV3IE1hcDxSb29tLCBBcnJheTxudW1iZXI+PigpO1xyXG4gICAgcHVibGljIGxvd2VzdFggPSAwO1xyXG4gICAgcHVibGljIGxvd2VzdFkgPSAwO1xyXG4gICAgcHVibGljIGhpZ2hlc3RYID0gMDtcclxuICAgIHB1YmxpYyBoaWdoZXN0WSA9IDA7XHJcbiAgICBwdWJsaWMgbGltaXRzSW52YWxpZCA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBpcyBhIGNvdW50IG9mIGhvdyBtYW55IGNvbm5lY3Rpb25zIGFyZSBhY3R1YWxseSBhdmFpbGFibGUsIGFzc3VtaW5nIHJvb21zIHRoYXQgY2FuIGNvbm5lY3QgdGhyb3VnaCBzb21lIGRpcmVjdGlvbi5cclxuICAgICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhdmFpbGFibGVDb25uZWN0aW9ucyA6IEFycmF5PEFycmF5PE1hcENvb3JkaW5hdGVzPj47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGlzIGEgY291bnQgb2Ygcm9vbXMgc2luY2UgdGhlIGxhc3QgY2FjaGUgY2xlYXIuIFVzZWQgdG8gbWVhbiBtb3JlLCBidXQgbm93IGlzIGp1c3QgYSBjb3VudCBvZiBob3cgbWFueSByb29tcyB3ZXJlIHBsYWNlZCBmcm9tIHRoZSBjdXJyZW50IHJlZ2lvbi5cclxuICAgICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByb29tcztcclxuXHJcbiAgICAvKipcclxuICAgICAqIENsZWFycyB0aGUgY3VycmVudCByb29tIGNhY2hlIGFuZCBjcmVhdGVzIGEgbmV3IG9uZSB0aGF0IGlzIGVtcHR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBlbXB0eUNhY2hlICgpIHtcclxuICAgICAgICB0aGlzLmF2YWlsYWJsZUNvbm5lY3Rpb25zID0gW107XHJcbiAgICAgICAgUm9vbS5ESVJFQ1RJT05TLmZvckVhY2goKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmF2YWlsYWJsZUNvbm5lY3Rpb25zLnB1c2goW10pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucm9vbXMgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRBdmFpbGFibGVDb25uZWN0aW9ucyAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXZhaWxhYmxlQ29ubmVjdGlvbnMucmVkdWNlKChwcmV2aW91c1ZhbHVlLCBjdXJyZW50VmFsdWUsIGN1cnJlbnRJbmRleCwgYXJyYXkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzVmFsdWUgKyAoY3VycmVudFZhbHVlLmxlbmd0aCk7XHJcbiAgICAgICAgfSwgMCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlbW92ZUZyb21DYWNoZSAoY29vcmRpbmF0ZXNUb1JlbW92ZSA6IE1hcENvb3JkaW5hdGVzLCBkaXJlY3Rpb24gOiBudW1iZXIpIHtcclxuICAgICAgICBsZXQgZGlyZWN0aW9uQXJyYXkgPSB0aGlzLmF2YWlsYWJsZUNvbm5lY3Rpb25zW2RpcmVjdGlvbl07XHJcbiAgICAgICAgZm9yIChsZXQgayA9IDAsIGNvb3JkaW5hdGVzID0gZGlyZWN0aW9uQXJyYXlba107IGNvb3JkaW5hdGVzICE9IHVuZGVmaW5lZDsgY29vcmRpbmF0ZXMgPSBkaXJlY3Rpb25BcnJheVsrK2tdKSB7XHJcbiAgICAgICAgICAgIGlmIChjb29yZGluYXRlcy54ID09IGNvb3JkaW5hdGVzVG9SZW1vdmUueCAmJiBjb29yZGluYXRlcy55ID09IGNvb3JkaW5hdGVzVG9SZW1vdmUueSkge1xyXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uQXJyYXkuc3BsaWNlKGssIDEpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZGRUb0NhY2hlIChjb29yZGluYXRlc1RvQWRkIDogTWFwQ29vcmRpbmF0ZXMsIGRpcmVjdGlvbiA6IG51bWJlcikge1xyXG4gICAgICAgIGxldCBkaXJlY3Rpb25BcnJheSA9IHRoaXMuYXZhaWxhYmxlQ29ubmVjdGlvbnNbZGlyZWN0aW9uXTtcclxuICAgICAgICBmb3IgKGxldCBrID0gMCwgY29vcmRpbmF0ZXMgPSBkaXJlY3Rpb25BcnJheVtrXTsgY29vcmRpbmF0ZXMgIT0gdW5kZWZpbmVkOyBjb29yZGluYXRlcyA9IGRpcmVjdGlvbkFycmF5Wysra10pIHtcclxuICAgICAgICAgICAgaWYgKGNvb3JkaW5hdGVzLnggPT0gY29vcmRpbmF0ZXNUb0FkZC54ICYmIGNvb3JkaW5hdGVzLnkgPT0gY29vcmRpbmF0ZXNUb0FkZC55KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZGlyZWN0aW9uQXJyYXkucHVzaChjb29yZGluYXRlc1RvQWRkKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QW55RnJvbUNhY2hlIChkaXJlY3Rpb24gOiBudW1iZXIpIDogUm9vbVJhbmRvbSB7XHJcbiAgICAgICAgbGV0IGFycmF5ID0gdGhpcy5hdmFpbGFibGVDb25uZWN0aW9uc1tkaXJlY3Rpb25dO1xyXG4gICAgICAgIGlmIChhcnJheS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGxldCByYW5kb21JbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChhcnJheS5sZW5ndGgpKTtcclxuICAgICAgICAgICAgbGV0IHJhbmRvbUNvb3JkaW5hdGVzID0gYXJyYXlbcmFuZG9tSW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAocmFuZG9tQ29vcmRpbmF0ZXMgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRSb29tKHJhbmRvbUNvb3JkaW5hdGVzLngsIHJhbmRvbUNvb3JkaW5hdGVzLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc0ZyZWUgKHggOiBudW1iZXIsIHkgOiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMucG9zaXRpb25UYWJsZVt4XSA9PSB1bmRlZmluZWQgfHwgdGhpcy5wb3NpdGlvblRhYmxlW3hdW3ldID09PSB1bmRlZmluZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBibG9jayAoeCA6IG51bWJlciwgeSA6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRnJlZSh4LCB5KSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wb3NpdGlvblRhYmxlW3hdID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvblRhYmxlW3hdID0ge307XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvblRhYmxlW3hdW3ldID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVDYWNoZU9uUG9zaXRpb24oeCwgeSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGltaXRzKHgsIHkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlQWxsTGltaXRzICgpIHtcclxuICAgICAgICB0aGlzLmhpZ2hlc3RYID0gMDtcclxuICAgICAgICB0aGlzLmhpZ2hlc3RZID0gMDtcclxuICAgICAgICB0aGlzLmxvd2VzdFggPSAwO1xyXG4gICAgICAgIHRoaXMubG93ZXN0WSA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgeCBpbiB0aGlzLnBvc2l0aW9uVGFibGUpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgeSBpbiB0aGlzLnBvc2l0aW9uVGFibGVbeF0pIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBvc2l0aW9uVGFibGVbeF1beV0gIT0gdW5kZWZpbmVkICYmIHRoaXMucG9zaXRpb25UYWJsZVt4XVt5XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVMaW1pdHMocGFyc2VJbnQoeCksIHBhcnNlSW50KHkpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxpbWl0c0ludmFsaWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlTGltaXRzICh4LCB5KSB7XHJcbiAgICAgICAgaWYgKHggPiB0aGlzLmhpZ2hlc3RYKSB0aGlzLmhpZ2hlc3RYID0geDtcclxuICAgICAgICBpZiAoeSA+IHRoaXMuaGlnaGVzdFkpIHRoaXMuaGlnaGVzdFkgPSB5O1xyXG4gICAgICAgIGlmICh5IDwgdGhpcy5sb3dlc3RZKSB0aGlzLmxvd2VzdFkgPSB5O1xyXG4gICAgICAgIGlmICh4IDwgdGhpcy5sb3dlc3RYKSB0aGlzLmxvd2VzdFggPSB4O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBtYXAgKHJvb20gOiBSb29tUmFuZG9tLCB4IDogbnVtYmVyLCB5IDogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb25UYWJsZVt4XSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvblRhYmxlW3hdID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25UYWJsZVt4XVt5XSA9IHJvb207XHJcbiAgICAgICAgdGhpcy5yb29tTWFwLnNldChyb29tLCBbeCwgeV0pO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlT25Qb3NpdGlvbih4LCB5KTtcclxuXHJcbiAgICAgICAgLy8gSWYgd2UgZXZlciB3YW50IHRvIGRyYXcgbWFwcywgdGhpcyB3aWxsIGJlIHVzZWZ1bFxyXG4gICAgICAgIHRoaXMudXBkYXRlTGltaXRzKHgsIHkpO1xyXG5cclxuICAgICAgICByb29tLnBsYWNlZCA9IHRydWU7XHJcbiAgICAgICAgcm9vbS5sYXN0TWFwID0gdGhpcztcclxuXHJcbiAgICAgICAgdGhpcy5yb29tcysrO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1bm1hcCAoeCA6IG51bWJlciwgeSA6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uVGFibGVbeF0gIT0gdW5kZWZpbmVkICYmIHRoaXMucG9zaXRpb25UYWJsZVt4XVt5XSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5yb29tTWFwLmRlbGV0ZSh0aGlzLnBvc2l0aW9uVGFibGVbeF1beV0pO1xyXG4gICAgICAgICAgICBkZWxldGUgKHRoaXMucG9zaXRpb25UYWJsZVt4XVt5XSk7XHJcbiAgICAgICAgICAgIHRoaXMucm9vbXMtLTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVDYWNoZU9uUG9zaXRpb24oeCwgeSk7XHJcbiAgICAgICAgICAgIHRoaXMubGltaXRzSW52YWxpZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlQ2FjaGVPblBvc2l0aW9uICh4IDogbnVtYmVyLCB5IDogbnVtYmVyKSB7XHJcbiAgICAgICAgbGV0IGNvb3JkaW5hdGVzID0gW3gsIHksIDBdO1xyXG4gICAgICAgIGxldCBjb29yZGluYXRlc01hcCA9IDxNYXBDb29yZGluYXRlcz4ge3ggOiB4LCB5IDogeX07XHJcbiAgICAgICAgbGV0IGNvb3JkaW5hdGVzQmxvY2tlZCA9ICF0aGlzLmlzRnJlZSh4LCB5KTtcclxuICAgICAgICBsZXQgY29vcmRpbmF0ZXNSb29tID0gdGhpcy5nZXRSb29tKHgsIHkpO1xyXG5cclxuICAgICAgICBSb29tLkRJUkVDVElPTlMuZm9yRWFjaChkaXJlY3Rpb24gPT4ge1xyXG4gICAgICAgICAgICBsZXQgb3Bwb3NpdGVEaXJlY3Rpb24gPSBPcHBvc2l0ZURpcmVjdGlvbltEaXJlY3Rpb25bZGlyZWN0aW9uXV07XHJcbiAgICAgICAgICAgIGxldCBzaGlmdGVkID0gUm9vbS5zaGlmdChjb29yZGluYXRlcywgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgbGV0IHNoaWZ0ZWRNYXAgPSA8TWFwQ29vcmRpbmF0ZXM+IHt4IDogc2hpZnRlZFswXSwgeSA6IHNoaWZ0ZWRbMV19O1xyXG4gICAgICAgICAgICBsZXQgc2hpZnRlZEJsb2NrZWQgPSAhdGhpcy5pc0ZyZWUoc2hpZnRlZFswXSwgc2hpZnRlZFsxXSk7XHJcbiAgICAgICAgICAgIGxldCBzaGlmdGVkUm9vbSA9IHRoaXMuZ2V0Um9vbShzaGlmdGVkWzBdLCBzaGlmdGVkWzFdKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChjb29yZGluYXRlc1Jvb20gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2hpZnRlZEJsb2NrZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZyb21DYWNoZShjb29yZGluYXRlc01hcCwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29vcmRpbmF0ZXNSb29tLmlzQ29ubmVjdGFibGVPbihkaXJlY3Rpb24pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRUb0NhY2hlKGNvb3JkaW5hdGVzTWFwLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGcm9tQ2FjaGUoY29vcmRpbmF0ZXNNYXAsIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChzaGlmdGVkUm9vbSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjb29yZGluYXRlc0Jsb2NrZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZyb21DYWNoZShzaGlmdGVkTWFwLCBvcHBvc2l0ZURpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNoaWZ0ZWRSb29tLmlzQ29ubmVjdGFibGVPbihvcHBvc2l0ZURpcmVjdGlvbikpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFRvQ2FjaGUoc2hpZnRlZE1hcCwgb3Bwb3NpdGVEaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGcm9tQ2FjaGUoc2hpZnRlZE1hcCwgb3Bwb3NpdGVEaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFJvb20gKHggOiBudW1iZXIsIHkgOiBudW1iZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvblRhYmxlW3hdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wb3NpdGlvblRhYmxlW3hdW3ldICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uVGFibGVbeF1beV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0Q29vcmRpbmF0ZXMgKHJvb20gOiBSb29tKSA6IEFycmF5PG51bWJlcj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvb21NYXAuZ2V0KHJvb20pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRSb29tQ291bnQgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvb21NYXAuc2l6ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0V2lkdGggKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmhpZ2hlc3RYIC0gdGhpcy5sb3dlc3RYO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRIZWlnaHQgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmhpZ2hlc3RZIC0gdGhpcy5sb3dlc3RZO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgUFJFRkVSUkVEX0dST1dUSF9IT1JJWk9OVEFMID0gMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgUFJFRkVSUkVEX0dST1dUSF9WRVJUSUNBTCA9IDE7XHJcbiAgICBwdWJsaWMgc3RhdGljIFBSRUZFUlJFRF9HUk9XVEhfQU5ZID0gMjtcclxuXHJcbiAgICBwdWJsaWMgZ2V0UHJlZmVycmVkR3Jvd3RoICgpIHtcclxuICAgICAgICBsZXQgcmF0aW8gPSB0aGlzLmdldEhlaWdodCgpIC8gdGhpcy5nZXRXaWR0aCgpO1xyXG4gICAgICAgIGxldCBpZGVhbFJhdGlvID0gMi41OyAvLyBUaGlzIG1lYW5zIHdlJ2QgcHJlZmVyIGEgdGFsbCBtYXAgdGhhdCdkIGxvb2sgZ29vZCBvbiBvdXIgc2NyZWVuXHJcblxyXG4gICAgICAgIGxldCBkaWZmZXJlbmNlID0gTWF0aC5hYnMocmF0aW8gLSBpZGVhbFJhdGlvKTtcclxuICAgICAgICBpZiAoZGlmZmVyZW5jZSA8IDAuNSkge1xyXG4gICAgICAgICAgICByZXR1cm4gUm9vbVJhbmRvbU1hcC5QUkVGRVJSRURfR1JPV1RIX0FOWTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocmF0aW8gPCBpZGVhbFJhdGlvKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gUm9vbVJhbmRvbU1hcC5QUkVGRVJSRURfR1JPV1RIX1ZFUlRJQ0FMO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJvb21SYW5kb21NYXAuUFJFRkVSUkVEX0dST1dUSF9IT1JJWk9OVEFMO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNEaXJlY3Rpb25QcmVmZXJyZWQgKGRpcmVjdGlvbiA6IG51bWJlciwgZ3Jvd3RoIDogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKGdyb3d0aCA9PSBSb29tUmFuZG9tTWFwLlBSRUZFUlJFRF9HUk9XVEhfQU5ZKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbi5OT1JUSCB8fCBkaXJlY3Rpb24gPT0gRGlyZWN0aW9uLlNPVVRIKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBncm93dGggPT0gUm9vbVJhbmRvbU1hcC5QUkVGRVJSRURfR1JPV1RIX1ZFUlRJQ0FMO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBncm93dGggPT0gUm9vbVJhbmRvbU1hcC5QUkVGRVJSRURfR1JPV1RIX0hPUklaT05UQUw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1NodWZmbGVyLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlJvb21SYW5kb21NYXAudHNcIiAvPlxyXG5jbGFzcyBTaHVmZmxlckRpcmVjdGlvbiBleHRlbmRzIFNodWZmbGVyPG51bWJlcj4ge1xyXG4gICAgcHJpdmF0ZSBwcmVmZXJyZWRHcm93dGggOiBudW1iZXI7XHJcbiAgICBwcml2YXRlIGRpcmVjdGlvbnNBcnJheSA6IEFycmF5PG51bWJlcj47XHJcbiAgICBwdWJsaWMgcnVubmVyIDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGFycmF5IDogQXJyYXk8bnVtYmVyPiwgcHJlZmVycmVkR3Jvd3RoIDogbnVtYmVyLCBybmc/IDogKCkgPT4gbnVtYmVyKSB7XHJcbiAgICAgICAgc3VwZXIoYXJyYXksIHJuZyk7XHJcbiAgICAgICAgdGhpcy5wcmVmZXJyZWRHcm93dGggPSBwcmVmZXJyZWRHcm93dGg7XHJcblxyXG4gICAgICAgIGxldCBnb29kRGlyZWN0aW9ucyA9IFtdO1xyXG4gICAgICAgIGxldCBiYWREaXJlY3Rpb25zID0gW107XHJcblxyXG4gICAgICAgIGZvciAobGV0IGRpcmVjdGlvbiA9IHRoaXMuZ2V0T25lKCk7IGRpcmVjdGlvbiAhPSB1bmRlZmluZWQ7IGRpcmVjdGlvbiA9IHRoaXMuZ2V0T25lKCkpIHtcclxuICAgICAgICAgICAgaWYgKFJvb21SYW5kb21NYXAuaXNEaXJlY3Rpb25QcmVmZXJyZWQoZGlyZWN0aW9uLCB0aGlzLnByZWZlcnJlZEdyb3d0aCkpIHtcclxuICAgICAgICAgICAgICAgIGdvb2REaXJlY3Rpb25zLnB1c2goZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGJhZERpcmVjdGlvbnMucHVzaChkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRpcmVjdGlvbnNBcnJheSA9IGdvb2REaXJlY3Rpb25zLmNvbmNhdChiYWREaXJlY3Rpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgIGdldERpcmVjdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlyZWN0aW9uc0FycmF5W3RoaXMucnVubmVyKytdO1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlJvb21SYW5kb20udHNcIiAvPlxyXG4vKipcclxuICogRm9kZGVyIGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgYSByYW5kb20gcm9vbSwgZXhjZXB0OlxyXG4gKiAxIC0gSXQgbXVzdCBiZSBjcmVhdGVkIGFzIG5lZWRlZCBieSBhIFJlZ2lvblJhbmRvbSBhcyBpdCBhdHRlbXB0cyB0byBwbGFjZSBUcmlja3kgcm9vbXMuXHJcbiAqIDIgLSBJdCBkb2Vzbid0IGNvdW50IHRvd2FyZHMgYSBwbGF5ZXIncyBtYXhpbXVtIHJlbWVtYmVyZWQgcm9vbXNcclxuICovXHJcbmNsYXNzIFJvb21SYW5kb21Gb2RkZXIgZXh0ZW5kcyBSb29tUmFuZG9tIHtcclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoaWQ/IDogc3RyaW5nKSB7XHJcbiAgICAgICAgc3VwZXIoaWQsIHRydWUpO1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1JlZ2lvbi50c1wiIC8+XG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vU2h1ZmZsZXIudHNcIiAvPlxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlNodWZmbGVyRGlyZWN0aW9uLnRzXCIgLz5cbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJSb29tUmFuZG9tTWFwLnRzXCIgLz5cbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJSb29tUmFuZG9tLnRzXCIgLz5cbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJSb29tUmFuZG9tRm9kZGVyLnRzXCIgLz5cbmludGVyZmFjZSBSYW5kb21pemluZ1Jvb21PcHRpb25zIHtcbiAgICByZWdpb24gOiBSZWdpb25SYW5kb207XG4gICAgcm9vbSA6IFJvb21SYW5kb207XG4gICAgbWFwIDogUm9vbVJhbmRvbU1hcDtcbn1cblxuY2xhc3MgUmVnaW9uUmFuZG9tIGV4dGVuZHMgUmVnaW9uIHtcbiAgICBwcml2YXRlIHJhbmRvbWl6ZWQgPSBmYWxzZTtcbiAgICBwdWJsaWMgbWFwIDogUm9vbVJhbmRvbU1hcDtcbiAgICBwdWJsaWMgZm9kZGVyUm9vbUNsYXNzIDogdHlwZW9mIFJvb21SYW5kb20gPSBSb29tUmFuZG9tRm9kZGVyO1xuICAgIHB1YmxpYyBwbGFjZWRSb29tcyA6IEFycmF5PFJvb21SYW5kb20+ID0gW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKG5hbWUgOiBzdHJpbmcsIG1hcD8gOiBSb29tUmFuZG9tTWFwKSB7XG4gICAgICAgIHN1cGVyKG5hbWUpO1xuICAgICAgICB0aGlzLm1hcCA9IG1hcCA9PSB1bmRlZmluZWQgPyBuZXcgUm9vbVJhbmRvbU1hcCgpIDogbWFwO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByYW5kb21pemUgKCkge1xuICAgICAgICBpZiAoIXRoaXMucmFuZG9taXplZCkge1xuICAgICAgICAgICAgYXdhaXQgUmVnaW9uUmFuZG9tLnJ1bGVib29rUmFuZG9taXplUmVnaW9uLmV4ZWN1dGUoe1xuICAgICAgICAgICAgICAgIG5vdW4gOiB0aGlzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcm5nIDogKCkgPT4gbnVtYmVyID0gKCkgPT4geyByZXR1cm4gTWF0aC5yYW5kb20oKTsgfTtcblxuICAgIHB1YmxpYyBzdGF0aWMgcnVsZWJvb2tSYW5kb21pemVSZWdpb24gPSBuZXcgUnVsZWJvb2s8UmVnaW9uPihcIlJhbmRvbWl6aW5nIFJhbmRvbSBSZWdpb24gc29tZXRoaW5nXCIpO1xuICAgIHB1YmxpYyBzdGF0aWMgcnVsZWJvb2tQbGFjZVJvb20gPSBuZXcgUnVsZWJvb2s8UmFuZG9taXppbmdSb29tT3B0aW9ucz4oXCJQbGFjaW5nIFJhbmRvbSBSb29tIHNvbWV0aGluZ1wiKTtcbiAgICBwdWJsaWMgc3RhdGljIHJ1bGVib29rQmVmb3JlUGxhY2VSb29tID0gbmV3IFJ1bGVib29rPFJhbmRvbWl6aW5nUm9vbU9wdGlvbnM+KFwiQmVmb3JlIHBsYWNpbmcgUmFuZG9tIFJvb20gc29tZXRoaW5nXCIpO1xuICAgIHB1YmxpYyBzdGF0aWMgcnVsZWJvb2tBZnRlclBsYWNlUm9vbSA9IG5ldyBSdWxlYm9vazxSYW5kb21pemluZ1Jvb21PcHRpb25zPihcIkFmdGVyIHBsYWNpbmcgUmFuZG9tIFJvb20gc29tZXRoaW5nXCIpO1xuXG4gICAgcHVibGljIHN0YXRpYyBydWxlRmlyc3RSYW5kb21pemVSZWdpb24gPSBSZWdpb25SYW5kb20ucnVsZWJvb2tSYW5kb21pemVSZWdpb24uY3JlYXRlQW5kQWRkUnVsZSh7XG4gICAgICAgIG5hbWUgOiBcIkVtcHR5IG1hcCBjYWNoZSB0byBzdGFydCByYW5kb21pemluZyByZWdpb25cIixcbiAgICAgICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfSElHSEVTVCxcbiAgICAgICAgY29kZSA6IHJ1bm5lciA9PiB7XG4gICAgICAgICAgICBsZXQgcmVnaW9uID0gPFJlZ2lvblJhbmRvbT4gcnVubmVyLm5vdW47XG5cbiAgICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY29ubmVjdCBhIHJlZ2lvbiB0byBhbm90aGVyIHJlZ2lvbiB1bmludGVudGlvbmFsbHlcbiAgICAgICAgICAgIHJlZ2lvbi5tYXAuZW1wdHlDYWNoZSgpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1bGVCYXNpY1JhbmRvbWl6ZVJlZ2lvbiA9IFJlZ2lvblJhbmRvbS5ydWxlYm9va1JhbmRvbWl6ZVJlZ2lvbi5jcmVhdGVBbmRBZGRSdWxlKHtcbiAgICAgICAgbmFtZSA6IFwiUmFuZG9taXplIGFsbCB1bnBsYWNlZCwgcmFuZG9taXphYmxlIHJvb21zIGluIHJlZ2lvbiBzb21ldGhpbmdcIixcbiAgICAgICAgY29kZSA6IGFzeW5jIHJ1bm5lciA9PiB7XG4gICAgICAgICAgICBsZXQgcmVnaW9uID0gPFJlZ2lvblJhbmRvbT4gcnVubmVyLm5vdW47XG5cbiAgICAgICAgICAgIGxldCByb29tU2h1ZmZsZXIgPSBuZXcgU2h1ZmZsZXIoXG4gICAgICAgICAgICAgICAgUmVnaW9uLkluUmVsYXRpb24uZ2V0QWxsUmlnaHRUeXBlcyhyZWdpb24sIFJvb21SYW5kb20pLmZpbHRlcigocm9vbSA6IFJvb21SYW5kb20pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvb20ucmFuZG9taXphYmxlICYmICFyb29tLnBsYWNlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKHJvb20gPT0gV29ybGRTdGF0ZS5wbGF5ZXIuZ2V0Um9vbSgpIHx8IChSZWdpb25SYW5kb20ucm5nKCkgKiAxMDApIDw9IHJvb20uYXBwZWFyQ2hhbmNlKTtcbiAgICAgICAgICAgICAgICB9KSwgUmVnaW9uUmFuZG9tLnJuZ1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgcm9vbSA9IHJvb21TaHVmZmxlci5nZXRPbmUoKTsgcm9vbSAhPSB1bmRlZmluZWQ7IHJvb20gPSByb29tU2h1ZmZsZXIuZ2V0T25lKCkpIHtcbiAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IGF2YWlsYWJsZSBjb25uZWN0aW9ucyBmcm9tIGdldHRpbmcgdG9vIGxvd1xuICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIHBsYWNpbmcgcm9vbXMgd2l0aCB0b28gZmV3IGF2YWlsYWJsZUNvbm5lY3Rpb25zLCB3ZSBtaWdodCBlbmQgdXAgcmVhY2hpbmcgMCBhdmFpbGFibGVDb25uZWN0aW9uc1xuICAgICAgICAgICAgICAgIC8vIFdoaWNoIHdvdWxkIG1lYW4gbm8gbW9yZSByb29tcyBjYW4gYmUgcGxhY2VkLlxuICAgICAgICAgICAgICAgIHdoaWxlIChyZWdpb24ubWFwLnJvb21zID4gMCAmJiByZWdpb24ubWFwLmdldEF2YWlsYWJsZUNvbm5lY3Rpb25zKCkgPCA0KSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmb2RkZXIgPSBuZXcgcmVnaW9uLmZvZGRlclJvb21DbGFzcygpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgb3B0aW9ucyA9IDxSYW5kb21pemluZ1Jvb21PcHRpb25zPiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAgOiByZWdpb24ubWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vbSA6IGZvZGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbiA6IHJlZ2lvblxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lvbi5wbGFjZShmb2RkZXIpO1xuXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IFJlZ2lvblJhbmRvbS5ydWxlYm9va0JlZm9yZVBsYWNlUm9vbS5leGVjdXRlKHtub3VuIDogb3B0aW9uc30pO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBSZWdpb25SYW5kb20ucnVsZWJvb2tQbGFjZVJvb20uZXhlY3V0ZSh7bm91biA6IG9wdGlvbnN9KTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgUmVnaW9uUmFuZG9tLnJ1bGVib29rQWZ0ZXJQbGFjZVJvb20uZXhlY3V0ZSh7bm91biA6IG9wdGlvbnN9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgb3B0aW9ucyA9IDxSYW5kb21pemluZ1Jvb21PcHRpb25zPiB7XG4gICAgICAgICAgICAgICAgICAgIG1hcCA6IHJlZ2lvbi5tYXAsXG4gICAgICAgICAgICAgICAgICAgIHJvb20gOiByb29tLFxuICAgICAgICAgICAgICAgICAgICByZWdpb24gOiByZWdpb25cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGF3YWl0IFJlZ2lvblJhbmRvbS5ydWxlYm9va0JlZm9yZVBsYWNlUm9vbS5leGVjdXRlKHtub3VuIDogb3B0aW9uc30pO1xuICAgICAgICAgICAgICAgIGF3YWl0IFJlZ2lvblJhbmRvbS5ydWxlYm9va1BsYWNlUm9vbS5leGVjdXRlKHtub3VuIDogb3B0aW9uc30pO1xuICAgICAgICAgICAgICAgIGF3YWl0IFJlZ2lvblJhbmRvbS5ydWxlYm9va0FmdGVyUGxhY2VSb29tLmV4ZWN1dGUoe25vdW4gOiBvcHRpb25zfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXJvb20ucGxhY2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlci5wcmludEFzRXJyb3IobmV3IFNheShcIldhcyB1bmFibGUgdG8gcGxhY2Ugcm9vbSBcIiwgcm9vbSwgXCIuIEdhbWUgbWlnaHQgYmUgdW5wbGF5YWJsZS5cIikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcHVibGljIHN0YXRpYyBydWxlQWRkRXh0cmFDb25uZWN0aW9ucyA9IFJlZ2lvblJhbmRvbS5ydWxlYm9va1JhbmRvbWl6ZVJlZ2lvbi5jcmVhdGVBbmRBZGRSdWxlKHtcbiAgICAgICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfTE9XRVNULFxuICAgICAgICBuYW1lIDogXCJBZGQgZXh0cmEgY29ubmVjdGlvbnMgdG8gcm9vbXMgaW4gcmVnaW9uXCIsXG4gICAgICAgIGNvZGUgOiBydW5uZXIgPT4ge1xuICAgICAgICAgICAgbGV0IHJlZ2lvbiA9IDxSZWdpb25SYW5kb20+IHJ1bm5lci5ub3VuO1xuICAgICAgICAgICAgbGV0IHBsYWNlZFJvb21zID0gUmVnaW9uLkluUmVsYXRpb24uZ2V0QWxsUmlnaHRUeXBlcyhyZWdpb24sIFJvb21SYW5kb20pLmZpbHRlcigocm9vbSA6IFJvb21SYW5kb20pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm9vbS5yYW5kb21pemFibGUgJiYgcm9vbS5wbGFjZWQ7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcGxhY2VkUm9vbXMuZm9yRWFjaCgocm9vbSA6IFJvb21SYW5kb20pID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgbXlDb29yZGluYXRlcyA9IHJlZ2lvbi5tYXAuZ2V0Q29vcmRpbmF0ZXMocm9vbSk7XG4gICAgICAgICAgICAgICAgbGV0IGRpcmVjdGlvblNodWZmbGVyID0gbmV3IFNodWZmbGVyPG51bWJlcj4ocm9vbS5jb25uZWN0YWJsZU9uLnNsaWNlKDApLCBSZWdpb25SYW5kb20ucm5nKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBkaXJlY3Rpb24gPSBkaXJlY3Rpb25TaHVmZmxlci5nZXRPbmUoKTsgZGlyZWN0aW9uICE9IHVuZGVmaW5lZCAmJiAoUmVnaW9uUmFuZG9tLnJuZygpICogMTAwKSA8PSByb29tLmV4dHJhQ29ubmVjdGlvbkNoYW5jZTsgZGlyZWN0aW9uID0gZGlyZWN0aW9uU2h1ZmZsZXIuZ2V0T25lKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvb20uY29ubmVjdGlvbnNbZGlyZWN0aW9uXSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvdGhlckNvb3JkaW5hdGVzID0gUm9vbS5zaGlmdChteUNvb3JkaW5hdGVzLCBkaXJlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG90aGVyUm9vbSA9IHJlZ2lvbi5tYXAuZ2V0Um9vbShvdGhlckNvb3JkaW5hdGVzWzBdLCBvdGhlckNvb3JkaW5hdGVzWzFdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvdGhlclJvb20gIT0gdW5kZWZpbmVkICYmIG90aGVyUm9vbS5yYW5kb21pemFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBvdGhlclJvb20uaXNDb25uZWN0YWJsZU9uKE9wcG9zaXRlRGlyZWN0aW9uW0RpcmVjdGlvbltkaXJlY3Rpb25dXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoUmVnaW9uUmFuZG9tLnJuZygpICogMTAwKSA8PSBvdGhlclJvb20uZXh0cmFDb25uZWN0aW9uQ2hhbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbS5tYXBSb29tKG90aGVyUm9vbSwgZGlyZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1bGVQbGFjZUZpcnN0Um9vbSA9IFJlZ2lvblJhbmRvbS5ydWxlYm9va1BsYWNlUm9vbS5jcmVhdGVBbmRBZGRSdWxlKHtcbiAgICAgICAgbmFtZSA6IFwiUGxhY2luZyBGaXJzdCByb29tIHNvbWV0aGluZ1wiLFxuICAgICAgICBmaXJzdFByaW9yaXR5IDogUnVsZS5QUklPUklUWV9ISUdIRVNULFxuICAgICAgICBjb2RlIDogcnVubmVyID0+IHtcbiAgICAgICAgICAgIGxldCBwbGFjaW5nT3B0aW9ucyA9IDxSYW5kb21pemluZ1Jvb21PcHRpb25zPiBydW5uZXIubm91bjtcblxuICAgICAgICAgICAgaWYgKHBsYWNpbmdPcHRpb25zLm1hcC5pc0ZyZWUoMCwgMCkpIHtcbiAgICAgICAgICAgICAgICBwbGFjaW5nT3B0aW9ucy5tYXAubWFwKHBsYWNpbmdPcHRpb25zLnJvb20sIDAsIDApO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb25kaXRpb25zIDogcnVubmVyID0+IHtcbiAgICAgICAgICAgIHJldHVybiBydW5uZXIubm91bi5tYXAucm9vbXMgPT0gMDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcHVibGljIHN0YXRpYyBydWxlUGxhY2VOb25Ucmlja3lSb29tID0gUmVnaW9uUmFuZG9tLnJ1bGVib29rUGxhY2VSb29tLmNyZWF0ZUFuZEFkZFJ1bGUoe1xuICAgICAgICBuYW1lIDogXCJQbGFjaW5nIG5vbi10cmlja3kgcm9vbSBzb21ldGhpbmdcIixcbiAgICAgICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfSElHSCxcbiAgICAgICAgY29kZSA6IHJ1bm5lciA9PiB7XG4gICAgICAgICAgICBsZXQgcGxhY2luZ09wdGlvbnMgPSA8UmFuZG9taXppbmdSb29tT3B0aW9ucz4gcnVubmVyLm5vdW47XG5cblxuICAgICAgICAgICAgLy9sZXQgZGlyZWN0aW9uU2h1ZmZsZXIgPSBuZXcgU2h1ZmZsZXI8bnVtYmVyPihwbGFjaW5nT3B0aW9ucy5yb29tLmNvbm5lY3RhYmxlT24pO1xuICAgICAgICAgICAgbGV0IHByZWZlcnJlZEdyb3d0aERpcmVjdGlvbiA9IHBsYWNpbmdPcHRpb25zLm1hcC5nZXRQcmVmZXJyZWRHcm93dGgoKTtcbiAgICAgICAgICAgIGxldCBkaXJlY3Rpb25TaHVmZmxlciA9IG5ldyBTaHVmZmxlckRpcmVjdGlvbihwbGFjaW5nT3B0aW9ucy5yb29tLmNvbm5lY3RhYmxlT24sIHByZWZlcnJlZEdyb3d0aERpcmVjdGlvbik7XG4gICAgICAgICAgICAvL2ZvciAobGV0IGRpcmVjdGlvbiA9IGRpcmVjdGlvblNodWZmbGVyLmdldE9uZSgpOyBkaXJlY3Rpb24gIT0gdW5kZWZpbmVkOyBkaXJlY3Rpb24gPSBkaXJlY3Rpb25TaHVmZmxlci5nZXRPbmUoKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgZGlyZWN0aW9uID0gZGlyZWN0aW9uU2h1ZmZsZXIuZ2V0RGlyZWN0aW9uKCk7IGRpcmVjdGlvbiAhPSB1bmRlZmluZWQ7IGRpcmVjdGlvbiA9IGRpcmVjdGlvblNodWZmbGVyLmdldERpcmVjdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgbGV0IG9wcG9zaXRlRGlyZWN0aW9uID0gT3Bwb3NpdGVEaXJlY3Rpb25bRGlyZWN0aW9uW2RpcmVjdGlvbl1dO1xuICAgICAgICAgICAgICAgIGxldCBjb25uZWN0YWJsZVJvb20gPSBwbGFjaW5nT3B0aW9ucy5tYXAuZ2V0QW55RnJvbUNhY2hlKG9wcG9zaXRlRGlyZWN0aW9uKTtcbiAgICAgICAgICAgICAgICBpZiAoY29ubmVjdGFibGVSb29tICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgb3RoZXJDb29yZGluYXRlcyA9IHBsYWNpbmdPcHRpb25zLm1hcC5nZXRDb29yZGluYXRlcyhjb25uZWN0YWJsZVJvb20pO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbXlDb29yZGluYXRlcyA9IFJvb20uc2hpZnQob3RoZXJDb29yZGluYXRlcywgb3Bwb3NpdGVEaXJlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICBwbGFjaW5nT3B0aW9ucy5yb29tLm1hcFJvb20oY29ubmVjdGFibGVSb29tLCBkaXJlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICBwbGFjaW5nT3B0aW9ucy5tYXAubWFwKHBsYWNpbmdPcHRpb25zLnJvb20sIG15Q29vcmRpbmF0ZXNbMF0sIG15Q29vcmRpbmF0ZXNbMV0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmRpdGlvbnMgOiBydW5uZXIgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bm5lci5ub3VuLnJvb20udHJpY2t5Q29kZSA9PSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9KTtcblxuXG4gICAgcHVibGljIHN0YXRpYyBydWxlUGxhY2VUcmlja3lSb29tID0gUmVnaW9uUmFuZG9tLnJ1bGVib29rUGxhY2VSb29tLmNyZWF0ZUFuZEFkZFJ1bGUoe1xuICAgICAgICBuYW1lIDogXCJQbGFjaW5nIHRyaWNreSByb29tIHNvbWV0aGluZ1wiLFxuICAgICAgICBjb2RlIDogcnVubmVyID0+IHtcbiAgICAgICAgICAgIGxldCBwbGFjaW5nT3B0aW9ucyA9IDxSYW5kb21pemluZ1Jvb21PcHRpb25zPiBydW5uZXIubm91bjtcbiAgICAgICAgICAgIGxldCBwbGFjZWRSb29tcyA9IDxBcnJheTxSb29tUmFuZG9tPj4gcGxhY2luZ09wdGlvbnMucmVnaW9uLmdldFJvb21zKCkuZmlsdGVyKChyb29tKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvb20gaW5zdGFuY2VvZiBSb29tUmFuZG9tICYmIHJvb20ucGxhY2VkO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChwbGFjZWRSb29tcy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlci5wcmludEFzRXJyb3IoXCJVbmFibGUgdG8gcGxhY2Ugcm9vbSBcIiArIHBsYWNpbmdPcHRpb25zLnJvb20uZ2V0UHJpbnRlZE5hbWUoKSArIFwiOiBUaGVyZSBhcmUgbm8gcm9vbXMgdG8gY29ubmVjdCB0byFcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcm9vbVNodWZmbGVyID0gbmV3IFNodWZmbGVyKHBsYWNlZFJvb21zLCBSZWdpb25SYW5kb20ucm5nKTtcbiAgICAgICAgICAgIGZvciAobGV0IGNvbm5lY3RhYmxlUm9vbSA9IHJvb21TaHVmZmxlci5nZXRPbmUoKTsgY29ubmVjdGFibGVSb29tICE9IHVuZGVmaW5lZDsgY29ubmVjdGFibGVSb29tID0gcm9vbVNodWZmbGVyLmdldE9uZSgpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRyaWNraWVyID0gPFRyaWNraWVyT3B0aW9ucz4ge1xuICAgICAgICAgICAgICAgICAgICByZWdpb24gOiBwbGFjaW5nT3B0aW9ucy5yZWdpb24sXG4gICAgICAgICAgICAgICAgICAgIG1hcCA6IHBsYWNpbmdPcHRpb25zLm1hcCxcbiAgICAgICAgICAgICAgICAgICAgb3RoZXJSb29tIDogY29ubmVjdGFibGVSb29tXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBsZXQgdHJpY2t5ID0gcGxhY2luZ09wdGlvbnMucm9vbS5nZXRBbnlEaXJlY3Rpb24odHJpY2tpZXIpO1xuICAgICAgICAgICAgICAgIGlmICh0cmlja3kgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHBsYWNpbmdPcHRpb25zLnJvb20ubWFwUm9vbShjb25uZWN0YWJsZVJvb20sIHRyaWNreS50cmlja3lSb29tRGlyZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgcGxhY2luZ09wdGlvbnMubWFwLm1hcChwbGFjaW5nT3B0aW9ucy5yb29tLCB0cmlja3kueCwgdHJpY2t5LnkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFRISVMgV09SS1NcbiAgICAgICAgICAgIC8vIEkgRE9OJ1QgS05PVyBXSFlcbiAgICAgICAgICAgIC8vIEkgRE9OJ1QgQ0FSRSBXSFlcbiAgICAgICAgICAgIC8vIExFQVZFXG4gICAgICAgICAgICBsZXQgY29ubmVjdGFibGVUaHJvdWdoRm9kZGVyID0gKGZvZGRlclN0ZXAgOiBudW1iZXIsIGNvbm5lY3RpbmdSb29tIDogUm9vbVJhbmRvbSkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCB0cmlja2llciA9IDxUcmlja2llck9wdGlvbnM+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVnaW9uIDogcGxhY2luZ09wdGlvbnMucmVnaW9uLFxuICAgICAgICAgICAgICAgICAgICBtYXAgOiBwbGFjaW5nT3B0aW9ucy5tYXAsXG4gICAgICAgICAgICAgICAgICAgIG90aGVyUm9vbSA6IGNvbm5lY3RpbmdSb29tXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGlmIChmb2RkZXJTdGVwID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBsYWNpbmdPcHRpb25zLnJvb20uZ2V0QW55RGlyZWN0aW9uKHRyaWNraWVyKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmV3Rm9kZGVyID0gbmV3IChwbGFjaW5nT3B0aW9ucy5yZWdpb24uZm9kZGVyUm9vbUNsYXNzKSgpO1xuICAgICAgICAgICAgICAgICAgICAvL2xldCBkaXJlY3Rpb25TaHVmZmxlciA9IG5ldyBTaHVmZmxlcjxudW1iZXI+KG5ld0ZvZGRlci5jb25uZWN0YWJsZU9uLCBSZWdpb25SYW5kb20ucm5nKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZWZlcnJlZEdyb3d0aERpcmVjdGlvbiA9IHBsYWNpbmdPcHRpb25zLm1hcC5nZXRQcmVmZXJyZWRHcm93dGgoKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRpcmVjdGlvblNodWZmbGVyID0gbmV3IFNodWZmbGVyRGlyZWN0aW9uKHBsYWNpbmdPcHRpb25zLnJvb20uY29ubmVjdGFibGVPbiwgcHJlZmVycmVkR3Jvd3RoRGlyZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgZGlyZWN0aW9uID0gZGlyZWN0aW9uU2h1ZmZsZXIuZ2V0RGlyZWN0aW9uKCk7IGRpcmVjdGlvbiAhPSB1bmRlZmluZWQ7IGRpcmVjdGlvbiA9IGRpcmVjdGlvblNodWZmbGVyLmdldERpcmVjdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3Bwb3NpdGVEaXJlY3Rpb24gPSBPcHBvc2l0ZURpcmVjdGlvbltEaXJlY3Rpb25bZGlyZWN0aW9uXV07XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3RoZXJDb29yZGluYXRlcyA9IHBsYWNpbmdPcHRpb25zLm1hcC5nZXRDb29yZGluYXRlcyhjb25uZWN0aW5nUm9vbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgd291bGRiZUNvb3JkaW5hdGVzID0gUm9vbS5zaGlmdChvdGhlckNvb3JkaW5hdGVzLCBvcHBvc2l0ZURpcmVjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm9kZGVyVHJpY2t5ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyUm9vbSA6IGNvbm5lY3RpbmdSb29tLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyUm9vbURpcmVjdGlvbiA6IG9wcG9zaXRlRGlyZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWNreVJvb21EaXJlY3Rpb24gOiBkaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwIDogcGxhY2luZ09wdGlvbnMubWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbiA6IHBsYWNpbmdPcHRpb25zLnJlZ2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4IDogd291bGRiZUNvb3JkaW5hdGVzWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgOiB3b3VsZGJlQ29vcmRpbmF0ZXNbMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdGb2RkZXIuaXNQbGFjZWFibGUoZm9kZGVyVHJpY2t5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ZvZGRlci5tYXBSb29tKGNvbm5lY3RpbmdSb29tLCBmb2RkZXJUcmlja3kudHJpY2t5Um9vbURpcmVjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2luZ09wdGlvbnMubWFwLm1hcChuZXdGb2RkZXIsIGZvZGRlclRyaWNreS54LCBmb2RkZXJUcmlja3kueSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV4dFRyaWNreSA9IGNvbm5lY3RhYmxlVGhyb3VnaEZvZGRlcihmb2RkZXJTdGVwIC0gMSwgbmV3Rm9kZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dFRyaWNreSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2luZ09wdGlvbnMucmVnaW9uLnBsYWNlKG5ld0ZvZGRlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0VHJpY2t5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ZvZGRlci51bm1hcFJvb20oZm9kZGVyVHJpY2t5LnRyaWNreVJvb21EaXJlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjaW5nT3B0aW9ucy5tYXAudW5tYXAoZm9kZGVyVHJpY2t5LngsIGZvZGRlclRyaWNreS55KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGxldCBmb2RkZXJMZXZlbCA9IDE7IGZvZGRlckxldmVsIDwgMTA7IGZvZGRlckxldmVsKyspIHtcbiAgICAgICAgICAgICAgICByb29tU2h1ZmZsZXIucmVzdGFydCgpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGNvbm5lY3RhYmxlUm9vbSA9IHJvb21TaHVmZmxlci5nZXRPbmUoKTsgY29ubmVjdGFibGVSb29tICE9IHVuZGVmaW5lZDsgY29ubmVjdGFibGVSb29tID0gcm9vbVNodWZmbGVyLmdldE9uZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0cmlja3kgPSBjb25uZWN0YWJsZVRocm91Z2hGb2RkZXIoZm9kZGVyTGV2ZWwsIGNvbm5lY3RhYmxlUm9vbSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0cmlja3kgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjaW5nT3B0aW9ucy5yb29tLm1hcFJvb20odHJpY2t5Lm90aGVyUm9vbSwgdHJpY2t5LnRyaWNreVJvb21EaXJlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2luZ09wdGlvbnMubWFwLm1hcChwbGFjaW5nT3B0aW9ucy5yb29tLCB0cmlja3kueCwgdHJpY2t5LnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlci5wcmludEFzRXJyb3IoXCJVbmFibGUgdG8gcGxhY2Ugcm9vbSBcIiArIHBsYWNpbmdPcHRpb25zLnJvb20uZ2V0UHJpbnRlZE5hbWUoKSArIFwiOiBBbGwgYXR0ZW1wdHMgZmFpbGVkXCIpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSk7XG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlN0b3JlZFZhcmlhYmxlLnRzXCIgLz5cclxuaW50ZXJmYWNlIFNhdmVkRXZlbnRPcHRpb25zPFQ+IGV4dGVuZHMgU3RvcmVkVmFyaWFibGVPcHRpb25zPFQ+IHtcclxuICAgIGRlc2NyaXB0aW9uIDogc3RyaW5nO1xyXG4gICAgdmFsdWVEZXNjcmlwdGlvbiA6ICh2YWx1ZSA6IFQpID0+IHN0cmluZztcclxufVxyXG5cclxuY2xhc3MgU2F2ZWRFdmVudDxUPiBleHRlbmRzIFN0b3JlZFZhcmlhYmxlPFQ+IHtcclxuICAgIHByaXZhdGUgZGVzY3JpcHRpb24gOiBzdHJpbmc7XHJcblxyXG4gICAgcHVibGljIGdldFZhbHVlRGVzY3JpcHRpb24gOiAodmFsdWUgOiBUKSA9PiBzdHJpbmc7XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChvcHRpb25zIDogU2F2ZWRFdmVudE9wdGlvbnM8VD4pIHtcclxuICAgICAgICBzdXBlcihvcHRpb25zKTtcclxuXHJcbiAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IG9wdGlvbnMuZGVzY3JpcHRpb247XHJcbiAgICAgICAgdGhpcy5nZXRWYWx1ZURlc2NyaXB0aW9uID0gb3B0aW9ucy52YWx1ZURlc2NyaXB0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXREZXNjcmlwdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRpb247XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4vL0V4YW1wbGVcclxubGV0IEVWRU5UX09SQ19DSElFRl9LSUxMRUQgPSBuZXcgU2F2ZWRFdmVudDxib29sZWFuPihcclxuICAgIDxTYXZlZEV2ZW50T3B0aW9uczxib29sZWFuPj4ge1xyXG4gICAgICAgIGlkOiBcIkVWRU5UX09SQ19DSElFRl9LSUxMRURcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJEZXNjcmliZXIgd2hldGhlciB0aGUgb3JjIGNoaWVmIGlzIGFsaXZlIG9yIGRlYWQuXCIsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZhbHVlRGVzY3JpcHRpb246ICh2YWx1ZTogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoRVZFTlRfT1JDX0NISUVGX0tJTExFRC52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiVGhlIG9yYyBjaGllZiBoYXMgYmVlbiBraWxsZWQuXCI7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJUaGUgb3JjIGNoaWVmIGlzIGFsaXZlLlwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbik7XHJcbiIsImludGVyZmFjZSBUZXN0aW5nT3B0aW9ucyB7XHJcbiAgICBuYW1lIDogc3RyaW5nO1xyXG4gICAgdmFsdWUgOiBudW1iZXI7XHJcbn1cclxuXHJcbmNsYXNzIERpY2Uge1xyXG4gICAgcHJvdGVjdGVkIHJhbmdlIDogQXJyYXk8bnVtYmVyPiA9IFswLCAwLCAxLCAxXTtcclxuICAgIHB1YmxpYyBtaW5SZXN1bHQgPSAwO1xyXG4gICAgcHJvdGVjdGVkIHRlc3RTdHJpbmcgOiBzdHJpbmc7XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yICh0ZXN0U3RyaW5nIDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy50ZXN0U3RyaW5nID0gdGVzdFN0cmluZztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcm9sbCAoc3RhdCA6IG51bWJlcikgOiBBcnJheTxudW1iZXI+ICB7XHJcbiAgICAgICAgbGV0IHJuZyA9IHRoaXMucmFuZ2Uuc2xpY2UoKTtcclxuICAgICAgICBpZiAoc3RhdCA+PSAxMCkge1xyXG4gICAgICAgICAgICBybmcucHVzaCgyLCAxKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHN0YXQgPj0gNykge1xyXG4gICAgICAgICAgICBybmcucHVzaCgxLCAxKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHN0YXQgPj0gNCkge1xyXG4gICAgICAgICAgICBybmcucHVzaCgxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHJlc3VsdHMgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXQ7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgaW5kZXggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAocm5nLmxlbmd0aCkpO1xyXG4gICAgICAgICAgICByZXN1bHRzLnB1c2gocm5nW2luZGV4XSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBUT0RPOiBQcmludCB0aGUgZGljZSByZXN1bHRzIGlmIE1lbW9yeS5TaG93RGljZSA9IDFcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBzdW0gKGEsIGIpIHtcclxuICAgICAgICByZXR1cm4gYSArIGI7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNheSAocmVzdWx0cyA6IEFycmF5PG51bWJlcj4pIDogU2F5IHtcclxuICAgICAgICBsZXQgZmluYWxSZXN1bHQgPSByZXN1bHRzLnJlZHVjZShEaWNlLnN1bSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBTYXkoXHJcbiAgICAgICAgICAgIG5ldyBTYXlCb2xkKFwiW1wiLCB0aGlzLnRlc3RTdHJpbmcsIFwiXSBcIiksXHJcbiAgICAgICAgICAgIFwiID0gW1wiLCByZXN1bHRzLmpvaW4oXCJdIFtcIiksIFwiXVwiLFxyXG4gICAgICAgICAgICByZXN1bHRzLmxlbmd0aCA9PSAxID8gXCJcIiA6XHJcbiAgICAgICAgICAgICAgICAoXCIgPSBcIiArIGZpbmFsUmVzdWx0KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyB0ZXN0QWdhaW5zdFJvbGwgKHBsYXllciA6IFRlc3RpbmdPcHRpb25zLCBlbmVteSA6IFRlc3RpbmdPcHRpb25zKSA6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IHBsYXllckRpY2UgPSBuZXcgRGljZShwbGF5ZXIubmFtZSk7XHJcbiAgICAgICAgbGV0IHBsYXllclJlc3VsdCA9IHBsYXllckRpY2Uucm9sbChwbGF5ZXIudmFsdWUpO1xyXG4gICAgICAgIGxldCBlbmVteURpY2UgPSBuZXcgRGljZShlbmVteS5uYW1lKTtcclxuICAgICAgICBsZXQgZW5lbXlSZXN1bHQgPSBlbmVteURpY2Uucm9sbChlbmVteS52YWx1ZSk7XHJcblxyXG4gICAgICAgIHJldHVybiBwbGF5ZXJSZXN1bHQucmVkdWNlKERpY2Uuc3VtKSAtIGVuZW15UmVzdWx0LnJlZHVjZShEaWNlLnN1bSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyB0ZXN0QWdhaW5zdERpZmZpY3VsdHkgKHBsYXllciA6IFRlc3RpbmdPcHRpb25zLCBkaWZmaWN1bHR5IDogbnVtYmVyKSA6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IHBsYXllckRpY2UgPSBuZXcgRGljZShwbGF5ZXIubmFtZSk7XHJcbiAgICAgICAgbGV0IHBsYXllclJlc3VsdCA9IHBsYXllckRpY2Uucm9sbChwbGF5ZXIudmFsdWUpO1xyXG4gICAgICAgIHJldHVybiBwbGF5ZXJSZXN1bHQucmVkdWNlKERpY2Uuc3VtKSAtIGRpZmZpY3VsdHk7XHJcbiAgICB9XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiRGljZS50c1wiIC8+XHJcbmNsYXNzIERpY2VDb21tb24gZXh0ZW5kcyBEaWNlIHtcclxuICAgIHByb3RlY3RlZCByYW5nZSA6IEFycmF5PG51bWJlcj4gPSBbLTEsIDAsIDAsIDAsIDEsIDEsIDFdO1xyXG4gICAgcHVibGljIG1pblJlc3VsdCA9IC0xO1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgdGVzdEFnYWluc3RSb2xsIChwbGF5ZXIgOiBUZXN0aW5nT3B0aW9ucywgZW5lbXkgOiBUZXN0aW5nT3B0aW9ucykgOiBudW1iZXIge1xyXG4gICAgICAgIGxldCBwbGF5ZXJEaWNlID0gbmV3IERpY2VDb21tb24ocGxheWVyLm5hbWUpO1xyXG4gICAgICAgIGxldCBwbGF5ZXJSZXN1bHQgPSBwbGF5ZXJEaWNlLnJvbGwocGxheWVyLnZhbHVlKTtcclxuICAgICAgICBsZXQgZW5lbXlEaWNlID0gbmV3IERpY2VDb21tb24oZW5lbXkubmFtZSk7XHJcbiAgICAgICAgbGV0IGVuZW15UmVzdWx0ID0gZW5lbXlEaWNlLnJvbGwoZW5lbXkudmFsdWUpO1xyXG5cclxuICAgICAgICByZXR1cm4gcGxheWVyUmVzdWx0LnJlZHVjZShEaWNlLnN1bSkgLSBlbmVteVJlc3VsdC5yZWR1Y2UoRGljZS5zdW0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgdGVzdEFnYWluc3REaWZmaWN1bHR5IChwbGF5ZXIgOiBUZXN0aW5nT3B0aW9ucywgZGlmZmljdWx0eSA6IG51bWJlcikgOiBudW1iZXIge1xyXG4gICAgICAgIGxldCBwbGF5ZXJEaWNlID0gbmV3IERpY2VDb21tb24ocGxheWVyLm5hbWUpO1xyXG4gICAgICAgIGxldCBwbGF5ZXJSZXN1bHQgPSBwbGF5ZXJEaWNlLnJvbGwocGxheWVyLnZhbHVlKTtcclxuICAgICAgICByZXR1cm4gcGxheWVyUmVzdWx0LnJlZHVjZShEaWNlLnN1bSkgLSBkaWZmaWN1bHR5O1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIkRpY2UudHNcIiAvPlxyXG5jbGFzcyBEaWNlRGFuZ2Vyb3VzIGV4dGVuZHMgRGljZSB7XHJcbiAgICBwcm90ZWN0ZWQgcmFuZ2UgOiBBcnJheTxudW1iZXI+ID0gWy0yLCAtMSwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMV07XHJcbiAgICBwdWJsaWMgbWluUmVzdWx0ID0gLTI7XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyB0ZXN0QWdhaW5zdFJvbGwgKHBsYXllciA6IFRlc3RpbmdPcHRpb25zLCBlbmVteSA6IFRlc3RpbmdPcHRpb25zKSA6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IHBsYXllckRpY2UgPSBuZXcgRGljZURhbmdlcm91cyhwbGF5ZXIubmFtZSk7XHJcbiAgICAgICAgbGV0IHBsYXllclJlc3VsdCA9IHBsYXllckRpY2Uucm9sbChwbGF5ZXIudmFsdWUpO1xyXG4gICAgICAgIGxldCBlbmVteURpY2UgPSBuZXcgRGljZURhbmdlcm91cyhlbmVteS5uYW1lKTtcclxuICAgICAgICBsZXQgZW5lbXlSZXN1bHQgPSBlbmVteURpY2Uucm9sbChlbmVteS52YWx1ZSk7XHJcblxyXG4gICAgICAgIHJldHVybiBwbGF5ZXJSZXN1bHQucmVkdWNlKERpY2Uuc3VtKSAtIGVuZW15UmVzdWx0LnJlZHVjZShEaWNlLnN1bSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyB0ZXN0QWdhaW5zdERpZmZpY3VsdHkgKHBsYXllciA6IFRlc3RpbmdPcHRpb25zLCBkaWZmaWN1bHR5IDogbnVtYmVyKSA6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IHBsYXllckRpY2UgPSBuZXcgRGljZURhbmdlcm91cyhwbGF5ZXIubmFtZSk7XHJcbiAgICAgICAgbGV0IHBsYXllclJlc3VsdCA9IHBsYXllckRpY2Uucm9sbChwbGF5ZXIudmFsdWUpO1xyXG4gICAgICAgIHJldHVybiBwbGF5ZXJSZXN1bHQucmVkdWNlKERpY2Uuc3VtKSAtIGRpZmZpY3VsdHk7XHJcbiAgICB9XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vVGhpbmcudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vRWxlbWVudHMvQ2xhc3Nlcy9TYXkvT25lT2YudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vUnVsZWJvb2sudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vUnVsZS50c1wiIC8+XHJcbmludGVyZmFjZSBMaXF1aWRPcHRpb25zIGV4dGVuZHMgVGhpbmdPcHRpb25zIHtcclxuICAgIHRhc3RlPyA6IE9uZU9mO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTGlxdWlkQ29udGFpbmVyIHtcclxuICAgIGxpcXVpZENvbnRlbnRzIDogQXJyYXk8TGlxdWlkPjtcclxufVxyXG5cclxuaW50ZXJmYWNlIExpcXVpZE1peHR1cmUge1xyXG4gICAgcXVhbnRpdGllcyA6IE1hcDxhbnksIG51bWJlcj47XHJcbiAgICByZXN1bHQgOiBMaXF1aWQ7XHJcbiAgICBxdWFudGl0eU11bHRpcGxpZXI/IDogbnVtYmVyO1xyXG4gICAgZmlyc3RQcmlvcml0eSA6IG51bWJlcjtcclxuICAgIHByaW9yaXR5IDogbnVtYmVyO1xyXG59XHJcblxyXG5jbGFzcyBMaXF1aWQgZXh0ZW5kcyBUaGluZyB7XHJcbiAgICBwdWJsaWMgdGFzdGUgOiBPbmVPZjtcclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAob3B0aW9ucz8gOiBMaXF1aWRPcHRpb25zKSB7XHJcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XHJcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgPT0gdW5kZWZpbmVkID8ge30gOiBvcHRpb25zO1xyXG4gICAgICAgIGlmIChvcHRpb25zLnRhc3RlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRhc3RlID0gb3B0aW9ucy50YXN0ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRhc3RlID0gbmV3IE9uZU9mKFxyXG4gICAgICAgICAgICAgICAgT25lT2YuUk9UQVRJTkdfUkFORE9NLFxyXG4gICAgICAgICAgICAgICAgXCJJdCBnb2VzIGVhc2lseSB0aHJvdWdoIHlvdXIgdGhyb2F0IHdpdGggbm8gcGFydGljdWxhciB0YXN0ZS5cIixcclxuICAgICAgICAgICAgICAgIFwiWW91IHRhc3RlIG5vdGhpbmcgYXMgaXQgc29mdGx5IHNsaWRlcyB0aHJvdWdoIHlvdXIgdG9uZ3VlLlwiXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBydWxlYm9vayB3aWxsIHJldHVybiBhIExpcXVpZE1peHR1cmVcclxuICAgICAqIEB0eXBlIHtSdWxlYm9vazxMaXF1aWRDb250YWluZXI+fVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHJ1bGVib29rTWl4aW5nID0gbmV3IFJ1bGVib29rPExpcXVpZENvbnRhaW5lcj4oXCJNaXhpbmcgdGhlIGxpcXVpZCBjb250ZW50cyBvZiBzb21ldGhpbmdcIik7IC8vIG5vdW4gPSBMaXF1aWRDb250YWluZXJcclxuICAgIHB1YmxpYyBzdGF0aWMgbWl4dHVyZXMgOiBBcnJheTxMaXF1aWRNaXh0dXJlPiA9IFtdO1xyXG4gICAgcHVibGljIHN0YXRpYyBzb3J0ZWRNaXh0dXJlcyA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgbWl4IChjb250YWluZXIgOiBMaXF1aWRDb250YWluZXIpIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgTGlxdWlkLnJ1bGVib29rTWl4aW5nLmV4ZWN1dGUoe25vdW4gOiBjb250YWluZXJ9KTtcclxuICAgICAgICAvLyBEaWQgd2UgZmluZCBhIGxpcXVpZD9cclxuICAgICAgICBpZiAocmVzdWx0ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBsZXQgZmluYWxRdWFudGl0eSA9IHJlc3VsdC5xdWFudGl0eU11bHRpcGxpZXIgIT0gdW5kZWZpbmVkID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdC5xdWFudGl0eU11bHRpcGxpZXIgKiBjb250YWluZXIubGlxdWlkQ29udGVudHMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb250YWluZXIubGlxdWlkQ29udGVudHMubGVuZ3RoKTtcclxuXHJcblxyXG4gICAgICAgICAgICBjb250YWluZXIubGlxdWlkQ29udGVudHMgPSBuZXcgQXJyYXkoZmluYWxRdWFudGl0eSk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmluYWxRdWFudGl0eTsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb250YWluZXIubGlxdWlkQ29udGVudHNbaV0gPSByZXN1bHQucmVzdWx0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TWl4dHVyZXMgKCkge1xyXG4gICAgICAgIGlmIChMaXF1aWQuc29ydGVkTWl4dHVyZXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIExpcXVpZC5taXh0dXJlcztcclxuICAgICAgICB9XHJcbiAgICAgICAgTGlxdWlkLm1peHR1cmVzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGIuZmlyc3RQcmlvcml0eSA8IGEuZmlyc3RQcmlvcml0eSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICBpZiAoYS5maXJzdFByaW9yaXR5IDwgYi5maXJzdFByaW9yaXR5KSByZXR1cm4gMTtcclxuICAgICAgICAgICAgaWYgKGIucHJpb3JpdHkgPCBhLnByaW9yaXR5KSByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIGlmIChhLnByaW9yaXR5IDwgYi5wcmlvcml0eSkgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIExpcXVpZC5zb3J0ZWRNaXh0dXJlcyA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIExpcXVpZC5taXh0dXJlcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGFkZE1peHR1cmUobWl4dHVyZSA6IExpcXVpZE1peHR1cmUpIHtcclxuICAgICAgICBMaXF1aWQubWl4dHVyZXMucHVzaChtaXh0dXJlKTtcclxuICAgICAgICBMaXF1aWQuc29ydGVkTWl4dHVyZXMgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHJ1bGVEZWZhdWx0TWl4aW5nID0gTGlxdWlkLnJ1bGVib29rTWl4aW5nLmNyZWF0ZUFuZEFkZFJ1bGUoe1xyXG4gICAgICAgIG5hbWUgOiBcIk1peGluZyB0aHJvdWdoIE1peHR1cmVzXCIsXHJcbiAgICAgICAgY29kZSA6IHJ1bm5lciA9PiB7XHJcbiAgICAgICAgICAgIGlmIChydW5uZXIubm91bi5saXF1aWRDb250ZW50cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgbWl4dHVyZSA6IExpcXVpZE1peHR1cmU7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTGlxdWlkLm1peHR1cmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBtaXh0dXJlID0gTGlxdWlkLm1peHR1cmVzW2ldO1xyXG4gICAgICAgICAgICAgICAgbGV0IHByb3BvcnRpb25zID0gW107XHJcbiAgICAgICAgICAgICAgICBsZXQgbWl4dHVyZUl0ZXJhdG9yID0gbWl4dHVyZS5xdWFudGl0aWVzLmVudHJpZXMoKTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IG1peHR1cmVMaXF1aWQgPSBtaXh0dXJlSXRlcmF0b3IubmV4dCgpOyAhbWl4dHVyZUxpcXVpZC5kb25lOyBtaXh0dXJlTGlxdWlkID0gbWl4dHVyZUl0ZXJhdG9yLm5leHQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBtaXh0dXJlVHlwZSA9IG1peHR1cmVMaXF1aWQudmFsdWVbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1peHR1cmVRdWFudGl0eSA9IG1peHR1cmVMaXF1aWQudmFsdWVbMV07XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoZWRRdWFudGl0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgcnVubmVyLm5vdW4ubGlxdWlkQ29udGVudHMuZm9yRWFjaCgobGlxdWlkVHlwZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpcXVpZFR5cGUgPT0gbWl4dHVyZVR5cGUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZW9mIG1peHR1cmVUeXBlID09IFwiZnVuY3Rpb25cIiAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlxdWlkVHlwZSBpbnN0YW5jZW9mIG1peHR1cmVUeXBlIHx8IG1peHR1cmVUeXBlKGxpcXVpZFR5cGUpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRRdWFudGl0eSsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWl4dHVyZVR5cGUgaXMgbm90IGFsd2F5cyBjYWxsYWJsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBwcm9wb3J0aW9ucy5wdXNoKG1hdGNoZWRRdWFudGl0eSAvIG1peHR1cmVRdWFudGl0eSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHZhbGlkIG1peCwgdGhlbiBldmVyeSBwYXJ0IG9mIHRoZSByZWNpcGUgaXMgcmVwcmVzZW50ZWQgcHJvcG9ydGlvbmFsbHlcclxuICAgICAgICAgICAgICAgIGlmIChwcm9wb3J0aW9ucy5ldmVyeShmdW5jdGlvbihlbGVtZW50LCBpbmRleCwgYXJyYXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgPT09IGFycmF5WzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1peHR1cmU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5cclxuLy8gY2xhc3MgU2VtZW4gZXh0ZW5kcyBMaXF1aWQge31cclxuLy8gY2xhc3MgT3JjU2VtZW4gZXh0ZW5kcyBTZW1lbiB7fVxyXG4vLyBjbGFzcyBNaW5vdGF1clNlbWVuIGV4dGVuZHMgU2VtZW4ge31cclxuLy8gY2xhc3MgUG93ZXJmdWxEcmluayBleHRlbmRzIExpcXVpZCB7fVxyXG4vL1xyXG4vLyBsZXQgcG93ZXJmdWxEcmlua1F1YW50aXRpZXMgPSBuZXcgTWFwKCk7XHJcbi8vIHBvd2VyZnVsRHJpbmtRdWFudGl0aWVzLnNldChPcmNTZW1lbiwgMik7XHJcbi8vIHBvd2VyZnVsRHJpbmtRdWFudGl0aWVzLnNldChNaW5vdGF1clNlbWVuLCAxKTtcclxuLy8gTGlxdWlkLmFkZE1peHR1cmUoe1xyXG4vLyAgICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfSElHSEVTVCxcclxuLy8gICAgIHByaW9yaXR5IDogUnVsZS5QUklPUklUWV9NRURJVU0sXHJcbi8vICAgICBxdWFudGl0eU11bHRpcGxpZXIgOiAwLjUsXHJcbi8vICAgICByZXN1bHQgOiBuZXcgUG93ZXJmdWxEcmluayhcIlBvd2VyZnVsIERyaW5rXCIpLFxyXG4vLyAgICAgcXVhbnRpdGllcyA6IHBvd2VyZnVsRHJpbmtRdWFudGl0aWVzXHJcbi8vIH0pO1xyXG4vLyBsZXQgcmVjaXBpZW50ID0gbmV3IFJlY2lwaWVudChcIkN1cFwiKTtcclxuLy8gcmVjaXBpZW50LmxpcXVpZENvbnRlbnRzLnB1c2gobmV3IE9yY1NlbWVuKFwiU2VtZW4gb2YgdGhlIENoaWVmXCIpKTtcclxuLy8gcmVjaXBpZW50LmxpcXVpZENvbnRlbnRzLnB1c2gobmV3IE9yY1NlbWVuKFwiU2VtZW4gb2YgdGhlIENoaWVmXCIpKTtcclxuLy8gcmVjaXBpZW50LmxpcXVpZENvbnRlbnRzLnB1c2gobmV3IE9yY1NlbWVuKFwiU2VtZW4gb2YgdGhlIENoaWVmXCIpKTtcclxuLy8gcmVjaXBpZW50LmxpcXVpZENvbnRlbnRzLnB1c2gobmV3IE9yY1NlbWVuKFwiU2VtZW4gb2YgdGhlIENoaWVmXCIpKTtcclxuLy8gcmVjaXBpZW50LmxpcXVpZENvbnRlbnRzLnB1c2gobmV3IE1pbm90YXVyU2VtZW4oXCJTZW1lbiBvZiBIYXJvbGRcIikpO1xyXG4vLyByZWNpcGllbnQubGlxdWlkQ29udGVudHMucHVzaChuZXcgTWlub3RhdXJTZW1lbihcIlNlbWVuIG9mIEhhcm9sZFwiKSk7XHJcbi8vXHJcbi8vIHtcclxuLy8gICAgIFNldHRpbmdzLnNldERlYnVnKGZhbHNlKTtcclxuLy8gICAgIGxldCB0MSA9IHBlcmZvcm1hbmNlLm5vdygpO1xyXG4vLyAgICAgbGV0IHQwID0gcGVyZm9ybWFuY2Uubm93KCk7XHJcbi8vICAgICBMaXF1aWQubWl4KHJlY2lwaWVudCk7XHJcbi8vICAgICB0MSA9IHBlcmZvcm1hbmNlLm5vdygpO1xyXG4vLyAgICAgY29uc29sZS5sb2codDEgLSB0MCk7XHJcbi8vIH0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vVGhpbmcudHNcIiAvPlxyXG5jbGFzcyBTY2VuZXJ5IGV4dGVuZHMgVGhpbmcge1xyXG4gICAgcHVibGljIGZpeGVkSW5QbGFjZSA9IHRydWU7XHJcbiAgICBwdWJsaWMgc2NlbmVyeSA9IHRydWU7XHJcbn0iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vSHVtYW5vaWQudHNcIiAvPlxyXG5jbGFzcyBPcmNEZWJ1Z2dlciBleHRlbmRzIEh1bWFub2lkIHtcclxuICAgIHB1YmxpYyBzdGF0aWMgbmFtZU1vZGlmaWVyID0gbmV3IFNodWZmbGVyKFtcclxuICAgICAgICBcIlVnbHlcIiwgXCJNdXNjdWxhclwiLCBcIlZlaW55XCIsIFwiQW5ncnlcIiwgXCJTYWRcIiwgXCJTbWFydFwiLCBcIkFnaWxlXCIsIFwiU2hvcnRcIiwgXCJCdWxnaW5nXCIsIFwiSW50ZW5zZVwiLCBcIlNtb3VsZGVyaW5nXCJcclxuICAgIF0pO1xyXG4gICAgcHVibGljIHN0YXRpYyBjb3VudGVyID0gMTtcclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoKSB7XHJcbiAgICAgICAgc3VwZXIoe1xyXG4gICAgICAgICAgICBpc01hbGU6IHRydWUsXHJcbiAgICAgICAgICAgIG5hbWUgOiAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IG5hbWVNb2QgPSBPcmNEZWJ1Z2dlci5uYW1lTW9kaWZpZXIuZ2V0T25lKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmFtZU1vZCA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lTW9kID0gKE9yY0RlYnVnZ2VyLmNvdW50ZXIrKykudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBuYW1lTW9kICsgXCIgT3JjXCI7XHJcbiAgICAgICAgICAgIH0pKCksXHJcbiAgICAgICAgICAgIHVuaXF1ZSA6IHRydWUsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uIDogXCJUaGlzIGlzIG9uZSBleHRyZW1lbHkgdWdseSBmZWxsb3cuXCJcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5BSS53YW5kZXJlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5BSS5waWNrc1NoaW5pZXMgPSB0cnVlO1xyXG4gICAgfVxyXG59XHJcblxyXG5BY3Rpb25UYWxrLmNhcnJ5LmNyZWF0ZUFuZEFkZFJ1bGUoe1xyXG4gICAgbmFtZSA6IFwiVGFsa2luZyB0byB0aGUgb3JjXCIsXHJcbiAgICBmaXJzdFByaW9yaXR5IDogQWN0aW9uVGFsay5QUklPUklUWV9HTE9CQUxfRElBTE9HVUUsXHJcbiAgICBwcmlvcml0eSA6IEFjdGlvblRhbGsuUFJJT1JJVFlfQ09NTU9OX0RJQUxPR1VFLFxyXG4gICAgY29uZGl0aW9ucyA6IChydW5uZXIgOiBSdWxlYm9va1J1bm5lcjxBY3Rpb25UYWxrPikgPT4ge1xyXG4gICAgICAgIHJldHVybiBydW5uZXIubm91bi5nZXROb3VuKDApIGluc3RhbmNlb2YgT3JjRGVidWdnZXI7XHJcbiAgICB9LFxyXG4gICAgY29kZSA6IChydW5uZXIgOiBSdWxlYm9va1J1bm5lcjxBY3Rpb25UYWxrPikgPT4ge1xyXG4gICAgICAgIGxldCBvcmMgPSA8T3JjRGVidWdnZXI+IHJ1bm5lci5ub3VuLmdldE5vdW4oMCk7XHJcbiAgICAgICAgLy9hd2FpdCBEaWFsb2d1ZVRyZWVzLkNvbXBpbGFibGVUZXN0LmV4ZWN1dGUoKTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gRGljZS50ZXN0QWdhaW5zdFJvbGwoXHJcbiAgICAgICAgICAgIHtuYW1lOiBcIkNoYXJtICsgMlwiLCB2YWx1ZSA6IFdvcmxkU3RhdGUucGxheWVyLmdldFN0YXQoQXR0cmlidXRlcy5DaGFybSkgKyAyfSxcclxuICAgICAgICAgICAge25hbWU6IFwiT3JjJ3Mgd2l0cyArIDJcIiwgdmFsdWUgOiBvcmMuZ2V0U3RhdChBdHRyaWJ1dGVzLkludGVsbGlnZW5jZSkgKyAyfVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmIChyZXN1bHQgPiAwKSB7XHJcbiAgICAgICAgICAgIEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlci5wcmludEFzQ29udGVudChuZXcgU2F5KFwiWW91IHdpbiFcIikpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlci5wcmludEFzQ29udGVudChuZXcgU2F5KFwiWW91IGxvc2UuXCIpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbn0pOyIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9MaXF1aWQudHNcIiAvPlxyXG5cclxuY2xhc3MgU2VtZW4gZXh0ZW5kcyBMaXF1aWQge1xyXG4gICAgcHVibGljIGN1bW1lciA6IFBlcnNvbjtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGN1bW1lciA6IFBlcnNvbiwgb3B0aW9ucz8gOiBUaGluZ09wdGlvbnMpIHtcclxuICAgICAgICBzdXBlcihvcHRpb25zKTtcclxuICAgICAgICB0aGlzLmN1bW1lciA9IGN1bW1lcjtcclxuICAgIH1cclxufSIsInZhciByb29tYSA9IG5ldyBSb29tUmFuZG9tKFwiUm9vbSBBXCIpO1xyXG5yb29tYS5kZXNjcmlwdGlvbiA9IG5ldyBTYXkoXHJcbiAgICBcIllvdSBhcmUgaW5zaWRlIGEgYm94IG9mIG1ldGFsIHBhaW50ZWQgYmx1ZS4gWW91ciBoZWFkIGFsbW9zdCB0b3VjaGVzIHRoZSBjZWlsaW5nLCBtYWtpbmcgdGhlIHJvb20gbG9vayBzbWFsbGVyIHRoYW4gaXQgcmVhbGx5IGlzLlwiLFxyXG4gICAgU2F5LkxJTkVfQlJFQUssXHJcbiAgICBuZXcgU2F5SWYoXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gVGhpbmcuSW5zaWRlUm9vbVJlbGF0aW9uLmdldExlZnQodmFzZSkgPT0gcm9vbWEgfHwgVGhpbmcuSW5zaWRlUm9vbVJlbGF0aW9uLmdldExlZnQodXJuKSA9PSByb29tYTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiIFN0aWxsLCB0aGVyZSBhcmUgc29tZSB0aGluZ3MgdGhyb3duIGFib3V0LlwiXHJcbiAgICApXHJcbik7XHJcblxyXG5QbGF5QmVnaW5zLnNldFN0YXJ0aW5nUm9vbShyb29tYSk7XHJcblxyXG5sZXQgcGFkZGVkQnJhID0gbmV3IENsb3RoaW5nKHtuYW1lIDogXCJQYWRkZWQgQnJhXCIsIHVuaXF1ZSA6IHRydWV9KTtcclxucGFkZGVkQnJhLmJyZWFzdFBhZGRpbmcgPSAzO1xyXG5wYWRkZWRCcmEuc2xvdHMgPSBbSHVtYW5vaWQuU0xPVF9CUkVBU1RTXTtcclxuXHJcbmxldCBwYWRkZWRVbmRlcndlYXIgPSBuZXcgQ2xvdGhpbmcoe25hbWUgOiBcIlBhZGRlZCBVbmRlcndlYXJcIiwgdW5pcXVlIDogdHJ1ZX0pO1xyXG5wYWRkZWRVbmRlcndlYXIuY3JvdGNoUGFkZGluZyA9IDE1O1xyXG5wYWRkZWRVbmRlcndlYXIuc2xvdHMgPSBbSHVtYW5vaWQuU0xPVF9DUk9UQ0hfQkFDSywgSHVtYW5vaWQuU0xPVF9DUk9UQ0hfRlJPTlRdO1xyXG5cclxuLy8gVGhpbmcuV2VhclJlbGF0aW9uLnNldFJlbGF0aW9uKFdvcmxkU3RhdGUucGxheWVyLCBwYWRkZWRCcmEpO1xyXG4vLyBUaGluZy5XZWFyUmVsYXRpb24uc2V0UmVsYXRpb24oV29ybGRTdGF0ZS5wbGF5ZXIsIHBhZGRlZFVuZGVyd2Vhcik7XHJcblxyXG5sZXQgcGxheWVyID0gV29ybGRTdGF0ZS5wbGF5ZXI7XHJcbldvcmxkU3RhdGUucGxheWVyID0gcGxheWVyO1xyXG52YXIgdmFzZSA9IG5ldyBUaGluZyh7bmFtZSA6IFwiVmFzZVwifSk7XHJcbnZhc2UuZGVzY3JpcHRpb24gPSBuZXcgU2F5KFwiVGhpcyBpcyBhbiBvcm5hbWVudGFsIHZhc2UgdGhhdCdkIGxvb2sgdmVyeSBuaWNlIG9uIHlvdXIgbGFwLiBXaHk/IFdobyBrbm93cy5cIik7XHJcbnJvb21hLnBsYWNlKHZhc2UpO1xyXG5cclxubGV0IG1hcE9mVGVzdCA9IG5ldyBNYXBOb3RlKHtuYW1lOiBcIk1hcCBvZiB0aGlzIFJlZ2lvblwiLFxyXG5kZXNjcmlwdGlvbiA6IFwiVGhpcyBpcyBhIHNpbXBsZSBtYXAgc2hvd2luZyBhbGwgdGhlIHJvb21zIGhlcmUuXCIsIHVuaXF1ZSA6IHRydWV9KTtcclxucm9vbWEucGxhY2UobWFwT2ZUZXN0KTtcclxuXHJcbmxldCB1cm4gPSBuZXcgVGhpbmcoe3VuaXF1ZTogdHJ1ZSwgbmFtZSA6IFwiVXJuIG9mIERyZWFtc1wiLCBpbWFnZSA6IFwiaW1hZ2UwMDFcIn0pO1xyXG51cm4uZGVzY3JpcHRpb24gPSBuZXcgU2F5KFwiVGhpcyBhcHBlYXJzIHRvIGJlIGEgc2ltcGxlLCBibGFjayB1cm4gY29udGFpbmluZyB0aGUgYXNoZXMgb2YgeW91ciBkcmVhbXMuXCIpO1xyXG5yb29tYS5wbGFjZSh1cm4pO1xyXG5cclxudmFyIHJvb21iID0gbmV3IFJvb21SYW5kb20oXCJSb29tIEJcIik7XHJcblxyXG5yb29tYi5wbGFjZSh2YXNlKTtcclxuXHJcblxyXG5sZXQgZnJpbGx5UG91Y2ggPSBuZXcgQ29pblBvdWNoKHtcclxuICAgIG5hbWUgOiBcIkZyaWxseSBQb3VjaFwiLFxyXG4gICAgLy9pbWFnZSA6IG5ldyBTYXlJbWFnZShcImltYWdlMDAxXCIpLFxyXG4gICAgZGVzY3JpcHRpb24gOiBuZXcgU2F5KFwiVGhpcyBpcyBhIHZlcnkgZ2F5IGxpdHRsZSBwaW5rIHBvdWNoIGZ1bGwgb2YgbGl0dGxlIGhlYXJ0cy5cIilcclxufSk7XHJcbmZyaWxseVBvdWNoLmFkZENvaW5zKDUwMik7XHJcbnJvb21hLnBsYWNlKGZyaWxseVBvdWNoKTtcclxuXHJcbi8vIEFjdGlvblRha2UuY2hlY2suYWRkUnVsZShuZXcgUnVsZSg8UnVsZU9wdGlvbnM8YW55Pj4ge1xyXG4vLyAgICAgY29kZSA6IGZ1bmN0aW9uICgpIHtcclxuLy8gICAgICAgICBsZXQgcHJvbWlzZSA9IG5ldyBQcm9taXNlKCgpID0+IHt9KTtcclxuLy8gICAgICAgICByZXR1cm4gcHJvbWlzZTtcclxuLy8gICAgIH1cclxuLy8gfSkpO1xyXG5cclxubGV0IGJpZ1NhY2sgPSBuZXcgQ29pblBvdWNoKHtuYW1lIDogXCJCaWcgU2Fja1wifSk7XHJcbmJpZ1NhY2suYWRkQ29pbnMoMTAwKTtcclxucm9vbWEucGxhY2UoYmlnU2Fjayk7XHJcblxyXG5sZXQgcmVnaW9uID0gbmV3IFJlZ2lvblJhbmRvbShcIlRlc3QgUmVnaW9uXCIpO1xyXG5cclxuXHJcbnJlZ2lvbi5wbGFjZShyb29tYSwgcm9vbWIpO1xyXG5mb3IgKGxldCBpID0gMTsgaSA8IDY7IGkrKykge1xyXG4gICAgbGV0IHJvb20gPSBuZXcgUm9vbVJhbmRvbShcIlJvb20gXCIgKyBpLnRvU3RyaW5nKCkpO1xyXG4gICAgLy8gbGV0IHJhbmRvbURpcmVjdGlvbiA9IG5ldyBTaHVmZmxlcihbUm9vbS5OT1JUSCwgUm9vbS5TT1VUSCwgUm9vbS5FQVNULCBSb29tLldFU1RdKVxyXG4gICAgLy8gcm9vbS5jb25uZWN0YWJsZU9uID0gW3JhbmRvbURpcmVjdGlvbi5nZXRPbmUoKV07XHJcbiAgICAvL3Jvb20uY29ubmVjdGFibGVPbiA9IFtSb29tLk5PUlRILCBSb29tLlNPVVRILCBSb29tLkVBU1QsIFJvb20uV0VTVF07XHJcbiAgICByZWdpb24ucGxhY2Uocm9vbSk7XHJcblxyXG4gICAgaWYgKE1hdGgucmFuZG9tKCkgPiAwLjUpIHtcclxuICAgICAgICAvL21hcE9mVGVzdC5hZGRSb29tKHJvb20pO1xyXG4gICAgfVxyXG5cclxufVxyXG5cclxubWFwT2ZUZXN0LmFkZFJlZ2lvbihyZWdpb24pO1xyXG5cclxubGV0IHNvdXRoZXN0Um9vbSA9IG5ldyBSb29tUmFuZG9tKFwiU291dGhlc3QgUm9vbVwiKTtcclxuLy9zb3V0aGVzdFJvb20uYXBwZWFyQ2hhbmNlID0gMDtcclxuXHJcbnJlZ2lvbi5wbGFjZShzb3V0aGVzdFJvb20pO1xyXG5cclxuLy9zb3V0aGVzdFJvb20uY29ubmVjdGFibGVPbiA9IFtSb29tLk5PUlRIXTtcclxuc291dGhlc3RSb29tLmFwcGVhckNoYW5jZSA9IDEwMDtcclxuc291dGhlc3RSb29tLmJhY2tncm91bmRJbWFnZSA9IFwiYmxvb1wiO1xyXG5cclxuc291dGhlc3RSb29tLnRyaWNreUNvZGUgPSAob3B0aW9ucyA6IFRyaWNreU9wdGlvbnMpID0+IHtcclxuICAgIGxldCBteUNvb3JkaW5hdGVzID0gW29wdGlvbnMueCwgb3B0aW9ucy55XTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgUm9vbS5ESVJFQ1RJT05TLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGRpcmVjdGlvbiA9IFJvb20uRElSRUNUSU9OU1tpXTtcclxuICAgICAgICBpZiAoZGlyZWN0aW9uICE9IERpcmVjdGlvbi5OT1JUSCkge1xyXG4gICAgICAgICAgICBsZXQgY29vcmRpbmF0ZXMgPSBSb29tLnNoaWZ0KG15Q29vcmRpbmF0ZXMsIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5tYXAuaXNGcmVlKGNvb3JkaW5hdGVzWzBdLCBjb29yZGluYXRlc1sxXSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gVGhpcyByb29tIGNhbiBvbmx5IGhhdmUgcm9vbXMgb24gbm9ydGggb2YgaXRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb29yZGluYXRlcyA9IFJvb20uc2hpZnQoY29vcmRpbmF0ZXMsIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5tYXAuaXNGcmVlKGNvb3JkaW5hdGVzWzBdLCBjb29yZGluYXRlc1sxXSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gVGhpcyByb29tIGNhbiBvbmx5IGhhdmUgcm9vbXMgb24gbm9ydGggb2YgaXRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG59O1xyXG5cclxuUmVnaW9uUmFuZG9tLnJ1bGVib29rQWZ0ZXJQbGFjZVJvb20uYWRkUnVsZShuZXcgUnVsZSh7XHJcbiAgICBuYW1lIDogXCJBZnRlciBwbGFjaW5nIHRoZSBzb3V0aGVzdCByb29tXCIsXHJcbiAgICBjb2RlIDogcnVubmVyID0+IHtcclxuICAgICAgICBsZXQgb3B0aW9ucyA9IDxSYW5kb21pemluZ1Jvb21PcHRpb25zPiBydW5uZXIubm91bjtcclxuICAgICAgICBsZXQgbXlDb29yZGluYXRlcyA9IG9wdGlvbnMubWFwLmdldENvb3JkaW5hdGVzKG9wdGlvbnMucm9vbSk7XHJcbiAgICAgICAgaWYgKG15Q29vcmRpbmF0ZXMgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgUm9vbS5ESVJFQ1RJT05TLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGlyZWN0aW9uID0gUm9vbS5ESVJFQ1RJT05TW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiAhPSBEaXJlY3Rpb24uTk9SVEgpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29vcmRpbmF0ZXMgPSBSb29tLnNoaWZ0KG15Q29vcmRpbmF0ZXMsIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5tYXAuYmxvY2soY29vcmRpbmF0ZXNbMF0sIGNvb3JkaW5hdGVzWzFdKTtcclxuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlcyA9IFJvb20uc2hpZnQoY29vcmRpbmF0ZXMsIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5tYXAuYmxvY2soY29vcmRpbmF0ZXNbMF0sIGNvb3JkaW5hdGVzWzFdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjb25kaXRpb25zIDogcnVubmVyID0+IHtcclxuICAgICAgICByZXR1cm4gcnVubmVyLm5vdW4ucm9vbSA9PSBzb3V0aGVzdFJvb207XHJcbiAgICB9XHJcbn0pKVxyXG5cclxuVGhpbmcuQ2FycnlSZWxhdGlvbi5zZXRSZWxhdGlvbihXb3JsZFN0YXRlLnBsYXllciwgbWFwT2ZUZXN0KTtcclxuXHJcbi8vIFNldHRpbmdzLnNldERlYnVnKGZhbHNlKTtcclxuUGxheUJlZ2lucy5ydWxlYm9vay5hZGRSdWxlKG5ldyBSdWxlKHtcclxuICAgIG5hbWUgOiBcInJhbmRvbWl6ZSByZWdpb25cIixcclxuICAgIGZpcnN0UHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0hJR0hFU1QsXHJcbiAgICBjb2RlIDogYXN5bmMgcnVubmVyID0+IHtcclxuICAgICAgICAvL2xldCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpO1xyXG4gICAgICAgIGF3YWl0IHJlZ2lvbi5yYW5kb21pemUoKTtcclxuICAgICAgICAvL2xldCB0MSA9IHBlcmZvcm1hbmNlLm5vdygpO1xyXG4gICAgfVxyXG59KSk7XHJcblxyXG5SZWdpb25SYW5kb20ucnVsZWJvb2tSYW5kb21pemVSZWdpb24uYWRkUnVsZShuZXcgUnVsZSh7XHJcbiAgICBuYW1lIDogXCJBZGQgcm9vbSBBIGFuZCBCIHRvIHJlZ2lvblwiLFxyXG4gICAgZmlyc3RQcmlvcml0eSA6IFJ1bGUuUFJJT1JJVFlfSElHSEVTVCxcclxuICAgIGNvZGUgOiBhc3luYyBydW5uZXIgPT4ge1xyXG4gICAgICAgIGF3YWl0IFJlZ2lvblJhbmRvbS5ydWxlYm9va1BsYWNlUm9vbS5leGVjdXRlKHtcclxuICAgICAgICAgICAgbm91biA6IDxSYW5kb21pemluZ1Jvb21PcHRpb25zPiB7XHJcbiAgICAgICAgICAgICAgICBtYXAgOiByZWdpb24ubWFwLFxyXG4gICAgICAgICAgICAgICAgcm9vbSA6IHJvb21hLFxyXG4gICAgICAgICAgICAgICAgcmVnaW9uIDogcmVnaW9uXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KS50aGVuKCk7XHJcbiAgICAgICAgYXdhaXQgUmVnaW9uUmFuZG9tLnJ1bGVib29rUGxhY2VSb29tLmV4ZWN1dGUoe1xyXG4gICAgICAgICAgICBub3VuIDogPFJhbmRvbWl6aW5nUm9vbU9wdGlvbnM+IHtcclxuICAgICAgICAgICAgICAgIG1hcCA6IHJlZ2lvbi5tYXAsXHJcbiAgICAgICAgICAgICAgICByb29tIDogcm9vbWIsXHJcbiAgICAgICAgICAgICAgICByZWdpb24gOiByZWdpb25cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pLnRoZW4oKTtcclxuICAgIH0sXHJcbiAgICBjb25kaXRpb25zIDogcnVubmVyID0+IHtcclxuICAgICAgICByZXR1cm4gcnVubmVyLm5vdW4gPT0gcmVnaW9uO1xyXG4gICAgfVxyXG59KSk7XHJcblxyXG5mdW5jdGlvbiBnZXRQYXRoIChyb29tYSA6IFJvb20sIHJvb21iIDogUm9vbSkge1xyXG4gICAgY29uc29sZS5kZWJ1ZyhcIlRoZSBiZXN0IHBhdGggZnJvbSBcIiArIHJvb21hLmdldFByaW50ZWROYW1lKCkgKyBcIiB0byBcIiArIHJvb21iLmdldFByaW50ZWROYW1lKCkgKyBcIiBpczpcIik7XHJcbiAgICBsZXQgdDAsIGRpciwgdDE7XHJcbiAgICB0MCA9IHBlcmZvcm1hbmNlLm5vdygpO1xyXG4gICAgZGlyID0gcm9vbWEuYmVzdERpcmVjdGlvblRvKHJvb21iKTtcclxuICAgIHQxID0gcGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICBpZiAoZGlyICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNvbnNvbGUuZGVidWcoRGlyZWN0aW9uTmFtZXNbRGlyZWN0aW9uW2Rpcl1dKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5kZWJ1ZyhcIlRoZXJlIGlzIG5vIHBhdGguXCIpO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5kZWJ1ZyhcIkNhbGwgdG8gZG9Tb21ldGhpbmcgdG9vayBcIiArICh0MSAtIHQwKSArIFwiIG1pbGxpc2Vjb25kcy5cIik7XHJcbn1cclxuXHJcbi8vIGxldCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpO1xyXG4vLyBmb3IgKHZhciBpID0gMDsgaSA8IDE7IGkrKykge1xyXG4vLyAgICAgZ2V0UGF0aChyb29tYSwgcm9vbWopO1xyXG4vLyB9XHJcbi8vIHdpbmRvd1sncm9vbWUnXSA9IHJvb21lO1xyXG4vLyBsZXQgdDEgPSBwZXJmb3JtYW5jZS5ub3coKTtcclxuLy8gY29uc29sZS5kZWJ1ZyhcIlRvdGFsOiBcIiArICh0MSAtIHQwKSArIFwiIG1pbGxpc2Vjb25kcy5cIik7XHJcblxyXG5cclxubGV0IHdhbmRlclJlZ2lvbiA9IG5ldyBSZWdpb25SYW5kb20oXCJPcmNhYmxlUmVnaW9uXCIpO1xyXG53YW5kZXJSZWdpb24ucGxhY2Uocm9vbWEsIHJvb21iKTtcclxucmVnaW9uLnBsYWNlKHdhbmRlclJlZ2lvbik7XHJcblxyXG4vLyBUZXN0IGRvbmUgd2l0aCBhIHRob3VzYW5kIG9yY3Mgc2VhcmNoaW5nIHBhdGhzIGFuZCByZWFkaW5nIHJvb21zLiBUb3RhbCB0aW1lIHRha2VuOiAyMDBtcy5cclxuLy8gMTAwMCBvcmNzLCBubyB3YW5kZXJlcnM6IDEzMG1zXHJcbi8vIDEwMCBvcmNzLCBubyB3YW5kZXJlcjogMTNtcyAoc28gdGhlIHNhbWUgYW1vdW50IG9mIHRpbWUgYXMgbm90IGhhdmluZyBhbnkgb3JjcylcclxuLy8gMTAwIG9yY3MsIHdhbmRlcmVyOiAzMG1zXHJcbi8vIDEwMCBvcmNzLCBubyBzaGlueSBwaWNrZXIsIHdhbmRlcmVyOiAzMG1zXHJcbi8vIDEwMCBvcmNzLCBubyB3YW5kZXJlciwgbm8gc2hpbnkgcGlja2VyOiAxM21zXHJcbi8vIDEwMDAgb3Jjcywgbm8gd2FuZGVyZXIsIG5vIHNoaW55IHBpY2tlcjogNTFtc1xyXG4vKipcclxuICogQ29uY2x1c2lvbjpcclxuICogVGhlIHRlc3QgaGFkIGFsbCBvcmNzIHBsYWNlZCBpbiB0aGUgc2FtZSByb29tLCBzbyBldmVyeSB0aW1lIFNoaW55UGlja2VyIEFJIHJ1bnMsIGFsbCB0aGUgb3JjcyB3ZXJlIGxvb2tpbmcgYXQgYWxsIHRoZSBvdGhlciBvcmNzLlxyXG4gKiBHYW1lIGZlZWxzIFwiaW5zdGFudFwiIHVwIHRvIDEwMG1zIHR1cm5zLCB3aGljaCB3YXMgcmVhY2hlZCBhdCAyNTAgb3JjcyB3aXRoIEpVU1Qgb25lIFBJY2tzIFNoaW55IGFuZCBXYW5kZXJlciBydWxlcy5cclxuICogV2l0aCAxMDAgRU1QVFkgc2hpbnkgcnVsZXMsIDI1MCBvcmNzIGFscmVhZHkgdGFrZSB1cCA1MDBtcyBwZXIgdHVybiFcclxuICogSWYgdGhlIG9yY3MgZmFpbCB0aGUgY29uZGl0aW9ucyBmb3Igd2FuZGVyZXIgYW5kIHNoaW55IHJ1bGVzLCB0aGVuIHRoZXJlIGlzIGp1c3QgYSBzbWFsbCBvdmVyaGVhZCB0byBoYXZpbmcgdGhlc2UgcnVsZXMgdGhlcmUuXHJcbiAqIDEwMCBSdWxlcyBmYWlsaW5nIHRoZSBjb25kaXRpb25zIGFsbG93cyBmb3IgODAwIG9yY3MgYmVsb3cgMTAwbXMuXHJcbiAqIDUwIG9yY3Mgd2l0aCAxNTAgU2hpbnkgUnVsZXMgd2hpY2ggZ28gdGhyb3VnaCBhbGwgdGhlIG90aGVyIG9yY3Mgd2hpbGUgdGhleSB3YW5kZXIgdG93YXJkcyBhIHJlZ2lvbiByZXN1bHRzIGluIGEgMjUwbXMgd2FpdC5cclxuICogVGhhdCdzIG5vdCBnb29kIHNpbmNlIHRob3NlIG51bWJlcnMgYXJlIHNpbWlsYXIgdG8gd2hhdCBlbmQgZ2FtZSBzaG91bGQgaGF2ZSwgaG93ZXZlciByZWFsIHJ1bGVzIG1pZ2h0IG5vdCBiZSBhcyBleHBlbnNpdmUgYXMgUGljayBTaGluaWVzIHdpdGggYSByb29tIGZ1bGwgb2Ygb3Jjcy4uXHJcbiAqIFdhaXQgaXMgYmVhcmFibGUgZm9yIDEwMCBvcmNzIHdpdGggODAwIGRpc2FibGVkIHJ1bGVzLCBzbyBpdCBzaG91bGQgYmUgXCJmaW5lXCIgdG8gaGF2ZSBhbGwgcnVsZXMgaW4gdGhlIHNhbWUgcnVsZWJvb2suXHJcbiAqIEZpcnN0IHBvc3NpYmxlIG9wdGltaXphdGlvbjogbWFrZSBBSSBydWxlcyBoYXZlIGEgc3RhdGljIFwiY2hlY2tcIiBhbmQgYmFrZSB0aGVtIGludG8gZWFjaCBOUEMncyBydWxlYm9vayBzbyB0aGF0IHRoZXkgZG9uJ3QgaGF2ZSB0byBiZSBjaGVja2VkIGV2ZXJ5IHR1cm4uXHJcbiAqIFNlY29uZCBwb3NzaWJsZSBvcHRpbWl6YXRpb246IHVzZSBtYXhpbXVtIGRpc3RhbmNlIGZyb20gcGxheWVyIHRvIGRlY2lkZSB3aGljaCBOUENzIGhhdmUgdGhlaXIgQUlzIGV4ZWN1dGVkIChldmVuIGJldHRlcjogb25seSBydW4gQUkgZm9yIHRoZSBjdXJyZW50IHJlZ2lvbikuXHJcbiAqIFRoaXJkIG9wdGltaXphdGlvbjogcmVkdWNlIG51bWJlciBvZiBydWxlcy4gTGFzdCByZXNvcnQuXHJcbiAqL1xyXG5sZXQgcm9vbXMgPSByZWdpb24uZ2V0Um9vbXMoKTtcclxubGV0IHNodWZmbGVyID0gbmV3IFNodWZmbGVyKHJvb21zKTtcclxuZm9yIChsZXQgaSA9IDA7IGkgPCAwOyBpKyspIHtcclxuICAgIEFJLnJ1bGVzLmNyZWF0ZUFuZEFkZFJ1bGUoe1xyXG4gICAgICAgIG5hbWUgOiBcIlBpY2sgU2hpbmllc1wiLFxyXG4gICAgICAgIGZpcnN0UHJpb3JpdHkgOiBBSVJ1bGVzLlBSSU9SSVRZX0FDVElOR19PTl9QTEFDRSxcclxuICAgICAgICBjb25kaXRpb25zIDogKHJ1bm5lciA6IFJ1bGVib29rUnVubmVyPFBlcnNvbj4pID0+IHtcclxuICAgICAgICAgICAgbGV0IHBlcnNvbiA9IHJ1bm5lci5ub3VuO1xyXG4gICAgICAgICAgICByZXR1cm4gcGVyc29uLkFJLnBpY2tzU2hpbmllcztcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvZGUgOiAocnVubmVyIDogUnVsZWJvb2tSdW5uZXI8UGVyc29uPikgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcGVyc29uID0gcnVubmVyLm5vdW47XHJcbiAgICAgICAgICAgIGxldCByb29tID0gcGVyc29uLmdldFJvb20oKTtcclxuICAgICAgICAgICAgbGV0IHZpc2libGVUaGluZ3MgPSByb29tLmdldENvbnRhaW5lZEFuZFZpc2libGVUbyhwZXJzb24pO1xyXG5cclxuICAgICAgICAgICAgaWYgKHZpc2libGVUaGluZ3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aXNpYmxlVGhpbmdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF2aXNpYmxlVGhpbmdzW2ldLmZpeGVkSW5QbGFjZSAmJiB2aXNpYmxlVGhpbmdzW2ldLmdldFNoaW55KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBY3Rpb25UYWtlKHBlcnNvbiwgdmlzaWJsZVRoaW5nc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxubGV0IHJhbmRvbU9yYztcclxubGV0IHJhbmRvbU9yYzI7XHJcbmZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xyXG4gICAgbGV0IG9yYyA9IG5ldyBPcmNEZWJ1Z2dlcigpO1xyXG4gICAgcmFuZG9tT3JjID0gb3JjO1xyXG4gICAgaWYgKHJhbmRvbU9yYzIgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmFuZG9tT3JjMiA9IG9yYztcclxuICAgIH1cclxuICAgIG9yYy5BSS53YW5kZXJlciA9IHRydWU7XHJcbiAgICBvcmMuQUkucGlja3NTaGluaWVzID0gdHJ1ZTtcclxuICAgIG9yYy5BSS53YW5kZXJzT24gPSB3YW5kZXJSZWdpb247XHJcbiAgICBsZXQgcm9vbSA9IG5ldyBTaHVmZmxlcihyZWdpb24uZ2V0Um9vbXMoKSkuZ2V0T25lKCk7XHJcbiAgICByb29tLnBsYWNlKG9yYyk7XHJcbn1cclxuXHJcbnZhciBmVGFyZ2V0ID0gbmV3IENvbnRlbnRHcm91cCgpO1xyXG5mVGFyZ2V0LmFkZFVuaXQoXHJcbiAgICBuZXcgRnVja2luZ1VuaXQoKVxyXG4gICAgICAgIC5zZXRGdWNrZWQoV29ybGRTdGF0ZS5wbGF5ZXIpXHJcbiAgICAgICAgLnNldEZ1Y2tlcihyYW5kb21PcmMpXHJcbiAgICAgICAgLnNldEhvbGUoV29ybGRTdGF0ZS5wbGF5ZXIuZ2V0UGFydChIdW1hbm9pZFZhZ2luYSkpXHJcbiAgICAgICAgLnNldFN0aWNrKHJhbmRvbU9yYy5nZXRQYXJ0KEh1bWFub2lkUGVuaXMpKVxyXG4pO1xyXG5mVGFyZ2V0LmFkZFVuaXQoXHJcbiAgICBuZXcgRnVja2luZ1VuaXQoKVxyXG4gICAgICAgIC5zZXRGdWNrZWQoV29ybGRTdGF0ZS5wbGF5ZXIpXHJcbiAgICAgICAgLnNldEZ1Y2tlcihyYW5kb21PcmMyKVxyXG4gICAgICAgIC5zZXRIb2xlKFdvcmxkU3RhdGUucGxheWVyLmdldFBhcnQoSHVtYW5vaWRIZWFkKSlcclxuICAgICAgICAuc2V0U3RpY2socmFuZG9tT3JjMi5nZXRQYXJ0KEh1bWFub2lkUGVuaXMpKVxyXG4pO1xyXG5cclxubGV0IHNwaXRyb2FzdCA9IChuZXcgRnVja2luZ0Rlc2NyaXB0aW9uKFwiT3JjIHNwaXRyb2FzdCFcIikpO1xyXG5zcGl0cm9hc3Quc2V0RGVzY3JpcHRpb24obmV3IFNheShcIk9yYyBTcGl0cm9hc3QhXCIpKVxyXG4gICAgLmFkZFVuaXQoKVxyXG4gICAgLnNldEZ1Y2tlcihPcmNEZWJ1Z2dlcilcclxuICAgIC5zZXRIb2xlKEh1bWFub2lkVmFnaW5hKVxyXG4gICAgLnNldFN0aWNrKEh1bWFub2lkUGVuaXMpO1xyXG5zcGl0cm9hc3QuYWRkVW5pdCgpXHJcbiAgICAuc2V0RnVja2VyKE9yY0RlYnVnZ2VyKVxyXG4gICAgLnNldEhvbGUoSHVtYW5vaWRIZWFkKVxyXG4gICAgLnNldFN0aWNrKEh1bWFub2lkUGVuaXMpO1xyXG5cclxuKG5ldyBGdWNraW5nRGVzY3JpcHRpb24oXCJTcGVjaWZpYyBPcmMgaW4gVmFnaW5hXCIpKVxyXG4gICAgLnNldERlc2NyaXB0aW9uKG5ldyBTYXkoXCJTcGVjaWZpYyBPcmMgaW4gVmFnaW5hLlwiKSlcclxuICAgIC5hZGRVbml0KClcclxuICAgIC5zZXRGdWNrZXIocmFuZG9tT3JjKVxyXG4gICAgLnNldEhvbGUoV29ybGRTdGF0ZS5wbGF5ZXIuZ2V0UGFydChIdW1hbm9pZFZhZ2luYSkpXHJcbiAgICAuc2V0U3RpY2socmFuZG9tT3JjLmdldFBhcnQoSHVtYW5vaWRQZW5pcykpO1xyXG5cclxuKG5ldyBGdWNraW5nRGVzY3JpcHRpb24oXCJTcGVjaWZpYyBPcmMgU3RhcnRzIEN1bW1pbmcgaW4gVmFnaW5hXCIpKVxyXG4gICAgLnNldERlc2NyaXB0aW9uKG5ldyBTYXkoXCJTcGVjaWZpYyBPcmMgU3RhcnRzIEN1bW1pbmcgaW4gVmFnaW5hXCIpKVxyXG4gICAgLmFkZFVuaXQoKVxyXG4gICAgLnNldEZ1Y2tlcihyYW5kb21PcmMpXHJcbiAgICAuc2V0SG9sZShXb3JsZFN0YXRlLnBsYXllci5nZXRQYXJ0KEh1bWFub2lkVmFnaW5hKSlcclxuICAgIC5hZGRNYXJrZXIoRnVja2luZ1N0YXRlLkNVTV9TVEFSVClcclxuICAgIC5zZXRTdGljayhyYW5kb21PcmMuZ2V0UGFydChIdW1hbm9pZFBlbmlzKSk7XHJcblxyXG4obmV3IEZ1Y2tpbmdEZXNjcmlwdGlvbihcIk9yYyBpbiBtb3V0aFwiKSlcclxuICAgIC5zZXREZXNjcmlwdGlvbihuZXcgU2F5KFwiT3JjIGluIG1vdXRoLlwiKSlcclxuICAgIC5hZGRVbml0KClcclxuICAgIC5zZXRGdWNrZXIoT3JjRGVidWdnZXIpXHJcbiAgICAuc2V0SG9sZShIdW1hbm9pZEhlYWQpXHJcbiAgICAuc2V0U3RpY2soSHVtYW5vaWRQZW5pcyk7IiwiLy8gRmlsZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYnkgY3VzdG9tIERpYWxvZ2dlciBvbiA1LzIwLzIwMTgsIDQ6NTM6NTIgUE1cclxuLy8gRG8gbm90IHRhbXBlciB3aXRoIHRoaXMgZmlsZS5cclxuLy8gSXQgd2lsbCBiZSByZXBsYWNlZCBhdXRvbWF0aWNhbGx5IGJ5IERpYWxvZ2dlciBhbmQgYWxsIGNoYW5nZXMgd2lsbCBiZSBsb3N0LlxyXG4vLyBJbnN0ZWFkIGNoYW5nZSBDcmVhdGlvbkludHJvLmRsLlxyXG5tb2R1bGUgRGlhbG9ndWVUcmVlcyB7XHJcblx0ZXhwb3J0IGxldCBDcmVhdGlvbkludHJvID0gKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgdHJlZSA6IERpYWxvZ3VlVHJlZSA9IG5ldyBEaWFsb2d1ZVRyZWUoXCJDcmVhdGlvbkludHJvXCIpO1xyXG4gICAgICAgIGxldCBub2RlIDogRGlhbG9ndWVOb2RlO1xyXG4gICAgICAgIGxldCB0ZXh0IDogRGlhbG9ndWVUZXh0O1xyXG4gICAgICAgIGxldCBzZXQgOiBEaWFsb2d1ZVNldDtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBub2RlID0gbmV3IERpYWxvZ3VlTm9kZShcImFlOTgxMzIyLTkxNTEtNDljOC1hODg5LTk0NDU1ZGI3YzI2MlwiKTtcclxuICAgICAgICBub2RlLnNldE5leHQoXCI4MTU4MmRlYS1iYTI3LTRiYWEtOGRmMi1hNzdmYmI1ZWQ5ZWZcIik7XHJcbiAgICAgICAgdHJlZS5hZGRTdGFydE5vZGUobm9kZSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgdGV4dCA9IG5ldyBEaWFsb2d1ZVRleHQoXCJmNzJiZjA5OS1iYWUyLTQ5ZGYtOTQzMy1jOWMzZWM2YTAyMGRcIik7XHJcbiAgICAgICAgdGV4dC5zZXRTYXkoKCkgPT4geyByZXR1cm4gbmV3IFNheShcIkFzIHlvdSBhcHByb2FjaCB0aGUgT2JlbGlzaywgbWFueSBkcmVhbXMgYW5kIG5pZ2h0bWFyZXMgd2lsbCBiZWNvbWUgcmVhbGl0eSBhcyBpdCBhdHRlbXB0cyB0byBkaXNzdWFkZSB5b3UgZnJvbSBnZXR0aW5nIHRvbyBjbG9zZSwgd2l0aCB0aGUgaW50ZW5zaXR5IGluY3JlYXNpbmcgdGhlIGNsb3NlciB5b3UgZ2V0IHRvIHlvdXIgb2JqZWN0aXZlLlwiLCBTYXkuUEFSQUdSQVBIX0JSRUFLLCBcIlVsdGltYXRlbHksIHRoZSBPYmVsaXNrIHdpc2hlcyB5b3Ugbm8gaGFybSwgZm9yIGl0IGlzIGJldHRlciB0byBoYXZlIHlvdSBhcm91bmQgYXMgYSBwcm90ZWN0b3IgdGhhbiBhcyBhIGRlYWQgZW5lbXksIHNvIHRoZSBPYmVsaXNrIHdpbGwgYXR0ZW1wdCB0byBnaXZlIHlvdSBleGFjdGx5IHdoYXQgeW91IHdhbnQgZGVlcCBpbiB5b3VyIGhlYXJ0LCB0cnlpbmcgdG8gbWFrZSB5b3UgY29tcGxldGVseSBzYXRpc2ZpZWQgc28gdGhhdCB5b3Ugbm8gbG9uZ2VyIHdpc2ggZm9yIHRoZSBPYmVsaXNrJ3MgZGVzdHJ1Y3Rpb24gb3IgYmVjb21lIHVuYWJsZSB0byBjb250aW51ZSB5b3VyIHF1ZXN0LiBPZiBjb3Vyc2UsIHdoYXQgeW91ciBoZWFydCB3YW50cyBpcyBub3QgbmVjZXNzYXJpbHkgd2hhdCB5b3UgdGhpbmsgaXQgd2FudHMuXCIsIFNheS5QQVJBR1JBUEhfQlJFQUssIFwiT3JjcywgdGhlIG1vc3QgY29tbW9uIGNyZWF0dXJlIHRvIGNvbWUgb3V0IG9mIHRoZSBPYmVsaXNrLCBhcmUgbm90aGluZyBtb3JlIHRoYW4gaHVtYW5zIHdhcnBlZCBieSB0aGVpciBvd24gZGVzaXJlIGZvciB1bmJyaWRsZWQgdmlvbGVuY2UuIFdoYXQgd2lsbCB0aGUgT2JlbGlzayBkbyB0byB5b3U/XCIsIFNheS5QQVJBR1JBUEhfQlJFQUssIFwiT24gdGhlIGZvbGxvd2luZyBzY3JlZW5zLCB5b3Ugd2lsbCBkZWZpbmUgd2hvIHlvdSB3aWxsIGJlIGluIHRoaXMgc3RvcnkuIFBsZWFzZSBjb25maXJtIGNhcmVmdWxseSwgYXMgdGhlcmUgaXMgbm8gdHVybmluZyBiYWNrLlwiKTt9KTtcclxuICAgICAgICB0ZXh0LnNldE5leHQoXCI2NmQ0YjI3YS1mZjQwLTRhOGUtYTc0OS0yYjVlODIzNzY5NWFcIik7XHJcbiAgICAgICAgdHJlZS5hZGROb2RlKHRleHQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIHNldCA9IG5ldyBEaWFsb2d1ZVNldChcIjgxNTgyZGVhLWJhMjctNGJhYS04ZGYyLWE3N2ZiYjVlZDllZlwiKTtcclxuICAgICAgICBzZXQuc2V0RnVuY3Rpb24oKCkgPT4ge0VsZW1lbnRzLnN0YXJ0TWVudSgpO30pO1xyXG4gICAgICAgIHNldC5zZXROZXh0KFwiZjcyYmYwOTktYmFlMi00OWRmLTk0MzMtYzljM2VjNmEwMjBkXCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZShzZXQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIHNldCA9IG5ldyBEaWFsb2d1ZVNldChcIjBiNGZlYzg3LWEyYjAtNGUzYi04MWVkLWE0MTUwZjk0ZmMxMFwiKTtcclxuICAgICAgICBzZXQuc2V0RnVuY3Rpb24oKCkgPT4ge0VsZW1lbnRzLmVuZE1lbnUoKTt9KTtcclxuICAgICAgICB0cmVlLmFkZE5vZGUoc2V0KTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBzZXQgPSBuZXcgRGlhbG9ndWVTZXQoXCI2NmQ0YjI3YS1mZjQwLTRhOGUtYTc0OS0yYjVlODIzNzY5NWFcIik7XHJcbiAgICAgICAgc2V0LnNldEZ1bmN0aW9uKCgpID0+IHtyZXR1cm4gRWxlbWVudHMud2FpdEZvckFueUtleSgpO30pO1xyXG4gICAgICAgIHNldC5zZXROZXh0KFwiMGI0ZmVjODctYTJiMC00ZTNiLTgxZWQtYTQxNTBmOTRmYzEwXCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZShzZXQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0cmVlO1xyXG4gICAgfSkoKTtcclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJEaWFsb2d1ZS9DcmVhdGlvbkludHJvLmRsLnRzXCIgLz5cclxubW9kdWxlIENoYXJhY3RlckNyZWF0aW9uIHtcclxuICAgIGV4cG9ydCBsZXQgQ3JlYXRpb25JbnRybyA9IENoYXJhY3RlckNyZWF0aW9uLnJ1bGVib29rLmNyZWF0ZUFuZEFkZFJ1bGUoe1xyXG4gICAgICAgIG5hbWUgOiBcIlNob3cgc21hbGwgSW50cm9cIixcclxuICAgICAgICBmaXJzdFByaW9yaXR5IDogUnVsZS5QUklPUklUWV9ISUdIRVNULFxyXG4gICAgICAgIHByaW9yaXR5OiBSdWxlLlBSSU9SSVRZX0hJR0hFU1QsXHJcbiAgICAgICAgY29kZSA6IGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgYXdhaXQgRGlhbG9ndWVUcmVlcy5DcmVhdGlvbkludHJvLmV4ZWN1dGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufSIsIm1vZHVsZSBDaGFyYWN0ZXJDcmVhdGlvbiB7XHJcbiAgICBsZXQgY2NEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgY2NEaXYuaWQgPSBcImNoYXJhY3RlckNyZWF0aW9uXCI7XHJcbiAgICBsZXQgcmlnaHRTaWRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgIHJpZ2h0U2lkZS5pZCA9IFwiY2NSaWdodFwiO1xyXG4gICAgbGV0IGxlZnRTaWRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgIGxlZnRTaWRlLmlkID0gXCJjY0xlZnRcIjtcclxuICAgIGNjRGl2LmFwcGVuZENoaWxkKGxlZnRTaWRlKTtcclxuICAgIGNjRGl2LmFwcGVuZENoaWxkKHJpZ2h0U2lkZSk7XHJcblxyXG4gICAgbGV0IHJlc29sdmVyO1xyXG5cclxuICAgIGFzeW5jIGZ1bmN0aW9uIHByaW50VGFibGUgKCkge1xyXG4gICAgICAgIHByaW50T3JpZ2luKCk7XHJcblxyXG4gICAgICAgIHdoaWxlIChsZWZ0U2lkZS5maXJzdENoaWxkKSBsZWZ0U2lkZS5yZW1vdmVDaGlsZChsZWZ0U2lkZS5maXJzdENoaWxkKTtcclxuXHJcbiAgICAgICAgYXdhaXQgKG5ldyBTYXkobmV3IFNheUJvbGQoXCJDaGFyYWN0ZXIgT3JpZ2luOlwiKSkuZ2V0SFRNTENvbnRlbnQoKS50aGVuKGVsZXMgPT4ge1xyXG4gICAgICAgICAgICBlbGVzLmZvckVhY2goZWxlID0+IHtcclxuICAgICAgICAgICAgICAgIGxlZnRTaWRlLmFwcGVuZENoaWxkKGVsZSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICBsZXQgb3JpZ2lucyA9IENoYXJhY3Rlck9yaWdpbi5nZXRPcmlnaW5zKCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcmlnaW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBvcmlnaW4gPSBvcmlnaW5zW2ldO1xyXG4gICAgICAgICAgICBsZXQgc2F5ID0gbmV3IFNheShvcmlnaW4ubmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChvcmlnaW4uaWQgPT0gQ2hhcmFjdGVyQ3JlYXRpb24uUGxheWVyT3JpZ2luLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBzYXkuYWRkKFwiIC0gU0VMRUNURURcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYXdhaXQgKHNheSkuZ2V0SFRNTChcInBcIiwgW1wiY2hvaWNlXCJdKS50aGVuKGVsZW1lbnRBcnJheSA9PiB7XHJcbiAgICAgICAgICAgICAgICBDb250cm9scy5MaW5rcy5tYWtlQ3VzdG9tTGluayhlbGVtZW50QXJyYXlbMF0sIHtcclxuICAgICAgICAgICAgICAgICAgICBtb3VzZW92ZXI6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRPcmlnaW4ob3JpZ2luKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdXNlb3V0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50T3JpZ2luKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBjbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJDcmVhdGlvbi5QbGF5ZXJPcmlnaW4udmFsdWUgPSBvcmlnaW4uaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBDb250cm9scy5LZXlIYW5kbGVyLmFwcGx5Q29kZShlbGVtZW50QXJyYXlbMF0sIENvbnRyb2xzLktleUhhbmRsZXIuZ2V0U2Vjb25kS2V5Q29kZSgpKTtcclxuICAgICAgICAgICAgICAgIGxlZnRTaWRlLmFwcGVuZENoaWxkKGVsZW1lbnRBcnJheVswXSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBwcmludENvbmZpcm0gKCkge1xyXG4gICAgICAgIChuZXcgU2F5KFwiQ29uZmlybVwiKSkuZ2V0SFRNTChcInBcIiwgW1wiY2hvaWNlXCJdKS50aGVuKGVsZW1lbnRBcnJheSA9PiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnRBcnJheVswXS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZXIoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIENvbnRyb2xzLktleUhhbmRsZXIuYXBwbHlDb2RlKGVsZW1lbnRBcnJheVswXSwgQ29udHJvbHMuS2V5SGFuZGxlci5nZXRTZWNvbmRLZXlDb2RlKCkpO1xyXG4gICAgICAgICAgICBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIucHJpbnQoZWxlbWVudEFycmF5WzBdKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBwcmludE9yaWdpbiAob3JpZ2luPyA6IENoYXJhY3Rlck9yaWdpbikge1xyXG4gICAgICAgIGlmIChvcmlnaW4gPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIG9yaWdpbiA9IENoYXJhY3Rlck9yaWdpbi5nZXRPcmlnaW4oQ2hhcmFjdGVyQ3JlYXRpb24uUGxheWVyT3JpZ2luLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHNheSA9IG5ldyBTYXkob3JpZ2luLmRlc2NyaXB0aW9uKTtcclxuICAgICAgICBpZiAob3JpZ2luLmJvbnVzU3RhdHMgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHNheS5hZGQoU2F5LlBBUkFHUkFQSF9CUkVBSywgb3JpZ2luLmJvbnVzU3RhdHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzYXkuZ2V0SFRNTENvbnRlbnQoKS50aGVuKChlbGVzID0+IHtcclxuICAgICAgICAgICAgd2hpbGUgKHJpZ2h0U2lkZS5maXJzdENoaWxkKSByaWdodFNpZGUucmVtb3ZlQ2hpbGQocmlnaHRTaWRlLmZpcnN0Q2hpbGQpO1xyXG5cclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICByaWdodFNpZGUuYXBwZW5kQ2hpbGQoZWxlc1tpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gcmVzZXQgKCkge1xyXG4gICAgICAgIEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlci5jbGVhcigpO1xyXG4gICAgICAgIEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlci5wcmludChjY0Rpdik7XHJcbiAgICAgICAgcHJpbnRUYWJsZSgpO1xyXG4gICAgICAgIEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlci5wcmludChkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYnJcIikpO1xyXG4gICAgICAgIEVsZW1lbnRzLkN1cnJlbnRUdXJuSGFuZGxlci5wcmludChkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYnJcIikpO1xyXG4gICAgICAgIHByaW50Q29uZmlybSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBsZXQgQ0NPcmlnaW4gPSBDaGFyYWN0ZXJDcmVhdGlvbi5ydWxlYm9vay5jcmVhdGVBbmRBZGRSdWxlKHtcclxuICAgICAgICBuYW1lOiBcIkNoYXJhY3RlciBDcmVhdGlvbiAtIE9yaWdpblwiLFxyXG4gICAgICAgIGZpcnN0UHJpb3JpdHk6IFJ1bGUuUFJJT1JJVFlfTUVESVVNLFxyXG4gICAgICAgIHByaW9yaXR5OiBSdWxlLlBSSU9SSVRZX0hJR0gsXHJcbiAgICAgICAgY29kZTogYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICBFbGVtZW50cy5zdGFydE1lbnUoKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBwcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlciA9IHJlc29sdmU7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgcmVzZXQoKTtcclxuXHJcbiAgICAgICAgICAgIGF3YWl0IHByb21pc2U7XHJcblxyXG4gICAgICAgICAgICBDaGFyYWN0ZXJDcmVhdGlvbi5nZXRPcmlnaW4oKS5jb25maXJtUGlja2VkKCk7XHJcblxyXG4gICAgICAgICAgICBFbGVtZW50cy5lbmRNZW51KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn0iLCJtb2R1bGUgQ2hhcmFjdGVyQ3JlYXRpb24ge1xyXG4gICAgbGV0IGNjRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgIGNjRGl2LmlkID0gXCJjaGFyYWN0ZXJDcmVhdGlvblwiO1xyXG4gICAgbGV0IHJpZ2h0U2lkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICByaWdodFNpZGUuaWQgPSBcImNjUmlnaHRcIjtcclxuICAgIGxldCBsZWZ0U2lkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICBsZWZ0U2lkZS5pZCA9IFwiY2NMZWZ0XCI7XHJcbiAgICBjY0Rpdi5hcHBlbmRDaGlsZChsZWZ0U2lkZSk7XHJcbiAgICBjY0Rpdi5hcHBlbmRDaGlsZChyaWdodFNpZGUpO1xyXG5cclxuICAgIGxldCByZXNvbHZlcjtcclxuXHJcbiAgICBhc3luYyBmdW5jdGlvbiBwcmludFRhYmxlICgpIHtcclxuICAgICAgICB3aGlsZSAobGVmdFNpZGUuZmlyc3RDaGlsZCkgbGVmdFNpZGUucmVtb3ZlQ2hpbGQobGVmdFNpZGUuZmlyc3RDaGlsZCk7XHJcblxyXG4gICAgICAgIGF3YWl0IChuZXcgU2F5KG5ldyBTYXlCb2xkKFwiUGVya3MgKENob29zZSBhbnkpOlwiKSkuZ2V0SFRNTENvbnRlbnQoKS50aGVuKGVsZXMgPT4ge1xyXG4gICAgICAgICAgICBlbGVzLmZvckVhY2goZWxlID0+IHtcclxuICAgICAgICAgICAgICAgIGxlZnRTaWRlLmFwcGVuZENoaWxkKGVsZSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICBsZXQgcGVya3MgPSBQZXJrLmdldFBlcmtzKCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwZXJrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgcGVyayA9IHBlcmtzW2ldO1xyXG4gICAgICAgICAgICBsZXQgc2F5ID0gbmV3IFNheShwZXJrLm5hbWUpO1xyXG4gICAgICAgICAgICBpZiAocGVyay5pc0VuYWJsZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBlcmsuaXNGb3JjZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNheS5hZGQgKFwiIChNYW5kYXRvcnkpXCIpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzYXkuYWRkKFwiIC0gU2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGVyay5pc0ZvcmNlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICBzYXkuYWRkKFwiIChGb3JiaWRkZW4pXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGF3YWl0IChzYXkpLmdldEhUTUwoXCJwXCIsIFtcImNob2ljZVwiXSkudGhlbihlbGVtZW50QXJyYXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgQ29udHJvbHMuTGlua3MubWFrZUN1c3RvbUxpbmsoZWxlbWVudEFycmF5WzBdLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbW91c2VvdmVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50UGVyayhwZXJrKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdXNlb3V0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5UGVyaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgY2xpY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwZXJrLmlzRm9yY2VkKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmsudmFsdWUgPSAhcGVyay52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgQ29udHJvbHMuS2V5SGFuZGxlci5hcHBseUNvZGUoZWxlbWVudEFycmF5WzBdLCBDb250cm9scy5LZXlIYW5kbGVyLmdldFNlY29uZEtleUNvZGUoKSk7XHJcbiAgICAgICAgICAgICAgICBsZWZ0U2lkZS5hcHBlbmRDaGlsZChlbGVtZW50QXJyYXlbMF0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gcHJpbnRDb25maXJtICgpIHtcclxuICAgICAgICAobmV3IFNheShcIkNvbmZpcm1cIikpLmdldEhUTUwoXCJwXCIsIFtcImNob2ljZVwiXSkudGhlbihlbGVtZW50QXJyYXkgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50QXJyYXlbMF0uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmVyKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBDb250cm9scy5LZXlIYW5kbGVyLmFwcGx5Q29kZShlbGVtZW50QXJyYXlbMF0sIENvbnRyb2xzLktleUhhbmRsZXIuZ2V0U2Vjb25kS2V5Q29kZSgpKTtcclxuICAgICAgICAgICAgRWxlbWVudHMuQ3VycmVudFR1cm5IYW5kbGVyLnByaW50KGVsZW1lbnRBcnJheVswXSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZW1wdHlQZXJrICgpIHtcclxuICAgICAgICB3aGlsZSAocmlnaHRTaWRlLmZpcnN0Q2hpbGQpIHJpZ2h0U2lkZS5yZW1vdmVDaGlsZChyaWdodFNpZGUuZmlyc3RDaGlsZCk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gcHJpbnRQZXJrIChwZXJrIDogUGVyaykge1xyXG4gICAgICAgIGxldCBzYXkgPSBuZXcgU2F5KHBlcmsuZGVzY3JpcHRpb24pO1xyXG4gICAgICAgIHNheS5nZXRIVE1MQ29udGVudCgpLnRoZW4oKGVsZXMgPT4ge1xyXG4gICAgICAgICAgICBlbXB0eVBlcmsoKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICByaWdodFNpZGUuYXBwZW5kQ2hpbGQoZWxlc1tpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gcmVzZXQgKCkge1xyXG4gICAgICAgIFBlcmsudXBkYXRlUGVya3MoKTtcclxuICAgICAgICBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIuY2xlYXIoKTtcclxuICAgICAgICBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIucHJpbnQoY2NEaXYpO1xyXG4gICAgICAgIHByaW50VGFibGUoKTtcclxuICAgICAgICBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIucHJpbnQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJyXCIpKTtcclxuICAgICAgICBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIucHJpbnQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJyXCIpKTtcclxuICAgICAgICBwcmludENvbmZpcm0oKTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgbGV0IENDUGVyayA9IENoYXJhY3RlckNyZWF0aW9uLnJ1bGVib29rLmNyZWF0ZUFuZEFkZFJ1bGUoe1xyXG4gICAgICAgIG5hbWU6IFwiQ2hhcmFjdGVyIENyZWF0aW9uIC0gT3JpZ2luXCIsXHJcbiAgICAgICAgZmlyc3RQcmlvcml0eTogUnVsZS5QUklPUklUWV9MT1csXHJcbiAgICAgICAgcHJpb3JpdHk6IFJ1bGUuUFJJT1JJVFlfSElHSCxcclxuICAgICAgICBjb2RlOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIEVsZW1lbnRzLnN0YXJ0TWVudSgpO1xyXG5cclxuICAgICAgICAgICAgbGV0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmVyID0gcmVzb2x2ZTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICByZXNldCgpO1xyXG5cclxuICAgICAgICAgICAgYXdhaXQgcHJvbWlzZTtcclxuXHJcbiAgICAgICAgICAgIGxldCBwZXJrcyA9IFBlcmsuZ2V0UGVya3MoKTtcclxuICAgICAgICAgICAgcGVya3MuZm9yRWFjaChwZXJrID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChwZXJrLmlzRW5hYmxlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGVyay5jb25maXJtUGlja2VkKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgRWxlbWVudHMuZW5kTWVudSgpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59IiwibW9kdWxlIENoYXJhY3RlckNyZWF0aW9uIHtcbiAgICBpbnRlcmZhY2UgcmFuZ2VPcHRpb25zIHtcbiAgICAgICAgbGFiZWw/IDogc3RyaW5nO1xuICAgICAgICBzaG93VmFsdWU/IDogYm9vbGVhbjtcbiAgICAgICAgb25DaGFuZ2UgOiAodmFsdWUgOiBudW1iZXIsIGxhYmVsVmFsdWUgOiBUZXh0LCBpbnB1dCA6IEhUTUxJbnB1dEVsZW1lbnQpID0+IHZvaWQ7XG4gICAgICAgIG1pblZhbHVlIDogbnVtYmVyO1xuICAgICAgICBtYXhWYWx1ZSA6IG51bWJlcjtcbiAgICAgICAgbGVmdExhYmVsPyA6IHN0cmluZztcbiAgICAgICAgcmlnaHRMYWJlbD8gOiBzdHJpbmc7XG4gICAgICAgIHRvcExhYmVsPyA6IHN0cmluZztcbiAgICAgICAgdmFsdWUgOiBudW1iZXI7XG4gICAgICAgIHN0ZXAgOiBudW1iZXI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlUmFuZ2UgKG9wdGlvbnMgOiByYW5nZU9wdGlvbnMpIHtcbiAgICAgICAgbGV0IHZhbHVlTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFN0cmluZyhvcHRpb25zLnZhbHVlKSk7XG5cbiAgICAgICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIGRpdi5jbGFzc0xpc3QuYWRkKFwiY2NPcHRpb25cIik7XG4gICAgICAgIGlmIChvcHRpb25zLnRvcExhYmVsICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbGV0IHRvcExhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICAgIHRvcExhYmVsLmNsYXNzTGlzdC5hZGQoXCJjY09wdGlvblRvcExhYmVsXCIpO1xuICAgICAgICAgICAgdG9wTGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUob3B0aW9ucy50b3BMYWJlbCArIFwiOlwiKSk7XG4gICAgICAgICAgICBkaXYuYXBwZW5kQ2hpbGQodG9wTGFiZWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgaWYgKG9wdGlvbnMuc2hvd1ZhbHVlICE9IGZhbHNlKSB7XG4gICAgICAgICAgICBsYWJlbC5jbGFzc0xpc3QuYWRkKFwicmFuZ2VWYWx1ZVwiKTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxhYmVsICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGxldCBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJcIik7XG4gICAgICAgICAgICAgICAgYi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShvcHRpb25zLmxhYmVsICsgXCI6IFwiKSk7XG4gICAgICAgICAgICAgICAgbGFiZWwuYXBwZW5kQ2hpbGQoYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYWJlbC5hcHBlbmRDaGlsZCh2YWx1ZU5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcbiAgICAgICAgaW5wdXQuY2xhc3NMaXN0LmFkZChcImNjUmFuZ2VcIik7XG4gICAgICAgIGlucHV0LnR5cGUgPSBcInJhbmdlXCI7XG4gICAgICAgIGlucHV0Lm1pbiA9IG9wdGlvbnMubWluVmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgaW5wdXQubWF4ID0gb3B0aW9ucy5tYXhWYWx1ZS50b1N0cmluZygpO1xuICAgICAgICBpbnB1dC5zdGVwID0gb3B0aW9ucy5zdGVwLnRvU3RyaW5nKCk7XG4gICAgICAgIGlucHV0LnZhbHVlID0gb3B0aW9ucy52YWx1ZS50b1N0cmluZygpO1xuXG4gICAgICAgIGxldCBvbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgICAgIHZhbHVlTm9kZS5ub2RlVmFsdWUgPSBpbnB1dC52YWx1ZTtcbiAgICAgICAgICAgIG9wdGlvbnMub25DaGFuZ2UoTnVtYmVyKGlucHV0LnZhbHVlKSwgdmFsdWVOb2RlLCBpbnB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIG9uQ2hhbmdlKTtcblxuICAgICAgICBsZXQgbGVmdEJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICBsZWZ0QnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJjY0J1dHRvblwiKTtcbiAgICAgICAgbGVmdEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICAgICAgaW5wdXQudmFsdWUgPSBTdHJpbmcoTnVtYmVyKGlucHV0LnZhbHVlKSAtIG9wdGlvbnMuc3RlcCk7XG4gICAgICAgICAgICBvbkNoYW5nZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgQ29udHJvbHMuS2V5SGFuZGxlci5hcHBseUNvZGUobGVmdEJ1dHRvbiwgQ29udHJvbHMuS2V5SGFuZGxlci5nZXRGaXJzdEtleUNvZGUoKSk7XG4gICAgICAgIGlmIChvcHRpb25zLmxlZnRMYWJlbCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxlZnRCdXR0b24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUob3B0aW9ucy5sZWZ0TGFiZWwpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByaWdodEJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICByaWdodEJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwiY2NCdXR0b25cIik7XG4gICAgICAgIHJpZ2h0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICBpbnB1dC52YWx1ZSA9IFN0cmluZyhOdW1iZXIoaW5wdXQudmFsdWUpICsgb3B0aW9ucy5zdGVwKTtcbiAgICAgICAgICAgIG9uQ2hhbmdlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBDb250cm9scy5LZXlIYW5kbGVyLmFwcGx5Q29kZShyaWdodEJ1dHRvbiwgQ29udHJvbHMuS2V5SGFuZGxlci5nZXRGaXJzdEtleUNvZGUoKSk7O1xuICAgICAgICBpZiAob3B0aW9ucy5yaWdodExhYmVsICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmlnaHRCdXR0b24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUob3B0aW9ucy5yaWdodExhYmVsKSk7XG4gICAgICAgIH1cblxuICAgICAgICBkaXYuYXBwZW5kQ2hpbGQobGVmdEJ1dHRvbik7XG4gICAgICAgIGRpdi5hcHBlbmRDaGlsZChpbnB1dCk7XG4gICAgICAgIGRpdi5hcHBlbmRDaGlsZChyaWdodEJ1dHRvbik7XG4gICAgICAgIGRpdi5hcHBlbmRDaGlsZChsYWJlbCk7XG5cbiAgICAgICAgb25DaGFuZ2UoKTtcblxuICAgICAgICByZXR1cm4gZGl2O1xuICAgIH1cblxuICAgIGV4cG9ydCBsZXQgQ0NTZXhTdGF0cyA9IENoYXJhY3RlckNyZWF0aW9uLnJ1bGVib29rLmNyZWF0ZUFuZEFkZFJ1bGUoe1xuICAgICAgICBuYW1lIDogXCJDaGFyYWN0ZXIgQ3JlYXRpb24gLSBTZXggYW5kIFN0YXRzXCIsXG4gICAgICAgIGZpcnN0UHJpb3JpdHkgOiBSdWxlLlBSSU9SSVRZX0hJR0gsXG4gICAgICAgIHByaW9yaXR5OiBSdWxlLlBSSU9SSVRZX0hJR0gsXG4gICAgICAgIGNvZGUgOiAoKSA9PiB7XG4gICAgICAgICAgICBFbGVtZW50cy5zdGFydE1lbnUoKTtcblxuICAgICAgICAgICAgbGV0IGNjRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICAgIGNjRGl2LmlkID0gXCJjaGFyYWN0ZXJDcmVhdGlvblwiO1xuXG4gICAgICAgICAgICBsZXQgY2NMZWZ0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICAgIGNjTGVmdC5pZCA9IFwiY2NMZWZ0XCI7XG4gICAgICAgICAgICBjY0Rpdi5hcHBlbmRDaGlsZChjY0xlZnQpO1xuXG4gICAgICAgICAgICBsZXQgY2NSaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgICAgICBjY1JpZ2h0LmlkID0gXCJjY1JpZ2h0XCI7XG4gICAgICAgICAgICBjY0Rpdi5hcHBlbmRDaGlsZChjY1JpZ2h0KTtcblxuICAgICAgICAgICAgbGV0IG9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIChuZXcgU2F5KFdvcmxkU3RhdGUucGxheWVyLmRlc2NyaXB0aW9uKSkuZ2V0SFRNTENvbnRlbnQoKS50aGVuKCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChjY1JpZ2h0LmZpcnN0Q2hpbGQpIGNjUmlnaHQucmVtb3ZlQ2hpbGQoY2NSaWdodC5maXJzdENoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCh2YWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2NSaWdodC5hcHBlbmRDaGlsZCh2YWwpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjY0xlZnQuYXBwZW5kQ2hpbGQoY3JlYXRlUmFuZ2Uoe1xuICAgICAgICAgICAgICAgIG1pblZhbHVlIDogMCwgbWF4VmFsdWUgOiAxLCBzdGVwOiAxLCB2YWx1ZSA6IDAsIGxlZnRMYWJlbCA6IFwiTWFsZVwiLCByaWdodExhYmVsIDogXCJGZW1hbGVcIiwgdG9wTGFiZWwgOiBcIlNleFwiLFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlIDogKHZhbHVlIDogbnVtYmVyLCBsYWJlbFZhbHVlIDogVGV4dCwgaW5wdXQgOiBIVE1MSW5wdXRFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsVmFsdWUubm9kZVZhbHVlID0gKHZhbHVlID09IDAgPyBcIk1hbGVcIiA6IFwiRmVtYWxlXCIpO1xuICAgICAgICAgICAgICAgICAgICAoPEh1bWFub2lkPiBXb3JsZFN0YXRlLnBsYXllcikucmVtb3ZlR2VuZGVyZWRQYXJ0cygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgKDxIdW1hbm9pZD4gV29ybGRTdGF0ZS5wbGF5ZXIpLmFkZE1hbGVQYXJ0cygpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgKDxIdW1hbm9pZD4gV29ybGRTdGF0ZS5wbGF5ZXIpLmFkZEZlbWFsZVBhcnRzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gU29tZSBzdGF0cyBiZWNvbWUgZGlmZmVyZW50IHdoZXRoZXIgdGUgcGxheWVyIGlzIG1hbGUgb3IgZmVtYWxlLCBzbyB3ZSBoYXZlIHRvIHVwZGF0ZSB0aGVtIGFsbC5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG90aGVySW5wdXRzID0gY2NEaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpbnB1dFwiKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvdGhlcklucHV0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG90aGVySW5wdXQgPSBvdGhlcklucHV0c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvdGhlcklucHV0ICE9IGlucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJJbnB1dC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChcImNoYW5nZVwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSk7XG5cblxuXG4gICAgICAgICAgICBjY0xlZnQuYXBwZW5kQ2hpbGQoY3JlYXRlUmFuZ2Uoe1xuICAgICAgICAgICAgICAgIG1pblZhbHVlIDogMCwgbWF4VmFsdWUgOiA0LCBzdGVwOiAxLCB2YWx1ZSA6IDIsIGxlZnRMYWJlbCA6IFwiTWFzY3VsaW5lXCIsIHJpZ2h0TGFiZWwgOiBcIkZlbWluaW5lXCIsIHRvcExhYmVsIDogXCJHZW5kZXJcIixcbiAgICAgICAgICAgICAgICBvbkNoYW5nZSA6ICh2YWx1ZSA6IG51bWJlciwgbGFiZWxWYWx1ZSA6IFRleHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5hbWVzID0gW1wiTWFzY3VsaW5lXCIsIFwiU29tZXdoYXQgbWFzY3VsaW5lXCIsIFwiQW5kcm9neW5vdXNcIiwgXCJTb21ld2hhdCBmZW1pbmluZVwiLCBcIkZlbWluaW5lXCJdO1xuICAgICAgICAgICAgICAgICAgICBsYWJlbFZhbHVlLm5vZGVWYWx1ZSA9IG5hbWVzW3ZhbHVlXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBsYXllciA9ICg8SHVtYW5vaWQ+IFdvcmxkU3RhdGUucGxheWVyKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGludGVuZGVkVmFsdWUgOiBudW1iZXI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwbGF5ZXIuaXNNYWxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZXMgPSBbMTAsIDI1LCA1MCwgNTUsIDYwXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGludGVuZGVkVmFsdWUgPSB2YWx1ZXNbdmFsdWVdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlcyA9IFszNSwgNDAsIDUwLCA2NSwgNzVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW5kZWRWYWx1ZSA9IHZhbHVlc1t2YWx1ZV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKDxIdW1hbm9pZD4gV29ybGRTdGF0ZS5wbGF5ZXIpLnNldEdlbmRlclZhbHVlKGludGVuZGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBXb3JsZFN0YXRlLnBsYXllci5zZXRTdGF0KEF0dHJpYnV0ZXMuR2VuZGVySWRlbnRpdHksIGludGVuZGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgbGV0IHN0YXRzSGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICAgIGNjTGVmdC5hcHBlbmRDaGlsZChzdGF0c0hlYWRlcik7XG4gICAgICAgICAgICBzdGF0c0hlYWRlci5jbGFzc0xpc3QuYWRkKFwiY2NIZWFkZXJcIik7XG4gICAgICAgICAgICBzdGF0c0hlYWRlci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlN0YXRzIChcIikpO1xuXG4gICAgICAgICAgICBsZXQgbWF4U3RhdHMgPSAxMjtcbiAgICAgICAgICAgIGxldCBzdGF0c1JlbWFpbmluZyA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiNCBwb2ludHMgcmVtYWluaW5nXCIpO1xuXG5cbiAgICAgICAgICAgIHN0YXRzSGVhZGVyLmFwcGVuZENoaWxkKHN0YXRzUmVtYWluaW5nKTtcbiAgICAgICAgICAgIHN0YXRzSGVhZGVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiKVwiKSk7XG5cbiAgICAgICAgICAgIGxldCBzZXRTdGF0ID0gKGF0dHIgOiBBdHRyaWJ1dGUsIHZhbHVlIDogbnVtYmVyLCBpbnB1dCA6IEhUTUxJbnB1dEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBwbGF5ZXIuc2V0U3RhdChhdHRyLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgbGV0IHJlbWFpbmluZyA9IG1heFN0YXRzXG4gICAgICAgICAgICAgICAgICAgIC0gcGxheWVyLmdldFN0YXQoQXR0cmlidXRlcy5TdHJlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgLSBwbGF5ZXIuZ2V0U3RhdChBdHRyaWJ1dGVzLkFnaWxpdHkpXG4gICAgICAgICAgICAgICAgICAgIC0gcGxheWVyLmdldFN0YXQoQXR0cmlidXRlcy5JbnRlbGxpZ2VuY2UpXG4gICAgICAgICAgICAgICAgICAgIC0gcGxheWVyLmdldFN0YXQoQXR0cmlidXRlcy5DaGFybSk7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVtYWluaW5nIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSArPSByZW1haW5pbmc7XG4gICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoXCJjaGFuZ2VcIikpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3RhdHNSZW1haW5pbmcubm9kZVZhbHVlID0gKHJlbWFpbmluZyA9PSAwID8gXCJEb25lXCIgOlxuICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgPiAxID8gcmVtYWluaW5nLnRvU3RyaW5nKCkgKyBcIiBwb2ludHMgcmVtYWluaW5nXCIgOlxuICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcudG9TdHJpbmcoKSArIFwiIHBvaW50IHJlbWFpbmluZ1wiKTtcbiAgICAgICAgICAgIH07XG5cblxuICAgICAgICAgICAgY2NMZWZ0LmFwcGVuZENoaWxkKGNyZWF0ZVJhbmdlKHtcbiAgICAgICAgICAgICAgICBtaW5WYWx1ZSA6IDEsIG1heFZhbHVlIDogNSwgc3RlcDogMSwgdmFsdWUgOiAyLCBsZWZ0TGFiZWwgOiBcIi1cIiwgcmlnaHRMYWJlbCA6IFwiK1wiLCB0b3BMYWJlbCA6IFwiU3RyZW5ndGhcIixcbiAgICAgICAgICAgICAgICBvbkNoYW5nZSA6ICh2YWx1ZSA6IG51bWJlciwgbGFiZWxWYWx1ZSA6IFRleHQsIGlucHV0IDogSFRNTElucHV0RWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXRTdGF0KEF0dHJpYnV0ZXMuU3RyZW5ndGgsIHZhbHVlLCBpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICBjY0xlZnQuYXBwZW5kQ2hpbGQoY3JlYXRlUmFuZ2Uoe1xuICAgICAgICAgICAgICAgIG1pblZhbHVlIDogMSwgbWF4VmFsdWUgOiA1LCBzdGVwOiAxLCB2YWx1ZSA6IDIsIGxlZnRMYWJlbCA6IFwiLVwiLCByaWdodExhYmVsIDogXCIrXCIsIHRvcExhYmVsIDogXCJBZ2lsaXR5XCIsXG4gICAgICAgICAgICAgICAgb25DaGFuZ2UgOiAodmFsdWUgOiBudW1iZXIsIGxhYmVsVmFsdWUgOiBUZXh0LCBpbnB1dCA6IEhUTUxJbnB1dEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0U3RhdChBdHRyaWJ1dGVzLkFnaWxpdHksIHZhbHVlLCBpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICBjY0xlZnQuYXBwZW5kQ2hpbGQoY3JlYXRlUmFuZ2Uoe1xuICAgICAgICAgICAgICAgIG1pblZhbHVlIDogMSwgbWF4VmFsdWUgOiA1LCBzdGVwOiAxLCB2YWx1ZSA6IDIsIGxlZnRMYWJlbCA6IFwiLVwiLCByaWdodExhYmVsIDogXCIrXCIsIHRvcExhYmVsIDogXCJDaGFybVwiLFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlIDogKHZhbHVlIDogbnVtYmVyLCBsYWJlbFZhbHVlIDogVGV4dCwgaW5wdXQgOiBIVE1MSW5wdXRFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNldFN0YXQoQXR0cmlidXRlcy5DaGFybSwgdmFsdWUsIGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgIGNjTGVmdC5hcHBlbmRDaGlsZChjcmVhdGVSYW5nZSh7XG4gICAgICAgICAgICAgICAgbWluVmFsdWUgOiAxLCBtYXhWYWx1ZSA6IDUsIHN0ZXA6IDEsIHZhbHVlIDogMiwgbGVmdExhYmVsIDogXCItXCIsIHJpZ2h0TGFiZWwgOiBcIitcIiwgdG9wTGFiZWwgOiBcIkludGVsbGlnZW5jZVwiLFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlIDogKHZhbHVlIDogbnVtYmVyLCBsYWJlbFZhbHVlIDogVGV4dCwgaW5wdXQgOiBIVE1MSW5wdXRFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNldFN0YXQoQXR0cmlidXRlcy5JbnRlbGxpZ2VuY2UsIHZhbHVlLCBpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICBsZXQgY3JlYXRpb25Eb25lID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgICAgICAobmV3IFNheShcIkNvbmZpcm1cIikpLmdldEhUTUwoXCJwXCIsIFtcImNob2ljZVwiXSkudGhlbihlbGVtZW50QXJyYXkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50QXJyYXlbMF0uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnRzLmVuZE1lbnUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIENvbnRyb2xzLktleUhhbmRsZXIuYXBwbHlDb2RlKGVsZW1lbnRBcnJheVswXSwgQ29udHJvbHMuS2V5SGFuZGxlci5nZXRTZWNvbmRLZXlDb2RlKCkpO1xuICAgICAgICAgICAgICAgICAgICBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIucHJpbnQoZWxlbWVudEFycmF5WzBdKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBFbGVtZW50cy5DdXJyZW50VHVybkhhbmRsZXIucHJpbnQoY2NEaXYpO1xuXG4gICAgICAgICAgICByZXR1cm4gY3JlYXRpb25Eb25lO1xuICAgICAgICB9XG4gICAgfSk7XG5cblxuICAgIC8vIFRPRE86IFBpY2sgb3JpZ2luXG4gICAgLy8gVE9ETzogUGljayBQZXJrc1xufSIsIm1vZHVsZSBQbGF5QmVnaW5zIHtcclxuICAgIGV4cG9ydCB2YXIgTE9BRF9GQUlMRUQgPSBmYWxzZTtcclxuICAgIGV4cG9ydCB2YXIgQ09OVElOVUVfRkFJTEVEID0gZmFsc2U7XHJcblxyXG4gICAgZXhwb3J0IHZhciBJbnRyb01lbnVSdWxlID0gUGxheUJlZ2lucy5ydWxlYm9vay5jcmVhdGVBbmRBZGRSdWxlKHtcclxuICAgICAgICBuYW1lIDogXCJJbnRybyBNZW51IFJ1bGVcIixcclxuICAgICAgICBmaXJzdFByaW9yaXR5IDogUnVsZS5QUklPUklUWV9ISUdIRVNULFxyXG4gICAgICAgIHByaW9yaXR5IDogUnVsZS5QUklPUklUWV9ISUdIRVNULFxyXG4gICAgICAgIGNvZGUgOiBhc3luYyAocnVubmVyIDogUnVsZWJvb2tSdW5uZXI8dm9pZD4pID0+IHtcclxuICAgICAgICAgICAgYXdhaXQgRGlhbG9ndWVUcmVlcy5JbnRyb01lbnUuZXhlY3V0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59IiwiLy8gRmlsZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYnkgY3VzdG9tIERpYWxvZ2dlciBvbiA1LzIwLzIwMTgsIDQ6NTM6MjIgUE1cclxuLy8gRG8gbm90IHRhbXBlciB3aXRoIHRoaXMgZmlsZS5cclxuLy8gSXQgd2lsbCBiZSByZXBsYWNlZCBhdXRvbWF0aWNhbGx5IGJ5IERpYWxvZ2dlciBhbmQgYWxsIGNoYW5nZXMgd2lsbCBiZSBsb3N0LlxyXG4vLyBJbnN0ZWFkIGNoYW5nZSBJbnRyb01lbnUuZGwuXHJcbm1vZHVsZSBEaWFsb2d1ZVRyZWVzIHtcclxuXHRleHBvcnQgbGV0IEludHJvTWVudSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IHRyZWUgOiBEaWFsb2d1ZVRyZWUgPSBuZXcgRGlhbG9ndWVUcmVlKFwiSW50cm9NZW51XCIpO1xyXG4gICAgICAgIGxldCBub2RlIDogRGlhbG9ndWVOb2RlO1xyXG4gICAgICAgIGxldCBjaG9pY2UgOiBEaWFsb2d1ZUNob2ljZTtcclxuICAgICAgICBsZXQgdGV4dCA6IERpYWxvZ3VlVGV4dDtcclxuICAgICAgICBsZXQgYnJhbmNoIDogRGlhbG9ndWVCcmFuY2g7XHJcbiAgICAgICAgbGV0IHNldCA6IERpYWxvZ3VlU2V0O1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIG5vZGUgPSBuZXcgRGlhbG9ndWVOb2RlKFwiYjAxOGJiMjgtNGVmYy00OTNiLWFjMzctMzE2MzRjNGU2NDA2XCIpO1xyXG4gICAgICAgIG5vZGUuc2V0TmV4dChcImY0NDhlNzE4LTlkMjQtNDE5MS05OTEzLWNjYzM2ZDk3YzRjMFwiKTtcclxuICAgICAgICB0cmVlLmFkZFN0YXJ0Tm9kZShub2RlKTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBjaG9pY2UgPSBuZXcgRGlhbG9ndWVDaG9pY2UoXCIzYjhjOGJjYi0wYWM4LTQwZGMtOWY2Mi00YWJiZGUwZDBmN2ZcIik7XHJcbiAgICAgICAgY2hvaWNlLnNldFNheSgoKSA9PiB7IHJldHVybiBuZXcgU2F5KFwiU3RhcnQgR2FtZVwiKTt9KTtcclxuICAgICAgICBjaG9pY2Uuc2V0TmV4dChcIjcxOWU3MWRkLTk5ODktNDAxNS05M2FmLTlmYjcwOTYwMDJjMVwiKTtcclxuICAgICAgICB0cmVlLmFkZE5vZGUoY2hvaWNlKTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBjaG9pY2UgPSBuZXcgRGlhbG9ndWVDaG9pY2UoXCI1MzcxMDA4Ny00MDAyLTQxYjctYjA4OS1jYWRhYmVkYmNhZmRcIik7XHJcbiAgICAgICAgY2hvaWNlLnNldFNheSgoKSA9PiB7IHJldHVybiBuZXcgU2F5KFwiTG9hZCBmcm9tIGZpbGVcIik7fSk7XHJcbiAgICAgICAgY2hvaWNlLnNldE5leHQoXCJmMjVmNjUyNS1kYWQ2LTQ1ZDctYTM5MS0yNDZjMWIwMmI1NjlcIik7XHJcbiAgICAgICAgdHJlZS5hZGROb2RlKGNob2ljZSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgY2hvaWNlID0gbmV3IERpYWxvZ3VlQ2hvaWNlKFwiYjQ1OTNhMzYtY2E4My00YWZjLWIwMWItZTcxMzQ0Y2E2ZTFmXCIpO1xyXG4gICAgICAgIGNob2ljZS5zZXRTYXkoKCkgPT4geyByZXR1cm4gbmV3IFNheShcIlNldHRpbmdzXCIpO30pO1xyXG4gICAgICAgIGNob2ljZS5zZXROZXh0KFwiZDRhMzc5YjUtMDZjOS00ZmNhLWEyNWMtYjFhMzFiNmJmOTNkXCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZShjaG9pY2UpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIGNob2ljZSA9IG5ldyBEaWFsb2d1ZUNob2ljZShcIjRjNTAzMmE1LTU1MDktNGEwMC1iOGM3LTc4OGU3ZGRiZjE3ZFwiKTtcclxuICAgICAgICBjaG9pY2Uuc2V0U2F5KCgpID0+IHsgcmV0dXJuIG5ldyBTYXkoXCJBYm91dFwiKTt9KTtcclxuICAgICAgICBjaG9pY2Uuc2V0TmV4dChcIjZiM2YzODViLTgyODMtNDYzNS05YzczLWUyMzAzZDc3NjQyZFwiKTtcclxuICAgICAgICB0cmVlLmFkZE5vZGUoY2hvaWNlKTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBub2RlID0gbmV3IERpYWxvZ3VlTm9kZShcIjY3NDg0MWE2LTM3NTItNGM4MS05NzdkLTE5ZTExMTUzNjIwM1wiKTtcclxuICAgICAgICBub2RlLnNldE5hbWUoXCIyXCIpO1xyXG4gICAgICAgIG5vZGUuc2V0Q2hvaWNlcyhbXCIzYjhjOGJjYi0wYWM4LTQwZGMtOWY2Mi00YWJiZGUwZDBmN2ZcIixcIjUzNzEwMDg3LTQwMDItNDFiNy1iMDg5LWNhZGFiZWRiY2FmZFwiLFwiNGM1MDMyYTUtNTUwOS00YTAwLWI4YzctNzg4ZTdkZGJmMTdkXCIsXCJiNDU5M2EzNi1jYTgzLTRhZmMtYjAxYi1lNzEzNDRjYTZlMWZcIixcImE1NWY0NmZhLTk4YTktNGRmZi05ZjFjLTRmODhjMThjZThkZFwiXSk7XHJcbiAgICAgICAgdHJlZS5hZGROb2RlKG5vZGUpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIHRleHQgPSBuZXcgRGlhbG9ndWVUZXh0KFwiYmMzMmU0MTEtM2M1NC00NzQ3LWFkNzktNTA2ZmM1YTlkNmM5XCIpO1xyXG4gICAgICAgIHRleHQuc2V0U2F5KCgpID0+IHsgcmV0dXJuIG5ldyBTYXkoU2F5LkNFTlRFUkVELCBuZXcgU2F5SW1hZ2UoXCJpbnRyb0xvZ29cIiksIFNheS5MSU5FX0JSRUFLLCBuZXcgU2F5SXRhbGljKFwiVGhlIE9iZWxpc2sgaXMgYW4gYWR1bHQgaW50ZXJhY3RpdmUgZmljdGlvbiBnYW1lIHNldCBpbiBhIHBvc3QtYXBvY2FseXB0aWMgd29ybGQgcmF2YWdlZCBieSBhIG1hZ2ljYWwgc3RydWN0dXJlLlwiKSk7fSk7XHJcbiAgICAgICAgdGV4dC5zZXROZXh0KFwiMzZkYTllYTYtOTA5Yy00YzBjLTk0ZDEtYTE3ZmVmNDQ0NTJkXCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZSh0ZXh0KTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICB0ZXh0ID0gbmV3IERpYWxvZ3VlVGV4dChcIjM2ZGE5ZWE2LTkwOWMtNGMwYy05NGQxLWExN2ZlZjQ0NDUyZFwiKTtcclxuICAgICAgICB0ZXh0LnNldFNheSgoKSA9PiB7IHJldHVybiBuZXcgU2F5KFwiQSBzbGVlaywgYmxhY2sgb2JlbGlzayBhcHBlYXJlZCwgbW9uc3RlcnMgcG91cmluZyBmcm9tIGl0LCB0aHJlYXRlbmluZyB0aGUgd29ybGQuIE1hbnkgdHJpZWQgdG8gcmVhY2ggdGhlIG9iZWxpc2ssIG9ubHkgdG8gcmV0dXJuIGNoYW5nZWQgLSBtb25zdHJvdXMuIENpdmlsaXphdGlvbiB3YXMgdW5hYmxlIHRvIGNvcGUgd2l0aCB0aGUgY3JlYXR1cmVzIGFuZCBodW1hbml0eSBzb29uIHJldHVybmVkIHRvIGl0cyBvbGQsIHRyaWJhbCB3YXlzLCBodW1hbnMgYmVjb21pbmcgcmFyZXIgd2l0aCBlYWNoIHBhc3NpbmcgZGF5LiBDZW50dXJpZXMgaGF2ZSBwYXNzZWQgYW5kIHRlY2hub2xvZ3kgaXMgbm93IHNjYXJjZSwgd2l0aCBwZW9wbGUgbGVhZGluZyBzaW1wbGVyIGxpdmVzIGluIHNtYWxsIHNldHRsZW1lbnRzLlwiLCAgICAgICAgICAgICAgICAgICAgIFNheS5QQVJBR1JBUEhfQlJFQUssICAgICAgICAgICAgICAgICAgICAgXCJZb3Ugd2VyZSBib3JuIGluIHRoZSBhc2hlcyBvZiB0aGUgb2xkIHdvcmxkLCBsaXZpbmcgaW4gaXNvbGF0aW9uIGFzIHlvdSBhbmQgeW91ciBmZWxsb3cgbWVuIGF0dGVtcHQgdG8gc3RheSBzYWZlIGZyb20gdGhlIGV2aWxzIG9mIFRoZSBPYmVsaXNrLiBcIiwgICAgICAgICAgICAgICAgICAgICBTYXkuUEFSQUdSQVBIX0JSRUFLLCAgICAgICAgICAgICAgICAgICAgIFwiTm93LCBmYXRlIGhhcyBkZWNpZGVkIHlvdSBtdXN0IGdvLCByZWFjaCBUaGUgT2JlbGlzayBhbmQgZGVzdHJveSBpdC4gV2lsbCB5b3Ugc3VjY2VlZCBpbiBzdG9wcGluZyBpdCwgb3Igd2lsbCB5b3UgbG9zZSB5b3Vyc2VsZiB0byBhbGwgdGhlIGNoYW5nZXMgaXQgd2lsbCBicmluZyB0byB5b3U/XCIpO30pO1xyXG4gICAgICAgIHRleHQuc2V0TmV4dChcIjY3NDg0MWE2LTM3NTItNGM4MS05NzdkLTE5ZTExMTUzNjIwM1wiKTtcclxuICAgICAgICB0cmVlLmFkZE5vZGUodGV4dCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgbm9kZSA9IG5ldyBEaWFsb2d1ZU5vZGUoXCI5ZjExODcxZi1lZWJkLTRiOWEtYjNkYi1lZDliZThjZjc4ZTdcIik7XHJcbiAgICAgICAgbm9kZS5zZXROYW1lKFwiMVwiKTtcclxuICAgICAgICBub2RlLnNldE5leHQoXCI5ZWViMjEwMC05MTdkLTQxZmQtYjc1Ni02ZDNiODBlOTI0NjNcIik7XHJcbiAgICAgICAgdHJlZS5hZGROb2RlKG5vZGUpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIGJyYW5jaCA9IG5ldyBEaWFsb2d1ZUJyYW5jaChcIjVkMWRmYjg2LWFiZDktNGFkNi1iZjA3LThjZWQ1NDc2ZTQwMVwiKTtcclxuICAgICAgICBicmFuY2guc2V0VmFyaWFibGUoKCkgPT4geyByZXR1cm4gUGxheUJlZ2lucy5MT0FEX0ZBSUxFRDt9KTtcclxuICAgICAgICBicmFuY2guYWRkQnJhbmNoKFwiNDE1ZGMzMmEtMTU0OS00MjlkLTlhYzQtOGNkMWI0YzkyYzE0XCIsICgpID0+IHsgcmV0dXJuIHRydWU7fSk7XHJcbiAgICAgICAgYnJhbmNoLnNldE5leHQoXCJmODJmYzE3Ny1iNGJkLTRmMDYtYjdhYi0yMTYyNTllMDU2YTVcIik7XHJcbiAgICAgICAgdHJlZS5hZGROb2RlKGJyYW5jaCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgc2V0ID0gbmV3IERpYWxvZ3VlU2V0KFwiZjgyZmMxNzctYjRiZC00ZjA2LWI3YWItMjE2MjU5ZTA1NmE1XCIpO1xyXG4gICAgICAgIHNldC5zZXRGdW5jdGlvbigoKSA9PiB7RWxlbWVudHMuZW5kTWVudSgpO30pO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZShzZXQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIHNldCA9IG5ldyBEaWFsb2d1ZVNldChcIjllZWIyMTAwLTkxN2QtNDFmZC1iNzU2LTZkM2I4MGU5MjQ2M1wiKTtcclxuICAgICAgICBzZXQuc2V0RnVuY3Rpb24oKCkgPT4ge0VsZW1lbnRzLmNsZWFyTWFpblNjcmVlbigpO30pO1xyXG4gICAgICAgIHNldC5zZXROZXh0KFwiYmMzMmU0MTEtM2M1NC00NzQ3LWFkNzktNTA2ZmM1YTlkNmM5XCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZShzZXQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIG5vZGUgPSBuZXcgRGlhbG9ndWVOb2RlKFwiNDE1ZGMzMmEtMTU0OS00MjlkLTlhYzQtOGNkMWI0YzkyYzE0XCIpO1xyXG4gICAgICAgIG5vZGUuc2V0TmV4dChcIjFcIik7XHJcbiAgICAgICAgdHJlZS5hZGROb2RlKG5vZGUpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIHNldCA9IG5ldyBEaWFsb2d1ZVNldChcImY0NDhlNzE4LTlkMjQtNDE5MS05OTEzLWNjYzM2ZDk3YzRjMFwiKTtcclxuICAgICAgICBzZXQuc2V0RnVuY3Rpb24oKCkgPT4ge0VsZW1lbnRzLnN0YXJ0TWVudSgpOyB0cmVlLnNldFJlcGVhdENob2ljZXMoZmFsc2UpO30pO1xyXG4gICAgICAgIHNldC5zZXROZXh0KFwiOWYxMTg3MWYtZWViZC00YjlhLWIzZGItZWQ5YmU4Y2Y3OGU3XCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZShzZXQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIGNob2ljZSA9IG5ldyBEaWFsb2d1ZUNob2ljZShcImVmOTI1M2I5LTVjMjQtNDZjYy04ZTJkLTU1NjJhMTU0NGYwN1wiKTtcclxuICAgICAgICBjaG9pY2Uuc2V0U2F5KCgpID0+IHsgcmV0dXJuIG5ldyBTYXkoU2F2ZUhhbmRsZXIuZ2V0U2F5Rm9yU2xvdCgwKSk7fSk7XHJcbiAgICAgICAgY2hvaWNlLnNldE5leHQoXCI5NTk0Y2YwNi02MDYyLTQ5NTItYjM3OC02YWVkYWFmZTI5NTFcIik7XHJcbiAgICAgICAgdHJlZS5hZGROb2RlKGNob2ljZSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgY2hvaWNlID0gbmV3IERpYWxvZ3VlQ2hvaWNlKFwiODJjNTEyYzYtMDExNS00ZDcyLWE0MTMtNTcyOGE2MjNmMDRiXCIpO1xyXG4gICAgICAgIGNob2ljZS5zZXRTYXkoKCkgPT4geyByZXR1cm4gbmV3IFNheShTYXZlSGFuZGxlci5nZXRTYXlGb3JTbG90KDEpKTt9KTtcclxuICAgICAgICBjaG9pY2Uuc2V0TmV4dChcImZlOTVjZmIzLWI5ZjUtNGIxMi04M2FhLTk0ZDI2ZTViY2FjMFwiKTtcclxuICAgICAgICB0cmVlLmFkZE5vZGUoY2hvaWNlKTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBjaG9pY2UgPSBuZXcgRGlhbG9ndWVDaG9pY2UoXCI3MzE1ODM1YS00ZDk1LTQzNzctODI4Yy04YTRjYTdlNDlmODdcIik7XHJcbiAgICAgICAgY2hvaWNlLnNldFNheSgoKSA9PiB7IHJldHVybiBuZXcgU2F5KFNhdmVIYW5kbGVyLmdldFNheUZvclNsb3QoMikpO30pO1xyXG4gICAgICAgIGNob2ljZS5zZXROZXh0KFwiZGM4ODQ5NzQtN2JiMi00MzZmLWIzYTQtY2RmODU1MGJkNDk0XCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZShjaG9pY2UpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIGNob2ljZSA9IG5ldyBEaWFsb2d1ZUNob2ljZShcIjUwYWZkNmY4LTg3Y2UtNDliZi1iNjg5LTQ4MTliYzVkYzhlN1wiKTtcclxuICAgICAgICBjaG9pY2Uuc2V0U2F5KCgpID0+IHsgcmV0dXJuIG5ldyBTYXkoU2F2ZUhhbmRsZXIuZ2V0U2F5Rm9yU2xvdCgzKSk7fSk7XHJcbiAgICAgICAgY2hvaWNlLnNldE5leHQoXCI2MmY1ZWE4OC1jNmYwLTQ0NjktODdmMi1lYTNiMzc2Mzg1MDlcIik7XHJcbiAgICAgICAgdHJlZS5hZGROb2RlKGNob2ljZSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgY2hvaWNlID0gbmV3IERpYWxvZ3VlQ2hvaWNlKFwiZDc5ZTk5NTUtZjgxZS00YWM5LTgyNDYtYTAyYjBiZDQ5ZGFlXCIpO1xyXG4gICAgICAgIGNob2ljZS5zZXRTYXkoKCkgPT4geyByZXR1cm4gbmV3IFNheShTYXZlSGFuZGxlci5nZXRTYXlGb3JTbG90KDQpKTt9KTtcclxuICAgICAgICBjaG9pY2Uuc2V0TmV4dChcImVlNGVjZDhiLTU5ZTItNDNhNi04MTUwLThhODM1ZDZlZWFlMVwiKTtcclxuICAgICAgICB0cmVlLmFkZE5vZGUoY2hvaWNlKTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBub2RlID0gbmV3IERpYWxvZ3VlTm9kZShcIjcxOWU3MWRkLTk5ODktNDAxNS05M2FmLTlmYjcwOTYwMDJjMVwiKTtcclxuICAgICAgICBub2RlLnNldE5hbWUoXCJTbG90Q2hvaWNlc1wiKTtcclxuICAgICAgICBub2RlLnNldENob2ljZXMoW1wiZWY5MjUzYjktNWMyNC00NmNjLThlMmQtNTU2MmExNTQ0ZjA3XCIsXCI4MmM1MTJjNi0wMTE1LTRkNzItYTQxMy01NzI4YTYyM2YwNGJcIixcIjczMTU4MzVhLTRkOTUtNDM3Ny04MjhjLThhNGNhN2U0OWY4N1wiLFwiNTBhZmQ2ZjgtODdjZS00OWJmLWI2ODktNDgxOWJjNWRjOGU3XCIsXCJkNzllOTk1NS1mODFlLTRhYzktODI0Ni1hMDJiMGJkNDlkYWVcIixcIjk0ODNhMDg3LTA0ZDAtNDhkZC04ODRmLTk0NjkzMDc3MWI5NVwiLFwiZGVmZTBmNGMtNDQ1Mi00MGYzLWFmZjEtYmEwNzYyNjNmY2JjXCJdKTtcclxuICAgICAgICB0cmVlLmFkZE5vZGUobm9kZSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgc2V0ID0gbmV3IERpYWxvZ3VlU2V0KFwiOTU5NGNmMDYtNjA2Mi00OTUyLWIzNzgtNmFlZGFhZmUyOTUxXCIpO1xyXG4gICAgICAgIHNldC5zZXRGdW5jdGlvbigoKSA9PiB7U2F2ZUhhbmRsZXIuc2V0U2xvdCgwKTt9KTtcclxuICAgICAgICBzZXQuc2V0TmV4dChcImE2YjZiM2QyLTI1ZWYtNDFiMS1hNWI1LTI1MTQzZjFiNDFmOVwiKTtcclxuICAgICAgICB0cmVlLmFkZE5vZGUoc2V0KTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBzZXQgPSBuZXcgRGlhbG9ndWVTZXQoXCJmZTk1Y2ZiMy1iOWY1LTRiMTItODNhYS05NGQyNmU1YmNhYzBcIik7XHJcbiAgICAgICAgc2V0LnNldEZ1bmN0aW9uKCgpID0+IHtTYXZlSGFuZGxlci5zZXRTbG90KDEpO30pO1xyXG4gICAgICAgIHNldC5zZXROZXh0KFwiYTZiNmIzZDItMjVlZi00MWIxLWE1YjUtMjUxNDNmMWI0MWY5XCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZShzZXQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIHNldCA9IG5ldyBEaWFsb2d1ZVNldChcImRjODg0OTc0LTdiYjItNDM2Zi1iM2E0LWNkZjg1NTBiZDQ5NFwiKTtcclxuICAgICAgICBzZXQuc2V0RnVuY3Rpb24oKCkgPT4ge1NhdmVIYW5kbGVyLnNldFNsb3QoMik7fSk7XHJcbiAgICAgICAgc2V0LnNldE5leHQoXCJhNmI2YjNkMi0yNWVmLTQxYjEtYTViNS0yNTE0M2YxYjQxZjlcIik7XHJcbiAgICAgICAgdHJlZS5hZGROb2RlKHNldCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgc2V0ID0gbmV3IERpYWxvZ3VlU2V0KFwiNjJmNWVhODgtYzZmMC00NDY5LTg3ZjItZWEzYjM3NjM4NTA5XCIpO1xyXG4gICAgICAgIHNldC5zZXRGdW5jdGlvbigoKSA9PiB7U2F2ZUhhbmRsZXIuc2V0U2xvdCgzKTt9KTtcclxuICAgICAgICBzZXQuc2V0TmV4dChcImE2YjZiM2QyLTI1ZWYtNDFiMS1hNWI1LTI1MTQzZjFiNDFmOVwiKTtcclxuICAgICAgICB0cmVlLmFkZE5vZGUoc2V0KTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBzZXQgPSBuZXcgRGlhbG9ndWVTZXQoXCJlZTRlY2Q4Yi01OWUyLTQzYTYtODE1MC04YTgzNWQ2ZWVhZTFcIik7XHJcbiAgICAgICAgc2V0LnNldEZ1bmN0aW9uKCgpID0+IHtTYXZlSGFuZGxlci5zZXRTbG90KDQpO30pO1xyXG4gICAgICAgIHNldC5zZXROZXh0KFwiYTZiNmIzZDItMjVlZi00MWIxLWE1YjUtMjUxNDNmMWI0MWY5XCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZShzZXQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIHNldCA9IG5ldyBEaWFsb2d1ZVNldChcImYyNWY2NTI1LWRhZDYtNDVkNy1hMzkxLTI0NmMxYjAyYjU2OVwiKTtcclxuICAgICAgICBzZXQuc2V0RnVuY3Rpb24oKCkgPT4ge3JldHVybiBTYXZlSGFuZGxlci5sb2FkRnJvbUZpbGUoKTt9KTtcclxuICAgICAgICBzZXQuc2V0TmV4dChcIjVkMWRmYjg2LWFiZDktNGFkNi1iZjA3LThjZWQ1NDc2ZTQwMVwiKTtcclxuICAgICAgICB0cmVlLmFkZE5vZGUoc2V0KTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBjaG9pY2UgPSBuZXcgRGlhbG9ndWVDaG9pY2UoXCI5NDgzYTA4Ny0wNGQwLTQ4ZGQtODg0Zi05NDY5MzA3NzFiOTVcIik7XHJcbiAgICAgICAgY2hvaWNlLnNldFNheSgoKSA9PiB7IHJldHVybiBuZXcgU2F5KFwiRXJhc2UgYSBzYXZlXCIpO30pO1xyXG4gICAgICAgIGNob2ljZS5zZXRDb25kaXRpb25zKCgpID0+IHsgcmV0dXJuICFTYXZlSGFuZGxlci5pc0VyYXNpbmcoKTt9KTtcclxuICAgICAgICBjaG9pY2Uuc2V0TmV4dChcImVlNjVjODRhLTAyMWYtNDRkMy1hYTM0LTUwMjM1ZjQzOGM5NlwiKTtcclxuICAgICAgICB0cmVlLmFkZE5vZGUoY2hvaWNlKTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBjaG9pY2UgPSBuZXcgRGlhbG9ndWVDaG9pY2UoXCJkZWZlMGY0Yy00NDUyLTQwZjMtYWZmMS1iYTA3NjI2M2ZjYmNcIik7XHJcbiAgICAgICAgY2hvaWNlLnNldFNheSgoKSA9PiB7IHJldHVybiBuZXcgU2F5KFwiRG9uJ3QgZXJhc2UgbXkgc2F2ZXMhXCIpO30pO1xyXG4gICAgICAgIGNob2ljZS5zZXRDb25kaXRpb25zKCgpID0+IHsgcmV0dXJuIFNhdmVIYW5kbGVyLmlzRXJhc2luZygpO30pO1xyXG4gICAgICAgIGNob2ljZS5zZXROZXh0KFwiZWU2NWM4NGEtMDIxZi00NGQzLWFhMzQtNTAyMzVmNDM4Yzk2XCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZShjaG9pY2UpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIHNldCA9IG5ldyBEaWFsb2d1ZVNldChcImVlNjVjODRhLTAyMWYtNDRkMy1hYTM0LTUwMjM1ZjQzOGM5NlwiKTtcclxuICAgICAgICBzZXQuc2V0RnVuY3Rpb24oKCkgPT4ge1NhdmVIYW5kbGVyLnRvZ2dsZUVyYXNpbmcoKX0pO1xyXG4gICAgICAgIHNldC5zZXROZXh0KFwiNmYxNWY3ZDYtNDk0NC00YjkzLTlkNDctNzA0NmU4YWUxZjE1XCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZShzZXQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIG5vZGUgPSBuZXcgRGlhbG9ndWVOb2RlKFwiNmYxNWY3ZDYtNDk0NC00YjkzLTlkNDctNzA0NmU4YWUxZjE1XCIpO1xyXG4gICAgICAgIG5vZGUuc2V0TmV4dChcIlNsb3RDaG9pY2VzXCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZShub2RlKTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBzZXQgPSBuZXcgRGlhbG9ndWVTZXQoXCI5MTU0OTJmMS04ZmE3LTRkZGMtOWRjMC02YjAzNDBmNzM4YzhcIik7XHJcbiAgICAgICAgc2V0LnNldEZ1bmN0aW9uKCgpID0+IHtyZXR1cm4gU2F2ZUhhbmRsZXIubG9hZEZyb21TdG9yYWdlKCk7fSk7XHJcbiAgICAgICAgc2V0LnNldE5leHQoXCJmODJmYzE3Ny1iNGJkLTRmMDYtYjdhYi0yMTYyNTllMDU2YTVcIik7XHJcbiAgICAgICAgdHJlZS5hZGROb2RlKHNldCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgbm9kZSA9IG5ldyBEaWFsb2d1ZU5vZGUoXCJkNGEzNzliNS0wNmM5LTRmY2EtYTI1Yy1iMWEzMWI2YmY5M2RcIik7XHJcbiAgICAgICAgbm9kZS5zZXROZXh0KFwiU2V0dGluZ3NcIik7XHJcbiAgICAgICAgdHJlZS5hZGROb2RlKG5vZGUpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIG5vZGUgPSBuZXcgRGlhbG9ndWVOb2RlKFwiNmIzZjM4NWItODI4My00NjM1LTljNzMtZTIzMDNkNzc2NDJkXCIpO1xyXG4gICAgICAgIG5vZGUuc2V0TmV4dChcIkFib3V0XCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZShub2RlKTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBub2RlID0gbmV3IERpYWxvZ3VlTm9kZShcImI3NWMwMzhjLTY1NGMtNGM2Mi04ZjQ5LTJmNDUxOGY1MmNmZlwiKTtcclxuICAgICAgICBub2RlLnNldE5hbWUoXCJTZXR0aW5nc1wiKTtcclxuICAgICAgICBub2RlLnNldE5leHQoXCJkMzM0NTZiOC03MmI2LTQyMTQtOTBiMy0zZWJhMjQ0MmIyODdcIik7XHJcbiAgICAgICAgdHJlZS5hZGROb2RlKG5vZGUpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIHRleHQgPSBuZXcgRGlhbG9ndWVUZXh0KFwiZDMzNDU2YjgtNzJiNi00MjE0LTkwYjMtM2ViYTI0NDJiMjg3XCIpO1xyXG4gICAgICAgIHRleHQuc2V0U2F5KCgpID0+IHsgcmV0dXJuIG5ldyBTYXkoXCJOb3QgaW1wbGVtZW50ZWQuXCIpO30pO1xyXG4gICAgICAgIHRleHQuc2V0TmV4dChcImJjMjRiNDQ2LWQ2YTItNDI4NC05M2ZiLTY3YWQzNTk4ZmNkMVwiKTtcclxuICAgICAgICB0cmVlLmFkZE5vZGUodGV4dCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgc2V0ID0gbmV3IERpYWxvZ3VlU2V0KFwiYmMyNGI0NDYtZDZhMi00Mjg0LTkzZmItNjdhZDM1OThmY2QxXCIpO1xyXG4gICAgICAgIHNldC5zZXRGdW5jdGlvbigoKSA9PiB7cmV0dXJuIEVsZW1lbnRzLndhaXRGb3JBbnlLZXkoKTt9KTtcclxuICAgICAgICBzZXQuc2V0TmV4dChcIjgxZjlkNjJiLTkwN2UtNDhhZS04NGZlLTc4YzdjZWNjNGZlM1wiKTtcclxuICAgICAgICB0cmVlLmFkZE5vZGUoc2V0KTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBub2RlID0gbmV3IERpYWxvZ3VlTm9kZShcIjgxZjlkNjJiLTkwN2UtNDhhZS04NGZlLTc4YzdjZWNjNGZlM1wiKTtcclxuICAgICAgICBub2RlLnNldE5leHQoXCIxXCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZShub2RlKTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBub2RlID0gbmV3IERpYWxvZ3VlTm9kZShcImMzNDJlMTEyLTVjNzMtNGM4Mi04ODgyLTQ3Y2EzYTcxYzkxNFwiKTtcclxuICAgICAgICBub2RlLnNldE5hbWUoXCJBYm91dFwiKTtcclxuICAgICAgICBub2RlLnNldE5leHQoXCJkMzM0NTZiOC03MmI2LTQyMTQtOTBiMy0zZWJhMjQ0MmIyODdcIik7XHJcbiAgICAgICAgdHJlZS5hZGROb2RlKG5vZGUpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIGNob2ljZSA9IG5ldyBEaWFsb2d1ZUNob2ljZShcImE1NWY0NmZhLTk4YTktNGRmZi05ZjFjLTRmODhjMThjZThkZFwiKTtcclxuICAgICAgICBjaG9pY2Uuc2V0U2F5KCgpID0+IHsgcmV0dXJuIG5ldyBTYXkoXCJOb3RlIGFib3V0IGNvbnRlbnQgKFNwb2lsZXIgQWxlcnQpXCIpO30pO1xyXG4gICAgICAgIGNob2ljZS5zZXROZXh0KFwiN2MyMDYwYWEtNjZjZS00ZGJiLTg4ZDItMGM4ZjE5MGUwYTZjXCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZShjaG9pY2UpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIHRleHQgPSBuZXcgRGlhbG9ndWVUZXh0KFwiNTlhM2NiMzAtZDRiYS00YjQ2LTgxNTctYjkwMGZjNzAyMmRkXCIpO1xyXG4gICAgICAgIHRleHQuc2V0U2F5KCgpID0+IHsgcmV0dXJuIG5ldyBTYXkoU2F5LkNFTlRFUkVELCBuZXcgU2F5SW1hZ2UoXCJpbnRyb0xvZ29cIiksIFNheS5MSU5FX0JSRUFLLCBuZXcgU2F5SXRhbGljKFwiVGhlIE9iZWxpc2sgaXMgYW4gYWR1bHQgaW50ZXJhY3RpdmUgZmljdGlvbiBnYW1lIHNldCBpbiBhIHBvc3QtYXBvY2FseXB0aWMgd29ybGQgcmF2YWdlZCBieSBhIG1hZ2ljYWwgc3RydWN0dXJlLlwiKSk7fSk7XHJcbiAgICAgICAgdGV4dC5zZXROZXh0KFwiMWI4YmRjOWQtYTRiZi00MGFhLWEzODItZjc4MTNjMTU4ODQwXCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZSh0ZXh0KTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBzZXQgPSBuZXcgRGlhbG9ndWVTZXQoXCJjMjc4MjliNy03MTk5LTRiMWUtOTMzNC01MzYyNTg1NDZjZmNcIik7XHJcbiAgICAgICAgc2V0LnNldEZ1bmN0aW9uKCgpID0+IHtyZXR1cm4gRWxlbWVudHMud2FpdEZvckFueUtleSgpO30pO1xyXG4gICAgICAgIHNldC5zZXROZXh0KFwiNDI0MDExNDUtOTE1NC00MGMzLWE5ZDMtNGY4M2RmOTdiODllXCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZShzZXQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIG5vZGUgPSBuZXcgRGlhbG9ndWVOb2RlKFwiNDI0MDExNDUtOTE1NC00MGMzLWE5ZDMtNGY4M2RmOTdiODllXCIpO1xyXG4gICAgICAgIG5vZGUuc2V0TmV4dChcIjFcIik7XHJcbiAgICAgICAgdHJlZS5hZGROb2RlKG5vZGUpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIHNldCA9IG5ldyBEaWFsb2d1ZVNldChcIjdjMjA2MGFhLTY2Y2UtNGRiYi04OGQyLTBjOGYxOTBlMGE2Y1wiKTtcclxuICAgICAgICBzZXQuc2V0RnVuY3Rpb24oKCkgPT4ge0VsZW1lbnRzLmNsZWFyTWFpblNjcmVlbigpO30pO1xyXG4gICAgICAgIHNldC5zZXROZXh0KFwiNTlhM2NiMzAtZDRiYS00YjQ2LTgxNTctYjkwMGZjNzAyMmRkXCIpO1xyXG4gICAgICAgIHRyZWUuYWRkTm9kZShzZXQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIHRleHQgPSBuZXcgRGlhbG9ndWVUZXh0KFwiMWI4YmRjOWQtYTRiZi00MGFhLWEzODItZjc4MTNjMTU4ODQwXCIpO1xyXG4gICAgICAgIHRleHQuc2V0U2F5KCgpID0+IHsgcmV0dXJuIG5ldyBTYXkoXCJJbiB0aGlzIHN0b3J5LCB0aGUgT2JlbGlzayB3aWxsIGF0dGVtcHQgdG8gZ2l2ZSB0aGUgcGxheWVyIGV4YWN0bHkgd2hhdCB0aGUgcGxheWVyIHdhbnRzLCBidXQgdGhhdCdzIG5vdCBhbHdheXMgd2hhdCB0aGUgcGxheWVyIHRoaW5rcyB0aGV5IHdhbnQuIFRoaXMgaXMgYSBwb3Jub2dyYXBoaWMgZ2FtZSBmaXJzdCBhbmQgYSByb2xlcGxheWluZyBnYW1lIHNlY29uZCwgd2hpY2ggbWVhbnMgdGhhdCBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHBsYXllciBjaGFyYWN0ZXIgd2FudHMgc2V4IC0gZXZlbiBpZiB0aGV5IGRvbid0IGFjdCBsaWtlIGl0LlwiLCBTYXkuUEFSQUdSQVBIX0JSRUFLLCBcIlRoZXJlZm9yZSwgdGhpcyBnYW1lIHdpbGwgXFxcImZpdFxcXCIgZm9yIHBsYXllcnMgd2hvIGdvIGluIHdpdGggdGhhdCBtZW50YWxpdHksIGJ1dCBpdCBcIiwgbmV3IFNheUJvbGQoXCJ3aWxsXCIpLCBcIiBsb29rIGRpZmZlcmVudGx5IGZvciBwbGF5ZXJzIHdpdGggYSBkaWZmZXJlbnQgcG9pbnQgb2YgdmlldyBmb3IgdGhlaXIgY2hhcmFjdGVycy4gV2hpbGUgcm9sZXBsYXlpbmcgaXMgZW5jb3VyYWdlZCwgdGhhdCBpcyBub3QgaG93IHRoZSBnYW1lIHdhcyB3cml0dGVuLCBzbyBpZiB5b3UncmUgcGxheWluZyBpdCB0aGF0IHdheSwgaXQncyBqdXN0IHlvdXIgY2hvaWNlLlwiLCBTYXkuUEFSQUdSQVBIX0JSRUFLLCBcIlRoZXJlIGlzIG5vIHNleCB3aXRob3V0IGV4cGxpY2l0IGNvbnNlbnQgZnJvbSB0aGUgTlBDczogaW1wbGljaXQgY29uc2VudCBpcyBvbmx5IHVzZWQgZm9yIHRoZSBwbGF5ZXIgY2hhcmFjdGVyLCBiZWNhdXNlIHRoYXQncyBwYXJ0IG9mIHRoZSBzdG9yeS4gSXQgaXMgcG9zc2libGUgdG8gcmVtb3ZlIHRoZSBwbGF5ZXIncyBjb25zZW50LCB0aGVyZWJ5IGhhdmluZyBubyB1bndhbnRlZCBzZXggc2NlbmVzIG9jY3VyLCBieSBzZXR0aW5nIHVwIHRoZSBjb250ZW50IG9wdGlvbnMsIHdoaWNoIHdpbGwgZGlzYWJsZSBjb250ZW50IHdpdGhvdXQgZXhwbGljaXQgY29uc2VudCAoaS5lLiBkaXNhYmxpbmcgTS9NIFNleCBTY2VuZXMgbWVhbnMgdGhpcyBraW5kIG9mIHRoaW5nIHdpbGwgb25seSBoYXBwZW4gaWYgeW91IGFjdGl2ZWx5IGFzayBhbiBOUEMgZm9yIGl0KS5cIiwgU2F5LlBBUkFHUkFQSF9CUkVBSywgXCJXaGlsZSB0aGUgY29udGVudCBvcHRpb25zIGFyZSB0aGVyZSB0byB0YWlsb3IgeW91ciBleHBlcmllbmNlLCB0aGUgZ2FtZSBpcyBtYWRlIHdpdGggXFxcImFsbCBjb250ZW50IGlzIGF2YWlsYWJsZVxcXCIgaW4gbWluZCwgd2hpY2ggbWlnaHQgcmVzdWx0IGluIGEgcGxheXRocm91Z2ggdGhhdCdzIG5vdCBtdWNoIGZ1biBpZiB5b3UgZGlzYWJsZSB0b28gbWFueSB0aGluZ3MuIFN0aWxsLCB0aGF0J3MgeW91ciBjaG9pY2UuIEdhbWUgb24uXCIpO30pO1xyXG4gICAgICAgIHRleHQuc2V0TmV4dChcImMyNzgyOWI3LTcxOTktNGIxZS05MzM0LTUzNjI1ODU0NmNmY1wiKTtcclxuICAgICAgICB0cmVlLmFkZE5vZGUodGV4dCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgYnJhbmNoID0gbmV3IERpYWxvZ3VlQnJhbmNoKFwiYTZiNmIzZDItMjVlZi00MWIxLWE1YjUtMjUxNDNmMWI0MWY5XCIpO1xyXG4gICAgICAgIGJyYW5jaC5zZXRWYXJpYWJsZSgoKSA9PiB7IHJldHVybiBTYXZlSGFuZGxlci5pc1ZpcmdpbigpO30pO1xyXG4gICAgICAgIGJyYW5jaC5hZGRCcmFuY2goXCJkMGRjZDdjNi0yNmFlLTQxZDAtOTlhNi1lMGNhZTE3YWUzODFcIiwgKCkgPT4geyByZXR1cm4gdHJ1ZTt9KTtcclxuICAgICAgICBicmFuY2guc2V0TmV4dChcIjkxNTQ5MmYxLThmYTctNGRkYy05ZGMwLTZiMDM0MGY3MzhjOFwiKTtcclxuICAgICAgICB0cmVlLmFkZE5vZGUoYnJhbmNoKTtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICB0ZXh0ID0gbmV3IERpYWxvZ3VlVGV4dChcImI4ZWU2NzAyLThkMzgtNGJkNy05YjI0LWRmOGM5MDFhNTBkNFwiKTtcclxuICAgICAgICB0ZXh0LnNldFNheSgoKSA9PiB7IHJldHVybiBuZXcgU2F5KG5ldyBTYXlCb2xkKFwiQSBub3RlIG9uIHNhdmVzOiBcIiksIFwiVGhlIHNlbGVjdGVkIHNsb3Qgd2lsbCBiZSBzYXZlZCB0byBicm93c2VyIHN0b3JhZ2UsIHNvIGl0IHdpbGwgYmUgZGVsZXRlZCBpZiB0aGUgYnJvd3NlciBldmVyIGRlY2lkZXMgdG8gZGVsZXRlIGl0LiBUaGUgZ2FtZSB3aWxsIHdyaXRlIHRvIHRoYXQgc2F2ZSBzbG90IGV2ZXJ5IHR1cm4sIHNvIHlvdSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoYXQuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gbWFudWFsbHkgc2F2ZSBpbi1nYW1lLCB3aGljaCB3aWxsIHNhdmUgdG8gYSBmaWxlLlwiKTt9KTtcclxuICAgICAgICB0ZXh0LnNldE5leHQoXCI1MDg3NmUxMy0yM2I5LTQzYzAtYjZiMS1hODliMTY4M2Q1ZTdcIik7XHJcbiAgICAgICAgdHJlZS5hZGROb2RlKHRleHQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIHNldCA9IG5ldyBEaWFsb2d1ZVNldChcIjUwODc2ZTEzLTIzYjktNDNjMC1iNmIxLWE4OWIxNjgzZDVlN1wiKTtcclxuICAgICAgICBzZXQuc2V0RnVuY3Rpb24oKCkgPT4ge3JldHVybiBFbGVtZW50cy53YWl0Rm9yQW55S2V5KCk7fSk7XHJcbiAgICAgICAgc2V0LnNldE5leHQoXCI5MTU0OTJmMS04ZmE3LTRkZGMtOWRjMC02YjAzNDBmNzM4YzhcIik7XHJcbiAgICAgICAgdHJlZS5hZGROb2RlKHNldCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgc2V0ID0gbmV3IERpYWxvZ3VlU2V0KFwiZDBkY2Q3YzYtMjZhZS00MWQwLTk5YTYtZTBjYWUxN2FlMzgxXCIpO1xyXG4gICAgICAgIHNldC5zZXRGdW5jdGlvbigoKSA9PiB7RWxlbWVudHMuY2xlYXJNYWluU2NyZWVuKCk7fSk7XHJcbiAgICAgICAgc2V0LnNldE5leHQoXCJiOGVlNjcwMi04ZDM4LTRiZDctOWIyNC1kZjhjOTAxYTUwZDRcIik7XHJcbiAgICAgICAgdHJlZS5hZGROb2RlKHNldCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHRyZWU7XHJcbiAgICB9KSgpO1xyXG59Il19
  1524. })()"></script>
  1525. <style media='screen' type='text/css'>
  1526. /*! Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.
  1527. This Font Software is licensed under the SIL Open Font License, Version 1.1.
  1528. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
  1529. -----------------------------------------------------------
  1530. SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
  1531. -----------------------------------------------------------
  1532. PREAMBLE
  1533. The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
  1534. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
  1535. DEFINITIONS
  1536. "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
  1537. "Reserved Font Name" refers to any names specified as such after the copyright statement(s).
  1538. "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
  1539. "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
  1540. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
  1541. PERMISSION & CONDITIONS
  1542. Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
  1543. 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
  1544. 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
  1545. 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
  1546. 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
  1547. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
  1548. TERMINATION
  1549. This license becomes null and void if any of the above conditions are not met.
  1550. DISCLAIMER
  1551. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.*/
  1552. @font-face {
  1553. font-family: "Source Sans Pro";
  1554. src: url('data:font/opentype;base64,T1RUTwAOAIAAAwBgQkFTRWUeXb0AA2d0AAAARkNGRiCFTQyOAABETAABwphEU0lH/au/JAADZ7wAABkYR0RFRoHqhnoAAiU8AAADwkdQT1P1LCSnAAJlXAABAhZHU1VCg/qPKwACKQAAADxaT1MvMl3d16QAAAFQAAAAYGNtYXCMPOw1AAANzAAANl5oZWFkCdV6dwAAAOwAAAA2aGhlYQqEDVgAAAEkAAAAJGhtdHibaw5ZAAIG5AAAHlhtYXhwB5ZQAAAAAUgAAAAGbmFtZRwGkhYAAAGwAAAMG3Bvc3T/uAAyAABELAAAACAAAQAAAAIFHkmNgrNfDzz1AAMD6AAAAADSChjrAAAAANIKGOv+Ov7bCG8DyAAAAAMAAgAAAAAAAAABAAAD2P7vAAAImP46/joIbwABAAAAAAAAAAAAAAAAAAAHlgAAUAAHlgAAAAMCCgGQAAUAAAKKAlgAAABLAooCWAAAAV4AMgEjAAACCwUDAwQDAgIEYAAC9wIAAAEAAAAAAAAAAEFEQk8AQAAg//8C7v8GAAAD2AERIAABnwAAAAAB5gKUAAAAIAADAAAAJAG2AAEAAAAAAAAAcAAAAAEAAAAAAAEADwBwAAEAAAAAAAIABwB/AAEAAAAAAAMAJgCGAAEAAAAAAAQADwBwAAEAAAAAAAUAOACsAAEAAAAAAAYAFQDkAAEAAAAAAAcAYAD5AAEAAAAAAAgAGgFZAAEAAAAAAAkADAFzAAEAAAAAAAsAGQF/AAEAAAAAAA0BkAGYAAEAAAAAAA4AGgMoAAEAAAAAAQAADANCAAEAAAAAAQEACgNOAAEAAAAAAQIACwNYAAEAAAAAAQMACwNjAAEAAAAAAQQACQNuAAMAAQQJAAAA4AN3AAMAAQQJAAEAHgRXAAMAAQQJAAIADgR1AAMAAQQJAAMATASDAAMAAQQJAAQAHgRXAAMAAQQJAAUAcATPAAMAAQQJAAYAKgU/AAMAAQQJAAcAwAVpAAMAAQQJAAgANAYpAAMAAQQJAAkAGAZdAAMAAQQJAAsAMgZ1AAMAAQQJAA0DIAanAAMAAQQJAA4ANAnHAAMAAQQJAQAAGAn7AAMAAQQJAQEAFAoTAAMAAQQJAQIAFgonAAMAAQQJAQMAFgo9AAMAAQQJAQQAEgpTQ29weXJpZ2h0IDIwMTAsIDIwMTIsIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQgKGh0dHA6Ly93d3cuYWRvYmUuY29tLyksIHdpdGggUmVzZXJ2ZWQgRm9udCBOYW1lINRTb3VyY2XVLlNvdXJjZSBTYW5zIFByb1JlZ3VsYXIyLjAyMDtBREJPO1NvdXJjZVNhbnNQcm8tUmVndWxhcjtBRE9CRVZlcnNpb24gMi4wMjA7UFMgMi4wO2hvdGNvbnYgMS4wLjg2O21ha2VvdGYubGliMi41LjYzNDA2U291cmNlU2Fuc1Byby1SZWd1bGFyU291cmNlIGlzIGEgdHJhZGVtYXJrIG9mIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkIGluIHRoZSBVbml0ZWQgU3RhdGVzIGFuZC9vciBvdGhlciBjb3VudHJpZXMuQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWRQYXVsIEQuIEh1bnRodHRwOi8vd3d3LmFkb2JlLmNvbS90eXBlVGhpcyBGb250IFNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBTSUwgT3BlbiBGb250IExpY2Vuc2UsIFZlcnNpb24gMS4xLiBUaGlzIGxpY2Vuc2UgaXMgYXZhaWxhYmxlIHdpdGggYSBGQVEgYXQ6IGh0dHA6Ly9zY3JpcHRzLnNpbC5vcmcvT0ZMLiBUaGlzIEZvbnQgU29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4g1EFTIElT1SBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgU0lMIE9wZW4gRm9udCBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UsIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyBnb3Zlcm5pbmcgeW91ciB1c2Ugb2YgdGhpcyBGb250IFNvZnR3YXJlLmh0dHA6Ly9zY3JpcHRzLnNpbC5vcmcvT0ZMU2xhc2hlZCB6ZXJvU3RyYWlnaHQgbEFsdGVybmF0ZSBhQWx0ZXJuYXRlIGdTZXJpZmVkIEkAQwBvAHAAeQByAGkAZwBoAHQAIAAyADAAMQAwACwAIAAyADAAMQAyACwAIAAyADAAMQA0ACAAQQBkAG8AYgBlACAAUwB5AHMAdABlAG0AcwAgAEkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAAKABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBkAG8AYgBlAC4AYwBvAG0ALwApACwAIAB3AGkAdABoACAAUgBlAHMAZQByAHYAZQBkACAARgBvAG4AdAAgAE4AYQBtAGUAICAYAFMAbwB1AHIAYwBlIBkALgBTAG8AdQByAGMAZQAgAFMAYQBuAHMAIABQAHIAbwBSAGUAZwB1AGwAYQByADIALgAwADIAMAA7AEEARABCAE8AOwBTAG8AdQByAGMAZQBTAGEAbgBzAFAAcgBvAC0AUgBlAGcAdQBsAGEAcgA7AEEARABPAEIARQBWAGUAcgBzAGkAbwBuACAAMgAuADAAMgAwADsAUABTACAAMgAuADAAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA4ADYAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA2ADMANAAwADYAUwBvAHUAcgBjAGUAUwBhAG4AcwBQAHIAbwAtAFIAZQBnAHUAbABhAHIAUwBvAHUAcgBjAGUAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABBAGQAbwBiAGUAIABTAHkAcwB0AGUAbQBzACAASQBuAGMAbwByAHAAbwByAGEAdABlAGQAIABpAG4AIAB0AGgAZQAgAFUAbgBpAHQAZQBkACAAUwB0AGEAdABlAHMAIABhAG4AZAAvAG8AcgAgAG8AdABoAGUAcgAgAGMAbwB1AG4AdAByAGkAZQBzAC4AQQBkAG8AYgBlACAAUwB5AHMAdABlAG0AcwAgAEkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkAFAAYQB1AGwAIABEAC4AIABIAHUAbgB0AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAGQAbwBiAGUALgBjAG8AbQAvAHQAeQBwAGUAVABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABpAHMAIABsAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAFMASQBMACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMQAuADEALgAgAFQAaABpAHMAIABsAGkAYwBlAG4AcwBlACAAaQBzACAAYQB2AGEAaQBsAGEAYgBsAGUAIAB3AGkAdABoACAAYQAgAEYAQQBRACAAYQB0ADoAIABoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwALgAgAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAZABpAHMAdAByAGkAYgB1AHQAZQBkACAAbwBuACAAYQBuACAgGABBAFMAIABJAFMgGQAgAEIAQQBTAEkAUwAsACAAVwBJAFQASABPAFUAVAAgAFcAQQBSAFIAQQBOAFQASQBFAFMAIABPAFIAIABDAE8ATgBEAEkAVABJAE8ATgBTACAATwBGACAAQQBOAFkAIABLAEkATgBEACwAIABlAGkAdABoAGUAcgAgAGUAeABwAHIAZQBzAHMAIABvAHIAIABpAG0AcABsAGkAZQBkAC4AIABTAGUAZQAgAHQAaABlACAAUwBJAEwAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUAIABmAG8AcgAgAHQAaABlACAAcwBwAGUAYwBpAGYAaQBjACAAbABhAG4AZwB1AGEAZwBlACwAIABwAGUAcgBtAGkAcwBzAGkAbwBuAHMAIABhAG4AZAAgAGwAaQBtAGkAdABhAHQAaQBvAG4AcwAgAGcAbwB2AGUAcgBuAGkAbgBnACAAeQBvAHUAcgAgAHUAcwBlACAAbwBmACAAdABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUALgBoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAUwBsAGEAcwBoAGUAZAAgAHoAZQByAG8AUwB0AHIAYQBpAGcAaAB0ACAAbABBAGwAdABlAHIAbgBhAHQAZQAgAGEAQQBsAHQAZQByAG4AYQB0AGUAIABnAFMAZQByAGkAZgBlAGQAIABJAAAAAAUAAAADAAACJAAAAAQAABDaAAEAAAAAACwAAwABAAACJAADAAoAABDaAAYB+AAAAAkA9wABAAAAAAAAAAEAAAAA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AH0A8wCXAJwAnQCeAJ8AoAbWAK0AywDMAM0AzwDnAPQBiQD4APkA+gD7APwA/wEOARMBHAEdAR4BIAE7ATwBPQE/AbkBWwFhAWIBYwFkAWUG1wFyAZEBkgGTAZUBrQG6Aa8AOwD9ADwA/gBLAQ0AUgEUAFMBFQBVARcAVAEWAFYBGABZARsAXwEhAGABIgBhASMAagEsAF0BHwBtAS8AbgEwAG8BMQBwATIAdQE2AHgBOgB8AT4AfgFAAIQBRgCDAUQAfwFHAPcBvQCFAUgAhgFJAUwAiQFNAIsBUACKAU4AjAFPAJABVACUAVgAmAFcAJYBWgFgAPYBuwChAWYAqwFwAKIBZwCuAXMAtgF7ALkBfAC3AX0AvQGCAL4BgwDAAYUAvwGEAMYBiwDFAYoAygGQAM4BlADQAZYA0QGXANIBmADTAZkA2wGhAOQBqgDoAa4A6QDuAbQA8AG2AO8BtQasAHQArwF0ANwBogA+AQAAgAFBAKMBaADUAZoA1QGbANYBnADXAZ0A2AGeAE4BEABxATMAtQF6AGwBLgCVAVkATQEPAMEBhgDHAYwBvgHGAcwBzQHOAc8B0AHRAdIB0wHUAdUB1wIBAccB1gHZBoQGjAaRBpMHBwcYBxsHGQcdBxUHGgaYBpkGhgaNBpIHHwciByUHJwcpBysHLQcxBzMHNQc3BzkHOwdAB0IHRAdPB1AHUQdSB1QHVgdYB1kDagNsAlcDZgJYAlkCWgJdAl8ChQJQAlECUgJTAlQCVQJWAlsCXgJ8An0CfgJ/AoYCYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAngCcQJyAnMCdAJ1AnYCdwKAAoMCgQKCAoQDvwQZA8AEGgPBBBsDwgQcA8MEHQPEBB4DxwQhA8gEIgPLBCUDzgQoA88EKQPQBCoD0QQrA9IELAPTBC0D1AQuA9UD1gQvBDID2QQzA9oENAPbBDUD3AQ2A90ENwPeBDgD3wQ5A+AEOgPhBDsGfAZ+Bn8GhQaHBooGjgaPAFABEgBXARkAWAEaAGsBLQByATQAdgE3AHcBOQCHAUoAiAFLAI0BUQCOAVIAjwFTAJEBVQCSAVYAkwFXAJkBXQCaAV4AmwFfAKwBcQC4AX4AugF/ALsBgAC8AYEAwgGHAMMBiADIAY0AyQGOAOIBqADjAakA5QGrAOoBsADxAbcA8gG4ATgBjwA/AQEAQAECAEEBAwBCAQQAQwEFAEQBBgBFAQcARgEIAEcBCQBIAQoASQELAEoBDABiASQAYwElAGQBJgBlAScAZgEoAGcBKQBoASoAaQErAIEBQgCCAUMApAFpAKUBagCmAWsApwFsAKgBbQCpAW4AqgFvALABdQCxAXYAsgF3ALMBeAC0AXkA2QGfANoBoADdAaMA3gGkAN8BpQDgAaYA4QGnAOYBrADrAbEA7AGyAO0BswLrAuwC7QLuAu8C8AKHAogCiwKMAo0CjgKPApAC9AL1AwADAQMCAwMDBAMFApsCnAKfAqACoQKiAqMCpAMHAwgDCwMMAw0DDgMPAxACpQKmAqkCqgKrAqwCrQKuAxcDGAK/AzEDMgM1AzYDNwM4AzkDOgLCAsMCxgLHAsgCyQLKAssC6QLqAvYC9wL+Av8DCQMKAxkDGgMjAyQDMwM0As0CzgLPAtAC0QLSAtMC1ANJA0oC1gLXAtgC2QLaAtsC3ALdA1UDVgLfAuAC4QLiAuMC5ALlAuYC8QLyAz8DPANAAvMDRwKRApICiQKKAswDbwNuA3ADegN9A0sDSANMAwYDUwKVApYCnQKeAtUDdAN2A3gDEQMSAxQDFQMTAxYCrwKwAqcCqAN1A3cDeQMsAy0DLgMvAx8DIAMrAzACwALBArsCvAK5A3sDfANyA1cDVANYAzsDXwKzArQCxALFAt4DcwNxBJAEjASNBJEEpgSABIEEhASCBIMEhQSiBKMEkweSBsAEpwSrBJUElgSoBKoEqQYmBoMGMAYxBogGsgaqBroGtwa4BD0EtwbMBtEG0gbrBtUG2AboBvUHAwICB5QHlQIDAgQHkwAMAAAAACWEAAAAAAAAAx8AAAAgAAAAIAAAAAEAAAAhAAAAIQAABHoAAAAiAAAAIgAABH8AAAAjAAAAIwAABL8AAAAkAAAAJAAABqYAAAAlAAAAJQAABr8AAAAmAAAAJgAABD4AAAAnAAAAJwAABH4AAAAoAAAAKQAABJcAAAAqAAAAKgAABKEAAAArAAAAKwAABtQAAAAsAAAALAAABHYAAAAtAAAALQAABIoAAAAuAAAALgAABHUAAAAvAAAALwAABJ0AAAAwAAAAOQAABD8AAAA6AAAAOwAABHcAAAA8AAAAPAAABtoAAAA9AAAAPQAABtkAAAA+AAAAPgAABtsAAAA/AAAAPwAABHwAAABAAAAAQAAABL0AAABBAAAAWgAAAAIAAABbAAAAWwAABJkAAABcAAAAXAAABJ8AAABdAAAAXQAABJoAAABeAAAAXgAABt8AAABfAAAAXwAABJQAAABgAAAAYAAABwwAAABhAAAAegAAABwAAAB7AAAAewAABJsAAAB8AAAAfAAABJ4AAAB9AAAAfQAABJwAAAB+AAAAfgAABuEAAACgAAAAoAAAB44AAAChAAAAoQAABHsAAACiAAAAogAABqsAAACjAAAAowAABqcAAACkAAAApAAABqUAAAClAAAApQAABqgAAACmAAAApgAABKAAAACnAAAApwAABKQAAACoAAAAqAAABxYAAACpAAAAqQAABLYAAACqAAAAqgAABl4AAACrAAAAqwAABIgAAACsAAAArAAABuMAAACtAAAArQAABIsAAACuAAAArgAABLgAAACvAAAArwAABxcAAACwAAAAsAAABqQAAACxAAAAsQAABt4AAACyAAAAswAABigAAAC0AAAAtAAABw0AAAC1AAAAtQAABuUAAAC2AAAAtgAABKUAAAC3AAAAtwAABJIAAAC4AAAAuAAABxwAAAC5AAAAuQAABicAAAC6AAAAugAABmAAAAC7AAAAuwAABIkAAAC8AAAAvgAABsEAAAC/AAAAvwAABH0AAADAAAAAxAAAADYAAADFAAAAxQAAAD0AAADGAAAAxgAAAEwAAADHAAAAxwAAAFEAAADIAAAAygAAAFoAAADLAAAAywAAAF4AAADMAAAAzgAAAHkAAADPAAAAzwAAAH0AAADQAAAA0AAAAPMAAADRAAAA0QAAAJcAAADSAAAA1gAAAJwAAADXAAAA1wAABtYAAADYAAAA2AAAAK0AAADZAAAA2wAAAMsAAADcAAAA3AAAAM8AAADdAAAA3QAAAOcAAADeAAAA3gAAAPQAAADfAAAA3wAAAYkAAADgAAAA5AAAAPgAAADlAAAA5QAAAP8AAADmAAAA5gAAAQ4AAADnAAAA5wAAARMAAADoAAAA6gAAARwAAADrAAAA6wAAASAAAADsAAAA7gAAATsAAADvAAAA7wAAAT8AAADwAAAA8AAAAbkAAADxAAAA8QAAAVsAAADyAAAA9gAAAWEAAAD3AAAA9wAABtcAAAD4AAAA+AAAAXIAAAD5AAAA+wAA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ArkAAB/tAAAf7gAAA3sAAB/vAAAf7wAAA3IAAB/yAAAf8gAAA1cAAB/zAAAf8wAAA1QAAB/0AAAf9AAAA1gAAB/2AAAf9gAAAzsAAB/3AAAf9wAAA18AAB/4AAAf+QAAArMAAB/6AAAf+wAAAsQAAB/8AAAf/AAAAt4AAB/9AAAf/QAAA3MAAB/+AAAf/gAAA3EAACAHAAAgBwAAB48AACASAAAgEgAABJAAACATAAAgFAAABIwAACAVAAAgFQAABJEAACAWAAAgFgAABKYAACAYAAAgGQAABIAAACAaAAAgGgAABIQAACAcAAAgHQAABIIAACAeAAAgHgAABIUAACAgAAAgIQAABKIAACAiAAAgIgAABJMAACAmAAAgJgAABHkAACAvAAAgLwAAB5IAACAwAAAgMAAABsAAACAyAAAgMwAABwQAACA1AAAgNQAABwYAACA5AAAgOgAABIYAACA8AAAgPAAABKcAACA9AAAgPQAABKsAACA+AAAgPwAABJUAACBEAAAgRAAABrwAACBHAAAgRwAABKgAACBIAAAgSAAABKoAACBJAAAgSQAABKkAACBwAAAgcAAABiYAACBxAAAgcQAABoMAACB0AAAgeQAABioAACB9AAAgfgAABjAAACB/AAAgfwAABogAACCAAAAgiQAABjQAACCNAAAgjgAABj4AACCUAAAglAAABpwAACChAAAgoQAABq0AACCkAAAgpAAABq4AACCmAAAgpwAABq8AACCpAAAgqQAABrEAACCrAAAgqwAABrIAACCsAAAgrAAABqoAACCuAAAgrgAABrkAACCxAAAgsgAABrMAACC0AAAgtQAABrUAACC4AAAguAAABroAACC5AAAgugAABrcAACC9AAAgvQAABrsAACETAAAhEwAABu0AACEWAAAhFgAABD0AACEXAAAhFwAABLcAACEgAAAhIAAABLoAACEiAAAhIgAABLkAACEmAAAhJgAABuoAACEuAAAhLgAABu4AACFQAAAhUAAABswAACFRAAAhUgAABtEAACFTAAAhWgAABsQAACFbAAAhXgAABs0AACGJAAAhiQAABtMAACGQAAAhkwAABu8AACICAAAiAgAABuYAACIGAAAiBgAABukAACIPAAAiDwAABuwAACIRAAAiEQAABusAACISAAAiEgAABtUAACIVAAAiFQAA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Eq8SthK9EsQSyxLSEtkS4BLnEu4S9RL8EwMTChMRExgTHxMmEy0TNBM7E0ITSRNQE1cTXhNlE2wTcxN6E4ETiBOPE5YTnROkE6sTshO5E8ATxxPOE9UT3BPjE+oT8RP4E/8UBhQNFBQUGxQiFCkUMBQ3FD4URRRMFFMUWhRhFGgUbxR2FH0UhBSLFJIUmRSgFKcUrhS1FLwUwxTMFNkU4BTnFOwU9RUCFQkVEBUXFR4VJRUsFTMVOhVBFUgVTxVWFV0VZBVrFXIVeRWEFY8VmhWlFbAVuxXGFdEV3BXnFe4V9RX8FgMWChYRFhgWIRYqFjEWOBY/FkYWTxZYFl8WZhZtFnQWexaCFokWkBaXFp4WpRasFrMWuhbBFsgWzxbWFt0W5BbrFvIW+RcAFwcXDhcVFxwXIxcsFzMXOhdBF0gXTxdYF2EXaBdvF3YXfReEF4sXkheZF6AXqReyF7kXwBfJF9IX2RfiF+sX8hf5GAAYBxgOGBUYHBgjGCoYMxg8GEMYShhRGFgYXxhmGG0YdBh7GIIYiRiQGJcYnhilGKwYtRi+GMUYzBjTGNoY4xjsGPMY+hkBGQgZDxkWGR0ZJBkrGTIZORlAGUcZThlVGVwZYxlqGXEZeBl/GYYZjRmUGZsZohmpGbAZtxnAGccZzhnVGdwZ4xnsGfUZ/BoDGgoaERoYGh8aJhotGjQaPRpGGk0aVBpdGmYabRp2Gn8ahhqNGpQamxqiGqkasBq3GsAayRrQGtca3hrlGuwa8xr6GwEbCBsPGxobIRsnGy4bNxs/G0cbURtaG2Mbaxt1G38biBuPG5cboBuoG7AbuhvDG8wb1BveG+gb8Rv6HAIcChwUHB0cJhwuHDgcQhxLHFMcWhxhHGocchx6HIEcihyTHJscohypHLActxy+HMUczBzTHNoc4RzoHO8c9hz9HQQdCx0SHRkdIB0nHS4dNR08HUMdSR1PHVYdWx1fHWMdZx1rHW8dcx13HXsdfx2DHYcdix2PHZMdlx2bHZ8dox2nHasdrx2zHbcdux2/HcMdzB3VHeMd7B34HgIeCx4THh0eJx4xHjseRR5PHlkeYx5tHncegR6LHpUenx6kHq4euB7CHswe1x7gHu4e9x8EHw0fFx8hHyofMx88H0ofUx9fH2kfch9/H4kfkx+dH6cfsR+7H8Ufzx/ZH+Mf7R/7IAQgESAbICQgLiA8IEYgVCBeIGggbyB4IIEgjyCYIKQgriC7IMUgzyDZIOMg7SD7IQUhDyEZISIhKyE1ITwhRiFQIVohYyFtIXchgSGKIZQhnSGmIbAhuiHEIc4h1yHgIe4h9yIDIg0iHSInIjEiOyJFIk8iWSJjIm0idiJ7IoMijSKXIqEiqyK1Ir8iySLTItwi5iLvIvkjAyMNIxcjICMuIzcjQSNLI1UjXyNsI3YjfyOJI5MjnSOnI7EjuiPDI9Ej2iPmI/Aj+SQBJBEkGyQlJC8kOSRDJE0kVyRhJGkkcyR9JIckkSSbJKQkrSS7JMck0CTZJOck8yT9JQclESUbJSQlLSU6JUQlTiVUJVwlZiVwJXolhSWNJZQlnCWmJbAltyW9JcUlzCXUJd0l4iXnJewl9iX7JgEmCSYPJhkmHyYlJismNSZEJlYmZSZyJoEmiyaVJp8mqSazJr0mxybRJtsm5SbvJvknAycNJxcnIScrJzUnPydJJ1MnXSdnJ3EneyeFJ48nmSejJ60ntyfBJ8sn1SffJ+kn8yf9KAcoESgcKCYoMCg6KEQoTihYKGIobCh2KIAoiiiUKJ4oqCiyKLwoxijQKNoo5CjuKPgpAikMKRYpICkqKTQpPilIKVIpXClmKXApeimGKY0pkymZKaEpqCmvKbUpvSnFKcwp1SniKe0p/CoKKhUqISouKj0qTSpWKl8qaCp0KoEqjyqeKqoqtyrAKsgq0CraKuMq7Cr0Kv4rCCsRKx8rLis5K0MrTCtUK1wrZitvK3grgCuKK5QrnSurK7orxSvPK9gr4CvoK/Ir+ywELAwsFiwgLCksNyxGLFEsWyxkLGwsdCx+LIcskCyYLKIsrCy1LMMs0izdLOcs9Cz6LQAtBi0MLRItGC0eLSQtKi0wLTYtPC1CLUgtTi1ULVotYC1mLWwtci14LX4thC2KLZAtli2cLaItqC2uLbQtui3ALcYtzC3SLdgt3i3kLeot8C32LfwuAi4ILg4uFC4aLiAuJi4sLjMuOi5BLkguTy5aLmUucS53Ln0ugy6NLpguoy6uLrQuuC6/LsMuyi7QLtcu2y7iLuku8C73Lv4vBS8MLxMvGi8hLysvMi85L0AvRy9OL1UvXC9jL2ovcS94L4EvjS+VL6AvqC+vL7ovwi/JL9Av1y/gL+cv7i/3L/4wBTAMMBUwHDAjMCowMTA4MD8wRjBNMFQwWzBiMGkwcDB3MH4whTCMMJMwmjChMKgwrzC2ML0wxDDLMNIw2TDgMOcw7jD1MQAxCTEQMRsxJDErMTYxPTFIMU8xWjFhMWwxczF8MYcxkzGaMaUxrDG3Mb4xyTHQMdsx4jHtMfQx/zIIMg8yGjIhMiwyMzI8MkMyTDJTMloyYTJoMm8ydjJ9MoQyizKSMpkyoDKnMrAytzLCMsky1DLbMuIy6TLwMvcy/jMFMwwzEzMaMyEzKDMvMzYzQTNIM08zWjNpM3YzgTOQM50zqDOzM8IzzTPcM+cz9jQBNBA0GzQqNDU0RDRPNF40aTR4NIM0kjSdNKw0tzTGNNE04DTrNPY1ATUMNRc1IjUpNTA1OjVGNU01VDVXNbc2JzY2QW1hY3JvbkFicmV2ZXVuaTAxQ0R1bmkxRUEwdW5pMUVBMnVuaTFFQTR1bmkxRUE2dW5pMUVBOHVuaTFFQUF1bmkxRUFDdW5pMUVBRXVuaTFFQjB1bmkxRUIydW5pMUVCNHVuaTFFQjZBb2dvbmVrdW5pMDFGQ3VuaTAxRTJ1bmkwMjQzdW5pMUUwNkNhY3V0ZUNjaXJjdW1mbGV4Q2Nhcm9uQ2RvdGFjY2VudERjYXJvbnVuaTFFMEN1bmkxRTBFRGNyb2F0RWNhcm9uRW1hY3JvbkVicmV2ZUVkb3RhY2NlbnR1bmkxRUI4dW5pMUVCQXVuaTFFQkN1bmkxRUJFdW5pMUVDMHVuaTFFQzJ1bmkxRUM0dW5pMUVDNkVvZ29uZWt1bmkxRTE2dW5pMDFGNEdjaXJjdW1mbGV4R2JyZXZlR2RvdGFjY2VudHVuaTAxMjJHY2Fyb251bmkxRTIwdW5pMDA0NzAzMDN1bmkwMTkzSGNpcmN1bWZsZXh1bmkxRTI0dW5pMUUyQUhiYXJJdGlsZGVJbWFjcm9uSWRvdGFjY2VudHVuaTAxQ0Z1bmkxRUM4dW5pMUVDQUlvZ29uZWt1bmkwMTJDSmNpcmN1bWZsZXh1bmkwMTM2dW5pMUUzMnVuaTFFMzRMYWN1dGVMY2Fyb251bmkwMTNCTGRvdHVuaTFFMzZ1bmkxRTM4dW5pMUUzQXVuaTFFM0V1bmkxRTQwdW5pMUU0Mk5hY3V0ZXVuaTAxRjhOY2Fyb251bmkwMTQ1dW5pMUU0NHVuaTFFNDZ1bmkxRTQ4T21hY3Jvbk9odW5nYXJ1bWxhdXR1bmkwMUQxdW5pMUVDQ3VuaTFFQ0V1bmkxRUQwdW5pMUVEMnVuaTFFRDR1bmkxRUQ2dW5pMUVEOHVuaTAxNEV1bmkxRTUyT2hvcm51bmkxRURBdW5pMUVEQ3VuaTFFREV1bmkxRUUwdW5pMUVFMnVuaTAxRUFSYWN1dGVSY2Fyb251bmkxRTU4dW5pMDE1NnVuaTFFNUF1bmkxRTVDdW5pMUU1RVNhY3V0ZVNjaXJjdW1mbGV4dW5pMDE1RXVuaTAyMTh1bmkxRTYwdW5pMUU2MnVuaTFFOUVUY2Fyb251bmkwMTYydW5pMDIxQXVuaTFFNkN1bmkxRTZFdW5pMDE2NlV0aWxkZVVtYWNyb25VYnJldmVVcmluZ1VodW5nYXJ1bWxhdXR1bmkwMUQzdW5pMDFENXVuaTAxRDd1bmkwMUQ5dW5pMDFEQnVuaTFFRTR1bmkxRUU2VW9nb25la1Vob3JudW5pMUVFOHVuaTFFRUF1bmkxRUVDdW5pMUVFRXVuaTFFRjBXZ3JhdmVXYWN1dGVXY2lyY3VtZmxleFdkaWVyZXNpc1lncmF2ZVljaXJjdW1mbGV4dW5pMUU4RXVuaTFFRjR1bmkxRUY2dW5pMUVGOFphY3V0ZVpkb3RhY2NlbnR1bmkxRTkydW5pMUU5NHVuaTAxOEZ1bmkwMTRBdW5pMDEzMmFtYWNyb25hYnJldmV1bmkwMUNFdW5pMUVBMXVuaTFFQTN1bmkxRUE1dW5pMUVBN3VuaTFFQTl1bmkxRUFCdW5pMUVBRHVuaTFFQUZ1bmkxRUIxdW5pMUVCM3VuaTFFQjV1bmkxRUI3YW9nb25la3VuaTAxRkR1bmkwMUUzdW5pMDE4MHVuaTFFMDdjYWN1dGVjY2lyY3VtZmxleGNjYXJvbmNkb3RhY2NlbnRkY2Fyb251bmkxRTBEdW5pMUUwRmRjcm9hdGVjYXJvbmVtYWNyb25lYnJldmVlZG90YWNjZW50dW5pMUVCOXVuaTFFQkJ1bmkxRUJEdW5pMUVCRnVuaTFFQzF1bmkxRUMzdW5pMUVDNXVuaTFFQzdlb2dvbmVrdW5pMUUxN3VuaTAxRjVnY2lyY3VtZmxleGdicmV2ZWdkb3RhY2NlbnR1bmkwMTIzZ2Nhcm9udW5pMUUyMXVuaTAwNjcwMzAzaGNpcmN1bWZsZXh1bmkxRTI1dW5pMUU5NnVuaTFFMkJoYmFyaXRpbGRlaW1hY3JvbnVuaTAxRDB1bmkxRUM5dW5pMUVDQmlvZ29uZWtpb2dvbmVrLmR1bmkwMTJEamNpcmN1bWZsZXh1bmkwMTM3dW5pMUUzM3VuaTFFMzVrZ3JlZW5sYW5kaWNsYWN1dGVsY2Fyb25sZG90dW5pMDEzQ3VuaTFFMzd1bmkxRTM5dW5pMUUzQnVuaTFFM0Z1bmkxRTQxdW5pMUU0M25hY3V0ZXVuaTAxRjluY2Fyb251bmkwMTQ2dW5pMUU0NXVuaTFFNDd1bmkxRTQ5bmFwb3N0cm9waGVvbWFjcm9ub2h1bmdhcnVtbGF1dHVuaTAxRDJ1bmkxRUNEdW5pMUVDRnVuaTFFRDF1bmkxRUQzdW5pMUVENXVuaTFFRDd1bmkxRUQ5dW5pMDE0RnVuaTFFNTNvaG9ybnVuaTFFREJ1bmkxRUREdW5pMUVERnVuaTFFRTF1bmkxRUUzdW5pMDFFQnJhY3V0ZXVuaTAxNTdyY2Fyb251bmkxRTU5dW5pMUU1QnVuaTFFNUR1bmkxRTVGc2FjdXRlc2NpcmN1bWZsZXh1bmkwMTVGdW5pMDIxOXVuaTFFNjF1bmkxRTYzdGNhcm9udW5pMDE2M3VuaTAyMUJ1bmkxRTZEdW5pMUU2RnVuaTFFOTd1bmkwMTY3dXRpbGRldW1hY3JvbnVicmV2ZXVyaW5ndWh1bmdhcnVtbGF1dHVuaTAxRDR1bmkwMUQ2dW5pMDFEOHVuaTAxREF1bmkwMURDdW5pMUVFNXVuaTFFRTd1b2dvbmVrdWhvcm51bmkxRUU5dW5pMUVFQnVuaTFFRUR1bmkxRUVGdW5pMUVGMXdncmF2ZXdhY3V0ZXdjaXJjdW1mbGV4d2RpZXJlc2lzeWdyYXZleWNpcmN1bWZsZXh1bmkxRThGdW5pMUVGNXVuaTFFRjd1bmkxRUY5emFjdXRlemRvdGFjY2VudHVuaTFFOTN1bmkxRTk1dW5pMDE0QnVuaTAyMzd1bmkwMTMzdW5pMDI1MHVuaTAyNTJ1bmkwMjUzdW5pMDI1NHVuaTAyNTV1bmkwMjU2dW5pMDI1N3VuaTAyNTh1bmkwMjUxdW5pMDI5OXVuaTAyNTl1bmkwMjVBdW5pMDI1QnVuaTAyNUN1bmkwMjVFdW5pMDI1RnVuaTAyNjB1bmkwMjYxdW5pMDI2MnVuaTAyNjN1bmkwMjY0dW5pMDI2NXVuaTAyNjZ1bmkwMjY3dW5pMDI5Q3VuaTAyNjh1bmkwMjZBdW5pMDI5RHVuaTAyNkN1bmkwMjZEdW5pMDI2RXVuaTAyOUZ1bmkwMjZGdW5pMDI3MHVuaTAyNzF1bmkwMjcydW5pMDI3M3VuaTAyNzR1bmkwMjc1dW5pMDI3NnVuaTAyNzh1bmkwMjc5dW5pMDI3QXVuaTAyN0J1bmkwMjdEdW5pMDI3RXVuaTAyODB1bmkwMjgxdW5pMDI4MnVuaTAyODN1bmkwMjg0dW5pMDI4OHVuaTAyODl1bmkwMjhBdW5pMDI4QnVuaTAyOEN1bmkwMjhEdW5pMDI4RXVuaTAyOEZ1bmkwMjkwdW5pMDI5MXVuaTAyOTJ1bmkwMjk0dW5pMDI5NXVuaTAyQTF1bmkwMkEydW5pMDFDMnVuaTAyOThmX2ZmX2ZfaWZfZl9sZl90Zl9mX3RJLmFJZ3JhdmUuYUlhY3V0ZS5hSWNpcmN1bWZsZXguYUl0aWxkZS5hSWRpZXJlc2lzLmFJbWFjcm9uLmFJZG90YWNjZW50LmF1bmkwMUNGLmF1bmkxRUM4LmF1bmkxRUNBLmFJb2dvbmVrLmF1bmkwMTJDLmF1bmkwMTRBLmFhLmFhZ3JhdmUuYWFhY3V0ZS5hYWNpcmN1bWZsZXguYWF0aWxkZS5hYWRpZXJlc2lzLmFhbWFjcm9uLmFhYnJldmUuYWFyaW5nLmF1bmkwMUNFLmF1bmkxRUExLmF1bmkxRUEzLmF1bmkxRUE1LmF1bmkxRUE3LmF1bmkxRUE5LmF1bmkxRUFCLmF1bmkxRUFELmF1bmkxRUFGLmF1bmkxRUIxLmF1bmkxRUIzLmF1bmkxRUI1LmF1bmkxRUI3LmFhb2dvbmVrLmFnLmF1bmkwMUY1LmFnY2lyY3VtZmxleC5hZ2JyZXZlLmFnZG90YWNjZW50LmF1bmkwMTIzLmFnY2Fyb24uYXVuaTFFMjEuYXVuaTAwNjcwMzAzLmFsLmFsYWN1dGUuYWxjYXJvbi5hbGRvdC5hdW5pMDEzQy5hdW5pMUUzNy5hdW5pMUUzOS5hdW5pMUUzQi5hbHNsYXNoLmFmbC5hQWxwaGFCZXRhR2FtbWF1bmkwMzk0RXBzaWxvblpldGFFdGFUaGV0YUlvdGFLYXBwYUxhbWJkYU11TnVYaU9taWNyb25QaVJob1NpZ21hVGF1VXBzaWxvblBoaUNoaVBzaXVuaTAzQTlBbHBoYXRvbm9zRXBzaWxvbnRvbm9zRXRhdG9ub3NJb3RhdG9ub3NJb3RhZGllcmVzaXNPbWljcm9udG9ub3NVcHNpbG9udG9ub3NVcHNpbG9uZGllcmVzaXNPbWVnYXRvbm9zYWxwaGFiZXRhZ2FtbWFkZWx0YWVwc2lsb256ZXRhZXRhdGhldGFpb3Rha2FwcGFsYW1iZGF1bmkwM0JDbnV4aW9taWNyb25waXJob3NpZ21hdGF1dXBzaWxvbnBoaWNoaXBzaW9tZWdhdW5pMDNDMnVuaTAzRDB1bmkwM0QxdW5pMDNENWFscGhhdG9ub3NlcHNpbG9udG9ub3NldGF0b25vc2lvdGF0b25vc2lvdGFkaWVyZXNpc29taWNyb250b25vc3Vwc2lsb250b25vc3Vwc2lsb25kaWVyZXNpc29tZWdhdG9ub3Npb3RhZGllcmVzaXN0b25vc3Vwc2lsb25kaWVyZXNpc3Rvbm9zdW5pMUYwOHVuaTFGMDl1bmkxRkJBdW5pMUZCQnVuaTFGMEF1bmkxRjBCdW5pMUYwQ3VuaTFGMER1bmkxRjBFdW5pMUYwRnVuaTFGQjh1bmkxRkI5dW5pMUYxOHVuaTFGMTl1bmkxRkM4dW5pMUZDOXVuaTFGMUF1bmkxRjFCdW5pMUYxQ3VuaTFGMUR1bmkxRjI4dW5pMUYyOXVuaTFGQ0F1bmkxRkNCdW5pMUYyQXVuaTFGMkJ1bmkxRjJDdW5pMUYyRHVuaTFGMkV1bmkxRjJGdW5pMUYzOHVuaTFGMzl1bmkxRkRBdW5pMUZEQnVuaTFGM0F1bmkxRjNCdW5pMUYzQ3VuaTFGM0R1bmkxRjNFdW5pMUYzRnVuaTFGRDh1bmkxRkQ5dW5pMUY0OHVuaTFGNDl1bmkxRkY4dW5pMUZGOXVuaTFGNEF1bmkxRjRCdW5pMUY0Q3VuaTFGNER1bmkxRkVDdW5pMUY1OXVuaTFGRUF1bmkxRkVCdW5pMUY1QnVuaTFGNUR1bmkxRjVGdW5pMUZFOHVuaTFGRTl1bmkxRjY4dW5pMUY2OXVuaTFGRkF1bmkxRkZCdW5pMUY2QXVuaTFGNkJ1bmkxRjZDdW5pMUY2RHVuaTFGNkV1bmkxRjZGdW5pMUZCQ3VuaTFGODh1bmkxRjg5dW5pMUY4QXVuaTFGOEJ1bmkxRjhDdW5pMUY4RHVuaTFGOEV1bmkxRjhGdW5pMUZDQ3VuaTFGOTh1bmkxRjk5dW5pMUY5QXVuaTFGOUJ1bmkxRjlDdW5pMUY5RHVuaTFGOUV1bmkxRjlGdW5pMUZGQ3VuaTFGQTh1bmkxRkE5dW5pMUZBQXVuaTFGQUJ1bmkxRkFDdW5pMUZBRHVuaTFGQUV1bmkxRkFGdW5pMUYwMHVuaTFGMDF1bmkxRjcwdW5pMUY3MXVuaTFGMDJ1bmkxRjAzdW5pMUYwNHVuaTFGMDV1bmkxRjA2dW5pMUYwN3VuaTFGQjB1bmkxRkIxdW5pMUZCNnVuaTFGMTB1bmkxRjExdW5pMUY3MnVuaTFGNzN1bmkxRjEydW5pMUYxM3VuaTFGMTR1bmkxRjE1dW5pMUYyMHVuaTFGMjF1bmkxRjc0dW5pMUY3NXVuaTFGMjJ1bmkxRjIzdW5pMUYyNHVuaTFGMjV1bmkxRjI2dW5pMUYyN3VuaTFGQzZ1bmkxRjMwdW5pMUYzMXVuaTFGNzZ1bmkxRjc3dW5pMUYzMnVuaTFGMzN1bmkxRjM0dW5pMUYzNXVuaTFGMzZ1bmkxRjM3dW5pMUZEMHVuaTFGRDF1bmkxRkQ2dW5pMUZEMnVuaTFGRDN1bmkxRkQ3dW5pMUY0MHVuaTFGNDF1bmkxRjc4dW5pMUY3OXVuaTFGNDJ1bmkxRjQzdW5pMUY0NHVuaTFGNDV1bmkxRkU0dW5pMUZFNXVuaTFGNTB1bmkxRjUxdW5pMUY3QXVuaTFGN0J1bmkxRjUydW5pMUY1M3VuaTFGNTR1bmkxRjU1dW5pMUY1NnVuaTFGNTd1bmkxRkU2dW5pMUZFMHVuaTFGRTF1bmkxRkUydW5pMUZFM3VuaTFGRTd1bmkxRjYwdW5pMUY2MXVuaTFGN0N1bmkxRjdEdW5pMUY2MnVuaTFGNjN1bmkxRjY0dW5pMUY2NXVuaTFGNjZ1bmkxRjY3dW5pMUZGNnVuaTFGQjN1bmkxRjgwdW5pMUY4MXVuaTFGQjJ1bmkxRkI0dW5pMUY4MnVuaTFGODN1bmkxRjg0dW5pMUY4NXVuaTFGODZ1bmkxRjg3dW5pMUZCN3VuaTFGQzN1bmkxRjkwdW5pMUY5MXVuaTFGQzJ1bmkxRkM0dW5pMUY5MnVuaTFGOTN1bmkxRjk0dW5pMUY5NXVuaTFGOTZ1bmkxRjk3dW5pMUZDN3VuaTFGRjN1bmkxRkEwdW5pMUZBMXVuaTFGRjJ1bmkxRkY0dW5pMUZBMnVuaTFGQTN1bmkxRkE0dW5pMUZBNXVuaTFGQTZ1bmkxRkE3dW5pMUZGN3VuaTAzRDd1bmkwM0Q5dW5pMDNEQnVuaTAzRER1bmkwM0UxdW5pMDM3RWFub3RlbGVpYWFub3RlbGVpYS5jYXB1bmkwMzc0dW5pMDM3NXRvbm9zdG9ub3MuY2FwZGllcmVzaXN0b25vc3VuaTAzN0F1bmkxRkJFdW5pMUZCRHVuaTFGQkZ1bmkxRkZFdW5pMUZFRnVuaTFGRkR1bmkxRkNEdW5pMUZERHVuaTFGQ0V1bmkxRkRFdW5pMUZDRnVuaTFGREZ1bmkxRkMwdW5pMUZFRHVuaTFGRUV1bmkxRkMxdW5pMUZCRC5jYXB1bmkxRkZFLmNhcHVuaTFGRUYuY2FwdW5pMUZGRC5jYXB1bmkxRkNELmNhcHVuaTFGREQuY2FwdW5pMUZDRS5jYXB1bmkxRkRFLmNhcHVuaTFGQ0YuY2FwdW5pMUZERi5jYXB1bmkwNDEwdW5pMDQxMXVuaTA0MTJ1bmkwNDEzdW5pMDQxNHVuaTA0MTV1bmkwNDE2dW5pMDQxNi5hdW5pMDQxNi5idW5pMDQxN3VuaTA0MTh1bmkwNDE5dW5pMDQxQXVuaTA0MUEuYXVuaTA0MUEuYnVuaTA0MUJ1bmkwNDFDdW5pMDQxRHVuaTA0MUV1bmkwNDFGdW5pMDQyMHVuaTA0MjF1bmkwNDIydW5pMDQyM3VuaTA0MjR1bmkwNDI1dW5pMDQyNnVuaTA0Mjd1bmkwNDI4dW5pMDQyOXVuaTA0MkF1bmkwNDJCdW5pMDQyQ3VuaTA0MkR1bmkwNDJFdW5pMDQyRnVuaTA0MDB1bmkwNDAxdW5pMDQwMnVuaTA0MDN1bmkwNDA0dW5pMDQwNXVuaTA0MDZ1bmkwNDA3dW5pMDQwNy5hdW5pMDQwOHVuaTA0MDl1bmkwNDBBdW5pMDQwQnVuaTA0MEN1bmkwNDBDLmF1bmkwNDBDLmJ1bmkwNDBEdW5pMDQwRXVuaTA0MEZ1bmkwNDYydW5pMDQ3MnVuaTA0NzR1bmkwNDkwdW5pMDQ5MnVuaTA0OTZ1bmkwNDk2LmF1bmkwNDk2LmJ1bmkwNDk4dW5pMDQ5QXVuaTA0OUEuYXVuaTA0OUEuYnVuaTA0QTB1bmkwNEEwLmF1bmkwNEEwLmJ1bmkwNEEydW5pMDRBQXVuaTA0QUV1bmkwNEIwdW5pMDRCMnVuaTA0QjZ1bmkwNEJBdW5pMDRDMHVuaTA0QzF1bmkwNEMxLmF1bmkwNEMxLmJ1bmkwNEQwdW5pMDRENHVuaTA0RDZ1bmkwNEQ4dW5pMDRFMnVuaTA0RTZ1bmkwNEU4dW5pMDRFRXVuaTA0RjJ1bmkwNDMwdW5pMDQzMXVuaTA0MzJ1bmkwNDMzdW5pMDQzNHVuaTA0MzV1bmkwNDM2dW5pMDQzNi5hdW5pMDQzNi5idW5pMDQzN3VuaTA0Mzh1bmkwNDM5dW5pMDQzQXVuaTA0M0EuYXVuaTA0M0EuYnVuaTA0M0J1bmkwNDNDdW5pMDQzRHVuaTA0M0V1bmkwNDNGdW5pMDQ0MHVuaTA0NDF1bmkwNDQydW5pMDQ0M3VuaTA0NDR1bmkwNDQ1dW5pMDQ0NnVuaTA0NDd1bmkwNDQ4dW5pMDQ0OXVuaTA0NEF1bmkwNDRCdW5pMDQ0Q3VuaTA0NER1bmkwNDRFdW5pMDQ0RnVuaTA0NTB1bmkwNDUxdW5pMDQ1MnVuaTA0NTN1bmkwNDU0dW5pMDQ1NXVuaTA0NTZ1bmkwNDU3dW5pMDQ1Ny5hdW5pMDQ1OHVuaTA0NTl1bmkwNDVBdW5pMDQ1QnVuaTA0NUN1bmkwNDVDLmF1bmkwNDVDLmJ1bmkwNDVEdW5pMDQ1RXVuaTA0NUZ1bmkwNDYzdW5pMDQ3M3VuaTA0NzV1bmkwNDkxdW5pMDQ5M3VuaTA0OTd1bmkwNDk3LmF1bmkwNDk3LmJ1bmkwNDk5dW5pMDQ5QnVuaTA0OUIuYXVuaTA0OUIuYnVuaTA0QTF1bmkwNEExLmF1bmkwNEExLmJ1bmkwNEEzdW5pMDRBQnVuaTA0QUZ1bmkwNEIxdW5pMDRCM3VuaTA0Qjd1bmkwNEJCdW5pMDRDMnVuaTA0QzIuYXVuaTA0QzIuYnVuaTA0Q0Z1bmkwNEQxdW5pMDRENXVuaTA0RDd1bmkwNEQ5dW5pMDRFM3VuaTA0RTd1bmkwNEU5dW5pMDRFRnVuaTA0RjN1bmkwNDMxLnNyYnVuaTIxMTZ6ZXJvLjB6ZXJvLjBzemVyby5wbnVtb25lLnBudW10d28ucG51bXRocmVlLnBudW1mb3VyLnBudW1maXZlLnBudW1zaXgucG51bXNldmVuLnBudW1laWdodC5wbnVtbmluZS5wbnVtemVyby4wcHplcm8uMHBzemVyby50bnVtb25lLnRudW10d28udG51bXRocmVlLnRudW1mb3VyLnRudW1maXZlLnRudW1zaXgudG51bXNldmVuLnRudW1laWdodC50bnVtbmluZS50bnVtemVyby5vbnVtb25lLm9udW10d28ub251bXRocmVlLm9udW1mb3VyLm9udW1maXZlLm9udW1zaXgub251bXNldmVuLm9udW1laWdodC5vbnVtbmluZS5vbnVtemVyby5jYXBvbmUuY2FwdHdvLmNhcHRocmVlLmNhcGZvdXIuY2FwZml2ZS5jYXBzaXguY2Fwc2V2ZW4uY2FwZWlnaHQuY2FwbmluZS5jYXB1bmkwMEFEdW5pMkUzQXVuaTJFM0J1bmkyMDE1dW5pMjAzRXVuaTIwM0Z1bmkyMDE2dW5pMjAzQ3VuaTIwNDd1bmkyMDQ5dW5pMjA0OHVuaTIwM0R1bmkyMzFDdW5pMjMxRHVuaTIzMUV1bmkyMzFGdW5pMjdFNnVuaTI3RTd1bmkyRTIydW5pMkUyM3VuaTJFMjR1bmkyRTI1dW5pMjExN3VuaTIxMjB1MUYxNkF1MUYxNkJhdC5jYXNlaS50cmtBLnNjQi5zY0Muc2NELnNjRS5zY0Yuc2NHLnNjSC5zY0kuc2NKLnNjSy5zY0wuc2NNLnNjTi5zY08uc2NQLnNjUS5zY1Iuc2NTLnNjVC5zY1Uuc2NWLnNjVy5zY1guc2NZLnNjWi5zY0FncmF2ZS5zY0FhY3V0ZS5zY0FjaXJjdW1mbGV4LnNjQXRpbGRlLnNjQWRpZXJlc2lzLnNjQW1hY3Jvbi5zY0FicmV2ZS5zY0FyaW5nLnNjdW5pMDFDRC5zY3VuaTFFQTAuc2N1bmkxRUEyLnNjdW5pMUVBNC5zY3VuaTFFQTYuc2N1bmkxRUE4LnNjdW5pMUVBQS5zY3VuaTFFQUMuc2N1bmkxRUFFLnNjdW5pMUVCMC5zY3VuaTFFQjIuc2N1bmkxRUI0LnNjdW5pMUVCNi5zY0FvZ29uZWsuc2NBRS5zY3VuaTAxRkMuc2N1bmkwMUUyLnNjdW5pMDI0My5zY3VuaTFFMDYuc2NDY2VkaWxsYS5zY0NhY3V0ZS5zY0NjaXJjdW1mbGV4LnNjQ2Nhcm9uLnNjQ2RvdGFjY2VudC5zY0RjYXJvbi5zY3VuaTFFMEMuc2N1bmkxRTBFLnNjRGNyb2F0LnNjRWdyYXZlLnNjRWFjdXRlLnNjRWNpcmN1bWZsZXguc2NFY2Fyb24uc2NFZGllcmVzaXMuc2NFbWFjcm9uLnNjRWJyZXZlLnNjRWRvdGFjY2VudC5zY3VuaTFFQjguc2N1bmkxRUJBLnNjdW5pMUVCQy5zY3VuaTFFQkUuc2N1bmkxRUMwLnNjdW5pMUVDMi5zY3VuaTFFQzQuc2N1bmkxRUM2LnNjRW9nb25lay5zY3VuaTFFMTYuc2N1bmkwMUY0LnNjR2NpcmN1bWZsZXguc2NHYnJldmUuc2NHZG90YWNjZW50LnNjdW5pMDEyMi5zY0djYXJvbi5zY3VuaTFFMjAuc2N1bmkwMDQ3MDMwMy5zY3VuaTAxOTMuc2NIY2lyY3VtZmxleC5zY3VuaTFFMjQuc2N1bmkxRTJBLnNjSGJhci5zY0lncmF2ZS5zY0lhY3V0ZS5zY0ljaXJjdW1mbGV4LnNjSXRpbGRlLnNjSWRpZXJlc2lzLnNjSW1hY3Jvbi5zY0lkb3RhY2NlbnQuc2N1bmkwMUNGLnNjdW5pMUVDOC5zY3VuaTFFQ0Euc2NJb2dvbmVrLnNjdW5pMDEyQy5zY0pjaXJjdW1mbGV4LnNjdW5pMDEzNi5zY3VuaTFFMzIuc2N1bmkxRTM0LnNjTGFjdXRlLnNjTGNhcm9uLnNjdW5pMDEzQi5zY0xkb3Quc2N1bmkxRTM2LnNjdW5pMUUzOC5zY3VuaTFFM0Euc2NMc2xhc2guc2N1bmkxRTNFLnNjdW5pMUU0MC5zY3VuaTFFNDIuc2NOYWN1dGUuc2N1bmkwMUY4LnNjTmNhcm9uLnNjTnRpbGRlLnNjdW5pMDE0NS5zY3VuaTFFNDQuc2N1bmkxRTQ2LnNjdW5pMUU0OC5zY09ncmF2ZS5zY09hY3V0ZS5zY09jaXJjdW1mbGV4LnNjT3RpbGRlLnNjT2RpZXJlc2lzLnNjT21hY3Jvbi5zY09odW5nYXJ1bWxhdXQuc2N1bmkwMUQxLnNjdW5pMUVDQy5zY3VuaTFFQ0Uuc2N1bmkxRUQwLnNjdW5pMUVEMi5zY3VuaTFFRDQuc2N1bmkxRUQ2LnNjdW5pMUVEOC5zY09zbGFzaC5zY09FLnNjT2hvcm4uc2N1bmkxRURBLnNjdW5pMUVEQy5zY3VuaTFFREUuc2N1bmkxRUUwLnNjdW5pMUVFMi5zY3VuaTAxRUEuc2N1bmkwMTRFLnNjdW5pMUU1Mi5zY1JhY3V0ZS5zY3VuaTFFNTguc2NSY2Fyb24uc2N1bmkwMTU2LnNjdW5pMUU1QS5zY3VuaTFFNUMuc2N1bmkxRTVFLnNjU2FjdXRlLnNjU2NpcmN1bWZsZXguc2NTY2Fyb24uc2N1bmkwMTVFLnNjdW5pMDIxOC5zY3VuaTFFNjAuc2N1bmkxRTYyLnNjZ2VybWFuZGJscy5zY3VuaTFFOUUuc2NUY2Fyb24uc2N1bmkwMTYyLnNjdW5pMDIxQS5zY3VuaTFFNkMuc2N1bmkxRTZFLnNjdW5pMDE2Ni5zY1VncmF2ZS5zY1VhY3V0ZS5zY1VjaXJjdW1mbGV4LnNjVXRpbGRlLnNjVWRpZXJlc2lzLnNjVW1hY3Jvbi5zY1VicmV2ZS5zY1VyaW5nLnNjVWh1bmdhcnVtbGF1dC5zY3VuaTAxRDMuc2N1bmkwMUQ1LnNjdW5pMDFENy5zY3VuaTAxRDkuc2N1bmkwMURCLnNjdW5pMUVFNC5zY3VuaTFFRTYuc2NVb2dvbmVrLnNjVWhvcm4uc2N1bmkxRUU4LnNjdW5pMUVFQS5zY3VuaTFFRUMuc2N1bmkxRUVFLnNjdW5pMUVGMC5zY1dncmF2ZS5zY1dhY3V0ZS5zY1djaXJjdW1mbGV4LnNjV2RpZXJlc2lzLnNjWWdyYXZlLnNjWWFjdXRlLnNjWWNpcmN1bWZsZXguc2NZZGllcmVzaXMuc2N1bmkxRThFLnNjdW5pMUVGNC5zY3VuaTFFRjYuc2N1bmkxRUY4LnNjWmFjdXRlLnNjWmNhcm9uLnNjWmRvdGFjY2VudC5zY3VuaTFFOTIuc2N1bmkxRTk0LnNjRXRoLnNjVGhvcm4uc2N1bmkwMThGLnNjdW5pMDE0QS5zY3VuaTAxMzIuc2N1bmkwMTRBLnNjYUFscGhhLnNjQmV0YS5zY0dhbW1hLnNjdW5pMDM5NC5zY0Vwc2lsb24uc2NaZXRhLnNjRXRhLnNjVGhldGEuc2NJb3RhLnNjS2FwcGEuc2NMYW1iZGEuc2NNdS5zY051LnNjWGkuc2NPbWljcm9uLnNjUGkuc2NSaG8uc2NTaWdtYS5zY1RhdS5zY1Vwc2lsb24uc2NQaGkuc2NDaGkuc2NQc2kuc2N1bmkwM0E5LnNjSW90YWRpZXJlc2lzLnNjVXBzaWxvbmRpZXJlc2lzLnNjQWxwaGFpb3Rhc3ViLnNjRXRhaW90YXN1Yi5zY09tZWdhaW90YXN1Yi5zY3VuaTA0MTAuc2N1bmkwNDExLnNjdW5pMDQxMi5zY3VuaTA0MTMuc2N1bmkwNDE0LnNjdW5pMDQxNS5zY3VuaTA0MTYuc2N1bmkwNDE3LnNjdW5pMDQxOC5zY3VuaTA0MTkuc2N1bmkwNDFBLnNjdW5pMDQxQi5zY3VuaTA0MUMuc2N1bmkwNDFELnNjdW5pMDQxRS5zY3VuaTA0MUYuc2N1bmkwNDIwLnNjdW5pMDQyMS5zY3VuaTA0MjIuc2N1bmkwNDIzLnNjdW5pMDQyNC5zY3VuaTA0MjUuc2N1bmkwNDI2LnNjdW5pMDQyNy5zY3VuaTA0Mjguc2N1bmkwNDI5LnNjdW5pMDQyQS5zY3VuaTA0MkIuc2N1bmkwNDJDLnNjdW5pMDQyRC5zY3VuaTA0MkUuc2N1bmkwNDJGLnNjdW5pMDQwMC5zY3VuaTA0MDEuc2N1bmkwNDAyLnNjdW5pMDQwMy5zY3VuaTA0MDQuc2N1bmkwNDA1LnNjdW5pMDQwNi5zY3VuaTA0MDcuc2N1bmkwNDA3LnNjYXVuaTA0MDguc2N1bmkwNDA5LnNjdW5pMDQwQS5zY3VuaTA0MEIuc2N1bmkwNDBDLnNjdW5pMDQwRC5zY3VuaTA0MEUuc2N1bmkwNDBGLnNjdW5pMDQ2Mi5zY3VuaTA0NzIuc2N1bmkwNDc0LnNjdW5pMDQ5MC5zY3VuaTA0OTIuc2N1bmkwNDk2LnNjdW5pMDQ5OC5zY3VuaTA0OUEuc2N1bmkwNEEwLnNjdW5pMDRBMi5zY3VuaTA0QUEuc2N1bmkwNEFFLnNjdW5pMDRCMC5zY3VuaTA0QjIuc2N1bmkwNEI2LnNjdW5pMDRCQS5zY3VuaTA0QzAuc2N1bmkwNEMxLnNjdW5pMDREMC5zY3VuaTA0RDQuc2N1bmkwNEQ2LnNjdW5pMDREOC5zY3VuaTA0RTIuc2N1bmkwNEU2LnNjdW5pMDRFOC5zY3VuaTA0RUUuc2N1bmkwNEYyLnNjYW1wZXJzYW5kLnNjemVyby5zY29uZS5zY3R3by5zY3RocmVlLnNjZm91ci5zY2ZpdmUuc2NzaXguc2NzZXZlbi5zY2VpZ2h0LnNjbmluZS5zY2V4Y2xhbS5zY2V4Y2xhbWRvd24uc2NxdWVzdGlvbi5zY3F1ZXN0aW9uZG93bi5zY3F1b3Rlc2luZ2xlLnNjcXVvdGVkYmwuc2NxdW90ZWxlZnQuc2NxdW90ZXJpZ2h0LnNjcXVvdGVkYmxsZWZ0LnNjcXVvdGVkYmxyaWdodC5zY2h5cGhlbi5zY2VuZGFzaC5zY2VtZGFzaC5zY3BhcmVubGVmdC5zY3BhcmVucmlnaHQuc2NicmFja2V0bGVmdC5zY2JyYWNrZXRyaWdodC5zY2JyYWNlbGVmdC5zY2JyYWNlcmlnaHQuc2N6ZXJvLnN1cHNvbmUuc3Vwc3R3by5zdXBzdGhyZWUuc3Vwc2ZvdXIuc3Vwc2ZpdmUuc3Vwc3NpeC5zdXBzc2V2ZW4uc3Vwc2VpZ2h0LnN1cHNuaW5lLnN1cHNwYXJlbmxlZnQuc3Vwc3BhcmVucmlnaHQuc3Vwc3BlcmlvZC5zdXBzY29tbWEuc3Vwc3plcm8uc3Vic29uZS5zdWJzdHdvLnN1YnN0aHJlZS5zdWJzZm91ci5zdWJzZml2ZS5zdWJzc2l4LnN1YnNzZXZlbi5zdWJzZWlnaHQuc3Vic25pbmUuc3Vic3BhcmVubGVmdC5zdWJzcGFyZW5yaWdodC5zdWJzcGVyaW9kLnN1YnNjb21tYS5zdWJzemVyby5kbm9tb25lLmRub210d28uZG5vbXRocmVlLmRub21mb3VyLmRub21maXZlLmRub21zaXguZG5vbXNldmVuLmRub21laWdodC5kbm9tbmluZS5kbm9tcGFyZW5sZWZ0LmRub21wYXJlbnJpZ2h0LmRub21wZXJpb2QuZG5vbWNvbW1hLmRub216ZXJvLm51bXJvbmUubnVtcnR3by5udW1ydGhyZWUubnVtcmZvdXIubnVtcmZpdmUubnVtcnNpeC5udW1yc2V2ZW4ubnVtcmVpZ2h0Lm51bXJuaW5lLm51bXJwYXJlbmxlZnQubnVtcnBhcmVucmlnaHQubnVtcnBlcmlvZC5udW1yY29tbWEubnVtcm9yZGZlbWluaW5lLmFBLnN1cHNCLnN1cHNDLnN1cHNELnN1cHNFLnN1cHNGLnN1cHNHLnN1cHNILnN1cHNJLnN1cHNKLnN1cHNLLnN1cHNMLnN1cHNNLnN1cHNOLnN1cHNPLnN1cHNQLnN1cHNRLnN1cHNSLnN1cHNTLnN1cHNULnN1cHNVLnN1cHNWLnN1cHNXLnN1cHNYLnN1cHNZLnN1cHNaLnN1cHNhLnN1cHNiLnN1cHNjLnN1cHNkLnN1cHNlLnN1cHNmLnN1cHNnLnN1cHNoLnN1cHNpLnN1cHNqLnN1cHNrLnN1cHNsLnN1cHNtLnN1cHNuLnN1cHNvLnN1cHNwLnN1cHNxLnN1cHNyLnN1cHNzLnN1cHN0LnN1cHN1LnN1cHN2LnN1cHN3LnN1cHN4LnN1cHN5LnN1cHN6LnN1cHN1bmkwMkMxdW5pMDJEMHVuaTAyRDF1bmkwMkRFdW5pMDJFMGVncmF2ZS5zdXBzZWFjdXRlLnN1cHN1bmkwMjU5LnN1cHNhLnN1cGFnLnN1cGFsLnN1cGFjb2xvbi5zdXBzaHlwaGVuLnN1cHNlbmRhc2guc3Vwc2VtZGFzaC5zdXBzeWVuLkNORXVyb3VuaTAxOTJsaXJhdW5pMjBBNnBlc2V0YXVuaTIwQTlkb25ndW5pMjBCMXVuaTIwQjJ1bmkyMEI0dW5pMjBCNXVuaTIwQjl1bmkyMEJBdW5pMjBBRXVuaTIwQjh1bmkyMEJEdW5pMjIxNXNsYXNoLmZyYWN1bmkyMTU1dW5pMjE1NnVuaTIxNTd1bmkyMTU4dW5pMjE1OXVuaTIxNUF1bmkyMTUwdW5pMjE1MXVuaTIxNTJ1bmkyMTg5dW5pMjIxOWxlc3NlcXVhbGdyZWF0ZXJlcXVhbG5vdGVxdWFsYXBwcm94ZXF1YWxpbmZpbml0eXVuaTAwQjVwYXJ0aWFsZGlmZmludGVncmFscmFkaWNhbHVuaTIyMDZ1bmkyMTI2c3VtbWF0aW9ucHJvZHVjdHVuaTIxMTNlc3RpbWF0ZWR1bmkyMTkwYXJyb3d1cHVuaTIxOTJhcnJvd2Rvd251bmkyNUEwdW5pMjVDNnVuaTI1Qzl1bmkyNzUydHJpYWd1cHVuaTI1QjN1bmkyNUI2dW5pMjVCN3RyaWFnZG51bmkyNUJEdW5pMjVDMHVuaTI1QzF1bmkyNjEwdW5pMjYxMXVuaTI3MTN1bmkyNjZBbG96ZW5nZXVuaTIwMzJ1bmkyMDMzdW5pMjAzNXVuaTAyQjl1bmkwMkJCdW5pMDJCQ3VuaTAyQkV1bmkwMkJGdW5pMDJDOHVuaTAyQzl1bmkwMkNBdW5pMDJDQnVuaTAyQ0N1bmkyNUNDdW5pMDMwMHVuaTAzMDAuY2FwdW5pMDMwMC5ndW5pMDMwMXVuaTAzMDEuY2FwdW5pMDMwMS5ndW5pMDMwMnVuaTAzMDIuY2FwdW5pMDMwM3VuaTAzMDMuY2FwdW5pMDMwNHVuaTAzMDQuY2FwdW5pMDMwNXVuaTAzMDUuY2FwdW5pMDMwNnVuaTAzMDYuY3VuaTAzMDYuY2FwdW5pMDMwNi5jY2FwdW5pMDMwN3VuaTAzMDcuY2FwdW5pMDMwOHVuaTAzMDguY2FwdW5pMDMwOXVuaTAzMDkuY2FwdW5pMDMwQXVuaTAzMEEuY2FwdW5pMDMwQnVuaTAzMEIuY2FwdW5pMDMwQ3VuaTAzMEMuY2FwdW5pMDMwQy5hdW5pMDMwRnVuaTAzMEYuY2FwdW5pMDMxMXVuaTAzMTEuY2FwdW5pMDMxMnVuaTAzMTIuZ3VuaTAzMTN1bmkwMzEzLmd1bmkwMzE4dW5pMDMxOXVuaTAzMUF1bmkwMzFCdW5pMDMxQ3VuaTAzMUR1bmkwMzFFdW5pMDMxRnVuaTAzMjB1bmkwMzIzdW5pMDMyNHVuaTAzMjV1bmkwMzI2dW5pMDMyNi5hdW5pMDMyN3VuaTAzMjcuY2FwdW5pMDMyOHVuaTAzMjguY2FwdW5pMDMyOXVuaTAzMkF1bmkwMzJDdW5pMDMyRXVuaTAzMkZ1bmkwMzMwdW5pMDMzMXVuaTAzMzR1bmkwMzM5dW5pMDMzQXVuaTAzM0J1bmkwMzNDdW5pMDMzRHVuaTAzNDJ1bmkwMzQyLmNhcHVuaTAzNDV1bmkwMzYxdW5pMDMwODAzMDF1bmkwMzA4MDMwMS5jYXB1bmkwMzA4MDMwMS5ndW5pMDMwODAzMDB1bmkwMzA4MDMwMC5jYXB1bmkwMzA4MDMwMC5ndW5pMDMwODAzMDN1bmkwMzA4MDMwNHVuaTAzMDgwMzA0LmNhcHVuaTAzMDgwMzBDdW5pMDMwODAzMEMuY2FwdW5pMDMwMjAzMDF1bmkwMzAyMDMwMS5jYXB1bmkwMzAyMDMwMHVuaTAzMDIwMzAwLmNhcHVuaTAzMDIwMzA5dW5pMDMwMjAzMDkuY2FwdW5pMDMwMjAzMDN1bmkwMzAyMDMwMy5jYXB1bmkwMzA2MDMwMXVuaTAzMDYwMzAxLmNhcHVuaTAzMDYwMzAwdW5pMDMwNjAzMDAuY2FwdW5pMDMwNjAzMDl1bmkwMzA2MDMwOS5jYXB1bmkwMzA2MDMwM3VuaTAzMDYwMzAzLmNhcHVuaTAzMDIwMzA2dW5pMDMwMjAzMDYuY2FwdW5pMDMwNDAzMDF1bmkwMzA0MDMwMS5jYXB1bmkwMzEyMDMwMXVuaTAzMTIwMzAwdW5pMDMxMjAzMDN1bmkwMzEzMDMwMXVuaTAzMTMwMzAwdW5pMDMxMzAzMDN1bmkwMEEwdW5pMjAwN3NwYWNlLmZyYWNuYnNwYWNlLmZyYWN1bmkyMDJGdW5pRkVGRjIuMFNvdXJjZSBpcyBhIHRyYWRlbWFyayBvZiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZCBpbiB0aGUgVW5pdGVkIFN0YXRlcyBhbmQvb3Igb3RoZXIgY291bnRyaWVzLkNvcHlyaWdodCAyMDEwLCAyMDEyLCAyMDE0IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkIChodHRwOi8vd3d3LmFkb2JlLmNvbS8pLCB3aXRoIFJlc2VydmVkIEZvbnQgTmFtZSAnU291cmNlJy5Tb3VyY2UgU2FucyBQcm8BzgIAAQBdAJsA4QEEATEBOQFfAYgBzgH3AhwCPAJkAoACnQKyAvkDPANRA2wDggOZA7ED5gQCBAoEHwQsBEMEjgSuBMYE8AUBBQQFDAUxBUEFVAVrBawF0QXjBf8GTAZsBqgGsAa9BwQHgweZB7sH5wgWCBoIUwheCHoIhQiICMgI2AkfCT8JVwliCXcJfwneCgUKEgoqCkAKTApTCl4KYgp0CocKkQqZCrMK4QrmCx8LJgtzC34LtQu7C9QL2QvkC/YL/QwCDCkMMAxFDGoMmwzADNoM3g0gDToNSQ1ODV8Nig2q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fgDKrADK+QDLJwDLPADLUQDLagDLgwDLkwDLowDLtwDLzwDL5wDMAQDMGgDMPQDMUADMZQDMewDMkgDMrADMrgDM8gDM9ADNRwDNdgDNwgDNxwDNyQDNzQDN/gDOAQDODwDOIADOcgDOdQDOfwDOrwDOuQDOvADO6QDO7gDO8QDO8wDPIADPLgDPOgDPnQDPnwDP6ADQDADQGwDQMwDQRgDQYQDQjgDQkwDQ0ADQ0gDQ1gDRJwDRKgDRSwDRfwDRjADRpQDRqADR4wDR7QDR/gDSAwDSBgDSCADSEwDSIQDSOgDSrADSrgDS0ADS6gDTBgDTMQDTXQDTggDTmQDT6wDUTgDUlgDUnQDUswDU/gDVBgDVVwDVaQDVbADVewDVtQDVvwDWJADWegDWqADWrwDWwADW4QDXFADXWADXWgDXrwDXzQDX+ADYSgDYlQDY4QDZKwDZXwDZvwDZywDaFADabQDamwDa1QDa2ADbCQDbGgDbHQDbMgDbNADbTADbZADbZgDbiwDbqADcRQDchQDcpADc5QDdTADdjwDd4QDeQADebwDe7ADfSwDfjADftADf+QDgPwDgUwDgZQDgcADggADgkwDgpADguQDgzgDg4wDhGwDhUADhYgDhfADh1wDiMwDiPwDiSwDiWADiYgDieADihADijwDinADipgDisQDivADixwDi1ADi3wDi6wDi9wDjBADjDgDjIwDjLwDjOgDjRwDjUQDjWwDjZgDjcQDjfgDjiQDjkwDjngDjqADjsADjwwDjzQDj1gDj4QDj6QDj8wDj/ADkBQDkEADkGgDkLADkOADkQgDkTADkYgDkdADkfwDkjADklgDkoQDkrADktwDkxADkzwDk0QDk0wDk1QDlGADldQDluQDl8QDmFwDmNgDmhgDmqADmugDm6ADnFwDnLADndgDnsADn6ADoHADocwDotADpFQDpMQDpZADplQDp9gDqRgDqfwDqqADqqgDq4QDrHgDrbADreQDrsgDsawDsiADspgDs4ADtCwDtOQDthADtoQDtowDt2QDuIwDuVQDusADu7QDvJwDvUADvmQDv1ADwJADwVADwjADwqwDwvgDw8QDxVADxbgDxiQDx2wDx3QDySQDyWQDybgDygwDymADyrADy5QDzVwDzygD0IwD0YgD0hAD0+wD1XAD10gD2lgD3EwD3kwD3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Ag8AWgIPAFoCDwBaAg8AWgIPAFoCDwBaAg8AWgIPAFoCDwBaAg8AWgIPAFoCDwBJAg8AWgIPAFoCDwBaAg8AWgIPAFoCaQA0AmkANAJpADQCaQA0AmkANAJpADQCaQA0AmkANAJpADQCjABaAowAWgKMAFoCrwAgAQf//AEHAE0BB//vAQf/0gEH/+sBB//9AQcASgEH/+8BBwA/AQcATgEHACsBB//xAeAAHwJDAFoCQwBaAkMAWgHmAFAB5gBaAeYAWgHmAFoB5gBaAeYAAAHmAFoB6f/6AtcAWgLXAFoC1wBaAocAWgKHAFoChwBaAocAWgKHAFoChwBaAocAWgKHAFoCmAA0ApgANAKYADQCmAA0ApgANAKYADQCmAA0ApgANAKYADQCmAA0ApgANAKYADQCmAA0ApgANAKYADQCmAA0ApgANAKYADIDTwA0ApgANwKYADcCmAA3ApgANwKYADcCmAA3ApgANAI5AFoCOQBaAjkAWgI5AFoCOQBaAjkAWgI5AFoCFgAqAhYAKgIWACoCFgAqAhYAKgIWACoCFgAqApsAWwIYABwCGAAcAhgAHAIYABwCGAAcAhgAHAKFAFcChQBXAoUAVwKFAFcChQBXAoUAVwKFAFcChQBXAoUAVwKFAFcChQBXAoUAVwKFAFcChQBXAoUAVwKFAFcChQBXApMAVwKTAFcCkwBXApMAVwKTAFcCkwBXAxIAFwMSABcDEgAXAxIAFwHc//8B3P//Adz//wHc//8B3P//Adz//wHc//8B3P//AhsALQIbAC0CGwAtAhsALQIbAC0CfgAhAkcAWgKSADoCewBaAg4AWgH4ADQB+AA0AfgANAH4ADQB+AA0AfgANAH4ADQB+AA0AfgANAH4ADQB+AA0AfgANAH4ABAB+AA0AfgANAH4ADQB+AA0AfgANAH4ADQB+AA0AfgANAH4ADQDEQA6AxEAOgMRADoCIAAIAikAUgHIAC4ByAAuAcgALgHIAC4ByAAuAj0ALwIrAC8CKwAvAisALwHwAC4B8AAuAfAALgHwAC4B8AAuAfAALgHwAC4B8AAuAfAALgHwAC4B8AAuAfAALgHwABEB8AAuAfAALgHwAC4B8AAuAfAALgH4AC0B+AAtAfgALQH4AC0B+AAtAfgALQH4AC0B+AAtAiD/6AIgAFICIABSAiAAUgIgAAgA9v/sAPYAQwD2/+AA9v/OAPb/6QD2//YA9v/gAPYANwD2AEMA9gAmAPYAJgD2/+AA9gBSAPf/2AHvAFIB7wBSAe8AUgHvAFIA/wBBAQ4AUgFqAFIA/wA/AP8AUgD///UA/wAZAQb//wM9AFIDPQBSAz0AUgIjAFICIwBSAiMAUgIjAFICIwBSAiMAUgIjAFICIwBSAwcAPwIeAC4CHgAuAh4ALgIeAC4CHgAuAh4ALgIeAC4CHgAuAh4ALgIeAC4CHgAuAh4AGAIeAC4CHgAuAh4ALgIeAC4CHgAuAh4ALgNHAC4CHgAuAh4ALgIeAC4CHgAuAh4ALgIeAC4CHgAuAVsAUgFbABoBWwA/AVsAUgFbAEQBWwBEAVv/9AGjABwBowAcAaMAHAGjABwBowAcAaMAHAGjABwCQABSAVIAGAFSABgBUgAYAVIAGAFSABgBUv/+AVIAGAIgAEsCIABLAiAASwIgAEsCIABLAiAASwIgAEsCIABLAiAASwIgAEsCIABLAiAASwIgAEsCIABLAiAASwIgAEsCIABLAiAASwIgAEsCIABLAiAASwIgAEsCIABLAs4AGALOABgCzgAYAs4AGAHTAAwB0wAMAdMADAHTAAwB0wAMAdMADAHTAAwB0wAMAakAHwGpAB8BqQAfAakAHwGpAB8CIQA1AisAUgIjAFIA9//YAe0AQwIAAEsCKwBSAisAUgHIABkByAAuAisALwIrAC8B8AAlAisALwH8AFIB8AAlAogAJQG4ADIByAAlAiIAMgEO/+MCLwAyAi8AMgHxAC4B0wAMAf8AEAIjAEsCIABSAiAAUgIyAFMBDgAIAVUALgEc/6wBLv/6AP8AUgJBAFIBmwBSAz0ATQM9AE0DPQBSAiP/7AIjAFICHwBSAh4ALgK7AC4CqAAuAVv//QFb//0BW//9AVsAUgFOAFIB7wBSAe8AIAGjABwA9//YAQ7/4wFSABgCPwAIAh0AJQISAEsB0wAMAs4AGAHTAAwBn///AakAHwHBAB8BqQADAaH//gG7AB8BuQAHAbkAEwEgAAYCDQA7AkEAHgM3AB4DQAAeAlIAHgNvAB4BVwAuAVcAJQFXAC4BVwAYAVf/+wFXABQBVwAmAVcALgFXABgBVwAuAVcALgFXAC4BVwAaAocAWgIrAC8CKwAvAisALwIrAC8CKwAvAisALwIrAC8CKwAvAisALwIrAC8CKwAvAisALwIrAC8CKwAkAisALwIrAC8CKwAvAisALwIrAC8CKwAvAisALwIrAC8CKwAvAi8AMgIvADICLwAyAi8AMgIvADICLwAyAi8AMgIvADICLwAyAPYAUgD2AEMBCQBSAWoAUgD2ABwA9gBFAPb/9gD2//YBAf//AiwAHgIgAAMCTABaAfIAWgJMAB4CDwBaAhsALQKMAFoCmAA0AQcAWgJDAFoCAwAAAtcAWgKHAFoCFQAxApgANAKFAFoCNgBaAhoALAIYABwB3P//As8AMAIBAA8CuwA/AqYALQI2AAYCT//tAsz/7QFH/+0BB//rAsf/7QJY/+0B3P//AtP/6QIwAC4CNQBPAeQABgITADQBwAAuAagAMAIdAEsCCgA7AQYAUgHuAEkB7gAQAjIAUgHaAAYBrwAcAhcALgJKABYCJQBOAiIALgHMABoB/gA8AqgALgHhAAkCsQA9Ar0AMwGwAC4CMABOAgoAQgKoAC4CMAAuAcAALgIdAEsBBgBSAQb/6gIXAC4B/gA8Af4APAK9ADMBBv/hAf4APAJE//oCPf/zAjYAAwI2AAYCyv/0Asb/8wLF//QCwf/zAmX/6AJl/+gCIAADAiAAAwKF//QChf/zAk//6gJP/+0C/P/0Avn/8wL4//QC9P/zAwL/9AMC//MCzP/qAsz/7QN5//QDdf/zA3X/9ANx//MDSP/oA0j/6AF9//QBff/zAUf/6gFH/+0B9P/0AfH/8wHw//QB7P/zAcP/6AHD/+gBB//xAQf//QL5//QC6//zAs3/6gLH/+0DdP/0A3b/8wNw//QDbP/zAqz/8wKF//MCWP/qAlj/7QMB//MC/f/zAs7/6AHc//8B3P//AwX/9AL3//MC1v/rAtP/6QOE//QDgP/zA3//9AN7//MDMf/oAzH/6AMiAAMDR//6A0D/8wPM//QDyP/zA8j/9APE//MDaP/oA2j/6AOOAFoEBP/0BAT/8wR8//QEeP/zBHf/9AR0//MESv/oBEr/6AOnAC0EB//0A/r/8wSG//QEg//zBIL/9AR+//MENv/oBDb/6AIwAC4CMAAuAjAALgIwAC4CMAAuAjAALgIwAC4CMAAuAjAALgIwAC4CMAAuAjAALgIwAC4BwAAuAcAALgHAAC4BwAAuAcAALgHAAC4BwAAuAcAALgIdAEsCHQBLAh0ASwIdAEsCHQBLAh0ASwIdAEsCHQBLAh0ASwIdAEsCHQBLAQYAOAEGACwBBv/tAQYARAEG/+ABBv/aAQb/4AEG/+QBBv/vAQb/7wEG/+ABBv/3AQb/zwEG/+EBBv/hAQb/4wIXAC4CFwAuAhcALgIXAC4CFwAuAhcALgIXAC4CFwAuAiUATgIlAE4B/gA8Af4APAH+ADwB/gA8Af4APAH+ADwB/gA8Af4APAH+ADwB/gA8Af4APAH+ADwB/gA8Af4APAH+ADwB/gA8Ar0AMwK9ADMCvQAzAr0AMwK9ADMCvQAzAr0AMwK9ADMCvQAzAr0AMwK9ADMCMAAuAjAALgIwAC4CMAAuAjAALgIwAC4CMAAuAjAALgIwAC4CMAAuAjAALgIwAC4CHQBLAh0ASwIdAEsCHQBLAh0ASwIdAEsCHQBLAh0ASwIdAEsCHQBLAh0ASwIdAEsCvQAzAr0AMwK9ADMCvQAzAr0AMwK9ADMCvQAzAr0AMwK9ADMCvQAzAr0AMwK9ADMB7gBJAhcALgHSAC4BnQBSAfIAEQD5AC8A+QBBAPkAQQD5AFIA+QBAAh4A7gBA/+0CHgB6Ah4A9AEGAFICHgDLAh4AywIeAL8CHgC0Ah4A7gIeAHMCHgBtAh4AcwIeAHcCHgCCAh4AggIeAGICHgB0Ah4AdAIeAHYAd//0AHX/8wBA/+oAQP/tAO3/9ADq//MA7f/0AOb/8wC8/+gAvP/oAiAAAwJEAFoCTABaAfIAWgJ+ABoCDwBaAyUABgMl//YDIwAKAioAKgKQAFoCkABaAkQAWgJEAFoCQQBaAnYAAALXAFoCjABaApgANAKFAFoCNgBaAjsANAIYABwCAgAFAtwALwIBAA8CggBaAlYAQwNhAFoDagBaAtAAHAMeAFoCRABaAjsAIAOMAFoCRgAWAg8AWgIPAFoCrwAcAfIAWgI7ADQCFgAqAQcAWgEH/+sBBwASAeAAHwOHAAYDoQBaArgAHAJEAFoCQQBaAkEAWgKQAFoCAgAFAoUAWgJmABwCmAA0AhEAAAHyAFoCCQAhA08ABgNU//oDVAAOAioAKgJ0AFoCcQBaAnEAWgLMABwC0AAcAtAAHAKVAFoCOwA0Adz//wHc//8CJwAPAl8AQwJWAFoBBwBaAyUABgMj//YDIwAKAiAAAwM2AAgCDwBaApIAOgKQAFoCmAA0ApgANAICAAUCAgAFAfgANAIgADUB/ABSAZsAUgIUABMB8AAuAqkADQKpAAECqgANAcgAJQI1AFICNQBSAfIAUgHyAFIB8gBSAhMACgJ5AFICMgBSAh4ALgIpAFICKwBSAcgALgHMABoB0wAMAt4ALwG+AA4CKgBSAgAAOwLtAFIC9QBSAlQAGgKiAFIB6wBSAcgAGALiAFICAgAgAfAALgHwAC4CJAAIAZsAUgHIAC4BowAcAPYAQwD2/+kBAQARAPf/2ALfAAwC9gBSAiAACAHyAFIB8gBSAfIAUgI1AFIB0wAMAi4AUgJAABoCHgAuAd0ADAGgAFIBqAAeAs4ADQLOAAECzgANAcgAJQIYAFICGABSAhgAUgJmABoCZgAaAmYAGgI6AFMByAAuAdMADAHTAAwB4gAOAggAOwIgAFICqQANAqoAAQKqAA0A/wBSAfgANAMRADoB8AAuAfAAJQI1AFICHgAuAh4ALgHTAAwB0wAMAg4ALwN9ADsCYQAgAfEALAHxAE8B8QAkAfEAGgHxABEB8QAZAfEAMAHxACwB8QApAfEAKAHxACwB8QAsAhoANwFxADIB9QAlAfEAGgIHACIB8QAZAg0APQHrACwCDQA3Ag0ANAIaADcCGgA3AfEALAHxAE8B8QAkAfEAGgHxABEB8QAZAfEAMQHxACwB8QApAfEAHgIGADQBcQAyAfEAKQHxABoCBgAZAfEAGQIGADkB6QAsAgcAMQIGACYB8QAsAfEATwHxACQB8QAaAfEAEQHxABkB8QAxAfEALAHxACkB8QAoAPkAQQD5AC8A+QBBAPkALwO0AF4BIQBVASEAVQGpACYBqQAwAPkAUAGqAFAA+QA5APkAPwGqADkBqgA/APkAPwGqAD8BDwAtAQ8ANgGtAC0BrQA2ATcAKQE3ACkB4AApAyAAKQXcACkImAApAfEAKQMgACkA+QBBATAAKAH0AAwB9AAMAAD+OgEvAFIBLwAmAS8AXgEvAB8BLwAiAS8AHwFeAAoA8QBcAV4ADgDxAFwBogA6AcYANgHGADYB8QAtAjAAKQGGAFwCJQBVAy8AJgKnAFUCpwAmAbAAGwEvAF4BLwAfAS8AXgEvAB8BegBeAXoAHwEvAF4BLwAfAS8AXgEvAB8C6AAxAucAMQGnABcCfQADAn0AGwJ9ABwCjQAcA08AMwMOADMB8QAjAPYAQwHWAAMCDgBaAfcANAIrAFoB2wBaAbsAWgIlADQCUgBaAQcAWgG2AB8CAgBaAbUAWgKHAFoCSQBaAk0ANAIGAFoCTQAzAgsAWgHaACoB0wAcAkcAVwG/AAACrAAXAcUADwGf//8B2wAtAdYAAwHWAAMB1gADAdYAAwHWAAMB1gADAdYAAwHWAAMB1gADAdYAAwHWAAMB1gADAdYAAwHWAAMB1gADAdYAAwHWAAMB1gADAdYAAwHWAAMB1gADAdYAAwLIAAgCyAAIAsgACAIhACECDgBaAfcANAH3ADQB9wA0AfcANAH3ADQCKwBaAisAWgIrAFoCPgAhAdsAWgHbAFoB2wBaAdsAWgHbAFoB2wBaAdsAWgHbAFoB2wBaAdsAWgHbAFgB2wBaAdsANgHbAFoB2wBaAdsAWgHbAFoB2wBaAiUANAIlADQCJQA0AiUANAIlADQCJQA0AiUANAIlADQCJQA0AlIAWgJSAFoCUgBaAnYAIAEH//wBBwBNAQf/7wEH/9IBB//rAQf//QEHAEoBB//vAQcAPwEHAE0BBwArAQf/8QG2AB8CAgBaAgIAWgICAFoBtQBTAbUAWgG1AFoBtQBaAbUAWgG1AAMBtQBaAbX/+gKHAFoChwBaAocAWgJJAFoCSQBaAkkAWgJJAFoCSQBaAkkAWgJJAFoCSQBaAk0ANAJNADQCTQA0Ak0ANAJNADQCTQA0Ak0ANAJNADQCTQA0Ak0ANAJNADQCTQA0Ak0ANAJNADQCTQA0Ak0ALwLfADQCTQA0Ak0ANAJNADQCTQA0Ak0ANAJNADQCTQA0Ak0ANAJNADQCCwBaAgsAWgILAFoCCwBaAgsAWgILAFoCCwBaAdoAKgHaACoB2gAqAdoAKgHaACoB2gAqAdoAKgOqACoCUgBbAdMAHAHTABwB0wAcAdMAHAHTABwB0wAcAkcAVwJHAFcCRwBXAkcAVwJHAFcCRwBXAkcAVwJHAFcCRwBXAkcAVwJHAFcCRwBXAkcAVwJHAFcCRwBXAkcAVwJHAFcCVQBXAlUAVwJVAFcCVQBXAlUAVwJVAFcCrAAXAqwAFwKsABcCrAAXAZ///wGf//8Bn///AZ///wGf//8Bn///AZ///wGf//8B2wAtAdsALQHbAC0B2wAtAdsALQI+ACECDQBaAkYAOgI4AFoCDgBaAkkAWgHWAAMCDgBaAcAAWgICAB4B2wBaAdsALQJSAFoCTQA0AQcAWgICAFoBvQAAAocAWgJJAFoB1wAxAk0ANAJMAFoCBgBaAdcALAHTABwBn///Ao8AMAHFAA8CcQA/AlAALAEH/+sBn///At0AAwNZAFoDVwAsAdYAAwIHAFoCDgBaAcAAWgIyABoB2wBaArkABgHmACsCSQBaAkkAWgIHAFoCLgAAAocAWgJSAFoCTQA0AkwAWgIGAFoB9wA0AdMAHAG9AAUCgAAvAcUADwJDAFoCHQBDAwQAWgMLAFoCbgAcAtAAWgIIAFoB9gAgAyEAWgIKABYB2wBaAdsAWgJVABwBwABaAfUANAHaACoBBwBaAQf/6wEHABIBtgAfAv0AAAMoAFoCYwAcAgcAWgJJAFoBvQAFAkUAWgIeABwCTQA0AcgAAAHAAFoB1gAhAucABgHmACsCNwBaAn0AHAJZAFoB9wA0AZ///wGf//8B6wAPAiMAQwIdAFoBBwBaArkABgHWAAMCyAAIAdsAWgJGADoCSQBaAk0ANAJNADQBvQAFAb0ABQIWACAB+QA3AWYAMgHFACIBywAXAeEAJAHRAB8B6AA+Aa8AIQHpADYB4wAxASEAVQEhAFUBqQAwAakAOgD5AFABqgBQAPkAOQD5AD8BjAA5AYwAPwE3ACkBngApAq8AKQEvAFIBLwAmAS8AXgEvAB8BLwAiAS8AHwFvACMBbwBXAW8AKAFvACMBbwAqAW8AIwFvAC0BbwAyAW8ALQFvACcA7QBBAO0AJwCxACsAsQAhAW8AIwFvAFcBbwAoAW8AIwFvACoBbwAjAW8ALQFvADIBbwAtAW8AJwDtAEEA7QAnALEAKwCxACEBbwAjAW8AVwFvACgBbwAjAW8AKgFvACMBbwAtAW8AMgFvAC0BbwAnAO0AQQDtACcAsQArALEAIQFvACMBbwBXAW8AKAFvACMBbwAqAW8AIwFvAC0BbwAyAW8ALQFvACcA7QBBAO0AJwCxACsAsQAhAVkAJQF2ACEBbQAeAWv//wGIADkBewAgAZsAOQFfADkBSgA5AZsAIAGyADkAsAA5AUEAEgGDADkBRQA5AeYAOQGvADkBuwAgAYEAOQG7AB8BhQA5AWQAGgFkABEBrwA4AVr//gIOAA0BWgAIAUD//QFmABsBWQAlAXYANAEyAB4BdgAhAVAAHADJABMBVwAe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Bb8AAQXBBcIAAQXEBcQAAQXGBcYAAQXPBc8AAQcOBw4AAQcYBxgAAQceBx4AAQcfBzwAAwc+B2cAAwdpB40AAwACACEHHwcfAAEHIQciAAEHJAclAAEHJwcnAAEHKQcpAAEHKwcrAAEHLQcuAAEHMQcxAAEHMwczAAEHNQc1AAEHNwc3AAEHOQc5AAEHOwc7AAEHPgc+AAEHQAdAAAEHQgdFAAEHUwdTAAEHZAdlAAEHaQdpAAEHawdsAAEHbgdwAAEHcgdyAAEHdAd0AAEHdgd2AAEHeAd4AAEHegd6AAEHfAd8AAEHfgd+AAEHgAeAAAEHggeCAAEHhAeEAAEHhgeGAAEHiAeNAAEAAAABAAAACgJcD7gABERGTFQAGmN5cmwAUGdyZWsAwmxhdG4A+gAEAAAAAP//ABYAAAAKABQAHgAoADIAPABOAFgAYgBsAHYAgACKAJQAngCoALIAvADGANAA2gAKAAFTUkIgAD4AAP//ABcAAQALABUAHwApADMAPQBGAE8AWQBjAG0AdwCBAIsAlQCfAKkAswC9AMcA0QDbAAD//wAXAAIADAAWACAAKgA0AD4ARwBQAFoAZABuAHgAggCMAJYAoACqALQAvgDIANIA3AAEAAAAAP//ABcAAwANABcAIQArADUAPwBIAFEAWwBlAG8AeQCDAI0AlwChAKsAtQC/AMkA0wDdACIABUFaRSAAVENSVCAAiE5TTSAAvFNLUyAA8FRSSyABJAAA//8AFgAEAA4AGAAiACwANgBAAFIAXABmAHAAegCEAI4AmACiAKwAtgDAAMoA1ADeAAD//wAXAAUADwAZACMALQA3AEEASQBTAF0AZwBxAHsAhQCPAJkAowCtALcAwQDLANUA3wAA//8AFwAGABAAGgAkAC4AOABCAEoAVABeAGgAcgB8AIYAkACaAKQArgC4AMIAzADWAOAAAP//ABcABwARABsAJQAvADkAQwBLAFUAXwBpAHMAfQCHAJEAmwClAK8AuQDDAM0A1wDhAAD//wAXAAgAEgAcACYAMAA6AEQATABWAGAAagB0AH4AiACSAJwApgCwALoAxADOANgA4gAA//8AFwAJABMAHQAnADEAOwBFAE0AVwBhAGsAdQB/AIkAkwCdAKcAsQC7AMUAzwDZAOMA5GFhbHQFWmFhbHQFYmFhbHQFamFhbHQFcmFhbHQFemFhbHQFgmFhbHQFimFhbHQFkmFhbHQFmmFhbHQFomMyc2MFqmMyc2MFtGMyc2MFvmMyc2MFyGMyc2MF0mMyc2MF3GMyc2MF5mMyc2MF8GMyc2MF+mMyc2MGBGNhc2UGDmNhc2UGFGNhc2UGGmNhc2UGIGNhc2UGJmNhc2UGLGNhc2UGMmNhc2UGOGNhc2UGPmNhc2UGRGNjbXAGSmNjbXAGXGNjbXAGbmNjbXAGgGNjbXAGkmNjbXAGpGNjbXAGtmNjbXAGyGNjbXAG2mNjbXAG7GRub20G/mRub20HBGRub20HCmRub20HEGRub20HFmRub20HHGRub20HImRub20HKGRub20HLmRub20HNGZyYWMHOmZyYWMHRGZyYWMHTmZyYWMHWGZyYWMHYmZyYWMHbGZyYWMHdmZyYWMHgGZyYWMHimZyYWMHlGxpZ2EHnmxpZ2EHpGxpZ2EHqmxpZ2EHsGxpZ2EHtmxpZ2EHvGxpZ2EHwmxpZ2EHyGxpZ2EHzmxpZ2EH1GxvY2wH2mxvY2wH4GxvY2wH6GxvY2wH7mxvY2wH9GxvY2wH+mxvY2wIAGxvY2wIBm51bXIIDG51bXIIEm51bXIIGG51bXIIHm51bXIIJG51bXIIKm51bXIIMG51bXIINm51bXIIPG51bXIIQm9udW0ISG9udW0ITm9udW0IVG9udW0IWm9udW0IYG9udW0IZm9udW0IbG9udW0Icm9udW0IeG9udW0Ifm9yZG4IhG9yZG4Iim9yZG4IkG9yZG4Ilm9yZG4InG9yZG4Iom9yZG4IqG9yZG4Irm9yZG4ItG9yZG4IunBudW0IwHBudW0IxnBudW0IzHBudW0I0nBudW0I2HBudW0I3nBudW0I5HBudW0I6nBudW0I8HBudW0I9nNhbHQI/HNhbHQJFnNhbHQJMHNhbHQJSnNhbHQJZHNhbHQJfnNhbHQJmHNhbHQJsnNhbHQJzHNhbHQJ5nNpbmYKAHNpbmYKBnNpbmYKDHNpbmYKEnNpbmYKGHNpbmYKHnNpbmYKJHNpbmYKKnNpbmYKMHNpbmYKNnNtY3AKPHNtY3AKSnNtY3AKWHNtY3AKZnNtY3AKdHNtY3AKgnNtY3AKkHNtY3AKnnNtY3AKrHNtY3AKunNzMDEKyHNzMDEK0nNzMDEK3HNzMDEK5nNzMDEK8HNzMDEK+nNzMDELBHNzMDELDnNzMDELGHNzMDELInNzMDILLHNzMDILNHNzMDILPHNzMDILRHNzMDILTHNzMDILVHNzMDILXHNzMDILZHNzMDILbHNzMDILdHNzMDMLfHNzMDMLhHNzMDMLjHNzMDMLlHNzMDMLnHNzMDMLpHNzMDMLrHNzMDMLtHNzMDMLvHNzMDMLxHNzMDQLzHNzMDQL1nNzMDQL4HNzMDQL6nNzMDQL9HNzMDQL/nNzMDQMCHNzMDQMEnNzMDQMHHNzMDQMJnNzMDUMMHNzMDUMNnNzMDUMPHNzMDUMQnNzMDUMSHNzMDUMTnNzMDUMVHNzMDUMWnNzMDUMYHNzMDUMZnN1YnMMbHN1YnMMcnN1YnMMeHN1YnMMfnN1YnMMhHN1YnMMinN1YnMMkHN1YnMMlnN1YnMMnHN1YnMMonN1cHMMqHN1cHMMtHN1cHMMwHN1cHMMzHN1cHMM2HN1cHMM5HN1cHMM8HN1cHMM/HN1cHMNCHN1cHMNFHplcm8NIHplcm8NJnplcm8NLHplcm8NMnplcm8NOHplcm8NPnplcm8NRHplcm8NSnplcm8NUHplcm8NVgAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAABAAAAAwARABIAEwAAAAMAEQASABMAAAADABEAEgATAAAAAwARABIAEwAAAAMAEQASABMAAAADABEAEgATAAAAAwARABIAEwAAAAMAEQASABMAAAADABEAEgATAAAAAwARABIAEwAAAAEAIwAAAAEAIwAAAAEAIwAAAAEAIwAAAAEAIwAAAAEAIwAAAAEAIwAAAAEAIwAAAAEAIwAAAAEAIwAAAAcACAAJAAoACwAMAA0ADgAAAAcACAAJAAoACwAMAA0ADgAAAAcACAAJAAoACwAMAA0ADgAAAAcACAAJAAoACwAMAA0ADgAAAAcACAAJAAoACwAMAA0ADgAAAAcACAAJAAoACwAMAA0ADgAAAAcACAAJAAoACwAMAA0ADgAAAAcACAAJAAoACwAMAA0ADgAAAAcACAAJAAoACwAMAA0ADgAAAAcACAAJAAoACwAMAA0ADgAAAAEAFwAAAAEAFwAAAAEAFwAAAAEAFwAAAAEAFwAAAAEAFwAAAAEAFwAAAAEAFwAAAAEAFwAAAAEAFwAAAAMAFgAYABkAAAADABYAGAAZAAAAAwAWABgAGQAAAAMAFgAYABkAAAADABYAGAAZAAAAAwAWABgAGQAAAAMAFgAYABkAAAADABYAGAAZAAAAAwAWABgAGQAAAAMAFgAYABkAAAABAC8AAAABAC8AAAABAC8AAAABAC8AAAABAC8AAAABAC8AAAABAC8AAAABAC8AAAABAC8AAAABAC8AAAABAAUAAAACAAUABgAAAAEABAAAAAEAAgAAAAEAAgAAAAEAAwAAAAEAAwAAAAEAAgAAAAEAFgAAAAEAFgAAAAEAFgAAAAEAFgAAAAEAFgAAAAEAFgAAAAEAFgAAAAEAFgAAAAEAFgAAAAEAFgAAAAEAIAAAAAEAIAAAAAEAIAAAAAEAIAAAAAEAIAAAAAEAIAAAAAEAIAAAAAEAIAAAAAEAIAAAAAEAIAAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAHwAAAAEAHwAAAAEAHwAAAAEAHwAAAAEAHwAAAAEAHwAAAAEAHwAAAAEAHwAAAAEAHwAAAAEAHwAAAAsAAwAkACUAJwAoACkAKgArACwALQAuAAAACwADACQAJQAnACgAKQAqACsALAAtAC4AAAALAAMAJAAlACcAKAApACoAKwAsAC0ALgAAAAsAAwAkACUAJwAoACkAKgArACwALQAuAAAACwADACQAJQAnACgAKQAqACsALAAtAC4AAAALAAMAJAAlACcAKAApACoAKwAsAC0ALgAAAAsAAwAkACUAJwAoACkAKgArACwALQAuAAAACwADACQAJQAnACgAKQAqACsALAAtAC4AAAALAAMAJAAlACcAKAApACoAKwAsAC0ALgAAAAsAAwAkACUAJwAoACkAKgArACwALQAuAAAAAQAeAAAAAQAeAAAAAQAeAAAAAQAeAAAAAQAeAAAAAQAeAAAAAQAeAAAAAQAeAAAAAQAeAAAAAQAeAAAABQAPABAAEgAUABUAAAAFAA8AEAASABQAFQAAAAUADwAQABIAFAAVAAAABQAPABAAEgAUABUAAAAFAA8AEAASABQAFQAAAAUADwAQABIAFAAVAAAABQAPABAAEgAUABUAAAAFAA8AEAASABQAFQAAAAUADwAQABIAFAAVAAAABQAPABAAEgAUABUbhgADACQAJQAmG3wAAwAkACUAJhtyAAMAJAAlACYbaAADACQAJQAmG14AAwAkACUAJhtUAAMAJAAlACYbSgADACQAJQAmG0AAAwAkACUAJhs2AAMAJAAlACYbLAADACQAJQAmG04AAgAnACgbRgACACcAKBs+AAIAJwAoGzYAAgAnACgbLgACACcAKBsmAAIAJwAoGx4AAgAnACgbFgACACcAKBsOAAIAJwAoGwYAAgAnACgbQAACACkAKhs4AAIAKQAqGzAAAgApACobKAACACkAKhsgAAIAKQAqGxgAAgApACobEAACACkAKhsIAAIAKQAqGwAAAgApACoa+AACACkAKhsUAAMAKwAsAC0bCgADACsALAAtGwAAAwArACwALRr2AAMAKwAsAC0a7AADACsALAAtGuIAAwArACwALRrYAAMAKwAsAC0azgADACsALAAtGsQAAwArACwALRq6AAMAKwAsAC0ZpAABACEZngABACEZmAABACEZkgABACEZjAABACEZhgABACEZgAABACEZegABACEZdAABACEZbgABACEAAAABAB4AAAABAB4AAAABAB4AAAABAB4AAAABAB4AAAABAB4AAAABAB4AAAABAB4AAAABAB4AAAABAB4AAAAEABoAGwAcAB0AAAAEABoAGwAcAB0AAAAEABoAGwAcAB0AAAAEABoAGwAcAB0AAAAEABoAGwAcAB0AAAAEABoAGwAcAB0AAAAEABoAGwAcAB0AAAAEABoAGwAcAB0AAAAEABoAGwAcAB0AAAAEABoAGwAcAB0AAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAMgBmAG4AdgB+AIYAjgCWAJ4ApgCyALwAxADMANQA3gDwAPgBAAEIARABGAEgASgBMAE4AUABTAFUAVwBZAFsAXQBfAGEAYwBlAGcAaQBrAG0AbwBxAHMAdQB3AHkAewB9AH8AgQAAQAAAAEZ1gADAAAAAR8sAAEAAAABAZYAAQAAAAEBlAABAAAAAQGSAAEAAAABAZgAAQAAAAEBlgACAAAAAQGUAAYAAAADAeIB9AIGAAYAAAACAgwCIAAEAAAAAQIoAAQAAAABAyoABAAAAAED8AAGAAAAAg5wDoIABgAAAAYOig6cDq4OwA7SDuQAAQAAAAEO5AABAAAAAQ8qAAEAAAABEBoAAQAAAAETaAABAAAAARNmAAEAAAABE4wAAQAAAAEVRAABAAAAARXaAAEAAAABFfQAAQAAAAEWDgAGAAAAAxYMFh4WMAABAAAAARY4AAEAAAABFnAAAQAAAAEWbgABAAAAARaIAAEAAAABFo4AAQAAAAEWqAABAAAAARbOAAEAAAABFvgAAQAAAAEW9gABAAAAARb0AAEAAAABF1oAAQAAAAEXbgABAAAAARdsAAEAAAABF24AAQAAAAEXngABAAAAARegAAEAAAABF7IAAQAAAAEXtAABAAAAARfMAAIAAAABF9AAAQAAAAEYJgAEAAAAARgkAAQAAAABIqIAAQAAAAEirAABIwoEnAABIwoBHgACIwoABAchByQHQwdFAAEjCAABAAEjCgBZAAEjCgAKABoAIAAmACwAMgA4AD4ARABKAFAAAgAGByUAAgAGBykAAgAQByUAAgAQBykAAgAgByUAAgAgBykAAgAqByUAAgAqBykAAgAKBzMAAgFHBzMAAwAAAAEizAABItgAAQAAAAcAAwAAAAEizAABItgAAQAAAAcAAwAAAAEizAABIsYAAQAAAAcAAwAAAAIiWCLCAAEitAABAAAAMAADAAAAASK0AAEioAABAAAAMQABIqgABQAQADoAZACmANgABQAMABIAGAAeACQHdgACBx8HdAACByIHegACBycHhAACBy0HeAACBzUABQAMABIAGAAeACQHfgACBx8HfAACByIHggACBycHgAACBzUHggACB2UACAASABgAHgAkACoAMAA2ADwHbAACBx8HbgACByEHaQACByIHawACByQHbwACBycHcAACBykHcgACBzsHbwACB2UABgAOABQAGgAgACYALAeJAAIHHweJAAIHIQeIAAIHIgeIAAIHJAeKAAIHJweKAAIHZQAGAA4AFAAaACAAJgAsB4wAAgcfB4wAAgchB4sAAgciB4sAAgckB40AAgcnB40AAgdlAAEhrAAQACYAMAA6AEQATgBYAGIAbAB2AIAAkgCcAKYAsAC6AMQAAQAEAEsAAgdWAAEABABqAAIHVgABAAQAcwACBycAAQAEAIMAAgdWAAEABAC1AAIHVgABAAQA2wACB1YAAQAEAQ0AAgdWAAEABAEYAAIHOwABAAQBLAACB1YAAgAGAAwBNQACBycBMgACB1QAAQAEAUQAAgdWAAEABAFOAAIHOwABAAQBegACB1YAAQAEAYoAAgc7AAEABAGhAAIHVgABAAQCMQACB1QAASECABYAMgFEAYYCiALyAzQDPgOIBIoFagWsBnwHBgdIB1oH5Ai0CPYJOAl6CdQKLgAeAD4ARgBOAFYAXgBmAG4AdgB+AIYAjgCWAJ4ApgCuALYAvgDEAMoA0ADWANwA4gDoAO4A9AD6AQABBgEMAs4AAwNuB0MCzQADA24HRQLSAAMDbgeIAtAAAwNuB4kC1AADA24HigLRAAMDbgeLAs8AAwNuB4wC0wADA24HjQLOAAMHZwdDAs0AAwdnB0UC0gADB2cHiALQAAMHZweJAtQAAwdnB4oC0QADB2cHiwLPAAMHZweMAtMAAwdnB40CzAACA24CiQACBx8CigACByICkgACBykCkQACBy0CiAACB0MChwACB0UCzAACB2cCjgACB4gCjAACB4kCkAACB4oCjQACB4sCiwACB4wCjwACB40ACAASABgAHgAkACoAMAA2ADwClQACBx8ClgACByIClAACB0MCkwACB0UCmgACB4gCmAACB4kCmQACB4sClwACB4wAHAA6AEIASgBSAFoAYgBqAHIAegCCAIoAkgCaAKIAqgCyALoAwADGAMwA0gDYAN4A5ADqAPAA9gD8AtcAAwNuB0MC1gADA24HRQLbAAMDbgeIAtkAAwNuB4kC3QADA24HigLaAAMDbgeLAtgAAwNuB4wC3AADA24HjQLXAAMHZwdDAtYAAwdnB0UC2wADB2cHiALZAAMHZweJAt0AAwdnB4oC2gADB2cHiwLYAAMHZweMAtwAAwdnB40C1QACA24CnQACBx8CngACByICnAACB0MCmwACB0UC1QACB2cCogACB4gCoAACB4kCpAACB4oCoQACB4sCnwACB4wCowACB40ADQAcACIAKAAuADQAOgBAAEYATABSAFgAXgBkAq4AAgN5AqcAAgcfAqgAAgciArAAAgcpAq8AAgctAlsAAgczAqYAAgdDAqUAAgdFAqwAAgeIAqoAAgeJAqsAAgeLAqkAAgeMAq0AAgeNAAgAEgAYAB4AJAAqADAANgA8ArMAAgcfArQAAgciArIAAgdDArEAAgdFArgAAgeIArYAAgeJArcAAgeLArUAAgeMAAEABAK5AAIHQwAJABQAGgAgACYALAAyADgAPgBEArsAAgcfArwAAgciAsEAAgcpAsAAAgctAl4AAgczAroAAgdDAr4AAgeIAr0AAgeJAr8AAgeKABwAOgBCAEoAUgBaAGIAagByAHoAggCKAJIAmgCiAKoAsgC6AMAAxgDMANIA2ADeAOQA6gDwAPYA/ALgAAMDbgdDAt8AAwNuB0UC5AADA24HiALiAAMDbgeJAuYAAwNuB4oC4wADA24HiwLhAAMDbgeMAuUAAwNuB40C4AADB2cHQwLfAAMHZwdFAuQAAwdnB4gC4gADB2cHiQLmAAMHZweKAuMAAwdnB4sC4QADB2cHjALlAAMHZweNAt4AAgNuAsIAAgNwAsgAAgN2AsQAAgcfAsUAAgciAsMAAgdDAt4AAgdnAskAAgeIAscAAgeJAssAAgeKAsYAAgeMAsoAAgeNABkANAA8AEQATABUAFwAZABsAHQAfACEAIwAkgCYAJ4ApACqALAAtgC8AMIAyADOANQA2gM/AAMHZwcfA0AAAwdnByIDPgADB2cHQwM9AAMHZwdFA0cAAwdnB2UDRAADB2cHiANCAAMHZweJA0YAAwdnB4oDQwADB2cHiwNBAAMHZweMA0UAAwdnB40C6QACBx8C6gACByIC8gACBykC8QACBy0C6AACB0MC5wACB0UC8wACB2UDPAACB2cC7gACB4gC7AACB4kC8AACB4oC7QACB4sC6wACB4wC7wACB40ACAASABgAHgAkACoAMAA2ADwC9gACBx8C9wACByIC9QACB0MC9AACB0UC+wACB4gC+QACB4kC+gACB4sC+AACB4wAFwAwADgAQABIAFAAWABgAGgAcAB4AIAAiACOAJQAmgCgAKYArACyALgAvgDEAMoDSwADB2cHHwNMAAMHZwciA0oAAwdnB0MDSQADB2cHRQNTAAMHZwdlA1AAAwdnB4gDTgADB2cHiQNSAAMHZweKA08AAwdnB4sDTQADB2cHjANRAAMHZweNAv4AAgcfAv8AAgciAv0AAgdDAvwAAgdFAwYAAgdlA0gAAgdnAwMAAgeIAwEAAgeJAwUAAgeKAwIAAgeLAwAAAgeMAwQAAgeNABEAJAAqADAANgA8AEIASABOAFQAWgBgAGYAbAByAHgAfgCEAwkAAgcfAwoAAgciAxIAAgcpAxEAAgctAoAAAgczAwgAAgdDAwcAAgdFAxMAAgdlAxUAAgdpAxQAAgdsAxYAAgdvAw4AAgeIAwwAAgeJAxAAAgeKAw0AAgeLAwsAAgeMAw8AAgeNAAgAEgAYAB4AJAAqADAANgA8AxkAAgcfAxoAAgciAxgAAgdDAxcAAgdFAx4AAgeIAxwAAgeJAx0AAgeLAxsAAgeMAAIABgAMAyAAAgdDAx8AAgdFABEAJAAqADAANgA8AEIASABOAFQAWgBgAGYAbAByAHgAfgCEAyMAAgcfAyQAAgciAy0AAgcpAywAAgctAoMAAgczAyIAAgdDAyEAAgdFAysAAgdlAy8AAgdpAy4AAgdsAzAAAgdvAygAAgeIAyYAAgeJAyoAAgeKAycAAgeLAyUAAgeMAykAAgeNABcAMAA4AEAASABQAFgAYABoAHAAeACAAIgAjgCUAJoAoACmAKwAsgC4AL4AxADKA1cAAwdnBx8DWAADB2cHIgNWAAMHZwdDA1UAAwdnB0UDXwADB2cHZQNcAAMHZweIA1oAAwdnB4kDXgADB2cHigNbAAMHZweLA1kAAwdnB4wDXQADB2cHjQMzAAIHHwM0AAIHIgMyAAIHQwMxAAIHRQM7AAIHZQNUAAIHZwM4AAIHiAM2AAIHiQM6AAIHigM3AAIHiwM1AAIHjAM5AAIHjQAIABIAGAAeACQAKgAwADYAPALOAAIHQwLNAAIHRQLSAAIHiALQAAIHiQLUAAIHigLRAAIHiwLPAAIHjALTAAIHjQAIABIAGAAeACQAKgAwADYAPALXAAIHQwLWAAIHRQLbAAIHiALZAAIHiQLdAAIHigLaAAIHiwLYAAIHjALcAAIHjQAIABIAGAAeACQAKgAwADYAPALgAAIHQwLfAAIHRQLkAAIHiALiAAIHiQLmAAIHigLjAAIHiwLhAAIHjALlAAIHjQALABgAHgAkACoAMAA2ADwAQgBIAE4AVAM/AAIHHwNAAAIHIgM+AAIHQwM9AAIHRQNHAAIHZQNEAAIHiANCAAIHiQNGAAIHigNDAAIHiwNBAAIHjANFAAIHjQALABgAHgAkACoAMAA2ADwAQgBIAE4AVANLAAIHHwNMAAIHIgNKAAIHQwNJAAIHRQNTAAIHZQNQAAIHiANOAAIHiQNSAAIHigNPAAIHiwNNAAIHjANRAAIHjQALABgAHgAkACoAMAA2ADwAQgBIAE4AVANXAAIHHwNYAAIHIgNWAAIHQwNVAAIHRQNfAAIHZQNcAAIHiANaAAIHiQNeAAIHigNbAAIHiwNZAAIHjANdAAIHjQADAAEWqgABFyAAAAABAAAAMQADAAEXSgABFw4AAAABAAAAMQADAAAAARd0AAEXdAABAAAAMQADAAAAARdoAAEXaAABAAAAMQADAAAAARdcAAEXXAABAAAAMQADAAEXUAABFz4AAAABAAAAMQADAAEXRgABFzIAAAABAAAAMQADAAEXOgABFyYAAAABAAAAMQACFy4AJAWfBaAFoQWiBaMFpAWlBaYFpwWoBakFqgWrBawFrQWuBa8FsAWxBbIFswW0BbUFtgWwBZ8FowWlBacFtwWtBbIFuAW2BbcFuAACFvAAeQWfBZ8FnwWfBZ8FnwWfBZ8FnwWfBZ8FnwWfBaMFowWjBaMFowWjBaMFowWlBaUFpQWlBaUFpQWlBaUFpQWlBaUFpwWnBacFpwWnBacFpwWnBacFpwWnBacFpwW3BbcFtwWtBa0FrQWtBa0FrQWtBa0FrwWvBbIFsgWyBbIFsgWyBbIFsgWyBbIFsgWyBbIFuAW4BbgFtgW2BbYFtgW2BbYFtgW2BbYFtgW2BbkFuQW5BbkFuQW5BbkFuQW5BbkFuQW5BboFugW6BboFugW6BboFugW6BboFugW6BbsFuwW7BbsFuwW7BbsFuwW7BbsFuwW7AAIWAgGoBMEEwgTDBMQExQTGBMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATVBNYE1wTYBNkE2gTbBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BQAFAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBR4FHwUgBSEFIgUjBSQFJQUmBScFKAUpBSoFKwUsBS0FLgUvBTAFMQUyBTMFNAU1BTYFNwU4BTkFOgU7BTwFPQU+BT8FQAVBBUIFQwVEBUUFRgVHBUgFSQVKBUsFTAVNBU4FTwVZBVoFUAVRBVIFUwVUBVUFVgVXBVgFWwVdBVwFXgVfBWAFYQViBWMFZAVlBWYFZwVoBWoFawVsBW0FbgVvBXAFcQVyBXMFdAV1BXYFdwV4BXkFegV7BXwFfQV+BX8FgAWBBYIFgwWEBYUFhgWHBYgFiQWKBYsFjAWNBY4FjwWQBZEFkgWTBZQFlQWWBZcFmAWZBZoFmwWcBZ0FnwWgBaEFogWjBaQFpQWmBacFqAWpBaoFqwWsBa0FrgWvBbAFsQWyBbMFtAW1BbYFnwWjBaUFpwW3Ba0FsgW4BbYFnwWfBZ8FnwWfBZ8FnwWfBZ8FnwWfBZ8FowWjBaMFowWjBaMFowWjBaUFpQWlBaUFpQWlBaUFpQWlBaUFpwWnBacFpwWnBacFpwWnBacFpwWnBacFrQWtBa0FrQWtBa0FrQWtBa8FsgWyBbIFsgWyBbIFsgWyBbYFtgW2BbYFtgW2BbYFtgW2BbYFuQW5BbkFuQW5BbkFuQW5BbkFugW6BboFugW6BboFugW6BboFuwW7BbsFuwW7BbsFuwW7BbsFvAW9Bb4FvwXABcEFwgXDBcQFxQXGBccFyAXJBcoFywXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXhBeIF4wXlBeYF5wXoBekF6gXrBewF7QXuBe8F8AXxBfIF8wX0BfUF9gX3BfgF+QX6BfsF/AX9Bf4F/wYABgEGAgYDBgQGBQYGBgcAARL+AcoAAhMCABQGCAYTBhQGFQR9BhcGGAYZBhoGGwYcBh0GHgYfBiAGIQYiBiMGJAYlAAIS9gDdBMEEwgTDBMQExQTGBMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATVBNYE1wTYBNkE2gTbBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BQAFAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAURBRIFEwUUBRUFFgUXBRgFGgUbBRwFHQUeBR8FIAUhBSIFIwUlBSYFJwUoBSgFKQUqBSsFLAUtBS4FLwUxBTAFMgUzBTQFNQU2BTcFOAU5BToFOwU8BT0FPgU/BUAFQQVCBUMFRAVFBUYFRwVIBUkFSgVLBUwFTQVOBU8FWQVaBVAFUQVSBVMFVAVVBVYFVwVYBVsFXgVdBVwFXwVgBWEFYgVjBWQFZQVmBWcFaAVqBWsFbAVtBW4FbwVwBXEFcgVzBXQFdQV2BXcFeAV5BXoFewV8BX0FfgV/BYAFgQWCBYMFhAWFBYYFhwWIBYkFigWLBYwFjQWOBY8FkAWRBZIFkwWUBZUFlgWXBZgFmQWaBZwFnQWbBRkFJAACEXwATAW8Bb0FvgW/BcAFwQXCBcMFxAXFBcYFxwXIBckFygXLBcwFzQXOBc8F0AXRBdIF0wXUBdUF1gXXBdgF2QXaBdsF3AXdBd4F3wXgBeEF4gXjBeUF5gXnBegF6QXqBesF7AXtBe4F7wXwBfEF8gXzBfQF9QX2BfcF+AX5BfoF+wX8Bf4F/QX/BgAGAQYCBgMGBAYFBgYGBwW9AAIRGAAOBlAGUQZSBlMGVAZVBlYGVwZYBlkGXAZdBloGWwACEPYADgZCBkMGRAZFBkYGRwZIBkkGSgZLBk4GTwZMBk0AARDqAiEAAwABEOoAARD0AAAAAQAAADEAAwABEOoAARD6AAAAAQAAADEAAwACEPwQ8gABEOgAAAABAAAAMQACEPAAHQZ7BnwGfQZ+Bn8GgAaBBoIGgwaEBoUGhgaHBogGiQaKBosGjAaNBo4GjwaQBpEGkgaTBpQGmgabBpwAARDGBl8AAhBQAA4GJgYnBigGKQYqBisGLAYtBi4GLwYyBjMGMAYxAAIQqAAEBqAGoQaiBqMAAhAgAA4GNAY1BjYGNwY4BjkGOgY7BjwGPQZABkEGPgY/AAIQhAAUBEsETARNBE4ETwRQBFEEUgRTBFQEYQRiBGMEZARlBGYEZwRoBGkEagACEGYAFARXBFgEWQRaBFsEXARdBF4EXwRgBGEEYgRjBGQEZQRmBGcEaARpBGoAAAEAAAEQRAALAAEQPgAKAAIQQAAyA2cEPwRABEEEQgRDBEQERQRGBEcESARLBEwETQROBE8EUARRBFIEUwRUBL4HIAcjByYHKAcqBy8HMgc0BzYHOAc6BzwHPwdVB1cHagdtB3EHcwd1B3cHeQd7B30HfweBB4MHhQAAAQEAAhA6AAsCNQI2AjcCOAI5AjoCOwI8Aj0GnwI+AAEQOAAHAAEQOP4DAAABAgACEDQAGQIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisGXwadAAEQGAAYAAABAwACEBQACgIsAi0CLgIvAjACMQIyAjMCNAaeAAEQEAATAAABBAACEAwADQIHAggCCQIKAgsCDAINAg4CDwIQAhECEgITAAIP/AADAgcCEwINAAEP+gALABwAIgAoAC4ANAA6AEAARgBMAFIAWAACA2sCBwACA34CBwACA38CBwACA4ACBwACA2sCBwACA4ICBwACA4MCBwACA4QCBwACA4UCBwACA4YCBwACA4cCBwABD6wAAQABD64AAQAIAAMACAAQABYCBgADACEALwICAAIAIQIFAAIALwACD5ACrATbBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BQAFAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBSoFKwUsBS0FLgUvBTAFMQUyBTMFNAU1BTYFNwU4BTkFOgU7BTwFPQU+BT8FQAVBBUIFQwVEBUUFRgVHBUgFSQVKBUsFTAVNBU4FTwVZBVoFUAVRBVIFUwVUBVUFVgVXBVgFWwVdBVwFXgVfBWAFYQViBWMFZAVlBWYFZwVoBWoFawVsBW0FbgVvBXAFcQVyBXMFdAV1BXYFdwV4BXkFegV7BXwFfQV+BX8FgAWBBYIFgwWEBYUFhgWHBYgFiQWKBYsFjAWNBY4FjwWQBZEFkgWTBZQFlQWWBZcFmAWZBZoFmwWdBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gUBBQIFAwUEBQUFBgUHBQgFCQUKBQsFDAUNBQ4FDwUQBRoFGwUcBR0FHgUfBSAFIQUiBSMFJQUmBScFKAUoBSkFKgUrBSwFLQU2BTcFOAU5BToFOwU8BT0FPgU/BUAFQQVCBUMFRAVFBUYFRwVIBUkFSgVLBUwFTQVOBU8FWQVaBVAFUQVSBVMFVAVVBVYFVwVYBVsFXgVdBVwFXwVgBWEFYgVjBWQFZQVmBWcFaAVqBWsFbAVtBW4FbwVwBXEFcgVzBXQFdQV2BXcFeAV5BXoFewV8BX0FfgV/BYAFgQWCBYMFhAWFBYYFhwWIBYkFigWLBYwFjQWOBY8FkAWRBZIFkwWUBZUFlgWXBZgFmQWaBZwFnQUZBZ8FoAWhBaIFowWkBaUFpgWoBakFqgWrBawFrQWuBa8FsAWxBbIFswW0BbUFtgWfBaMFpQWnBbcFrQWyBbgFtgJ5AnoCewWfBZ8FnwWfBZ8FnwWfBZ8FnwWfBZ8FnwWjBaMFowWjBaMFowWjBaMFpQWlBaUFpQWlBaUFpQWlBaUFpQWnBacFpwWnBacFpwWnBacFpwWnBa0FrQWtBa0FrQWtBa0FrQWvBbIFsgWyBbIFsgWyBbIFsgW2BbYFtgW2BbYFtgW2BbYFtgW2BbkFuQW5BbkFuQW5BbkFuQW5BboFugW6BboFugW6BboFugW6BbsFuwW7BbsFuwW7BbsFuwW7A2cFvAW9Bb4FvwXABcEFwgXDBcQFxQXGBccFyAXJBcoFywXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXhBeIF4wXlBeYF5wXoBekF6gXrBewF7QXuBe8F8AXxBfIF8wX0BfUF9gX3BfgF+QX6BfsF/AX9Bf4F/wYABgEGAgYDBgQGBQYGBgcFvAW+Bb8FwAXBBcIFwwXEBcUFxgXHBcgFyQXKBcsFzAXNBc4FzwXQBdEF0gXTBdQF1QXWBdcF2AXZBdoF2wXcBd0F3gXfBeAF4QXiBeMF5QXmBecF6AXpBeoF6wXsBe0F7gXvBfAF8QXyBfMF9AX1BfYF9wX4BfkF+gX7BfwF/gX/BgAGAQYCBgMGBAYFBgYGBwW9BggESgRiBGMEZARlBGYEZwRoBGkEagRWBEwETQROBE8EUARRBFIEUwRUBqAGEwYUBhUEfQYXBhgGGQYaBhsGHAYiBiMGJAYlBL4FJAZfBp0GngafByYHKAcqBzAHMgc0BzYHOAc6BzwHPwdDB0UHVQdXB2oHbQdxB3MHdQd3B3kHewd9B38HgQeDB4UCPgABDBwAjwEkASoBMAE2ATwBQgFIAU4BVAFcAWIBaAFuAXQBegGAAYYBjAGSAZgBngGkAaoBsAG2AbwBwgHKAdAB1gHcAeIB6AHwAfYB/gIEAgoCEgIYAh4CJAIqAjACNgI8AkICSAJOAlQCWgJgAmYCbAJyAngCfgKEAooCkAKWApwCogKoAq4CtAK6AsACxgLMAtIC2ALeAuQC6gLwAvYC/AMCAwgDDgMUAxoDIAMmAywDMgM4Az4DRANKA1ADVgNcA2IDaANuA3QDegOAA4YDjAOSA5gDngOk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/+z/6P/s/9H/6//2/+X/6//o/+X/7P/bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/vAAAAAP/mAAAAAAAAAAD/5gAAAAAAAAAAAAAAAP/wAAAAAAAAAAD/5gAAAAAAA//y//b/8v/s//YAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/i/+//8gAAAAAAAAAAAAD/rwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+j/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/LAEn/qwAN/6v/t//jACH/7gBJ/6v/4//s/8v/9v/jAA3/twAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/gACEAAAAAAAD/0wAAAAAAAAAhAAAAAAAA/+AAAP/wAAD/0wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6P/YAAD/9v/6/+gAAAAAAAAAAAAAAAAAAP/2AAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/yAAAAAAAAAAAAAAAAAAD/7AAAAAAAEAAA/9j/8v/V/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/o/+//9v/V/+//2P/o/+L/7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//IAAP/j/+MAAAAAAAAAAAAAAAAAAAAA/+8AAAAAAAAAAAAAAAAAAAAAAAD/8AAA//AABgAAAAD/8v/Y/9MAAP/mAAD/wAAA/8D/xgAAAAAAAAAA/8AAAAAA/+YAAAAAAAD/xv/2/+wAAP/Y/+wAAAAA/9P/7P/o/+j/7P/m/+j/7//w/+j/7P/m/+X/8v/w/9H/3v/a/+j/6P/s/+b/2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//L/8v/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/GADv/qQAA/6n/pwAAAAAAAAA7/6n/2AAA/8YAAP/YAAD/pwAAAAAAAAAAAAAAAAAAAAAAAP/C/90AAP/WAAAAAAAA/8IAAP/WAAAAAAAAAAAAAAAA/8L/3QAA/9YAAP/rAAAAAP/rAAD/3f/r/9T/1P/d/8L/6//UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN//L/7P/L//L/7P/s/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAP/y/8sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/5AAD/7AAAAAD/y//YAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/f//D/7AAGAAAAEwANAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/98AAP/wAAYAAP/L/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAMAE//LAAMABgAN/+wAAwAAAAAAAAAAAAAAAP/fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/f//D/7AAKAAAAIQAaABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/98AAP/wAAoAAP+3/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAYAIf+3AAYACgAa/+wABgAAAAAAAAAAAAAAAP/fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/V//D/7AAKAAAAGgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9UAAP/wAAoAAP+j/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAGv+jAAAACgAO/+wAAAAAAAAAAAAAAAAAAP/VAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//D/+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAAA//YAAAAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAP/hAAAAAP/hAAn/6P/h//b/9v/oAAD/4f/2AAAAAAAZ/7AAOgAZ/7D/8gAJ/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/3QAAAAAAAAAAAAAAAAAAAAD/9gAAAAD/+QAA//YAAAAAAAAAAAAAAAAAAAAA/+8AAAAA//IAAAAA//UAAP/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+f/5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//AAAAAAAAAAAAAAAAAAAAAAAAAAA//UAAAAAAAAAAAAA//kAAP/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+f/5AAAAAAAAAAAAAAAAAAAAAAAAAAD/3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/+wAAAAA//wAAAAAAAD/+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//UAAAAAAAD//AAAAAAAAAAAAAAAAAAAAAAAAP/sAAD//AAAAAAAAAAAAAAAAAAA/9gAAAAAAAD/+QAA/+gAAAAAAAAAAAAAAAAAAAAAAAD/1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/+gAAAAA//wAAAAAAAD/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAA//IAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAD//AAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAA/+8AAAAAAAAAAAAAAAAAAAAAAAD/3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/+wAAAAA//wAAAAAAAD/+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/y//wAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAD//AAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAA/+gAApEmAAQAAJ1KocgASwBHAAD/8v/o//D//P/o//T/8P/KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wQAAAAAAAAAA/9EAAAAKAAf/+v/i//b/9v/6AAP/9v/9ABQAFP/w/+X/4//Y/9UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/y/8n/8gAA//L/5v/I/6IAAAAAABQAAAAOABAADwAUAA0AGAAAAAD/6AAAAAAAAAAAABf/+v/2ABT/9gAX//r/8f/5//z//AAE//n/+P+9/8n/2P+w/8z//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8gAAAAAAAAAA//IAAP/8AAD//P/2//wABP/2AAD/9gAA//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/6P/6//z/8gAA/+z/4gAK//oABAAAABAACgAQAAAABgAAAAAAAP/sAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAA//L/9v/2//z/8v/8//IAAAAAAAD/7AAAAAD/8P/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/+z/8gAA/+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8gAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAGAAYACAAAAAYAAAAAAAAAAAAUAAAAAAAAAAAAAP/2/+v/7P/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//P/4//D/+QAAAAAACQAA//oAAAAAAAAAAAAAAAAAAAAAAAAAAP/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAA/+X/7P/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+X/7v/8//z/+QAAAAAAAAAHAAAAAP/sAAAAAAAAAA8AAAAAAAAAAP/MAAAAAAAAAAAAAAAAAAAAAP/jAAD/9v/y//L/9gAA//z/8v/2AAAAAAAAAAoAGAAAAAD/9v/o/+wAAP/m//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/+j/8P/2/+b/+f/2/94AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//AAAAAAAAAAA//IAAAAAAAAAAAAAAAAAAAAFAAX/+QAAAAUAAAAAAAD/7AAA/+8AAAAA/+z/7P/2AAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//AAAAAAAAAAA//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAD/7AAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+gAAAAAAAAAAAAAAAAAAAAK//b/8v/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/hAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4AQgAuADsAGgAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/87/7AAAAAAAAAAA/+wAAAAAAAAAAP/8AAAAAAANAAD//AAhAAAAAAAiACgAPgBLAEwAAAAAAAAAAP/y//b/8gAAAAAAAP/2//IAMQAO//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//L/p//yAAYAAAAJAAMAAAAJ//YAAP+2AAAAAAAZAA0AGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAEAAQAAAAAAAAAAP/Y/5z/6AAAAAAAAAAAAAAAAP/yAAD/uP/yAAAAAAAAAAD/3v/bAAAAAP/2/+z/8AAA/+z/8P/m/+j/8P/iAAAAAAAAABQAJgAAAAD/dv/s/+j/8gAA/+wAAAAAAAD/4gAAAAD/u//5/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAD/8P/IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8AAAAAAAAAAAAAP/w//IABgAA//AAAP/Q/73/5v/dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAA//L/8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+YAAAAA//L/3AAA/98AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+AAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/8//wAAAAAAA8AAAAAAAAAAAAOAAAAAAAAAAAAAAAA//IAAAAAAAAAAAAl//IADgAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/9//oAAAAAAAAAA//8AAAAAAAAAAD/9gAA//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/y//wAAAAAAAD/5AAOAAAAAAAAAAsAEwANAA0ACQAAAAAAAAAAAAAAAAAAAAAAAP/8AAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgANAA0AEwANABcAHAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/yAAD/8gAAAAAAAP/v/+8AAAAA//UAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA0ADQATAA0AEwATAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAD/5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv/cAAMADQANAA0ADQAGAA0ABgAA/+gAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6//dAAAAAP/1//T/5v/rAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAN/+YAAAAAAAAAAP/2AAAAAAAAAAAAAP/yAAAAAAAA//kAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAD/9v/u/9T/5gAA//X/9v/5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAP/y//b/+QAA//z//AAAABQAFP/sAAD//P/5AAAAAAAAAAD/+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+gAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/f/+//9P/2//D/+f/u/9gAFAAaAAYAAAADAAUABf/y//IAAwAAAAD/0gAAAAAAAAAAAAD/9gAAAAn/7AAA//L/8v/s//D/8AAA/+wAAP/u/+sAAAAAAAkAAAAAAAD/9wAA//n/4v/2AAD//P/2//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/xAAAAAAAAAAAAAP/0AAAAAAAAAAAAAAAAAAAAAAAAADUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/yAAAAAP/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/oQAAABAAAP/2/7D/4v/E/9sAAP/EAAAAAAATAAD/3QAA/6kAAAAAAAAAAP/vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5QAAAAAAAAAAAAAAAP/cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/iP+0/8j/tP/g/7L/aAAQAAAAAP/UAAD/5f/yAAD/ygAAAAAAAP+kAAAAAAAAAAAAAAAD//IAAP/mAAD/9v/j/9z/3gAAAAD/3AAA/7L/p/+w/6T/ngAAAAAAAP/q//z/9P/K/94AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+j/9gAA//D/+f/s/94AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAAAAAACQALABQAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8ABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8AAAAAAAGwAbABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAA//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7//H/+0AAP/S//T/5v/nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAP/yAAAAAAAAAAAAAAAAAAD//P/8/+///P/8AAD/8v/j/+b/+QAA//wAAAAAAAAAAAAAAAYAAAAAAAAAAP/6AAAAAAAAAAAAAAAA//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAA/+YAAP/mAAD/9//6//L/7P/vAAD/5QAA/+wAAP/1//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/5AAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAA/+j/9v/6/+wAAAAA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AAAAAAAAAAAAAP/8AAAAAP/yAAD/9v/8AAT/9v/yAAD/9gAA//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAP/2AAoAAAAAAAAAAP/oAAYAAAAAAAD/7P/sAAAAAAAAAAAAAP/8AAAAAP/6AAoAAP/y//wAAP/yAAD/4gAAAAAAAAAA//z//P/6//oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/2/+b/6AAAAAAAAAAAAAD/3wAAAAAAAP/5AAD/7AAAAAAAAAAAAAD/9gAAAAAAAAAA//b/3gAAAAAAAAAA/+kAAP/y/+YAAAAA/+UAAAAA/+//8P/y/+z/9gAH/+//8P/2//L/8v/o/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAD/6//sAAD//AAAAAAAAP/8/+wAAAAGAAMAAAAAAAAAAAAAAAD/8gAAAAAAAAAAAAAAAAAAAAAAAAAA/+8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/y//z/8v/wABAAAAAAAAD/7P/sAAUABgAAAAD/+f/YAAAAAAAAAAAAAwAAAAD/4f/yAAD/7wAAAAAAAP/5//b/9gAAAAAAAAAAAAD/6wAAAAD/+QAAAAAAAAAAAAD/+f/oAAD/5QAA//L/8gAvAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//L/7AAA/+z/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8//YAAAAA//UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7//iAAD/9gAAAAAAAP/JAAAAAAAAAAAAAAAAAAAAAAAAAAD//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAD/9v/oAAAAAAAAAAAAAP/HAAAAAAAAAAD/wP/lAAAAAAAAAAAAAAAAAAD/6//AAAD/6P/rAAAAAP/I/8kAAAAAAAAAAAAAAAD/9QAAAAAAAAAAAAAAAAAAAAAAAP/2AAD/+QAAAAAAAAAAAAD/wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//X/+f/8//n/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8//wAAAAAAAAAAAAA//IAAP/2//wAAAAA//L/8v/2AAAAAAAA//wAAAAAAAD//P/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/8AAAAAAAAAAAAAP/8AAAAAAAA//wAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4f/oAAD/6P/oAAoAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5QAAAAAAAAAAAAAAAAAAAAAAAAAA//IAAAAAAAAAAAAAAAD/9gAA//D/9gAAAAD/9v/o//AAAAAAAAAAAAAUAAAAAP/2//b/3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//AAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/5/9gAAP/x//YAAAAAAAAAAAAAAAAAAAAAAAD/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//P/2AAAAAP/xAAAAAAAAAAD/+f/9AAAAAP/5AAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8T/4gAAAAAAAAAA/+wAAAAA/6EADQAAAAAAAAAAAAAAAAAAAAAAAAAA/+YAAAAAAAD/+QAUAAAAAAAAAAAAAP/IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/yAAAAAD/7AAAAAAAAAAAAAAAAP/E/+b/+QAAAAAAAAAAAAAAAAAA/+L/0//B/9P/1v+jAAAAAAAAAAAAAAAAAAD/7P9/AAD/2AAAAAAAAAAA/8T/7//v/7IAAAAA/9wAAP/SAAAAAAAAAAAAAP/K/4MAAP+2//kAAAAA/5f/8P/Y/6v/sgAA/5f/3P/M/6EAAP+3/78AQ//fABsAAP/cAAAAAAAAAAD/xQAAAAAAAAAAAAAAAP/8//z//P/2/+wAAAAAAAAAAAAAAAAAAAAAAAcAB//lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8gAAAAAAAP/8AAAAAP/6AAAAAAAAAAAAAP/3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+f/r//z/6//rAAAAAAAAAAAAAP/dAAAAAAANAA3/5v/mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAD/9AAAAAD/6wAA//n//AAAAAD/5wAAAAD/7gAA//kAAAAAAAD/7v/5//z/1AAA/+b/9QAAAAAAAAAA//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//z/+QAA//IAAP/8AAAAFAAUAAD/7AAA//z/+QAAAAAAAAAAAAAAAP/5AAAAAAAAAAAAAAAAAAAAAAAAAAD/6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAD/9f/8AAAAAAAAAAAAAAAAAAAAAP/w/+X//P/l/98AFP/yAAAAAAAA/+//8gADAAAAAP/u/9IAAAAAAAAAAP/2AAAAAP/l//IACf/s//AAAP/5/+7/6//YAAAAAAAAAAAAAP/vAAAAAP/5AAAAAAAAAAAAAP/5//b//P/iAAD/9v/8ABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7//r//z/6//hAAAAAAAAAAAAAAAAAAAAAAAHAAf/o//yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//kAAAAAAAD/0QAAAAD//AAA//wAAAAAAAD/+f/5//YAAAAAAAD/8v/2AAAAAAAA//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//n/8QAA//H/9gAAAAAAAAAAAAAAAAAAAAAAAP/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8//YAAAAA//EAAAAAAAAAAP/5//0AAAAA//kAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/mAAD/9gAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/5AAAAAAAAAAAAAP/yAAAAAAAAAAD/+QAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAP/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//AAAAAD//AAAAAD//AAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8AAAAAAAAAAAAAP/5/9wAAAAA//kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAP/8AAAAAAAAAAAAAAAAAAAAAAAA/7AAAAAAAAD/0f/fAAAAAAAAAAAAAP/5/+EAAAAA//AAAAAA//L/2//s//P/3wAAAAAAAP/8AAD/6//d/97/6AAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/8QAAAAAAAAAA/+8AAAAA//EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+iAAD/8AAAAAAAAAAA/9L/8gAA//AAAAAAAAAAAP/yAAAAAAAAAAAAAAAA/+YAAP/A/+X/8AAA/+YAAP/s/+L/+gAA/+YAAP/2/9gAAAAA/+wAKAAAABAAAAAA/+UAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/3P/oAAAAAP/sAAAAAP/cAAD/lgAAAAAAAAAA//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9wAAAAAAAD/9v/oAAAAAAAAAAD/8gAGAAAABgAA/9IAAAAAAAAABP/oAA0AAAAA/5AAAP/4AAAAAAAAAAD/zv/oAAAAAAAAAAAAAP/2/7IAAAAAAAAAAAAAAAD/zwAA/8f/0f/Y/+//6AAA/+j/8AAAAAD/6AAAAAD/3wAA/+wAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAu/7UAAAAA/+//7wAA/+//7wAAAAAAAAAAAAD/xwAAAAAAAP/2/+YAAAAAAAAAAAAAAAD//AAAAAAAAAAAAAD/0gAA//T/8v/j/+f/5v/2AAAAAAAA//UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/yAAAAAP/mAAD/7P/vAAD/5f/sAAD/7AAA//X/8AAA//kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/5AAAAAAAAAAAAAAAA//wAAAAAAAD/9v/sAAAAAAANAAD/8gAAAAAAAAAAAAMABgAAAAAABv/oAA3//AAAAAAAAAAAAAAAAAAAAAD/9v/vAAAAAAAAAA8AAP/s/+wAAAAAAAD/3gAAAAAAAAAA/+j/6//cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+4AAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8AAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAD/+f/5AAD/+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAD/5QAAAAAAAAAA//b//AAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/6AAD/3//n//MAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//IAAAAAAAAAAAAAAAD/+gAAAAAAAAAA//MAAAAAAAAAAP/l/+j//P/o/8gAAAAAAAAAAAAA/9wAAAAAAAAAAP/s/8QAAAAAAAAAAAAAAAAAAP++/+IAAP/S/+j/7AAA/+z/8wAAAAD/6AAAAAAAAAAA/+wAAP/2AAD/8P/2AAAAAP/w/9j/9v/fAAAAAAAAABQAAAAA/+n/6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/3wAA/+b/7AAAAAD/5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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//H/8gAQ//IADwAUAAT/8v/yABj/vf/J/9j/sP/MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/94AAP/UAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAA//cAAAAAAAD/9v/rAAD/9gAA/+8AAP/8AAAAAP/5AAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b//P/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAP/cAAD/3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAABgAA//wAAP/8AAAAAP/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8P/fAAAAAAAAAAAAAAAA//oACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+v/yQAAAAD/ygAAAAAAAAAAAAD/8v/w/8T/2AAAAAD/5QAA/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/0QAAAAAAAAAAAAAAAAAAAAAAAP/v/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/f/9T/nP/N/+j/vQAAAAD/3gAAAAAAAAAAAAD//P/w/+8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+j/tgAAAAAAAP/y//n//AAA//n/+f/xAAD/+f/1/7D/5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/tP/LAAAAAAAA//X//AAA//IAAP/8//b/8v/l/+X/9f/l//n/7P/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/+z/6P/o//X/9f/PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6AAA//YAAAAAAAAAAP/2/+z/7AAAAAAAAP/8//wAAAAJ//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+j/7P/iAAD/9f/wABf/9gAAAAAAAAAAAA0AEP/2AAP/7AAAAAAAAP/1AAAAAAAAAAAAAAAA//b/5AAAAAAAAP/8AAAAAAAAAAAAAAAAAB0AAAAA/+X/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAAAAAAAAAA//YAAP/yAAD//P/rAAAAAAAAAA4AAAAA//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/7AAA//z/7P/w/+wAAP/w/+8AAP/S/9X/7AAA//D/8gAG//kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAP/5/+IAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAD//P/5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8AAD/sP/s/+z/3wAAAAAAAP/wAAAAAP/wAAAAAP/EAAAAAAAA/9EAAAAAAAAAAAAAAAD/7P/5AAAAAP/y/9kAAP/8AAD/8v/Z//z/4QAAAAAAAAAA/9H/8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8//fAAAAAAAA//z//AAAAAAAAAAA/+gAAP/J//z/9v/N/+YAAP/eAAYAAAAA/+wAAAAA//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9wAAP/T//cAAP/T/+gAAP+J/+z/7AAA/5YAAAAAAAAAAP/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/5/9gAAAAAAAAAAAAAAAAAAAAAAAAAAP/zAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6AAAAAAAAAAA/9IAAP+yAAAAAP+yAAAADv+IAAQAAAAA/5AAAP/4AAAAAAAAAAD/1f/OAAAAAP/P/6v/9gAAAAD/xP+r//L/6AAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAA/+wAAP9u//UAAP/IAAAAAAAA/9//7AAA//YAAAAAAAD/6P+1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/y//b/7P/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/yAAAAAAAAAAD/9gAA//YAAAAAAAAAAAAAAAAADQAAAAgAAAAGAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAIAAAAAAAAAAD/+QAAAAAAAAAAAAAAAAAA/+z/8gAAAAAAAAAAAAD/6wAA//kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6AAA//j/2AAAAAkAAP/8//D/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAA/+X/7P/sAAAAAAAAAAAAAAAAAAD/6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8/+X/7v/YAAAAAAAAAAf/0QAAAAAAAAAAAA8AAAAA/+z/2AAAAAAAAP/MAAAAAAAAAAAAAAAA/9j/7AAAAAAAAAAA/9QAAAAAAAD//P/yAAD/4//y//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/2AAAAAP/2AAAAAAAA/+b/8gAA/+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5wAAAAAAAAAAAAAAAD/3gAAAAAAAP/PAAD/8v/yAAD/xAAA//IAAP/2AAAAAP/2AAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAOgAA/9X/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9P/3wAAAAAAAAAAAAD/1QAA/+gAAP/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//kADQAA/8QAAP+0/+L/xf+0/+IACf9aAAD/8wAA/6EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAD/7AAA/8gAAP/IAAAAAP/5/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9YAAP/jAAAAAAAA/6P/0/+D/7cAAP+DAAAAAP9MAAAAAP/s/38AAP/YAAAAAAAAAAD/o//E/8UAAP+X/5P/u//L/7L/j/+T/+L/7//TAAD/3P/T/+f/vwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAA/5MAAP/JAAcAAAAA/7//z/8/AAD/2P/YAAD/vwAA/6H/twAA/9IAAAAA/7f/lwAAAAAAAAAA/8X/xf/fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/x/+j/3//iAAAAAP/pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//kAAP/sAAAAAAAAAAD/9gAA//IAAAAPAAAAAAAIAAAAAAAAAAD/9v/6AAD/9gAAAAD/+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+//+QAAAAAAAAAAAAD/9gAAAAAAAAAAAAD/7AAA//L/6AAA//wAAAAAAAD/7wAA//kAAP/5AAAAAAAAAAf/8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//AAAAAP/5QAA//b/7wAAAAAAAAAA/+z/8gAAAAAAAP/sAAAABgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//IAAAAAAAAAAAAAAAAAAAAAAAD/7P/vAAAAAAAA//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//D/7P/oAAD/+f/2ABD/0QAAAAYAAAAAAAAAAwAU/+z/5QAAAAAAAP/YAAAAAAAAAAD/9gAD/9v/8gAAAAAAAAAN/+EAAAAA//YAAP/wAAD/7//w/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+f/2AAAAAAAAAAAAAAAAAAAAAAAAAAD/8gAAAAD/+f/2AAD/7AAA/+X/8gAA//IAAAAA//n/+QAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/w//b/6P/l//n/9v/eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8AAAAAAAAAAD/8gAAAAAAAAAAAAAAAAAAAAAAAAAA//kAAAAFAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAA//z//AAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAoAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//AAAAAD/9gAAAAD/8gAAAAAAAAAA//z/8AAAAAAAAAAAAAAAAP/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAD/9gAAAAD/7P/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+gAAP/pAAAAAAAAAAr/7AAA//IAAAAAAAAAAP/2//D/3wAAAAAAAAAAAAAAAAAAAAAAAAAA/+n/9gAAAAAAAAAA/+UAAAAA/+EAAP/2AAAAAP/2//P/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/6QAAAAAAAP/oAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAK//b/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAAaAAAALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh/9EAAAAAAAAAAAAAAAD/8AAAABQAAP/wAAAAAAAXAAD/8AAAABAAAAAaAAAAAAAXAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAhAAAAYgAA//YADQANAA4AAAAAAAAAFAAAAAAAAAAAAAAABgAA//b/8AAAAAAAAP/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAP/wAAAAAP/wABAANf+9ACgADwAA/8QANQAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAA1AAAAAAAAAAAAAAAAAAAAAAAA//IAAP/yAAAAKP/8AA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAKAAAAB0ALwAA//IAAP/f/+wAAP/fAAAAAP+wAAAAAP/w/7AAAAAAAAAAAAAAAAD/8AAA//YAEP/f/9//9gAA//r/2P/f//YAFwAAAAAAAP/2AA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwAYAAAAAAAA/+gAAP/yAC0AFAAAAAAAAP+cADUAAAAAADX/7AA1/9//5QAAAAAAAAA1AAD/7wAAAAAAAAAA/+z/7AAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAA/+UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAMAAAAAAAYADf/cAA0AAAAA/+gAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAD/9gAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+8AAP/lAAD/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAA/+8AAAAPAAD//AAIAAAAAAAAAAAAAP/5AAAAAP/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAA//H/+QAA//b//AAAAAD//AAAAAAAAAAAAAD/7AAA/+j/8gAAAAAAAAAAAAD/7wAA//kAAP/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/7AAAAAD/9gAAAAAACQAAAAD/8AAAAA0ACf/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//IAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAP/iAAAAAAAAAAD/3wAAAAAAAAAAAAAAAAAA/+P/3wAAAAAAAP/oAAAAAAAAAAAAAAAA/+j/8AAUAAsADQAd/+YAFAAPAAAAAP/vAAD/9v/v//AADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//IAAAAAAAAAAAAAAAD/+QAAAAAAAAAAAAD/+QAA/+X/7wAAAAAAAAANAAD/+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/t/+//x//Y//T/5v/nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAD/8gAAAAAAAAAAAAAAAP/rAAAAAAAA/+///P/8AAAAAP/8AAD/7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8v/j/+YAAAAA//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAD/8AAAAAAAAAAA//L/9//m/+b/7AAA/+X/7AAA/+wAAP/1//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8/+UAAAAAAAAAAAAAAAD/+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAD/6P/sAAAAAP/eAAMAAAAAAAMAAAAAAAYAC//oAAYAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAA/+kAAP/5AAD/+f/w//L/7wAAAA8AAAAA/+X/8gAAAAAAAAAAAAD/7AAQAAAAAAAA//YAAAAA/+8AAP/sAAAAAAAAAAAABv/m//z//AAAAAAAAAAA//IAAP/YAAAAAP/d//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/uAAAAAAAAAAAAAAAAAAAAAAAD/+gAAAAAAAD/9v/y/9j/7AAAAAAAAAAAAAAAAAAA/7cAAP+0/+z/twAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/98AAAAAAAD/7P/sAAAAAAAA//IAAP/bAAAAAP/vAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/v/+wAAD/yQAA//b//P/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+v/vQAAAAD/ygAA//IAAAAAAAD/8v/y/8r/3wAAAAD/5f/w/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/vQAAAAAAAAAAAAAAAAAAAAAAAP/r//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/p/+z/j//R/+X/vwAAAAD/6AAA//YAAAAAAAAAAP/s/+j/8AAAAAAAAAAAAAAAAAAAAAAAAAAA//b/vwAAAAQAAP/2AAAAAP/9//b/9v/8AAAAAP/8/8v/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/v/+rAAAAAAAA//wAAAAA//YAAP/8/+gAAP/w/+H/8v/o//IAAP/hAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/yAAD/7AAAAAAAAP/oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAABcAEwAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/8gAA/+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAcAAP/sAAAAAAAAAAD/6wAAAAAAAP/jAAD/9v/2AAD/2AAA//AAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgAA/9wAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAD/8gAA/+b/7gAAAAAAAAAAAAD/8gAK//IAAP/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/7P/P/9//1f/P/+wAAP+PAAD/8wAA/6n/9gAAAAAACgAGAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8/+YAAAAAAAAAAAAAAAD/8gAA/+P/3P/SAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+/AAAAAAAAAAAAAAAA/+4AAP/tAAAAAAAA/8H/3/+r/8UAAP+r/+b/5v+I/+4AAP/s/5YAAP/AAAAAAAAAAAD/t//Y/9wAAP+n/7//xf/V/8L/oP+7/9n/7P/f/8T/6P/f//P/zwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/6MAAP/ZAAAAAAAA/9P/2f+CAAD/7P/oAAD/2AAA/7f/0QAA/9kAAAAA/8v/vv+nAAAAAAAA/9L/0v/TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/6sAAAAAAAAAAAAA//IAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAABAAA//wAAAAoAAAAAAAAAAAAEQAAAAAAAP/8AAAAAP/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/5AAAAAAAAAAAABgAAAAAANwAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//z//AAAAAD/8gAbAAAAAAAbAAAAAAAA//z/9gAhACEAAP/8//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAP/8AAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/7P/s//IAAAAAAAD/+QAbAAAAAAAbAAAAAAAA//z/9gAUABQAAAAAAAAAAAAAAAAABwAA//n/7wAoABsABwAH//YAJAAbAAAAAP/8AAD/9gAG/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8AAAAAAAAAAQAAAAAAAcAQwAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAUAAAABwAAAAAAAAAAABQABwAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAD/+AAHAAAAAP/2//L/6P/l//b/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+v/yQAAAAD/wwAA//z//AAAAAD/+f/8/8T/3AAAAAD/5f/l/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/yQAAAAAAAAAAAAAAAAAAAAAAAP/x//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/y/9//vf/R//b/vQAAAAD/6wAAAAAAAAAAAAAAAAAA//UAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+//vgAAAAAAAAAAAAAAAAAAAAAAAP/1AAAAAP/y/8sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xP+9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+8AAAAAAAAAAP/vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8AAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/90AAAAAAAAAAAAAAAD/7AAAAAAAAP/5AAAAAP/5AAD/+QAA//L//AAAAAAAAAAAAAD/8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//X/9QAAAAD/9gAAAAAAAP/YAAAAAAAAAAD//AAAAAD//AAAAAAAAAAAAAD//P/y//wAAP/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//L/8v/e//L//P/e//IAAP+c//YAAAAA/70AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAA//IAAP/yAAAAAwAA//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//IAAP/sAA0AEAAA/+X/6P/A/9QAAP/AAAAAAP+N/+z/7AAA/6kAAP/vAAAAAAAAAAD/6P/Y/+z/8v/E/8T/2//v/+j/sP/A//L/5f/wAAD//P/wAAD/3gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAA/9H/5f/yABQAAAAA/+X/8v+I/+z//P/oAAD/3f/s/9j/5QAA//L/9gAN/+X/2AAAAAAAAAAA/+L/4v/oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+gAAAAA/+gAAP/ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAD/9v/yAAAAAAAAAAAAAP/2AAAAAP/8AAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8gAAAAD/5gAAAAAAAAAA//z//AAA//L/5gAE//b/+gAA//YAAP/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/6//b/6P/iAAD/7P/iAAr/8AAAAAQAAAAAAAAACv/6AAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAA//b/6QAA//0AAAAAAAAAAP/9//b//P/yAAoAAP/y/+n/8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8gAAAAAAAAAA//YAAAAAAAAAAAAA//YAAP/wAAAAAP/sAAAAAP/6AAAAAAAA//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+v/yQAAAAD/1AAA/+8AAAAAAAAAAP/s/9j/3wAAAAD/8P/w/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/0QAAAAAAAAAAAAAAAAAAAAAAAP/8/+gAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/q//R/93/ywAAAAD/6AAAAAAAAAAAAAAAAP/s/+j/7AAAAAAAAAAAAAAAAAAAAAAAAAAA//b/ywAAAAQAAAAAAAAAAAAEAAAAAAAAAAAAAP/8/8T/8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/0//EAAAAAAAA//wAAAAAAAAAAP/8//YAAP/s//b//P/vAAAAAP/sAAAAAAAA//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhPOAAQAADgiOLYACwCQAAAAFAAUABT/+QBQ/+wADf/sAA0AUP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAoACgAAAAEAAAAAAAAAAAABAAA//YAIQAP/+b/9v/m/88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAoACj/8AAaAAD/7P+3AAAAGgAA//YAIQAo/6T/9v+k/3YAFP/d/9H/yf/R/93/yP+///X/5v/S/7v/nf/s/+X/y//1ABT/0f+i//X/5v/S/7v/nf+6ABT/9f/m/9L/u/+d/+z/7P/d/8j/v//q/9X/3v/s/7r/rP+Y/6D/9v/y/+L/4v/l/9z/3P/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2/+MAEAAA/+z/5f/Y/+UAAP/sAAD/9v/j/74AAP++AAAAAAAA//b/7AAG//kAAP/tAAAAAP/m/+P/0QAA//L/ywAAAAAABv/YAAAAAP/m/+P/0QAAAAAAAAAA/+b/4//RAAAAAP/5AAD/7QAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+//6P/y/+X/8v/2/+j/6//s/+j/8v/y/+X/+f/8/+X/5f/s/+//8v/l/+z/+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5f/l//kAAAAA//YAAAAA/9v/9v/bAAAAAAAAAAD/8gAA//wAAP/vAAAAAP/y//L/2P/8AAD/ywAAAAAAAP/sAAAAAP/y//L/2P/yAAAAAAAA//L/8v/YAAAAAP/8AAD/7wAAAAD/7//8//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//P/s//IAAP/s/+wAAAAA/+wAAP/s//IAAP/8/98AAAAAAAD/7P/yAAAAAP/5//b/8v/2//n/+f/y//n/8v/y//n/8v/b//L/8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//MAAAAA/+L/3QAA/+8AAP/iAAAAAP/z/8kAAP/JAAAAAAAAAAD/2AAA//kAAP/rAAAAAP/f/9z/0v/5AAD/xAAAAAAAAAAAAAAAAP/f/9z/0v/yAAAAAAAA/9//3P/SAAAAAP/5AAD/6wAAAAD/9v/5//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/7//o//IAAP/y/+X/8v/s//IAAP/o//IAAAAAAAAAAP/u/+L/6P/y/+4AAP/fAAAAAAAAAAAAAAAAAAAAAP/s/9//7AAAAAAAAP/s/9z/7P/c/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AcQByAA+AcoBzABDAc8B0QBGAdMB1ABJAdgB2ABLAd0B3wBMAeUB5QBPAecB6gBQAewB7ABUAfMB+ABVAgcCBwBbAhUCFQBcAiECIQBdAiwCLABeAjUCNQBfAmACYABgAmQCZABhAmYCZgBiAncCdwBjBMEE0ABkBNIE2gB0BVIFUgB9BXAFcAB+BYIFggB/BZ8FoACABaMFpQCCBacFqACFBaoFqwCHBa0FrQCJBa8FrwCKBbEFsgCLBbQFtACNBcEFwQCOBx4HHgCPAAEAAQdfAAEAAQdJAAEABwAQABYAKgAwBM8E1QceAAEAAQdWAAEACwAcACAAJAAqADABRwG+AcUByAIVBx4AAQABB1cAAQANAAIABgAKABAAFgHYAgcEwQTFBMkEzwTVBVIAAQADByUHMQczAAEAjwAHABcAMwF0AXUBdgF3AXgBeQG+AcIBxQHRAdMB3QHnAeoB7AH1AfYB9wH4AfkCQQJEAkgCUAJRAlICVAJVAl0CXgJlAm0CdQJ4AroCuwK8Ar0CvgK/AsACwQMKAwsDDAMNAw4DEgNgA4sDjAOfA6IDpQOvA70DwQPCA8MDzgPTA+AD4QPmA/sD/AP/BA4EGwQcBB4EIgQoBCoEKwQsBC0ESwRMBE0ETgRPBFAEUQRSBFMEVARhBGIEYwRkBGUEZgRnBGgEaQRqBIYEiASXBJkEmwSdBKwErgSwBNEFcAW9Bb4FvwXABcMF0QXSBdUF3wXvBfAF8QXzBfYF+AX6BfsGCQYKBgsGDAYNBg4GDwYQBhEGEgYdBqYGpwaoBqoAAQALAdgB7ANrA34DfwOAA4EDggODA4QDhQABAAEEPAABAAUDlQOWA+8D8AX8AAEAGgHdAfUB9gH3AfgCbwPQA9QEKgQrBFIEaAR7BH0EkgSdBJ8F+AYKBhAGEgYWBhcGGQYaBh0AAgAgAAIAHgAAACAAIwAdACYBGAAhARwBOgEUAUcBRwEzAUkBTgE0AVABUwE6AVUBuAE+AboBuwGiAb4BwgGkAcUBxgGpAcgByAGrAcwBzAGsAc8B0QGtAdMB1gGwAd4B4QG0AeMB5AG4AeYB5wG6AeoB6wG8Ae0B7gG+AfEB8QHAAfQB9AHBAfkB+gHCAgICAgHEAgUCNAHFAjcCNwH1BMEEyAH2BMoFHAH+BSoFLgJRBTAFmQJWBZsFngLAB5UHlQLEAAIABgI/Am4AAAJwA2IAMANkA2QBIwNuA24BJAWfBbsBJQbpBuoBQgACABgDiAOOAAADkQOUAAcDlwOzAAsDtQO5ACgDvAPEAC0DxwPIADYDywPLADgDzgPPADkD0gPTADsD1QPWAD0D2QPoAD8D6wPuAE8D8QQLAFMEEAQTAG4EFgQeAHIEIQQiAHsEJQQlAH0EKAQpAH4ELAQvAIAEMwQ7AIQFvAXjAI0F5QX3ALUF+gX7AMgF/QYHAMoAAgALBHUEegAABHwEfAAGBH4EjQAHBJAEkQAXBJcElwAZBJkEmQAaBJsEmwAbBKcErAAcBK4ErgAiBLAEsAAjBwgHCwAkAAIACgHsAewAAQNrA2sACQN+A34ABQN/A38AAgOAA4AACgOBA4EACAOCA4IABwODA4MABAOEA4QABgOFA4UAAwACACQABAAEAAQACAAIAAQAEAAQAAQAEgASAAQAHgAgAAMAIQAhAAEAIgAiAAIAKgAqAAMALAAsAAMALwAvAAUAMQAxAAYAMgAyAAcANAA0AAgAUQBVAAQAbAB0AAQAnAC1AAQBEwEtAAMBLgE1AAIBYQF6AAMBigGQAAUBqAGrAAcBrAGzAAgBwgHEAAMBxgHGAAMBzgHQAAMB0QHRAAgB5AHmAAMB8QHxAAUCAgICAAECBQIGAAECBwITAAoCFQI0AAMCPgI+AAEE2QTZAAkFjAWTAAkHlAeVAAEAAgAAAAIABAJiAmIAAgJsAmwAAwJyAnIABAJ1AnUAAQACAAQDlgOWAAED7wPvAAMD8APwAAQF/AX8AAIAAgAmA+ID4gAOA+MD4wABA+YD5gADA+cD5wAGA/ED8QAEA/QD9AAGA/cD9wAGA/gD+AAHA/kD+QAIA/oD+gAGA/0D/QACBAAEAAAHBAMEAwAQBAUEBQAKBAYEBwAGBAoECgAGBAsECwAPBBAEEAAEBBcEFwAIBBkEGQAJBBoEGgAGBBsEGwAFBCUEJQAHBCkEKQAGBCoEKwAFBC0ELQACBDMENAAOBDUENQAGBDgEOQAGBDoEOwAIBc4FzgAMBdMF0wALBdYF1gAMBd4F3gAMBegF6AAMBe0F7QANBfUF9QAMBfsF+wALAAIAGQH1AfUAFwH2AfYAGAH3AfcAGQH4AfgABAJvAm8ACwPQA9AAAgPUA9QAAQQqBCoAFQQrBCsAFgRSBFIAEgRoBGgAEQR7BHsABgR9BH0ADASSBJIACgSdBJ0AFASfBJ8ABQX4BfgAAwYKBgoACQYQBhAAEwYSBhIACAYWBhYADQYXBhcAEAYZBhkADgYaBhoADwYdBh0ABwACAUAAAgACAFwABAAEAG0ACAAIAG0ACwALAHQAEAAQAG0AEgASAG0AFAAUAF0AFQAVADsAFgAWADwAFwAXAD4AGAAYAEAAGQAZAF8AGgAaAEIAGwAbAGAAHAAcAGoAHgAgAGwAIQAhAGsAIgAiADgAJAAkAHMAJQAlADoAKgAqAGwALAAsAGwALwAvAHYAMAAwAHcAMQAxAD0AMgAyAD8AMwAzAF4ANAA0AEEANQA1AHoANgBLAFwATwBPADcAUQBVAG0AWQBZADcAbAB0AG0AeAB4ADkAhQCFAHQAnAC1AG0AvQDDAF0AxQDKADsAywDhADwA4gDlAEAA5gDtAEIA7gDyAGAA8wDzADcA9QD1AHUA+AEQAGoBEwEtAGwBLgE1ADgBOwFGAHMBSAFIADoBYQF6AGwBigGQAHYBkQGnAHcBqAGrAD8BrAGzAEEBtAG4AHoBvAG8ADoBvQG9AHMBvgG+AHcBwgHEAGwBxgHGAGwBzQHNADoBzgHQAGwB0QHRAEEB0wHTAHcB3gHfAHcB4QHhADoB5AHmAGwB7wHwADoB8QHxAHYB9AH0AHcB+QH6AHoCAgICAGsCBQIGAGsCFQI0AGwCPgI+AGsCPwI/AFMCQgJCAFYCRAJEAFsCRgJGAGkCSQJJAFMCTAJMAFoCTQJNAGkCUAJQAFkCUQJRADUCUgJSADYCVAJUAFUCVQJVAFgCVwJXAHICXgJeADYCYAJgAGECYgJiAGICagJqAFcCbAJsAGMCbgJuAGQCcQJxAGQCcgJyAGUCdAJ0AGQCdQJ1AFQCdwJ4AGQCewJ7AGQCfAJ8AGECgQKBAGQChAKEAGQChwKQAHICkQKSAFMCwALBADYCzALMAFMCzQLUAHIC5wLzAGEDFwMeAGQDMQM7AGQDPANHAGEDVANfAGQDYQNiAGQDiAOIAEwDjAOMABQDjgOOAFEDkQORACUDlwOXABkDmgOaAGgDnQOdAGgDngOeADMDnwOfAB0DoAOgABYDoQOhAE8DowOjABEDpgOmADMDqQOpACUDqwOrACIDrgOuADMDsAOwAGgDsQOxAE0DtQO1AHEDtgO2ABkDuAO4ADMDvQO9AB0DvwO/AFADwAPAAGgDwQPBADEDxAPEAFEDxwPHACUDywPLADMDzwPPAGgD0gPSAE8D0wPTABED1gPWAFED2QPZAEwD3gPfAGgD4APhAB0D4gPiAGYD4wPjAA4D5APlABoD5gPmABID5wPnAGcD6APoACYD6wPrACMD7APuABoD8QPxABcD8gPzABoD9AP0AGcD9QP1ABoD9wP3AGcD+AP4ABwD+QP5ADQD+gP6AGcD+wP7AE4D/AP8ABoD/QP9AA8D/gP/ABoEAAQAABwEAQQCABoEAwQDABUEBAQEABoEBQQFACAEBgQHAGcECQQJABoECgQKAGcEDAQNAHAEDwQPADIEEAQQABcEEQQRABoEEwQTABoEFgQWABoEFwQXADQEGAQYABoEGQQZAB4EGgQaAGcEGwQbADAEHAQcABoEHgQeACYEIQQhACMEIgQiABoEJQQlABwEKAQoABoEKQQpAGcEKgQrADAELAQsAE4ELQQtAA8ELwQvACYEMwQ0AGYENQQ1AGcENwQ3ABoEOAQ5AGcEOgQ7ADQEdQR2AAkEeQR5AAkEfAR8AAoEfgR/AA0EgASAAAsEgQSBAAwEggSCAAsEgwSDAAwEhASFAAkEhgSGAHkEhwSHACgEiASIAHkEiQSJACgEigSNAHgEkASRAHgEqASoAAoEqgSrAAoEwATAAHMEwQTBAAEEwwTDAAIExwTHAAIEygTKAC4EzwTPAAIE0QTRAAIE0wTTAAME1ATUAAQE1QTVAAUE1gTWAAYE1wTXAAcE2ATYAEsE2QTZAAgE2gTaAC8E2wTwAAEE9gT6AAIFEQUZAAIFKgUqAC4FQQVaAAIFYgVpAAMFagVqAG8FawVwAAQFcQWHAAUFiAWLAAcFjAWTAAgFlAWYAC8FnwWfAFIFpAWkAEoFpgWmAG4FqQWpAFIFrQWtAG4FsQWxAEgFsgWyAEkFtAW0AEcFuAW4AEkFuQW5AFIFvAW8ACkFvQW/ABsFwAXAABMFwQXBABsFwgXCACcFwwXDACQFxAXGABsFxwXHABgFyAXJABsFygXKACsFywXMABsFzQXNACsFzgXOACwFzwXPAC0F0AXQACoF0QXRAEQF0gXSABsF0wXTABAF1AXVABsF1gXWACwF1wXYABsF2QXZACQF2gXaABsF2wXbACEF3AXdABsF3gXeACwF3wXfABsF4AXgACsF4QXhAEMF4gXjABsF5QXlAEYF5gXmABgF5wXnABsF6AXoACwF6QXqABsF6wXrAC0F7AXsABsF7QXtAB8F7gXuACsF7wXvAEUF8AXwABsF8gXyACcF8wXzACQF9AX0ABsF9QX1ACwF9gX2ABsF9wX3ACsF+gX6AEQF+wX7ABAF/AX9ABsF/gX+ACcF/wX/ACkGAQYBABsGAwYDABsGBAYFACsGBgYHAC0G6QbpAFYHCAcIAAsHCQcKAAwHCwcLAAsHlAeVAGsAAgC/AAIAAgACAAMAAwAEAAQABAAHAAUABQApAAYABgAKAAcABwANAAgACAATAAkACQAWAAoACgAYAAsACwAaAAwADAAdAA0ADQAiAA4ADwAWABAAEAApABEAEQArABIAEgApABMAEwAuABQAFAAxABUAFQA1ABYAFgA7ABcAFwA+ABgAGABBABkAGQBEABoAGgBHABsAGwBKAB0AHQAnAB4AHgAFACAAIAAIACEAIQALACIAIgARACMAIwAjACYAJgAbACcAJwAgACgAKQAjACoAKwAnACwALAA5AC0ALQAsAC4ALgAvAC8ALwAzADAAMAA5ADEAMQA8ADIAMgA/ADMAMwBCADQANABFADUANQBIADYASwACAEwATgAKAE8AUAAEAFEAVQAHAFYAWQApAFoAawAKAGwAdAATAHUAdwAWAHgAeAAUAHkAhAAYAIUAhQAaAIYAiAAdAIkAiQAiAIoAigAfAIsAkAAiAJEAmwAWAJwArQApAK4ArgAKAK8AtAAmALUAtQApALYAvAAuAL0AwwAxAMQAxAAQAMUAygA1AMsA2wA7ANwA4QA4AOIA5QBBAOYA7QBHAO4A8gBKAPMA8wApAPQA9AAyAPUA9gApAPcA9wAYAQ4BEAAIAREBEgAnARMBFwAFARgBGAAeARwBLQAIAS4BNQARATYBOgAjAUcBRwA5AUkBTAAbAU0BTQAgAU4BTgAeAVABUwAgAVUBYAAjAWEBcgAnAXMBcwAIAXQBeQAkAXoBegAnAXsBgQAsAYIBiAAvAYkBiQAOAYoBkAAzAZEBoQA5AaIBpwA2AagBqwA/AawBswBFAbQBuABIAboBugAnAbsBuwAjAb4BvgAIAb8BwQAnAcIBwgAFAcUBxQAnAcYBxgA5AcgByAAnAcwBzAAnAc8BzwA5AdAB0AAFAdEB0QBFAdMB0wA5AdQB1QAjAdYB1gA5Ad4B3wA5AeAB4QAjAeMB4wA5AeQB5AAnAeYB5gAnAecB5wA5AeoB6wAsAe0B7QA5Ae4B7gAvAfEB8QAzAfQB9AAnAfkB+gBIAgICAgALAgUCBgAzAgcCEwAXAhQCFAAWAhUCNAA5AjcCNwAeBMEEwQABBMIEwgADBMMEwwAGBMQExAAoBMUExQAJBMYExgAMBMcExwASBMgEyAAVBMoEygAZBMsEywAcBMwEzAAhBM0EzgAVBM8EzwAoBNAE0AAqBNEE0QAoBNIE0gAtBNME0wAwBNQE1AA0BNUE1QA6BNYE1gA9BNcE1wBABNgE2ABDBNkE2QBGBNoE2gBJBNsE8AABBPEE8wAJBPQE9QADBPYE+gAGBPsE/gAoBP8FEAAJBREFGQASBRoFHAAVBSoFKgAZBSsFLQAcBS4FLgAhBTAFNQAhBTYFQAAVBUEFUAAoBVEFUQAJBVIFVwAlBVgFWgAoBVsFYQAtBWIFaQAwBWoFagAPBWsFcAA0BXEFgQA6BYIFhwA3BYgFiwBABYwFkwBGBZQFmABJBZkFmQAoBZsFnAAoBZ0FngAVB5UHlQAgAAIAuAACAAIAGwAEAAQAHgAIAAgAHgALAAsALwAQABAAHgASABIAHgAUABQAMAAVABUAAgAWABYAIQAXABcAAwAYABgABAAZABkAJQAaABoABQAbABsAJwAcABwAGgAeACAAMgAhACEAHAAiACIAMQAkACQARAAlACUANwAoACkAPQAqACoAMgArACsAPQAsACwAMgAtAC0APQAuAC4AHwAvAC8AAQAwADAAIAAxADEAIgAyADIAIwAzADMAJAA0ADQAJgA1ADUAOAA2AEsAGwBMAE4AQgBRAFUAHgBsAHQAHgCFAIUALwCcALUAHgC9AMMAMADFAMoAAgDLAOEAIQDiAOUABADmAO0ABQDuAPIAJwD4ARAAGgERAREAQAETAS0AMgEuATUAMQE6AToAQAE7AUYARAFHAUcAPQFIAUgANwFMAUwAPQFVAV8APQFhAXoAMgF7AYEAPQGCAYgAHwGKAZAAAQGRAacAIAGoAasAIwGsAbMAJgG0AbgAOAG7AbsAPQG8AbwANwG9Ab0ARAG+Ab4AIAG/Ab8APQHCAcQAMgHGAcYAMgHHAccAPQHNAc0ANwHOAdAAMgHRAdEAJgHTAdMAIAHWAdYAPQHYAdgARgHdAd0APQHeAd8AIAHgAeAAPQHhAeEANwHiAeMAPQHkAeYAMgHqAeoAPQHsAewAPQHuAe4AHwHvAfAANwHxAfEAAQH0AfQAIAH1AfUAPwH2AfYALQH5AfoAOAICAgIAHAIFAgYAHAIHAhMAPAIVAjQAMgI+Aj4AHANlA2UARQR1BHYAFAR3BHgAEwR5BHkAFAR6BHoAOgR8BHwABgR+BH8AKQSABIAAKASBBIEABwSCBIIAKASDBIMABwSEBIUAFASGBIYANASHBIcANgSIBIgANASJBIkANgSKBI0AMwSQBJEAMwSSBJIAFQSYBJgAOQSaBJoAOQScBJwAOQSdBJ0AOwSfBJ8AKgShBKEACASnBKcAOgSoBKgABgSpBKkAOgSqBKsABgStBK0AOQSvBK8AOQSxBLEAOQS4BLgAKwS5BLkALATABMAARATBBMEACQTCBMIAQwTDBMMAHQTEBMYAQwTHBMcAHQTIBMgAQwTKBMoACgTLBM4AQwTPBM8AHQTQBNAAQwTRBNEAHQTSBNIAQwTTBNMACwTUBNQADATVBNUADQTWBNYADgTXBNcADwTYBNgAEATZBNkAEQTaBNoAEgTbBPAACQTxBPMAQQT1BPUAQwT2BPoAHQT7BP0AQwT/BRAAQwURBRkAHQUaBRwAQwUqBSoACgUrBTQAQwU2BUAAQwVBBVoAHQVbBWEAQwViBWkACwVrBXAADAVxBYcADQWIBYsADwWMBZMAEQWUBZgAEgWaBZoAQwWcBZ4AQwYVBhUAFgYXBhcAGQYZBhkAFwYaBhoAGAYdBh0ALgYfBh8ANQYhBiEAPgcIBwgAKAcJBwoABwcLBwsAKAeUB5UAHAACAHACPwI/AAICQAJAAAUCQQJBABICQgJCAAsCQwJDAA4CRAJEADgCRQJFACsCRgJGACMCRwJHACsCSAJIABYCSQJJAAICSgJLACsCTAJMADUCTQJNACMCTgJOACsCTwJPACACUAJQACgCUQJRAC4CUgJSADICUwJTABwCVAJUAAgCVQJVAB4CVgJWABoCVwJXAAICWAJYAA4CWQJbACsCXAJcACMCXQJeADICXwJfABoCYQJhAAMCYgJiABACYwJjAAkCZAJkAAwCZQJlADYCZgJmAA8CZwJnAC8CaAJoABMCaQJpABQCagJqABcCawJrABMCbAJsABgCbQJtADMCbgJuACECcAJwACECcQJxACYCcgJyACwCcwJzADACdAJ0ACECdQJ1AAYCdgJ2ADACdwJ3ACECeAJ4ACUCeQJ5AAMCegJ6AC8CewJ7ACECfQJ9AAwCfgJ+AA8CfwKAABMCgQKBACECggKDADAChAKEACEChQKFABMChgKGADAChwKSAAICkwKaAA4CmwKwACsCsQK4ACMCuQK5ACACugLBADICwgLLABoCzALmABMC9AL7AAwC/AMGAA8DBwMWABMDFwMgACEDIQMwADADMQM7ACEDSANTAA8DVANfACEDYANgABQDYQNhACEDYgNiACkDZANkACQDbgNuABMFnwWfAAEFoAWgAAQFoQWhABEFogWiAAoFowWjAA0FpAWkADcFpQWlACoFpgWmACIFpwWnACoFqAWoABUFqQWpAAEFqgWrACoFrAWsADQFrQWtACIFrgWuACoFrwWvAB8FsAWwACcFsQWxAC0FsgWyADEFswWzABsFtAW0AAcFtQW1AB0FtgW2ABkFtwW3ACoFuAW4ADEFuQW7ACoG6QbpAAsG6gbqABoAAgCSAj8CPwAWAkICQgAnAkQCRAAeAkYCRgAcAkkCSQAWAkwCTAAqAk0CTQAcAlACUAApAlECUQALAlICUgAdAlMCUwAZAlQCVAAXAlUCVQAaAlYCVgAYAlcCVwBEAl4CXgAdAmACYAArAmECYQAsAmICYgACAmMCYwAtAmQCZAAuAmUCZQA8AmYCZgAvAmcCZwAyAmgCaAADAmkCaQAvAmoCagAoAmsCawBBAmwCbAAEAm0CbQA7Am4CbgAxAm8CbwAkAnACcAAlAnECcQAxAnICcgAFAnMCcwAzAnQCdAAxAnUCdQABAnYCdgAzAncCeAAxAnkCegAyAnsCewAxAnwCfAArAn0CfQAuAn4CfgAvAn8CfwADAoACgAA4AoECgQAxAoICgwAzAoQChAAxAoUChQA4AoYChgAzAocCkABEApECkgAWAsACwQAdAswCzAAWAs0C1ABEAt4C3gAYAucC8wArAvQC+wAuAvwDBgAvAwcDCAADAwkDCQA4AwoDCgADAwsDFgA4AxcDHgAxAx8DIAAlAyEDMAAzAzEDOwAxAzwDRwArA0gDUwAvA1QDXwAxA2ADYAAvA2EDYgAxA2MDYwBBA2QDZAA9A2UDZQAwA24DbgADBHUEdgAPBHcEeAAOBHkEeQAPBHoEegA1BHwEfAAfBH4EfwAhBIAEgAAgBIEEgQAQBIIEggAgBIMEgwAQBIQEhQAPBIYEhgA2BIcEhwA3BIgEiAA2BIkEiQA3BIoEjQA0BJAEkQA0BJIEkgARBJgEmABABJoEmgBABJwEnABABJ0EnQBFBJ8EnwAjBKEEoQAiBKcEpwA1BKgEqAAfBKkEqQA1BKoEqwAfBK0ErQBABK8ErwBABLEEsQBABLgEuAA6BZ8FnwAGBaAFoQA5BaIFogA+BaMFowA5BaQFpAANBaUFpQA5BaYFpgAbBacFqAA5BakFqQAGBaoFqwA5BawFrABCBa0FrQAbBa4FrwA5BbAFsABDBbEFsQAKBbIFsgAMBbMFswAIBbQFtAAHBbUFtQAJBbYFtgA/BbcFtwA5BbgFuAAMBbkFuQAGBboFugA5BbsFuwA/BhUGFQASBhcGFwAVBhkGGQATBhoGGgAUBh0GHQAmBiEGIQBGBukG6QAnBuoG6gAYBwgHCAAgBwkHCgAQBwsHCwAgAAIArQOIA4gAAgOJA4oAOQOLA4sAEwOMA4wAMAONA40AGQOOA44AIQORA5EAOQOSA5MAKgOUA5QAIQOXA5kAKgOaA5oAJAObA5sAKgOcA5wADQOdA50AEAOeA54ALQOfA58ANgOgA6AACwOhA6EAFgOiA6IAMAOjA6QAKgOlA6UAMAOmA6YAJwOnA6cAKgOoA6gAJwOpA6oAJAOrA6sAKgOsA60AGQOuA64ABgOvA68AEwOwA7AAEAOxA7EACQOyA7MAKgO1A7UAHgO2A7cAJwO4A7gAMwO5A7kAIQO8A7wAKgO9A70ANgO+A74AKgO/A78AOwPAA8AAJAPBA8EAHAPCA8MAEwPEA8QAIQPHA8cAOQPIA8gAIQPLA8sAIQPOA84AMAPPA88AEAPSA9IAFgPTA9MAMAPVA9UAKgPWA9YAIQPZA9kAAgPaA9sAGQPcA9wAJAPdA90AKgPeA98AJAPgA+EANgPjA+MAAwPkA+QANwPlA+UAEQPmA+YALgPnA+cAFwPoA+gAHwPrA+sANwPsA+0AKAPuA+4AHwPxA/MAKAP0A/QAIgP1A/UAKAP2A/YAIgP3A/cADgP4A/gAKwP5A/kANAP6A/oAIgP7A/sAFAP8A/wALgP9A/4AKAP/A/8ALgQABAAAJQQBBAEAKAQCBAIAJQQDBAQAIgQFBAUAKAQGBAcAFwQIBAgABAQJBAkAEQQKBAoADgQLBAsABwQQBBEAJQQSBBIAMQQTBBMAHwQWBBYAKAQXBBcANAQYBBgAKAQZBBkAJQQaBBoAIgQbBBsAGgQcBB0AEQQeBB4AHwQhBCEANwQiBCIAHwQlBCUAHwQoBCgALgQpBCkADgQsBCwAFAQtBC0ALgQuBC4AMQQvBC8AHwQ0BDUAFwQ2BDYAIgQ3BDcAKAQ4BDkAIgQ6BDsANAW8BbwAAQW9Bb4AOAW/Bb8AEgXABcAALwXBBcEAGAXCBcIAIAXDBcMAOAXEBcUAKQXGBcYAIAXHBckAKQXKBcoAIwXLBcsAKQXMBcwADAXNBc0ADwXOBc4ALAXPBc8ANQXQBdAACgXRBdEAFQXSBdIALwXTBdQAKQXVBdUALwXWBdYAJgXXBdcAKQXYBdgAJgXZBdoAIwXbBdsAKQXcBd0AGAXeBd4ABQXfBd8AEgXgBeAADwXhBeEACAXiBeMAKQXlBeUAHQXmBecAJgXoBegAMgXpBekAIAXqBeoAKQXrBesANQXsBewAKQXtBe0AOgXuBe4AIwXvBe8AGwXwBfEAEgXyBfIAIAXzBfMAOAX0BfUAIAX2BfYALwX3BfcADwX6BfoAFQX7BfsALwX9Bf0AKQX+Bf4AIAX/Bf8AAQYABgEAGAYCBgIAIwYDBgMAKQYEBgUAIwYGBgcANQACAR4AAgACAGkABAAEADAACAAIADAACwALAGsAEAAQADAAEgASADAAFQAVADMAFgAWADUAFwAXADgAGQAZADsAGgAaAD0AGwAbAGwAIQAhAC4AJAAkAHAALwAvADIAMQAxADYANAA0ADwANgBLAGkAUQBVADAAbAB0ADAAhQCFAGsAnAC1ADAAxQDKADMAywDhADUA5gDtAD0A7gDyAGwBOwFGAHABigGQADIBrAGzADwBvQG9AHAB0QHRADwB8QHxADICAgICAC4CBQIGAC4CBwITAGoCPgI+AC4DZQNlAGIDiAOIABwDiQOLAG8DjAOMACADjQONAG8DjgOOAFADkQORAE8DkgOUAG8DlwOXACUDmAOZAG8DmgOaACoDmwOcAG8DnQOdACoDngOeAAMDnwOfAE0DoAOgACMDoQOhACcDogOiAG8DowOjAB4DpAOlAG8DpgOmAAMDpwOoAG8DqQOpAE8DqgOqAG8DqwOrAE4DrAOtAG8DrgOuAAMDrwOvAG8DsAOwACoDsQOxAFYDsgOzAG8DtQO1AEwDtgO2ACUDtwO3AG8DuAO4AAMDuQO5AG8DvAO8AG8DvQO9AE0DvgO+AG8DvwO/ACwDwAPAACoDwQPBAAEDwgPCAG8DxAPEAFADxwPHAE8DyAPIAG8DywPLAAMDzgPOAG8DzwPPACoD0APQAFID0gPSACcD0wPTAB4D1APVAG8D1gPWAFAD2QPZABwD2gPaAG4D2wPbAG8D3QPdAG8D3gPfACoD4APhAE0D4gPiABsD4wPjAEsD5APlAGAD5gPmAB8D5wPnAFoD6APoAEUD6QPpAEYD6wPrAC0D7APuAGAD8QPxACQD8gPzAGAD9AP0AFoD9QP1AGAD9gP2AF8D9wP3AFoD+AP4AAID+QP5ACsD+gP6AFoD+wP7ACYD/AP8AGAD/QP9AB0D/gP/AGAEAAQAAAIEAQQCAGAEAwQDACIEBAQEAGAEBQQFAEQEBgQHAFoECAQIAEcECQQJAGAECgQKAFoECwQLACEEDAQNAGcEDwQPAEgEEAQQACQEEQQRAGAEEgQSAEcEEwQTAGAEFgQWAGAEFwQXACsEGAQYAGAEGQQZAAQEGgQaAFoEGwQbACgEHAQcAGAEHQQdAF4EHgQeAEUEIQQhAC0EIgQiAGAEJQQlAAIEKAQoAGAEKQQpAFoEKgQrACgELAQsACYELQQtAB0ELwQvAEUEMwQ0ABsENQQ1AFoENgQ2AFwENwQ3AGAEOAQ5AFoEOgQ7ACsEdQR2ABQEdwR4ABMEeQR5ABQEegR6AGMEfAR8AAUEfgR/AEAEgASAAD8EgQSBAAYEggSCAD8EgwSDAAYEhASFABQEhgSGAFQEhwSHAFEEiASIAFQEiQSJAFEEigSNAFMEkASRAFMEkgSSABYEmASYAFgEmgSaAFgEnAScAFgEnQSdAFsEnwSfAEEEoQShAAcEpwSnAGMEqASoAAUEqQSpAGMEqgSrAAUErQStAFgErwSvAFgEsQSxAFgEuAS4AEIEuQS5AEMEwATAAHAEwQTBAGQEwwTDAC8ExwTHAC8EyQTJAHEEygTKAGUEzwTPAC8E0QTRAC8E0wTTADEE1ATUAGYE1QTVADQE1gTWADcE1wTXADkE2ATYADoE2gTaAD4E2wTwAGQE9gT6AC8FEQUZAC8FHgUpAHEFKgUqAGUFQQVaAC8FYgVpADEFawVwAGYFcQWHADQFiAWLADkFlAWYAD4FvAW8AAgFvQW/AGEFwAXAAAoFwQXBAGEFwgXCAFcFwwXDAEoFxAXGAGEFxwXHAA0FyAXJAGEFygXKACkFywXMAGEFzQXNACkFzgXOABEFzwXPAEkF0AXQAAwF0QXRAA4F0gXSAGEF0wXTAAkF1AXVAGEF1gXWABEF1wXYAGEF2QXZAEoF2gXaAGEF2wXbAFkF3AXdAGEF3gXeABEF3wXfAGEF4AXgACkF4QXhAAsF4gXjAGEF5QXlABAF5gXmAA0F5wXnAGEF6AXoABEF6QXqAGEF6wXrAEkF7AXsAGEF7QXtABIF7gXuACkF7wXvAA8F8AXwAGEF8gXyAFcF8wXzAEoF9AX0AGEF9QX1ABEF9gX2AGEF9wX3ACkF+AX4ABUF+gX6AA4F+wX7AAkF/AX9AGEF/gX+AFcF/wX/AAgGAAYAAG0GAQYBAGEGAwYDAGEGBAYFACkGBgYHAEkGFQYVABcGFwYXABoGGQYZABgGGgYaABkGHQYdAFUGHwYfAF0GIQYhAGgHCAcIAD8HCQcKAAYHCwcLAD8HlAeVAC4AAgAYBHUEdgACBHcEeAABBHkEeQACBHoEegAEBHwEfAAHBH4EfwAKBIAEgAAIBIEEgQAJBIIEggAIBIMEgwAJBIQEhQACBIYEhgAFBIcEhwAGBIgEiAAFBIkEiQAGBIoEjQADBJAEkQADBKcEpwAEBKgEqQAHBKoEqgAEBKsEqwAHBwgHCAAIBwkHCgAJBwsHCwAIAAIBRQACAAIAgwALAAsACwAUABQAWgAVABUAMgAWABYANAAXABcANwAYABgAOgAZABkAXAAaABoAEQAbABsAXQAcABwAggAeACAALgAhACEAhAAiACIAhQAlACUACgAoACkAjgAqACoALgArACsAjgAsACwALgAtAC0AjgAuAC4AhgAvAC8AMAAxADEANQAyADIAOAAzADMAWwA0ADQAOwA1ADUAjwA2AEsAgwBMAE4AgQCFAIUACwC9AMMAWgDFAMoAMgDLAOEANADiAOUAOgDmAO0AEQDuAPIAXQD4ARAAggERAREAEAETAS0ALgEuATUAhQE6AToAEAFHAUcAjgFIAUgACgFMAUwAjgFVAV8AjgFhAXoALgF7AYEAjgGCAYgAhgGKAZAAMAGoAasAOAGsAbMAOwG0AbgAjwG7AbsAjgG8AbwACgG/Ab8AjgHCAcQALgHGAcYALgHHAccAjgHNAc0ACgHOAdAALgHRAdEAOwHWAdYAjgHdAd0AjgHgAeAAjgHhAeEACgHiAeMAjgHkAeYALgHqAeoAjgHsAewAjgHuAe4AhgHvAfAACgHxAfEAMAH1AfUAXgH5AfoAjwICAgIAhAIFAgYAhAIVAjQALgI+Aj4AhAI/Aj8AdwJCAkIAVQJEAkQAWQJJAkkAdwJMAkwAWAJQAlAAVwJRAlEAKwJSAlIADwJTAlMAJQJUAlQAVAJVAlUAJgJWAlYAVgJXAlcAdgJYAloAZgJcAlwAZAJdAl0AfwJeAl4ADwJfAl8AYwJgAmAAIwJhAmEAeAJiAmIAYAJjAmMAeQJkAmQAewJlAmUAgAJqAmoAYQJsAmwAYgJuAm4AJwJvAm8AbQJwAnAAfgJxAnEAJwJyAnIAKQJ0AnQAJwJ1AnUAUwJ3AngAJwJ7AnsAJwJ8AnwAIwJ9An0AewKBAoEAJwKEAoQAJwKHApAAdgKRApIAdwKTApYAZgKbAp4AZgKlAqgAZgKxArQAZAK5ArkAZgK6ArwAfwLAAsEADwLCAsUAYwLMAswAdwLNAtQAdgLWAtcAZgLeAt4AVgLfAuAAYwLnAvMAIwL0AvsAewMXAx4AJwMfAyAAfgMxAzsAJwM8A0cAIwNUA18AJwNhA2IAJwOIA4gAdAOMA4wAAwOOA44ACQORA5EAUAOXA5cADgOeA54AHwOfA58ABwOgA6AAFwOhA6EASwOjA6MAFgOmA6YAHwOpA6kAUAOrA6sATgOuA64AHwOxA7EASAO1A7UABgO2A7YADgO4A7gAHwO9A70ABwO/A78AIgPBA8EAGgPEA8QACQPHA8cAUAPLA8sAHwPQA9AAawPSA9IASwPTA9MAFgPWA9YACQPZA9kAdAPaA9oAiAPcA9wAiQPgA+EABwPiA+IAcwPkA+UAjQPmA+YAAQPnA+cAGwPoA+gAUQPrA+sATwPsA+4AjQPxA/EADQPyA/MAjQP0A/QAGwP1A/UAjQP3A/cAGwP4A/gAHQP5A/kAIAP6A/oAGwP7A/sASgP8A/wAjQP9A/0AFAP+A/8AjQQABAAAHQQBBAIAjQQD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') format('opentype');
  1555. }
  1556. @font-face {
  1557. font-family: "Source Sans Pro";
  1558. src: url('data:font/opentype;base64,T1RUTwAOAIAAAwBgQkFTRWUeXb0AA30YAAAARkNGRiDpKXM0AABEbAAB2d9EU0lH1MAIKQADfWAAABkYR0RFRoHqhnoAAjykAAADwkdQT1O5e9jAAAJ8xAABAFRHU1VCg/qPKwACQGgAADxaT1MvMl8P2bAAAAFQAAAAYGNtYXCMPOw1AAAN7AAANl5oZWFkCdF6dQAAAOwAAAA2aGhlYQp/DVUAAAEkAAAAJGhtdHiOY80NAAIeTAAAHlhtYXhwB5ZQAAAAAUgAAAAGbmFtZcbnaLAAAAGwAAAMPHBvc3T/uAAyAABETAAAACAAAQAAAAIFHg0G7ZNfDzz1AAMD6AAAAADSChjhAAAAANIKGOH+N/7ECG0D8QABAAMAAgAAAAAAAAABAAAD2P7vAAAImP43/jcIbQABAAAAAAAAAAAAAAAAAAAHlgAAUAAHlgAAAAMCLAK8AAUAAAKKAlgAAABLAooCWAAAAV4AMgEpAAACCwcDAwQDAgIEYAAC9wIAAAEAAAAAAAAAAEFEQk8AIAAg//8C7v8GAAAD2AERIAABnwAAAAAB8AKUAAAAIAADAAAAJAG2AAEAAAAAAAAAcAAAAAEAAAAAAAEADwBwAAEAAAAAAAIABAB/AAEAAAAAAAMAIwCDAAEAAAAAAAQAFACmAAEAAAAAAAUAOAC6AAEAAAAAAAYAEgDyAAEAAAAAAAcAYAEEAAEAAAAAAAgAGgFkAAEAAAAAAAkADAF+AAEAAAAAAAsAGQGKAAEAAAAAAA0BkAGjAAEAAAAAAA4AGgMzAAEAAAAAAQAADANNAAEAAAAAAQEACgNZAAEAAAAAAQIACwNjAAEAAAAAAQMACwNuAAEAAAAAAQQACQN5AAMAAQQJAAAA4AOCAAMAAQQJAAEAHgRiAAMAAQQJAAIACASAAAMAAQQJAAMARgSIAAMAAQQJAAQAKATOAAMAAQQJAAUAcAT2AAMAAQQJAAYAJAVmAAMAAQQJAAcAwAWKAAMAAQQJAAgANAZKAAMAAQQJAAkAGAZ+AAMAAQQJAAsAMgaWAAMAAQQJAA0DIAbIAAMAAQQJAA4ANAnoAAMAAQQJAQAAGAocAAMAAQQJAQEAFAo0AAMAAQQJAQIAFgpIAAMAAQQJAQMAFgpeAAMAAQQJAQQAEgp0Q29weXJpZ2h0IDIwMTAsIDIwMTIsIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQgKGh0dHA6Ly93d3cuYWRvYmUuY29tLyksIHdpdGggUmVzZXJ2ZWQgRm9udCBOYW1lINRTb3VyY2XVLlNvdXJjZSBTYW5zIFByb0JvbGQyLjAyMDtBREJPO1NvdXJjZVNhbnNQcm8tQm9sZDtBRE9CRVNvdXJjZSBTYW5zIFBybyBCb2xkVmVyc2lvbiAyLjAyMDtQUyAyLjA7aG90Y29udiAxLjAuODY7bWFrZW90Zi5saWIyLjUuNjM0MDZTb3VyY2VTYW5zUHJvLUJvbGRTb3VyY2UgaXMgYSB0cmFkZW1hcmsgb2YgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQgaW4gdGhlIFVuaXRlZCBTdGF0ZXMgYW5kL29yIG90aGVyIGNvdW50cmllcy5BZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZFBhdWwgRC4gSHVudGh0dHA6Ly93d3cuYWRvYmUuY29tL3R5cGVUaGlzIEZvbnQgU29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIFNJTCBPcGVuIEZvbnQgTGljZW5zZSwgVmVyc2lvbiAxLjEuIFRoaXMgbGljZW5zZSBpcyBhdmFpbGFibGUgd2l0aCBhIEZBUSBhdDogaHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkwuIFRoaXMgRm9udCBTb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiDUQVMgSVPVIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBTSUwgT3BlbiBGb250IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSwgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIGdvdmVybmluZyB5b3VyIHVzZSBvZiB0aGlzIEZvbnQgU29mdHdhcmUuaHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkxTbGFzaGVkIHplcm9TdHJhaWdodCBsQWx0ZXJuYXRlIGFBbHRlcm5hdGUgZ1NlcmlmZWQgSQBDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADAALAAgADIAMAAxADIALAAgADIAMAAxADQAIABBAGQAbwBiAGUAIABTAHkAcwB0AGUAbQBzACAASQBuAGMAbwByAHAAbwByAGEAdABlAGQAIAAoAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAGQAbwBiAGUALgBjAG8AbQAvACkALAAgAHcAaQB0AGgAIABSAGUAcwBlAHIAdgBlAGQAIABGAG8AbgB0ACAATgBhAG0AZQAgIBgAUwBvAHUAcgBjAGUgGQAuAFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvAEIAbwBsAGQAMgAuADAAMgAwADsAQQBEAEIATwA7AFMAbwB1AHIAYwBlAFMAYQBuAHMAUAByAG8ALQBCAG8AbABkADsAQQBEAE8AQgBFAFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvACAAQgBvAGwAZABWAGUAcgBzAGkAbwBuACAAMgAuADAAMgAwADsAUABTACAAMgAuADAAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA4ADYAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA2ADMANAAwADYAUwBvAHUAcgBjAGUAUwBhAG4AcwBQAHIAbwAtAEIAbwBsAGQAUwBvAHUAcgBjAGUAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABBAGQAbwBiAGUAIABTAHkAcwB0AGUAbQBzACAASQBuAGMAbwByAHAAbwByAGEAdABlAGQAIABpAG4AIAB0AGgAZQAgAFUAbgBpAHQAZQBkACAAUwB0AGEAdABlAHMAIABhAG4AZAAvAG8AcgAgAG8AdABoAGUAcgAgAGMAbwB1AG4AdAByAGkAZQBzAC4AQQBkAG8AYgBlACAAUwB5AHMAdABlAG0AcwAgAEkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkAFAAYQB1AGwAIABEAC4AIABIAHUAbgB0AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAGQAbwBiAGUALgBjAG8AbQAvAHQAeQBwAGUAVABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABpAHMAIABsAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAFMASQBMACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMQAuADEALgAgAFQAaABpAHMAIABsAGkAYwBlAG4AcwBlACAAaQBzACAAYQB2AGEAaQBsAGEAYgBsAGUAIAB3AGkAdABoACAAYQAgAEYAQQBRACAAYQB0ADoAIABoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwALgAgAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAZABpAHMAdAByAGkAYgB1AHQAZQBkACAAbwBuACAAYQBuACAgGABBAFMAIABJAFMgGQAgAEIAQQBTAEkAUwAsACAAVwBJAFQASABPAFUAVAAgAFcAQQBSAFIAQQBOAFQASQBFAFMAIABPAFIAIABDAE8ATgBEAEkAVABJAE8ATgBTACAATwBGACAAQQBOAFkAIABLAEkATgBEACwAIABlAGkAdABoAGUAcgAgAGUAeABwAHIAZQBzAHMAIABvAHIAIABpAG0AcABsAGkAZQBkAC4AIABTAGUAZQAgAHQAaABlACAAUwBJAEwAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUAIABmAG8AcgAgAHQAaABlACAAcwBwAGUAYwBpAGYAaQBjACAAbABhAG4AZwB1AGEAZwBlACwAIABwAGUAcgBtAGkAcwBzAGkAbwBuAHMAIABhAG4AZAAgAGwAaQBtAGkAdABhAHQAaQBvAG4AcwAgAGcAbwB2AGUAcgBuAGkAbgBnACAAeQBvAHUAcgAgAHUAcwBlACAAbwBmACAAdABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUALgBoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAUwBsAGEAcwBoAGUAZAAgAHoAZQByAG8AUwB0AHIAYQBpAGcAaAB0ACAAbABBAGwAdABlAHIAbgBhAHQAZQAgAGEAQQBsAHQAZQByAG4AYQB0AGUAIABnAFMAZQByAGkAZgBlAGQAIABJAAAABQAAAAMAAAIkAAAABAAAENoAAQAAAAAALAADAAEAAAIk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BH0ANgA3ADgAOQA6AD0ATABRAFoAWwBcAF4AeQB6AHsAfQDzAJcAnACdAJ4AnwCgBtYArQDLAMwAzQDPAOcA9AGJAPgA+QD6APsA/AD/AQ4BEwEcAR0BHgEgATsBPAE9AT8BuQFbAWEBYgFjAWQBZQbXAXIBkQGSAZMBlQGtAboBrwA7AP0APAD+AEsBDQBSARQAUwEVAFUBFwBUARYAVgEYAFkBGwBfASEAYAEiAGEBIwBqASwAXQEfAG0BLwBuATAAbwExAHABMgB1ATYAeAE6AHwBPgB+AUAAhAFGAIMBRAB/AUcA9wG9AIUBSACGAUkBTACJAU0AiwFQAIoBTgCMAU8AkAFUAJQBWACYAVwAlgFaAWAA9gG7AKEBZgCrAXAAogFnAK4BcwC2AXsAuQF8ALcBfQC9AYIAvgGDAMABhQC/AYQAxgGLAMUBigDKAZAAzgGUANABlgDRAZcA0gGYANMBmQDbAaEA5AGqAOgBrgDpAO4BtADwAbYA7wG1BqwAdACvAXQA3AGiAD4BAACAAUEAowFoANQBmgDVAZsA1gGcANcBnQDYAZ4ATgEQAHEBMwC1AXoAbAEuAJUBWQBNAQ8AwQGGAMcBjAG+AcYBzAHNAc4BzwHQAdEB0gHTAdQB1QHXAgEBxwHWAdkGhAaMBpEGkwcHBxgHGwcZBx0HFQcaBpgGmQaGBo0GkgcfByIHJQcnBykHKwctBzEHMwc1BzcHOQc7B0AHQgdEB08HUAdRB1IHVAdWB1gHWQNqA2wCVwNmAlgCWQJaAl0CXwKFAlACUQJSAlMCVAJVAlYCWwJeAnwCfQJ+An8ChgJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACeAJxAnICcwJ0AnUCdgJ3AoACgwKBAoIChAO/BBkDwAQaA8EEGwPCBBwDwwQdA8QEHgPHBCEDyAQiA8sEJQPOBCgDzwQpA9AEKgPRBCsD0gQsA9MELQPUBC4D1QPWBC8EMgPZBDMD2gQ0A9sENQPcBDYD3QQ3A94EOAPfBDkD4AQ6A+EEOwZ8Bn4GfwaFBocGigaOBo8AUAESAFcBGQBYARoAawEtAHIBNAB2ATcAdwE5AIcBSgCIAUsAjQFRAI4BUgCPAVMAkQFVAJIBVgCTAVcAmQFdAJoBXgCbAV8ArAFxALgBfgC6AX8AuwGAALwBgQDC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BJMAAASTAAAEHQAABJYAAASWAAADxAAABJcAAASXAAAEHgAABJgAAASYAAADxwAABJkAAASZAAAEIQAABJoAAASaAAADyAAABJsAAASbAAAEIgAABKAAAASgAAADywAABKEAAAShAAAEJQAABKIAAASiAAADzgAABKMAAASjAAAEKAAABKoAAASqAAADzwAABKsAAASrAAAEKQAABK4AAASuAAAD0AAABK8AAASvAAAEKgAABLAAAASwAAAD0QAABLEAAASxAAAEKwAABLIAAASyAAAD0gAABLMAAASzAAAELAAABLYAAAS2AAAD0wAABLcAAAS3AAAELQAABLoAAAS6AAAD1AAABLsAAAS7AAAELgAABMAAAATBAAAD1QAABMIAAATCAAAELwAABM8AAATPAAAEMgAABNAAAATQAAAD2QAABNEAAATRAAAEMwAABNQAAATUAAAD2gAABNUAAATVAAAENAAABNYAAATWAAAD2wAABNcAAATXAAAENQAABNgAAATYAAAD3AAABNkAAATZAAAENgAABOIAAATiAAAD3QAABOMAAATjAAAENwAABOYAAATmAAAD3gAABOcAAATnAAAEOAAABOgAAAToAAAD3wAABOkAAATpAAAEOQAABO4AAATuAAAD4AAABO8AAATvAAAEOgAABPIAAATyAAAD4QAABPMAAATzAAAEOwAAHUMAAB1DAAAGewAAHUcAAB1HAAAGfAAAHUgAAB1JAAAGfgAAHU0AAB1NAAAGgQAAHU8AAB1PAAAGhQAAHVAAAB1QAAAGhwAAHVIAAB1SAAAGiQAAHVYAAB1WAAAGigAAHVcAAB1YAAAGjgAAHVsAAB1bAAAGkAAAHZwAAB2cAAAGfQAAHaAAAB2gAAAGgAAAHbsAAB27AAAGlAAAHgYAAB4GAAAAUAAAHgcAAB4HAAABEgAAHgwAAB4MAAAAVwAAHg0AAB4NAAABGQAAHg4AAB4OAAAAWAAAHg8AAB4PAAABGgAAHhYAAB4WAAAAawAAHhcAAB4XAAABLQAAHiAAAB4gAAAAcgAAHiEAAB4hAAABNAAAHiQAAB4kAAAAdgAAHiUAAB4lAAABNwAAHioAAB4qAAAAdwAAHisAAB4rAAABOQAAHjIAAB4yAAAAhwAAHjMAAB4zAAABSgAAHjQAAB40AAAAiAAAHjUAAB41AAABSwAA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RhJNElQSWxJiEmkScBJ3En4ShRKMEpMSmhKhEqgSrxK2Er0SxBLLEtIS2RLgEucS7hL1EvwTAxMKExETGBMfEyYTLRM0EzsTQhNJE1ATVxNeE2UTbBNzE3oTgROIE48TlhOdE6QTqxOyE7kTwBPHE84T1RPcE+MT6hPxE/gT/xQGFA0UFBQbFCIUKRQwFDcUPhRFFEwUUxRaFGEUaBRvFHYUfRSEFIsUkhSZFKAUpxSuFLUUvBTDFMwU2RTgFOcU7BT1FQIVCRUQFRcVHhUlFSwVMxU6FUEVSBVPFVYVXRVkFWsVchV5FYQVjxWaFaUVsBW7FcYV0RXcFecV7hX1FfwWAxYKFhEWGBYhFioWMRY4Fj8WRhZPFlgWXxZmFm0WdBZ7FoIWiRaQFpcWnhalFqwWsxa6FsEWyBbPFtYW3RbkFusW8hb5FwAXBxcOFxUXHBcjFywXMxc6F0EXSBdPF1gXYRdoF28Xdhd9F4QXixeSF5kXoBepF7IXuRfAF8kX0hfZF+IX6xfyF/kYABgHGA4YFRgcGCMYKhgzGDwYQxhKGFEYWBhfGGYYbRh0GHsYghiJGJAYlxieGKUYrBi1GL4YxRjMGNMY2hjjGOwY8xj6GQEZCBkPGRYZHRkkGSsZMhk5GUAZRxlOGVUZXBljGWoZcRl4GX8ZhhmNGZQZmxmiGakZsBm3GcAZxxnOGdUZ3BnjGewZ9Rn8GgMaChoRGhgaHxomGi0aNBo9GkYaTRpUGl0aZhptGnYafxqGGo0alBqbGqIaqRqwGrcawBrJGtAa1xreGuUa7BrzGvobARsIGw8bGhshGycbLhs3Gz8bRxtRG1obYxtrG3UbfxuIG48blxugG6gbsBu6G8MbzBvUG94b6BvxG/ocAhwKHBQcHRwmHC4cOBxCHEscUxxaHGEcahxyHHocgRyKHJMcmxyiHKkcsBy3HL4cxRzMHNMc2hzhHOgc7xz2HP0dBB0LHRIdGR0gHScdLh01HTwdQx1JHU8dVh1bHV8dYx1nHWsdbx1zHXcdex1/HYMdhx2LHY8dkx2XHZsdnx2jHacdqx2vHbMdtx27Hb8dwx3MHdUd4x3sHfgeAh4LHhMeHR4nHjEeOx5FHk8eWR5jHm0edx6BHoselR6fHqQerh64HsIezB7XHuAe7h73HwQfDR8XHyEfKh8zHzwfSh9TH18faR9yH38fiR+TH50fpx+xH7sfxR/PH9kf4x/tH/sgBCARIBsgJCAuIDwgRiBUIF4gaCBvIHgggSCPIJggpCCuILsgxSDPINkg4yDtIPshBSEPIRkhIiErITUhPCFGIVAhWiFjIW0hdyGBIYohlCGdIaYhsCG6IcQhziHXIeAh7iH3IgMiDSIdIiciMSI7IkUiTyJZImMibSJ2InsigyKNIpcioSKrIrUivyLJItMi3CLmIu8i+SMDIw0jFyMgIy4jNyNBI0sjVSNfI2wjdiN/I4kjkyOdI6cjsSO6I8Mj0SPaI+Yj8CP5JAEkESQbJCUkLyQ5JEMkTSRXJGEkaSRzJH0khySRJJskpCStJLskxyTQJNkk5yTzJP0lByURJRslJCUtJTolRCVOJVQlXCVmJXAleiWFJY0llCWcJaYlsCW3Jb0lxSXMJdQl3SXiJecl7CX2JfsmASYJJg8mGSYfJiUmKyY1JkQmViZlJnImgSaLJpUmnyapJrMmvSbHJtEm2yblJu8m+ScDJw0nFychJysnNSc/J0knUyddJ2cncSd7J4UnjyeZJ6MnrSe3J8EnyyfVJ98n6SfzJ/0oBygRKBwoJigwKDooRChOKFgoYihsKHYogCiKKJQoniioKLIovCjGKNAo2ijkKO4o+CkCKQwpFikgKSopNCk+KUgpUilcKWYpcCl6KYYpjSmTKZkpoSmoKa8ptSm9KcUpzCnVKeIp7Sn8KgoqFSohKi4qPSpNKlYqXypoKnQqgSqPKp4qqiq3KsAqyCrQKtoq4yrsKvQq/isIKxErHysuKzkrQytMK1QrXCtmK28reCuAK4orlCudK6sruivFK88r2CvgK+gr8iv7LAQsDCwWLCAsKSw3LEYsUSxbLGQsbCx0LH4shyyQLJgsoiysLLUswyzSLN0s5yz0LPotAC0GLQwtEi0YLR4tJC0qLTAtNi08LUItSC1OLVQtWi1gLWYtbC1yLXgtfi2ELYotkC2WLZwtoi2oLa4ttC26LcAtxi3MLdIt2C3eLeQt6i3wLfYt/C4CLgguDi4ULhouIC4mLiwuMy46LkEuSC5PLlouZS5xLncufS6DLo0umC6jLq4utC64Lr8uwy7KLtAu1y7bLuIu6S7wLvcu/i8FLwwvEy8aLyEvKy8yLzkvQC9HL04vVS9cL2Mvai9xL3gvgS+NL5UvoC+oL68vui/CL8kv0C/XL+Av5y/uL/cv/jAFMAwwFTAcMCMwKjAxMDgwPzBGME0wVDBbMGIwaTBwMHcwfjCFMIwwkzCaMKEwqDCvMLYwvTDEMMsw0jDZMOAw5zDuMPUxADEJMRAxGzEkMSsxNjE9MUgxTzFaMWExbDFzMXwxhzGTMZoxpTGsMbcxvjHJMdAx2zHiMe0x9DH/MggyDzIaMiEyLDIzMjwyQzJMMlMyWjJhMmgybzJ2Mn0yhDKLMpIymTKgMqcysDK3MsIyyTLUMtsy4jLpMvAy9zL+MwUzDDMTMxozITMoMy8zNjNBM0gzTzNaM2kzdjOBM5AznTOoM7MzwjPNM9wz5zP2NAE0EDQbNCo0NTRENE80XjRpNHg0gzSSNJ00rDS3NMY00TTgNOs09jUBNQw1FzUiNSk1MDU6NUY1TTVUNVc1tzYnNjZBbWFjcm9uQWJyZXZldW5pMDFDRHVuaTFFQTB1bmkxRUEydW5pMUVBNHVuaTFFQTZ1bmkxRUE4dW5pMUVBQXVuaTFFQUN1bmkxRUFFdW5pMUVCMHVuaTFFQjJ1bmkxRUI0dW5pMUVCNkFvZ29uZWt1bmkwMUZDdW5pMDFFMnVuaTAyNDN1bmkxRTA2Q2FjdXRlQ2NpcmN1bWZsZXhDY2Fyb25DZG90YWNjZW50RGNhcm9udW5pMUUwQ3VuaTFFMEVEY3JvYXRFY2Fyb25FbWFjcm9uRWJyZXZlRWRvdGFjY2VudHVuaTFFQjh1bmkxRUJBdW5pMUVCQ3VuaTFFQkV1bmkxRUMwdW5pMUVDMnVuaTFFQzR1bmkxRUM2RW9nb25la3VuaTFFMTZ1bmkwMUY0R2NpcmN1bWZsZXhHYnJldmVHZG90YWNjZW50dW5pMDEyMkdjYXJvbnVuaTFFMjB1bmkwMDQ3MDMwM3VuaTAxOTNIY2lyY3VtZmxleHVuaTFFMjR1bmkxRTJBSGJhckl0aWxkZUltYWNyb25JZG90YWNjZW50dW5pMDFDRnVuaTFFQzh1bmkxRUNBSW9nb25la3VuaTAxMkNKY2lyY3VtZmxleHVuaTAxMzZ1bmkxRTMydW5pMUUzNExhY3V0ZUxjYXJvbnVuaTAxM0JMZG90dW5pMUUzNnVuaTFFMzh1bmkxRTNBdW5pMUUzRXVuaTFFNDB1bmkxRTQyTmFjdXRldW5pMDFGOE5jYXJvbnVuaTAxNDV1bmkxRTQ0dW5pMUU0NnVuaTFFNDhPbWFjcm9uT2h1bmdhcnVtbGF1dHVuaTAxRDF1bmkxRUNDdW5pMUVDRXVuaTFFRDB1bmkxRUQydW5pMUVENHVuaTFFRDZ1bmkxRUQ4dW5pMDE0RXVuaTFFNTJPaG9ybnVuaTFFREF1bmkxRURDdW5pMUVERXVuaTFFRTB1bmkxRUUydW5pMDFFQVJhY3V0ZVJjYXJvbnVuaTFFNTh1bmkwMTU2dW5pMUU1QXVuaTFFNUN1bmkxRTVFU2FjdXRlU2NpcmN1bWZsZXh1bmkwMTVFdW5pMDIxOHVuaTFFNjB1bmkxRTYydW5pMUU5RVRjYXJvbnVuaTAxNjJ1bmkwMjFBdW5pMUU2Q3VuaTFFNkV1bmkwMTY2VXRpbGRlVW1hY3JvblVicmV2ZVVyaW5nVWh1bmdhcnVtbGF1dHVuaTAxRDN1bmkwMUQ1dW5pMDFEN3VuaTAxRDl1bmkwMURCdW5pMUVFNHVuaTFFRTZVb2dvbmVrVWhvcm51bmkxRUU4dW5pMUVFQXVuaTFFRUN1bmkxRUVFdW5pMUVGMFdncmF2ZVdhY3V0ZVdjaXJjdW1mbGV4V2RpZXJlc2lzWWdyYXZlWWNpcmN1bWZsZXh1bmkxRThFdW5pMUVGNHVuaTFFRjZ1bmkxRUY4WmFjdXRlWmRvdGFjY2VudHVuaTFFOTJ1bmkxRTk0dW5pMDE4RnVuaTAxNEF1bmkwMTMyYW1hY3JvbmFicmV2ZXVuaTAxQ0V1bmkxRUExdW5pMUVBM3VuaTFFQTV1bmkxRUE3dW5pMUVBOXVuaTFFQUJ1bmkxRUFEdW5pMUVBRnVuaTFFQjF1bmkxRUIzdW5pMUVCNXVuaTFFQjdhb2dvbmVrdW5pMDFGRHVuaTAxRTN1bmkwMTgwdW5pMUUwN2NhY3V0ZWNjaXJjdW1mbGV4Y2Nhcm9uY2RvdGFjY2VudGRjYXJvbnVuaTFFMER1bmkxRTBGZGNyb2F0ZWNhcm9uZW1hY3JvbmVicmV2ZWVkb3RhY2NlbnR1bmkxRUI5dW5pMUVCQnVuaTFFQkR1bmkxRUJGdW5pMUVDMXVuaTFFQzN1bmkxRUM1dW5pMUVDN2VvZ29uZWt1bmkxRTE3dW5pMDFGNWdjaXJjdW1mbGV4Z2JyZXZlZ2RvdGFjY2VudHVuaTAxMjNnY2Fyb251bmkxRTIxdW5pMDA2NzAzMDNoY2lyY3VtZmxleHVuaTFFMjV1bmkxRTk2dW5pMUUyQmhiYXJpdGlsZGVpbWFjcm9udW5pMDFEMHVuaTFFQzl1bmkxRUNCaW9nb25la2lvZ29uZWsuZHVuaTAxMkRqY2lyY3VtZmxleHVuaTAxMzd1bmkxRTMzdW5pMUUzNWtncmVlbmxhbmRpY2xhY3V0ZWxjYXJvbmxkb3R1bmkwMTNDdW5pMUUzN3VuaTFFMzl1bmkxRTNCdW5pMUUzRnVuaTFFNDF1bmkxRTQzbmFjdXRldW5pMDFGOW5jYXJvbnVuaTAxNDZ1bmkxRTQ1dW5pMUU0N3VuaTFFNDluYXBvc3Ryb3BoZW9tYWNyb25vaHVuZ2FydW1sYXV0dW5pMDFEMnVuaTFFQ0R1bmkxRUNGdW5pMUVEMXVuaTFFRDN1bmkxRUQ1dW5pMUVEN3VuaTFFRDl1bmkwMTRGdW5pMUU1M29ob3JudW5pMUVEQnVuaTFFRER1bmkxRURGdW5pMUVFMXVuaTFFRTN1bmkwMUVCcmFjdXRldW5pMDE1N3JjYXJvbnVuaTFFNTl1bmkxRTVCdW5pMUU1RHVuaTFFNUZzYWN1dGVzY2lyY3VtZmxleHVuaTAxNUZ1bmkwMjE5dW5pMUU2MXVuaTFFNjN0Y2Fyb251bmkwMTYzdW5pMDIxQnVuaTFFNkR1bmkxRTZGdW5pMUU5N3VuaTAxNjd1dGlsZGV1bWFjcm9udWJyZXZldXJpbmd1aHVuZ2FydW1sYXV0dW5pMDFENHVuaTAxRDZ1bmkwMUQ4dW5pMDFEQXVuaTAxREN1bmkxRUU1dW5pMUVFN3VvZ29uZWt1aG9ybnVuaTFFRTl1bmkxRUVCdW5pMUVFRHVuaTFFRUZ1bmkxRUYxd2dyYXZld2FjdXRld2NpcmN1bWZsZXh3ZGllcmVzaXN5Z3JhdmV5Y2lyY3VtZmxleHVuaTFFOEZ1bmkxRUY1dW5pMUVGN3VuaTFFRjl6YWN1dGV6ZG90YWNjZW50dW5pMUU5M3VuaTFFOTV1bmkwMTRCdW5pMDIzN3VuaTAxMzN1bmkwMjUwdW5pMDI1MnVuaTAyNTN1bmkwMjU0dW5pMDI1NXVuaTAyNTZ1bmkwMjU3dW5pMDI1OHVuaTAyNTF1bmkwMjk5dW5pMDI1OXVuaTAyNUF1bmkwMjVCdW5pMDI1Q3VuaTAyNUV1bmkwMjVGdW5pMDI2MHVuaTAyNjF1bmkwMjYydW5pMDI2M3VuaTAyNjR1bmkwMjY1dW5pMDI2NnVuaTAyNjd1bmkwMjlDdW5pMDI2OHVuaTAyNkF1bmkwMjlEdW5pMDI2Q3VuaTAyNkR1bmkwMjZFdW5pMDI5RnVuaTAyNkZ1bmkwMjcwdW5pMDI3MXVuaTAyNzJ1bmkwMjczdW5pMDI3NHVuaTAyNzV1bmkwMjc2dW5pMDI3OHVuaTAyNzl1bmkwMjdBdW5pMDI3QnVuaTAyN0R1bmkwMjdFdW5pMDI4MHVuaTAyODF1bmkwMjgydW5pMDI4M3VuaTAyODR1bmkwMjg4dW5pMDI4OXVuaTAyOEF1bmkwMjhCdW5pMDI4Q3VuaTAyOER1bmkwMjhFdW5pMDI4RnVuaTAyOTB1bmkwMjkxdW5pMDI5MnVuaTAyOTR1bmkwMjk1dW5pMDJBMXVuaTAyQTJ1bmkwMUMydW5pMDI5OGZfZmZfZl9pZl9mX2xmX3RmX2ZfdEkuYUlncmF2ZS5hSWFjdXRlLmFJY2lyY3VtZmxleC5hSXRpbGRlLmFJZGllcmVzaXMuYUltYWNyb24uYUlkb3RhY2NlbnQuYXVuaTAxQ0YuYXVuaTFFQzguYXVuaTFFQ0EuYUlvZ29uZWsuYXVuaTAxMkMuYXVuaTAxNEEuYWEuYWFncmF2ZS5hYWFjdXRlLmFhY2lyY3VtZmxleC5hYXRpbGRlLmFhZGllcmVzaXMuYWFtYWNyb24uYWFicmV2ZS5hYXJpbmcuYXVuaTAxQ0UuYXVuaTFFQTEuYXVuaTFFQTMuYXVuaTFFQTUuYXVuaTFFQTcuYXVuaTFFQTkuYXVuaTFFQUIuYXVuaTFFQUQuYXVuaTFFQUYuYXVuaTFFQjEuYXVuaTFFQjMuYXVuaTFFQjUuYXVuaTFFQjcuYWFvZ29uZWsuYWcuYXVuaTAxRjUuYWdjaXJjdW1mbGV4LmFnYnJldmUuYWdkb3RhY2NlbnQuYXVuaTAxMjMuYWdjYXJvbi5hdW5pMUUyMS5hdW5pMDA2NzAzMDMuYWwuYWxhY3V0ZS5hbGNhcm9uLmFsZG90LmF1bmkwMTNDLmF1bmkxRTM3LmF1bmkxRTM5LmF1bmkxRTNCLmFsc2xhc2guYWZsLmFBbHBoYUJldGFHYW1tYXVuaTAzOTRFcHNpbG9uWmV0YUV0YVRoZXRhSW90YUthcHBhTGFtYmRhTXVOdVhpT21pY3JvblBpUmhvU2lnbWFUYXVVcHNpbG9uUGhpQ2hpUHNpdW5pMDNBOUFscGhhdG9ub3NFcHNpbG9udG9ub3NFdGF0b25vc0lvdGF0b25vc0lvdGFkaWVyZXNpc09taWNyb250b25vc1Vwc2lsb250b25vc1Vwc2lsb25kaWVyZXNpc09tZWdhdG9ub3NhbHBoYWJldGFnYW1tYWRlbHRhZXBzaWxvbnpldGFldGF0aGV0YWlvdGFrYXBwYWxhbWJkYXVuaTAzQkNudXhpb21pY3JvbnBpcmhvc2lnbWF0YXV1cHNpbG9ucGhpY2hpcHNpb21lZ2F1bmkwM0MydW5pMDNEMHVuaTAzRDF1bmkwM0Q1YWxwaGF0b25vc2Vwc2lsb250b25vc2V0YXRvbm9zaW90YXRvbm9zaW90YWRpZXJlc2lzb21pY3JvbnRvbm9zdXBzaWxvbnRvbm9zdXBzaWxvbmRpZXJlc2lzb21lZ2F0b25vc2lvdGFkaWVyZXNpc3Rvbm9zdXBzaWxvbmRpZXJlc2lzdG9ub3N1bmkxRjA4dW5pMUYwOXVuaTFGQkF1bmkxRkJCdW5pMUYwQXVuaTFGMEJ1bmkxRjBDdW5pMUYwRHVuaTFGMEV1bmkxRjBGdW5pMUZCOHVuaTFGQjl1bmkxRjE4dW5pMUYxOXVuaTFGQzh1bmkxRkM5dW5pMUYxQXVuaTFGMUJ1bmkxRjFDdW5pMUYxRHVuaTFGMjh1bmkxRjI5dW5pMUZDQXVuaTFGQ0J1bmkxRjJBdW5pMUYyQnVuaTFGMkN1bmkxRjJEdW5pMUYyRXVuaTFGMkZ1bmkxRjM4dW5pMUYzOXVuaTFGREF1bmkxRkRCdW5pMUYzQXVuaTFGM0J1bmkxRjNDdW5pMUYzRHVuaTFGM0V1bmkxRjNGdW5pMUZEOHVuaTFGRDl1bmkxRjQ4dW5pMUY0OXVuaTFGRjh1bmkxRkY5dW5pMUY0QXVuaTFGNEJ1bmkxRjRDdW5pMUY0RHVuaTFGRUN1bmkxRjU5dW5pMUZFQXVuaTFGRUJ1bmkxRjVCdW5pMUY1RHVuaTFGNUZ1bmkxRkU4dW5pMUZFOXVuaTFGNjh1bmkxRjY5dW5pMUZGQXVuaTFGRkJ1bmkxRjZBdW5pMUY2QnVuaTFGNkN1bmkxRjZEdW5pMUY2RXVuaTFGNkZ1bmkxRkJDdW5pMUY4OHVuaTFGODl1bmkxRjhBdW5pMUY4QnVuaTFGOEN1bmkxRjhEdW5pMUY4RXVuaTFGOEZ1bmkxRkNDdW5pMUY5OHVuaTFGOTl1bmkxRjlBdW5pMUY5QnVuaTFGOUN1bmkxRjlEdW5pMUY5RXVuaTFGOUZ1bmkxRkZDdW5pMUZBOHVuaTFGQTl1bmkxRkFBdW5pMUZBQnVuaTFGQUN1bmkxRkFEdW5pMUZBRXVuaTFGQUZ1bmkxRjAwdW5pMUYwMXVuaTFGNzB1bmkxRjcxdW5pMUYwMnVuaTFGMDN1bmkxRjA0dW5pMUYwNXVuaTFGMDZ1bmkxRjA3dW5pMUZCMHVuaTFGQjF1bmkxRkI2dW5pMUYxMHVuaTFGMTF1bmkxRjcydW5pMUY3M3VuaTFGMTJ1bmkxRjEzdW5pMUYxNHVuaTFGMTV1bmkxRjIwdW5pMUYyMXVuaTFGNzR1bmkxRjc1dW5pMUYyMnVuaTFGMjN1bmkxRjI0dW5pMUYyNXVuaTFGMjZ1bmkxRjI3dW5pMUZDNnVuaTFGMzB1bmkxRjMxdW5pMUY3NnVuaTFGNzd1bmkxRjMydW5pMUYzM3VuaTFGMzR1bmkxRjM1dW5pMUYzNnVuaTFGMzd1bmkxRkQwdW5pMUZEMXVuaTFGRDZ1bmkxRkQydW5pMUZEM3VuaTFGRDd1bmkxRjQwdW5pMUY0MXVuaTFGNzh1bmkxRjc5dW5pMUY0MnVuaTFGNDN1bmkxRjQ0dW5pMUY0NXVuaTFGRTR1bmkxRkU1dW5pMUY1MHVuaTFGNTF1bmkxRjdBdW5pMUY3QnVuaTFGNTJ1bmkxRjUzdW5pMUY1NHVuaTFGNTV1bmkxRjU2dW5pMUY1N3VuaTFGRTZ1bmkxRkUwdW5pMUZFMXVuaTFGRTJ1bmkxRkUzdW5pMUZFN3VuaTFGNjB1bmkxRjYxdW5pMUY3Q3VuaTFGN0R1bmkxRjYydW5pMUY2M3VuaTFGNjR1bmkxRjY1dW5pMUY2NnVuaTFGNjd1bmkxRkY2dW5pMUZCM3VuaTFGODB1bmkxRjgxdW5pMUZCMnVuaTFGQjR1bmkxRjgydW5pMUY4M3VuaTFGODR1bmkxRjg1dW5pMUY4NnVuaTFGODd1bmkxRkI3dW5pMUZDM3VuaTFGOTB1bmkxRjkxdW5pMUZDMnVuaTFGQzR1bmkxRjkydW5pMUY5M3VuaTFGOTR1bmkxRjk1dW5pMUY5NnVuaTFGOTd1bmkxRkM3dW5pMUZGM3VuaTFGQTB1bmkxRkExdW5pMUZGMnVuaTFGRjR1bmkxRkEydW5pMUZBM3VuaTFGQTR1bmkxRkE1dW5pMUZBNnVuaTFGQTd1bmkxRkY3dW5pMDNEN3VuaTAzRDl1bmkwM0RCdW5pMDNERHVuaTAzRTF1bmkwMzdFYW5vdGVsZWlhYW5vdGVsZWlhLmNhcHVuaTAzNzR1bmkwMzc1dG9ub3N0b25vcy5jYXBkaWVyZXNpc3Rvbm9zdW5pMDM3QXVuaTFGQkV1bmkxRkJEdW5pMUZCRnVuaTFGRkV1bmkxRkVGdW5pMUZGRHVuaTFGQ0R1bmkxRkREdW5pMUZDRXVuaTFGREV1bmkxRkNGdW5pMUZERnVuaTFGQzB1bmkxRkVEdW5pMUZFRXVuaTFGQzF1bmkxRkJELmNhcHVuaTFGRkUuY2FwdW5pMUZFRi5jYXB1bmkxRkZELmNhcHVuaTFGQ0QuY2FwdW5pMUZERC5jYXB1bmkxRkNFLmNhcHVuaTFGREUuY2FwdW5pMUZDRi5jYXB1bmkxRkRGLmNhcHVuaTA0MTB1bmkwNDExdW5pMDQxMnVuaTA0MTN1bmkwNDE0dW5pMDQxNXVuaTA0MTZ1bmkwNDE2LmF1bmkwNDE2LmJ1bmkwNDE3dW5pMDQxOHVuaTA0MTl1bmkwNDFBdW5pMDQxQS5hdW5pMDQxQS5idW5pMDQxQnVuaTA0MUN1bmkwNDFEdW5pMDQxRXVuaTA0MUZ1bmkwNDIwdW5pMDQyMXVuaTA0MjJ1bmkwNDIzdW5pMDQyNHVuaTA0MjV1bmkwNDI2dW5pMDQyN3VuaTA0Mjh1bmkwNDI5dW5pMDQyQXVuaTA0MkJ1bmkwNDJDdW5pMDQyRHVuaTA0MkV1bmkwNDJGdW5pMDQwMHVuaTA0MDF1bmkwNDAydW5pMDQwM3VuaTA0MDR1bmkwNDA1dW5pMDQwNnVuaTA0MDd1bmkwNDA3LmF1bmkwNDA4dW5pMDQwOXVuaTA0MEF1bmkwNDBCdW5pMDQwQ3VuaTA0MEMuYXVuaTA0MEMuYnVuaTA0MER1bmkwNDBFdW5pMDQwRnVuaTA0NjJ1bmkwNDcydW5pMDQ3NHVuaTA0OTB1bmkwNDkydW5pMDQ5NnVuaTA0OTYuYXVuaTA0OTYuYnVuaTA0OTh1bmkwNDlBdW5pMDQ5QS5hdW5pMDQ5QS5idW5pMDRBMHVuaTA0QTAuYXVuaTA0QTAuYnVuaTA0QTJ1bmkwNEFBdW5pMDRBRXVuaTA0QjB1bmkwNEIydW5pMDRCNnVuaTA0QkF1bmkwNEMwdW5pMDRDMXVuaTA0QzEuYXVuaTA0QzEuYnVuaTA0RDB1bmkwNEQ0dW5pMDRENnVuaTA0RDh1bmkwNEUydW5pMDRFNnVuaTA0RTh1bmkwNEVFdW5pMDRGMnVuaTA0MzB1bmkwNDMxdW5pMDQzMnVuaTA0MzN1bmkwNDM0dW5pMDQzNXVuaTA0MzZ1bmkwNDM2LmF1bmkwNDM2LmJ1bmkwNDM3dW5pMDQzOHVuaTA0Mzl1bmkwNDNBdW5pMDQzQS5hdW5pMDQzQS5idW5pMDQzQnVuaTA0M0N1bmkwNDNEdW5pMDQzRXVuaTA0M0Z1bmkwNDQwdW5pMDQ0MXVuaTA0NDJ1bmkwNDQzdW5pMDQ0NHVuaTA0NDV1bmkwNDQ2dW5pMDQ0N3VuaTA0NDh1bmkwNDQ5dW5pMDQ0QXVuaTA0NEJ1bmkwNDRDdW5pMDQ0RHVuaTA0NEV1bmkwNDRGdW5pMDQ1MHVuaTA0NTF1bmkwNDUydW5pMDQ1M3VuaTA0NTR1bmkwNDU1dW5pMDQ1NnVuaTA0NTd1bmkwNDU3LmF1bmkwNDU4dW5pMDQ1OXVuaTA0NUF1bmkwNDVCdW5pMDQ1Q3VuaTA0NUMuYXVuaTA0NUMuYnVuaTA0NUR1bmkwNDVFdW5pMDQ1RnVuaTA0NjN1bmkwNDczdW5pMDQ3NXVuaTA0OTF1bmkwNDkzdW5pMDQ5N3VuaTA0OTcuYXVuaTA0OTcuYnVuaTA0OTl1bmkwNDlCdW5pMDQ5Qi5hdW5pMDQ5Qi5idW5pMDRBMXVuaTA0QTEuYXVuaTA0QTEuYnVuaTA0QTN1bmkwNEFCdW5pMDRBRnVuaTA0QjF1bmkwNEIzdW5pMDRCN3VuaTA0QkJ1bmkwNEMydW5pMDRDMi5hdW5pMDRDMi5idW5pMDRDRnVuaTA0RDF1bmkwNEQ1dW5pMDREN3VuaTA0RDl1bmkwNEUzdW5pMDRFN3VuaTA0RTl1bmkwNEVGdW5pMDRGM3VuaTA0MzEuc3JidW5pMjExNnplcm8uMHplcm8uMHN6ZXJvLnBudW1vbmUucG51bXR3by5wbnVtdGhyZWUucG51bWZvdXIucG51bWZpdmUucG51bXNpeC5wbnVtc2V2ZW4ucG51bWVpZ2h0LnBudW1uaW5lLnBudW16ZXJvLjBwemVyby4wcHN6ZXJvLnRudW1vbmUudG51bXR3by50bnVtdGhyZWUudG51bWZvdXIudG51bWZpdmUudG51bXNpeC50bnVtc2V2ZW4udG51bWVpZ2h0LnRudW1uaW5lLnRudW16ZXJvLm9udW1vbmUub251bXR3by5vbnVtdGhyZWUub251bWZvdXIub251bWZpdmUub251bXNpeC5vbnVtc2V2ZW4ub251bWVpZ2h0Lm9udW1uaW5lLm9udW16ZXJvLmNhcG9uZS5jYXB0d28uY2FwdGhyZWUuY2FwZm91ci5jYXBmaXZlLmNhcHNpeC5jYXBzZXZlbi5jYXBlaWdodC5jYXBuaW5lLmNhcHVuaTAwQUR1bmkyRTNBdW5pMkUzQnVuaTIwMTV1bmkyMDNFdW5pMjAzRnVuaTIwMTZ1bmkyMDNDdW5pMjA0N3VuaTIwNDl1bmkyMDQ4dW5pMjAzRHVuaTIzMUN1bmkyMzFEdW5pMjMxRXVuaTIzMUZ1bmkyN0U2dW5pMjdFN3VuaTJFMjJ1bmkyRTIzdW5pMkUyNHVuaTJFMjV1bmkyMTE3dW5pMjEyMHUxRjE2QXUxRjE2QmF0LmNhc2VpLnRya0Euc2NCLnNjQy5zY0Quc2NFLnNjRi5zY0cuc2NILnNjSS5zY0ouc2NLLnNjTC5zY00uc2NOLnNjTy5zY1Auc2NRLnNjUi5zY1Muc2NULnNjVS5zY1Yuc2NXLnNjWC5zY1kuc2NaLnNjQWdyYXZlLnNjQWFjdXRlLnNjQWNpcmN1bWZsZXguc2NBdGlsZGUuc2NBZGllcmVzaXMuc2NBbWFjcm9uLnNjQWJyZXZlLnNjQXJpbmcuc2N1bmkwMUNELnNjdW5pMUVBMC5zY3VuaTFFQTIuc2N1bmkxRUE0LnNjdW5pMUVBNi5zY3VuaTFFQTguc2N1bmkxRUFBLnNjdW5pMUVBQy5zY3VuaTFFQUUuc2N1bmkxRUIwLnNjdW5pMUVCMi5zY3VuaTFFQjQuc2N1bmkxRUI2LnNjQW9nb25lay5zY0FFLnNjdW5pMDFGQy5zY3VuaTAxRTIuc2N1bmkwMjQzLnNjdW5pMUUwNi5zY0NjZWRpbGxhLnNjQ2FjdXRlLnNjQ2NpcmN1bWZsZXguc2NDY2Fyb24uc2NDZG90YWNjZW50LnNjRGNhcm9uLnNjdW5pMUUwQy5zY3VuaTFFMEUuc2NEY3JvYXQuc2NFZ3JhdmUuc2NFYWN1dGUuc2NFY2lyY3VtZmxleC5zY0VjYXJvbi5zY0VkaWVyZXNpcy5zY0VtYWNyb24uc2NFYnJldmUuc2NFZG90YWNjZW50LnNjdW5pMUVCOC5zY3VuaTFFQkEuc2N1bmkxRUJDLnNjdW5pMUVCRS5zY3VuaTFFQzAuc2N1bmkxRUMyLnNjdW5pMUVDNC5zY3VuaTFFQzYuc2NFb2dvbmVrLnNjdW5pMUUxNi5zY3VuaTAxRjQuc2NHY2lyY3VtZmxleC5zY0dicmV2ZS5zY0dkb3RhY2NlbnQuc2N1bmkwMTIyLnNjR2Nhcm9uLnNjdW5pMUUyMC5zY3VuaTAwNDcwMzAzLnNjdW5pMDE5My5zY0hjaXJjdW1mbGV4LnNjdW5pMUUyNC5zY3VuaTFFMkEuc2NIYmFyLnNjSWdyYXZlLnNjSWFjdXRlLnNjSWNpcmN1bWZsZXguc2NJdGlsZGUuc2NJZGllcmVzaXMuc2NJbWFjcm9uLnNjSWRvdGFjY2VudC5zY3VuaTAxQ0Yuc2N1bmkxRUM4LnNjdW5pMUVDQS5zY0lvZ29uZWsuc2N1bmkwMTJDLnNjSmNpcmN1bWZsZXguc2N1bmkwMTM2LnNjdW5pMUUzMi5zY3VuaTFFMzQuc2NMYWN1dGUuc2NMY2Fyb24uc2N1bmkwMTNCLnNjTGRvdC5zY3VuaTFFMzYuc2N1bmkxRTM4LnNjdW5pMUUzQS5zY0xzbGFzaC5zY3VuaTFFM0Uuc2N1bmkxRTQwLnNjdW5pMUU0Mi5zY05hY3V0ZS5zY3VuaTAxRjguc2NOY2Fyb24uc2NOdGlsZGUuc2N1bmkwMTQ1LnNjdW5pMUU0NC5zY3VuaTFFNDYuc2N1bmkxRTQ4LnNjT2dyYXZlLnNjT2FjdXRlLnNjT2NpcmN1bWZsZXguc2NPdGlsZGUuc2NPZGllcmVzaXMuc2NPbWFjcm9uLnNjT2h1bmdhcnVtbGF1dC5zY3VuaTAxRDEuc2N1bmkxRUNDLnNjdW5pMUVDRS5zY3VuaTFFRDAuc2N1bmkxRUQyLnNjdW5pMUVENC5zY3VuaTFFRDYuc2N1bmkxRUQ4LnNjT3NsYXNoLnNjT0Uuc2NPaG9ybi5zY3VuaTFFREEuc2N1bmkxRURDLnNjdW5pMUVERS5zY3VuaTFFRTAuc2N1bmkxRUUyLnNjdW5pMDFFQS5zY3VuaTAxNEUuc2N1bmkxRTUyLnNjUmFjdXRlLnNjdW5pMUU1OC5zY1JjYXJvbi5zY3VuaTAxNTYuc2N1bmkxRTVBLnNjdW5pMUU1Qy5zY3VuaTFFNUUuc2NTYWN1dGUuc2NTY2lyY3VtZmxleC5zY1NjYXJvbi5zY3VuaTAxNUUuc2N1bmkwMjE4LnNjdW5pMUU2MC5zY3VuaTFFNjIuc2NnZXJtYW5kYmxzLnNjdW5pMUU5RS5zY1RjYXJvbi5zY3VuaTAxNjIuc2N1bmkwMjFBLnNjdW5pMUU2Qy5zY3VuaTFFNkUuc2N1bmkwMTY2LnNjVWdyYXZlLnNjVWFjdXRlLnNjVWNpcmN1bWZsZXguc2NVdGlsZGUuc2NVZGllcmVzaXMuc2NVbWFjcm9uLnNjVWJyZXZlLnNjVXJpbmcuc2NVaHVuZ2FydW1sYXV0LnNjdW5pMDFEMy5zY3VuaTAxRDUuc2N1bmkwMUQ3LnNjdW5pMDFEOS5zY3VuaTAxREIuc2N1bmkxRUU0LnNjdW5pMUVFNi5zY1VvZ29uZWsuc2NVaG9ybi5zY3VuaTFFRTguc2N1bmkxRUVBLnNjdW5pMUVFQy5zY3VuaTFFRUUuc2N1bmkxRUYwLnNjV2dyYXZlLnNjV2FjdXRlLnNjV2NpcmN1bWZsZXguc2NXZGllcmVzaXMuc2NZZ3JhdmUuc2NZYWN1dGUuc2NZY2lyY3VtZmxleC5zY1lkaWVyZXNpcy5zY3VuaTFFOEUuc2N1bmkxRUY0LnNjdW5pMUVGNi5zY3VuaTFFRjguc2NaYWN1dGUuc2NaY2Fyb24uc2NaZG90YWNjZW50LnNjdW5pMUU5Mi5zY3VuaTFFOTQuc2NFdGguc2NUaG9ybi5zY3VuaTAxOEYuc2N1bmkwMTRBLnNjdW5pMDEzMi5zY3VuaTAxNEEuc2NhQWxwaGEuc2NCZXRhLnNjR2FtbWEuc2N1bmkwMzk0LnNjRXBzaWxvbi5zY1pldGEuc2NFdGEuc2NUaGV0YS5zY0lvdGEuc2NLYXBwYS5zY0xhbWJkYS5zY011LnNjTnUuc2NYaS5zY09taWNyb24uc2NQaS5zY1Joby5zY1NpZ21hLnNjVGF1LnNjVXBzaWxvbi5zY1BoaS5zY0NoaS5zY1BzaS5zY3VuaTAzQTkuc2NJb3RhZGllcmVzaXMuc2NVcHNpbG9uZGllcmVzaXMuc2NBbHBoYWlvdGFzdWIuc2NFdGFpb3Rhc3ViLnNjT21lZ2Fpb3Rhc3ViLnNjdW5pMDQxMC5zY3VuaTA0MTEuc2N1bmkwNDEyLnNjdW5pMDQxMy5zY3VuaTA0MTQuc2N1bmkwNDE1LnNjdW5pMDQxNi5zY3VuaTA0MTcuc2N1bmkwNDE4LnNjdW5pMDQxOS5zY3VuaTA0MUEuc2N1bmkwNDFCLnNjdW5pMDQxQy5zY3VuaTA0MUQuc2N1bmkwNDFFLnNjdW5pMDQxRi5zY3VuaTA0MjAuc2N1bmkwNDIxLnNjdW5pMDQyMi5zY3VuaTA0MjMuc2N1bmkwNDI0LnNjdW5pMDQyNS5zY3VuaTA0MjYuc2N1bmkwNDI3LnNjdW5pMDQyOC5zY3VuaTA0Mjkuc2N1bmkwNDJBLnNjdW5pMDQyQi5zY3VuaTA0MkMuc2N1bmkwNDJELnNjdW5pMDQyRS5zY3VuaTA0MkYuc2N1bmkwNDAwLnNjdW5pMDQwMS5zY3VuaTA0MDIuc2N1bmkwNDAzLnNjdW5pMDQwNC5zY3VuaTA0MDUuc2N1bmkwNDA2LnNjdW5pMDQwNy5zY3VuaTA0MDcuc2NhdW5pMDQwOC5zY3VuaTA0MDkuc2N1bmkwNDBBLnNjdW5pMDQwQi5zY3VuaTA0MEMuc2N1bmkwNDBELnNjdW5pMDQwRS5zY3VuaTA0MEYuc2N1bmkwNDYyLnNjdW5pMDQ3Mi5zY3VuaTA0NzQuc2N1bmkwNDkwLnNjdW5pMDQ5Mi5zY3VuaTA0OTYuc2N1bmkwNDk4LnNjdW5pMDQ5QS5zY3VuaTA0QTAuc2N1bmkwNEEyLnNjdW5pMDRBQS5zY3VuaTA0QUUuc2N1bmkwNEIwLnNjdW5pMDRCMi5zY3VuaTA0QjYuc2N1bmkwNEJBLnNjdW5pMDRDMC5zY3VuaTA0QzEuc2N1bmkwNEQwLnNjdW5pMDRENC5zY3VuaTA0RDYuc2N1bmkwNEQ4LnNjdW5pMDRFMi5zY3VuaTA0RTYuc2N1bmkwNEU4LnNjdW5pMDRFRS5zY3VuaTA0RjIuc2NhbXBlcnNhbmQuc2N6ZXJvLnNjb25lLnNjdHdvLnNjdGhyZWUuc2Nmb3VyLnNjZml2ZS5zY3NpeC5zY3NldmVuLnNjZWlnaHQuc2NuaW5lLnNjZXhjbGFtLnNjZXhjbGFtZG93bi5zY3F1ZXN0aW9uLnNjcXVlc3Rpb25kb3duLnNjcXVvdGVzaW5nbGUuc2NxdW90ZWRibC5zY3F1b3RlbGVmdC5zY3F1b3RlcmlnaHQuc2NxdW90ZWRibGxlZnQuc2NxdW90ZWRibHJpZ2h0LnNjaHlwaGVuLnNjZW5kYXNoLnNjZW1kYXNoLnNjcGFyZW5sZWZ0LnNjcGFyZW5yaWdodC5zY2JyYWNrZXRsZWZ0LnNjYnJhY2tldHJpZ2h0LnNjYnJhY2VsZWZ0LnNjYnJhY2VyaWdodC5zY3plcm8uc3Vwc29uZS5zdXBzdHdvLnN1cHN0aHJlZS5zdXBzZm91ci5zdXBzZml2ZS5zdXBzc2l4LnN1cHNzZXZlbi5zdXBzZWlnaHQuc3Vwc25pbmUuc3Vwc3BhcmVubGVmdC5zdXBzcGFyZW5yaWdodC5zdXBzcGVyaW9kLnN1cHNjb21tYS5zdXBzemVyby5zdWJzb25lLnN1YnN0d28uc3Vic3RocmVlLnN1YnNmb3VyLnN1YnNmaXZlLnN1YnNzaXguc3Vic3NldmVuLnN1YnNlaWdodC5zdWJzbmluZS5zdWJzcGFyZW5sZWZ0LnN1YnNwYXJlbnJpZ2h0LnN1YnNwZXJpb2Quc3Vic2NvbW1hLnN1YnN6ZXJvLmRub21vbmUuZG5vbXR3by5kbm9tdGhyZWUuZG5vbWZvdXIuZG5vbWZpdmUuZG5vbXNpeC5kbm9tc2V2ZW4uZG5vbWVpZ2h0LmRub21uaW5lLmRub21wYXJlbmxlZnQuZG5vbXBhcmVucmlnaHQuZG5vbXBlcmlvZC5kbm9tY29tbWEuZG5vbXplcm8ubnVtcm9uZS5udW1ydHdvLm51bXJ0aHJlZS5udW1yZm91ci5udW1yZml2ZS5udW1yc2l4Lm51bXJzZXZlbi5udW1yZWlnaHQubnVtcm5pbmUubnVtcnBhcmVubGVmdC5udW1ycGFyZW5yaWdodC5udW1ycGVyaW9kLm51bXJjb21tYS5udW1yb3JkZmVtaW5pbmUuYUEuc3Vwc0Iuc3Vwc0Muc3Vwc0Quc3Vwc0Uuc3Vwc0Yuc3Vwc0cuc3Vwc0guc3Vwc0kuc3Vwc0ouc3Vwc0suc3Vwc0wuc3Vwc00uc3Vwc04uc3Vwc08uc3Vwc1Auc3Vwc1Euc3Vwc1Iuc3Vwc1Muc3Vwc1Quc3Vwc1Uuc3Vwc1Yuc3Vwc1cuc3Vwc1guc3Vwc1kuc3Vwc1ouc3Vwc2Euc3Vwc2Iuc3Vwc2Muc3Vwc2Quc3Vwc2Uuc3Vwc2Yuc3Vwc2cuc3Vwc2guc3Vwc2kuc3Vwc2ouc3Vwc2suc3Vwc2wuc3Vwc20uc3Vwc24uc3Vwc28uc3Vwc3Auc3Vwc3Euc3Vwc3Iuc3Vwc3Muc3Vwc3Quc3Vwc3Uuc3Vwc3Yuc3Vwc3cuc3Vwc3guc3Vwc3kuc3Vwc3ouc3Vwc3VuaTAyQzF1bmkwMkQwdW5pMDJEMXVuaTAyREV1bmkwMkUwZWdyYXZlLnN1cHNlYWN1dGUuc3Vwc3VuaTAyNTkuc3Vwc2Euc3VwYWcuc3VwYWwuc3VwYWNvbG9uLnN1cHNoeXBoZW4uc3Vwc2VuZGFzaC5zdXBzZW1kYXNoLnN1cHN5ZW4uQ05FdXJvdW5pMDE5MmxpcmF1bmkyMEE2cGVzZXRhdW5pMjBBOWRvbmd1bmkyMEIxdW5pMjBCMnVuaTIwQjR1bmkyMEI1dW5pMjBCOXVuaTIwQkF1bmkyMEFFdW5pMjBCOHVuaTIwQkR1bmkyMjE1c2xhc2guZnJhY3VuaTIxNTV1bmkyMTU2dW5pMjE1N3VuaTIxNTh1bmkyMTU5dW5pMjE1QXVuaTIxNTB1bmkyMTUxdW5pMjE1MnVuaTIxODl1bmkyMjE5bGVzc2VxdWFsZ3JlYXRlcmVxdWFsbm90ZXF1YWxhcHByb3hlcXVhbGluZmluaXR5dW5pMDBCNXBhcnRpYWxkaWZmaW50ZWdyYWxyYWRpY2FsdW5pMjIwNnVuaTIxMjZzdW1tYXRpb25wcm9kdWN0dW5pMjExM2VzdGltYXRlZHVuaTIxOTBhcnJvd3VwdW5pMjE5MmFycm93ZG93bnVuaTI1QTB1bmkyNUM2dW5pMjVDOXVuaTI3NTJ0cmlhZ3VwdW5pMjVCM3VuaTI1QjZ1bmkyNUI3dHJpYWdkbnVuaTI1QkR1bmkyNUMwdW5pMjVDMXVuaTI2MTB1bmkyNjExdW5pMjcxM3VuaTI2NkFsb3plbmdldW5pMjAzMnVuaTIwMzN1bmkyMDM1dW5pMDJCOXVuaTAyQkJ1bmkwMkJDdW5pMDJCRXVuaTAyQkZ1bmkwMkM4dW5pMDJDOXVuaTAyQ0F1bmkwMkNCdW5pMDJDQ3VuaTI1Q0N1bmkwMzAwdW5pMDMwMC5jYXB1bmkwMzAwLmd1bmkwMzAxdW5pMDMwMS5jYXB1bmkwMzAxLmd1bmkwMzAydW5pMDMwMi5jYXB1bmkwMzAzdW5pMDMwMy5jYXB1bmkwMzA0dW5pMDMwNC5jYXB1bmkwMzA1dW5pMDMwNS5jYXB1bmkwMzA2dW5pMDMwNi5jdW5pMDMwNi5jYXB1bmkwMzA2LmNjYXB1bmkwMzA3dW5pMDMwNy5jYXB1bmkwMzA4dW5pMDMwOC5jYXB1bmkwMzA5dW5pMDMwOS5jYXB1bmkwMzBBdW5pMDMwQS5jYXB1bmkwMzBCdW5pMDMwQi5jYXB1bmkwMzBDdW5pMDMwQy5jYXB1bmkwMzBDLmF1bmkwMzBGdW5pMDMwRi5jYXB1bmkwMzExdW5pMDMxMS5jYXB1bmkwMzEydW5pMDMxMi5ndW5pMDMxM3VuaTAzMTMuZ3VuaTAzMTh1bmkwMzE5dW5pMDMxQXVuaTAzMUJ1bmkwMzFDdW5pMDMxRHVuaTAzMUV1bmkwMzFGdW5pMDMyMHVuaTAzMjN1bmkwMzI0dW5pMDMyNXVuaTAzMjZ1bmkwMzI2LmF1bmkwMzI3dW5pMDMyNy5jYXB1bmkwMzI4dW5pMDMyOC5jYXB1bmkwMzI5dW5pMDMyQXVuaTAzMkN1bmkwMzJFdW5pMDMyRnVuaTAzMzB1bmkwMzMxdW5pMDMzNHVuaTAzMzl1bmkwMzNBdW5pMDMzQnVuaTAzM0N1bmkwMzNEdW5pMDM0MnVuaTAzNDIuY2FwdW5pMDM0NXVuaTAzNjF1bmkwMzA4MDMwMXVuaTAzMDgwMzAxLmNhcHVuaTAzMDgwMzAxLmd1bmkwMzA4MDMwMHVuaTAzMDgwMzAwLmNhcHVuaTAzMDgwMzAwLmd1bmkwMzA4MDMwM3VuaTAzMDgwMzA0dW5pMDMwODAzMDQuY2FwdW5pMDMwODAzMEN1bmkwMzA4MDMwQy5jYXB1bmkwMzAyMDMwMXVuaTAzMDIwMzAxLmNhcHVuaTAzMDIwMzAwdW5pMDMwMjAzMDAuY2FwdW5pMDMwMjAzMDl1bmkwMzAyMDMwOS5jYXB1bmkwMzAyMDMwM3VuaTAzMDIwMzAzLmNhcHVuaTAzMDYwMzAxdW5pMDMwNjAzMDEuY2FwdW5pMDMwNjAzMDB1bmkwMzA2MDMwMC5jYXB1bmkwMzA2MDMwOXVuaTAzMDYwMzA5LmNhcHVuaTAzMDYwMzAzdW5pMDMwNjAzMDMuY2FwdW5pMDMwMjAzMDZ1bmkwMzAyMDMwNi5jYXB1bmkwMzA0MDMwMXVuaTAzMDQwMzAxLmNhcHVuaTAzMTIwMzAxdW5pMDMxMjAzMDB1bmkwMzEyMDMwM3VuaTAzMTMwMzAxdW5pMDMxMzAzMDB1bmkwMzEzMDMwM3VuaTAwQTB1bmkyMDA3c3BhY2UuZnJhY25ic3BhY2UuZnJhY3VuaTIwMkZ1bmlGRUZGMi4wU291cmNlIGlzIGEgdHJhZGVtYXJrIG9mIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkIGluIHRoZSBVbml0ZWQgU3RhdGVzIGFuZC9vciBvdGhlciBjb3VudHJpZXMuQ29weXJpZ2h0IDIwMTAsIDIwMTIsIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQgKGh0dHA6Ly93d3cuYWRvYmUuY29tLyksIHdpdGggUmVzZXJ2ZWQgRm9udCBOYW1lICdTb3VyY2UnLlNvdXJjZSBTYW5zIFBybwIdAgABADQAbQB/ALcA6QEPASkBZwGHAaoB1gHzAj0CRwJPAnICxgMKAyQDcQOQA6QDvQPaA90D9AQJBEUEVwSOBK8EvgTyBR0FMgWLBaAFwQXLBeoGLQaXBqgGuAbOBuEG8QcRByAHaQfyCCwITwigCLsI3AjgCRgJHwlKCZ0JtwnLCgIKDwooCjMKOwpGClAKXQphCnoKhAqeCr0KzwsyC00LZAtxC3gLfAuAC6MMAQwiDFsMXwxqDKcMrgy1DLkMxAzJDTEN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AqwALgKsAC4CrAAuAqwALgKsAC4CrAAoA2cALgKsAC8CrAAvAqwALwKsAC8CrAAvAqwALwKsAC4CZQBNAmUATQJlAE0CZQBNAmUATQJlAE0CZQBNAiwAIwIsACMCLAAjAiwAIwIsACMCLAAjAiwAIwLBAFACLAAZAiwAGQIsABkCLAAZAiwAGQIsABkCmQBJApkASQKZAEkCmQBJApkASQKZAEkCmQBJApkASQKZAEkCmQBJApkASQKZAEkCmQBJApkASQKZAEkCmQBJApkASQKrAEkCqwBJAqsASQKrAEkCqwBJAqsASQMtAA4DLQAOAy0ADgMtAA4CDf/4Ag3/+AIN//gCDf/4Ag3/+AIN//gCDf/4Ag3/+AIdACQCHQAkAh0AJAIdACQCHQAkApQAGgJpAE0CowAzApoATQJaAE0CDwAqAg8AKgIPACoCDwAqAg8AKgIPACoCDwAqAg8AKgIPACoCDwAqAg8AKgIPACoCD//7Ag8AKgIPACoCDwAqAg8AKgIPACoCDwAqAg8AKgIPACoCDwAqAxIALwMSAC8DEgAvAjv//QI9AEEB0wAkAdMAJAHTACQB0wAkAdMAJAJmACcCPQAnAj0AJwI9ACcCBgAkAgYAJAIGACQCBgAkAgYAJAIGACQCBgAkAgYAJAIGACQCBgAkAgYAJAIGACQCBv/1AgYAJAIGACQCBgAkAgYAJAIGACQCFgAiAhYAIgIWACICFgAiAhYAIgIWACICFgAiAhYAIgI7/98COwBBAjsAQQI7AEECO//9ART/ywEUAEEBFP/TART/zAEU/9UBFP/2ART/0wEUADABFAA1ARQAKQEUACkBFP/hARQAQQEW/80CJABBAiQAQQIkAEECJABBAR4AQQE/AEEBxQBBAR4AQQEeAEEBHv/1AR4AJwEv/+sDWQBBA1kAQQNZAEECPABBAjwAQQI8AEECPABBAjwAQQI8AEECPABBAjwAQQNUAEcCKwAkAisAJAIrACQCKwAkAisAJAIrACQCKwAkAisAJAIrACQCKwAkAisAJAIr//0CKwAkAisAJAIrACQCKwAkAisAJAIrACQDNgAkAisAJAIrACQCKwAkAisAJAIrACQCKwAkAisAJAGOAEEBjgAZAY4AQAGOAEEBjgA5AY4AOQGO//YBuwAVAbsAFQG7ABUBuwAVAbsAFQG7ABUBuwAVAngAQQF/ABEBfwARAX8AEQF/ABEBfwARAX//8gF/ABECOAA8AjgAPAI4ADwCOAA8AjgAPAI4ADwCOAA8AjgAPAI4ADwCOAA8AjgAPAI4ADwCOAA8AjgAPAI4ADwCOAA8AjgAPAI4ADwCOAA8AjgAPAI4ADwCOAA8AjgAPAMIABgDCAAYAwgAGAMIABgCCQAMAgkADAIJAAwCCQAMAgkADAIJAAwCCQAMAgkADAHMACYBzAAmAcwAJgHMACYBzAAmAjAAKgI9AEECPABBARb/zQIqADUCFgA6Aj0AQQI9AEEB0wAXAdMAFwI9ACcCPQAnAgYAJAI9ACcCEABBAgYAJALDACQBzgAuAdwAIQI2AC4BQf/hAkcALAJHACwCBQAkAgsADAI5ABACPAA8AjsAQQI7AEECRgBDAUEADAGLADQBaP/NAXn/9gEeAEECgABBAbAAQQNZAD8DWQA/A1kAQQI8/98CPABBAjEAQQIrACQC1gAkAuIAJAGO//8Bjv//AY7//wGOAEEBfABBAhQAQQIUAA8BuwAVARb/zQFB/+EBfwARAmkADAIuAB0CKAA8AgsADAMIABgCCQAMAdL/+AHMACYB9wAmAcwABQHA//oB+gAqAdwACQHcABEBSgAGAiwAMAKRABgDpQAYA68AGAKwABgD7AAYAYwANAGMABkBjAA0AYwAHAGMAAABjAARAYwALwGMADQBjAAcAYwANAGMADQBjAA0AYwAIwKZAE0CPQAnAj0AJwI9ACcCPQAnAj0AJwI9ACcCPQAnAj0AJwI9ACcCPQAnAj0AJwI9ACcCPQAnAj0AEgI9ACcCPQAnAj0AJwI9ACcCPQAnAj0AJwI9ACcCPQAnAj0AJwJHACwCRwAsAkcALAJHACwCRwAsAkcALAJHACwCRwAsAkcALAEUAEEBFABBAT4AQQHFAEEBFAAYARQAOQEU//UBFP/1ASv/6wJ7ABgCPf/6Al0ATQIJAE0CgAAiAiQATQIdACQCogBNAqwALgEtAE0CZgBNAiz/+QL6AE0CmQBNAjsANQKsAC4ClwBNAlQATQIlACYCLAAZAg3/+AL4ADACNwALAvAANALHACwCbv/7Apv/9AMY//QBpP/0AS3/4gMJ//QCwP/0Ag3/+AMj/+wCUwAkAlgAQAIV//8CJAApAdcAJAHSACkCMgA2AiUAMAEtAEECIgA1AigADQJSAEECC///AdUAEQIpACQCewASAjkAPQI9ACQB7AAaAhQAKwLiACQCDgAIAvAALALqACgBvgAkAlAAQAIlADIC4gAkAlMAJAHXACQCMgA2AS0AQQEt/9UCKQAkAhQAKwIUACsC6gAoAS3/zQIUACsCj//5An//9AJu//ECbv/7Azb/9wM1//QDLP/3Ayv/9AKn/+gCp//oAj3/+gI9//oCx//3Asf/9AKb/+oCm//0A2r/9wNp//QDYP/3A1//9ANE//cDRP/0Axj/6gMY//QD5//3A+b/9APe//cD3P/0A4D/6AOA/+gB0P/3AdD/9AGk/+oBpP/0AnP/9wJy//QCaf/3Amj/9AIM/+gCDP/oAS3/9AEtAAADO//3Ayj/9AMW/+oDCf/0A9j/9wPk//QDzv/3A83/9AL3//QC2//0AsD/6gLA//QDjv/0A4T/9AMa/+gCDf/4Ag3/+ANV//cDQ//0Ayv/6gMj/+wD+v/3A/n/9APw//cD7//0A23/6ANt/+gDY//6A7X/+QOl//QEXP/3BFv/9ARS//cEUf/0A83/6APN/+gDyABNBGv/9wRr//QFDv/3BQ3/9AUE//cFA//0BKb/6ASm/+gD7QAsBHv/9wRp//QFIf/3BR//9AUX//cFFv/0BJT/6ASU/+gCUwAkAlMAJAJTACQCUwAkAlMAJAJTACQCUwAkAlMAJAJTACQCUwAkAlMAJAJTACQCUwAkAdcAJAHXACQB1wAkAdcAJAHXACQB1wAkAdcAJAHXACQCMgA2AjIANgIyADYCMgA2AjIANgIyADYCMgA2AjIANgIyADYCMgA2AjIANgEtADABLQApAS3/ywEtAEEBLf/IAS3/xwEt/8gBLf/RAS3/7gEt/+4BLf/hAS3/9gEt/8wBLf/NAS3/zQEt/98CKQAkAikAJAIpACQCKQAkAikAJAIpACQCKQAkAikAJAI5AD0COQA9AhQAKwIUACsCFAArAhQAKwIUACsCFAArAhQAKwIUACsCFAArAhQAKwIUACsCFAArAhQAKwIUACsCFAArAhQAKwLqACgC6gAoAuoAKALqACgC6gAoAuoAKALqACgC6gAoAuoAKALqACgC6gAoAlMAJAJTACQCUwAkAlMAJAJTACQCUwAkAlMAJAJTACQCUwAkAlMAJAJTACQCUwAkAjIANgIyADYCMgA2AjIANgIyADYCMgA2AjIANgIyADYCMgA2AjIANgIyADYCMgA2AuoAKALqACgC6gAoAuoAKALqACgC6gAoAuoAKALqACgC6gAoAuoAKALqACgC6gAoAiIANQIpACQB6gAkAbEAQQIYAAkBLAAuASwAPQEsAD0BLABSASwANQIrAOAAd//0AisAWgIrAN4BLQBBAisAvAIrALwCKwC1AisAnAIrAOACKwBUAisAUwIrAFQCKwBdAisAegIrAHoCKwBYAisAWQIrAFkCKwBrAKT/9wCh//QAd//qAHf/9AFG//cBRf/0AUb/9wE9//QA3//oAN//6AI9//oCWABNAl0ATQIJAE0CngANAiQATQNkAAIDZP/8A2kAAwI0ACMCpABNAqQATQJuAE0CbgBNAmcATQKR//YC+gBNAqIATQKsAC4ClwBNAlQATQJGAC4CLAAZAisAAQL8AC0CNwALAp0ATQJ2ADwDjgBNA54ATQLaABkDVQBNAlgATQJGABYDtgBNAmkADAIkAE0CJABNAr0AGQIJAE0CRgAuAiwAIwEtAE0BLf/iAS0ADAH9ABADmAADA6UATQLOABkCbgBNAmcATQJnAE0CpABNAisAAQKXAE0CcAAZAqwALgI+//kCCQBNAiIAGgOJAAIDowAEA6MACwI0ACMCmwBNAp4ATQKeAE0C7QAZAugAGQLoABkCsQBNAkYALgIN//gCDf/4Al0ACwKFADwCdgBNAS0ATQNkAAIDaf/8A2kAAwI9//oDTf/yAiQATQKjADMCpABNAqwALgKsAC4CKwABAisAAQIPACoCMQAqAhAAQQGwAEECSAALAgYAJAL5AAYC+QAMAvkABwHcABwCRwBBAkcAQQIiAEECIgBBAiIAQQI9AAYClABBAkYAQQIrACQCPgBBAj0AQQHTACQB7AAaAgkADAMLACcCAgAOAlMAQQImADADIwBBAz0AQQJvABoC4wBBAgQAQQHTABUDCABBAiAADwIGACQCBgAkAjz//QGwAEEB0wAkAbsAFQEUADUBFP/VASsACQEW/80DDAAGAxQAQQI7//0CIgBBAiIAQQIiAEECRwBBAgkADAJCAEECWAAaAisAJAIVAAwBsQBBAckAGAMjAAYDIwAMAyMABwHcABwCTABBAkwAQQJMAEECkAAaApAAGgKQABoCYABDAdMAJAILAAwCCwAMAiQADgI/ADACOwBBAvkABgL5AAwC+QAHAR4AQQIPACoDEgAvAgYAJAIGACQCRwBBAisAJAIrACQCCQAMAgkADAIiACcDxwAtApsAGQIQACUCEABGAhAAHgIQABYCEAATAhAAFwIQACkCEAAsAhAAKgIQACICEAAlAhAAJQJEADUBmgAnAg4AIQIQABYCMAAlAhAAFwIyADoCBAAsAiUANAIyADICRAA1AkQANQIQACUCEABGAhAAHgIQABYCEAATAhAAFwIQACkCEAAsAhAAKgIQABoCIQAtAZoAJwIGACACEAAWAiEAGwIQABcCIQAxAgQALAIjADICIQAiAhAAJQIQAEYCEAAeAhAAFgIQABMCEAAXAhAAKQIQACwCEAAqAhAAIgEsAD0BLAAuASwAPQEsAC4D0gBMAVQAUQFUAFEBzwApAc8AKgEsAEwCGQBMASwANwEsAEcCGQA3AhkARwEsAEcCGQBHASQAMQEkADYB4AAxAeAANgFMACsBTAArAeAAKwMgACsF3AArCJgAKwIQACsDIAArASwAPQFZACgB9AAMAfQADAAA/jcBWABIAVgAMAFYAFcBWAAuAVgAHwFYAC4BUwANAQwAVgFTABwBDABWAckAJgH+ACwB/gAsAhAAJQJ8ACcBxABWAmcAUQNpACkC7wBRAu8AKQHgABABWABXAVgALgFYAFcBWAAuAbUAVwG1AC4BWABXAVgALgFYAFcBWAAuAu4ALQLuAC0BzgAgAqoABAKqABICqgAYAs8AGAOHADEDPgAxAhAAIgEUADUB9//6AiIATQIIAC4CRABNAfMATQHcAE0CQAAuAm0ATQEtAE0B1gAQAisATQHXAE0CrQBNAl4ATQJoAC4CJwBNAmYALAIxAE0B+AAjAesAGQJfAEkB6//5As0ADgH9AAsB0//4AeEAJAH3//oB9//6Aff/+gH3//oB9//6Aff/+gH3//oB9//6Aff/+gH3//oB9//6Aff/+gH3//oB9//6Aff/+gH3//oB9//6Aff/+gH3//oB9//6Aff/+gH3//oC5f/yAuX/8gLl//ICOgAaAiIATQIIAC4CCAAuAggALgIIAC4CCAAuAkQATQJEAE0CRABNAlwAGgHzAE0B8wBNAfMATQHzAE0B8wBNAfMATQHzAE0B8wBNAfMATQHzAE0B8wBHAfMATQHzABAB8wBNAfMATQHzAE0B8wBNAfMATQJAAC4CQAAuAkAALgJAAC4CQAAuAkAALgJAAC4CQAAuAkAALgJtAE0CbQBNAm0ATQKUABkBLf/qAS0ASwEt/+0BLf/RAS3/4gEtAAABLQBCAS3/7QEtAD0BLQBGAS0AKgEt//QB1gAQAisATQIrAE0CKwBNAdcATQHXAE0B1wBNAdcATQHXAE0B1wAEAdcATQHX/+kCrQBNAq0ATQKtAE0CXgBNAl4ATQJeAE0CXgBNAl4ATQJeAE0CXgBNAl4ATQJoAC4CaAAuAmgALgJoAC4CaAAuAmgALgJoAC4CaAAuAmgALgJoAC4CaAAuAmgALgJoAC4CaAAuAmgALgJoAC4C/gAuAmgALgJoAC4CaAAuAmgALgJoAC4CaAAuAmgALgJoAC4CaAAuAjEATQIxAE0CMQBNAjEATQIxAE0CMQBNAjEATQH4ACMB+AAjAfgAIwH4ACMB+AAjAfgAIwH4ACMD5QAjAnwAUAHrABkB6wAZAesAGQHrABkB6wAZAesAGQJfAEkCXwBJAl8ASQJfAEkCXwBJAl8ASQJfAEkCXwBJAl8ASQJfAEkCXwBJAl8ASQJfAEkCXwBJAl8ASQJfAEkCXwBJAnEASQJxAEkCcQBJAnEASQJxAEkCcQBJAs0ADgLNAA4CzQAOAs0ADgHT//gB0//4AdP/+AHT//gB0//4AdP/+AHT//gB0//4AeEAJAHhACQB4QAkAeEAJAHhACQCXAAaAjIATQJcADMCWgBNAloATQJeAE0B9//6AiIATQHYAE0COgAiAfMATQHhACQCbQBNAmgALgEtAE0CKwBNAej/+AKtAE0CXgBNAgEANQJoAC4CZwBNAicATQHmACYB6wAZAdP/+ALEADAB/QALAqoANAJ5ACwBLf/iAdP/+AMl//oDmwBNA6QALAH3//oCHwBNAiIATQHYAE0CXAANAfMATQL+AAIB9AAjAl4ATQJeAE0CNwBNAk7/9gKtAE0CbQBNAmgALgJnAE0CJwBNAggALgHrABkB5wABAqUALQH9AAsCYgBNAkAAPAM3AE0DRQBNAn8AGQMLAE0CIABNAgQAFgNRAE0CMQAMAfMATQHzAE0CaQAZAdgATQIDAC4B+AAjAS0ATQEt/+IBLQAMAdYAEAMR//YDNQBNAn8AGQI3AE0CXgBNAecAAQJbAE0CNQAZAmgALgH5//kB2ABNAfEAGgMtAAIB9AAjAmQATQKiABkCfABNAggALgHT//gB0//4AiMACwJPADwCQABNAS0ATQL+AAIB9//6AuX/8gHzAE0CXAAzAl4ATQJoAC4CaAAuAecAAQHnAAECVAAZAiYANQGQACcB4gAaAe8AFgILACYB7gAYAgcANgHQACEB/wAvAgEAKwFUAFEBVABRAc8AMwHPADQBLABMAhkATAEsADcBLABHAdcANwHXAEcBTAArAaIAKwK4ACsBWABIAVgAMAFYAFcBWAAuAVgAHwFYAC4BeAAaAXgATAF4ABsBeAAbAXgAIwF4ABsBeAAkAXgAMgF4ACYBeAAjAQwAPwEMACMA0AApANAAHwF4ABoBeABMAXgAGwF4ABsBeAAjAXgAGwF4ACQBeAAyAXgAJgF4ACMBDAA/AQwAIwDQACkA0AAfAXgAGgF4AEwBeAAbAXgAGwF4ACMBeAAbAXgAJAF4ADIBeAAmAXgAIwEMAD8BDAAjANAAKQDQAB8BeAAaAXgATAF4ABsBeAAbAXgAIwF4ABsBeAAkAXgAMgF4ACYBeAAjAQwAPwEMACMA0AApANAAHwFnAB0BgQAaAXUAGAGD//sBlwAyAYYAHgGrADIBcQAyAWIAMgGvAB4BxAAyAMsAMgFYAAkBngAyAV0AMgICADIBvgAyAc0AHgGYADIBzQAbAaAAMgF2ABYBeAAQAcAAMAF6//oCJQAIAYIABwFk//oBbAAXAWcAHQGBACoBOQAYAYEAGgFaABgA6AAPAWkAFwGAACoAvAAjAL7/3wFzACoAwgAqAkEAKgGAACoBdQAYAYEAKgGBABoBEAAqASkADwEDAAwBfwAnAWMACAILABABXAAIAWEACAE4ABkBVwAcASwAKwEsACsAvf+NAWEACAFaABgBWgAYAVoAFQGBABoBiAAeALwAKgDQACkA+wArAV0AKwIzACsBbQAnAhAAFAIQACcCEAAwAhAADAIQAAwCEAAVAhAAPAIQAB4CEAA2AhAAMAIQAAMCEAADAhD/7QIQAEECEAADAhAAJgIQABUCEAA2AhAARQIQAA4CEAAgAhAAIAIQAAMAYP9VAGD/VQBg/1UDWQAaBOEAGgMpAC4DTgAuAzIAGANFAC4DUQAdA0UALgNRAB0DUQAbA3wAIwNFAC4DUQAbA0UALgNFAC4DUQAb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B2xmcmFjB3ZmcmFjB4BmcmFjB4pmcmFjB5RsaWdhB55saWdhB6RsaWdhB6psaWdhB7BsaWdhB7ZsaWdhB7xsaWdhB8JsaWdhB8hsaWdhB85saWdhB9Rsb2NsB9psb2NsB+Bsb2NsB+hsb2NsB+5sb2NsB/Rsb2NsB/psb2NsCABsb2NsCAZudW1yCAxudW1yCBJudW1yCBhudW1yCB5udW1yCCRudW1yCCpudW1yCDBudW1yCDZudW1yCDxudW1yCEJvbnVtCEhvbnVtCE5vbnVtCFRvbnVtCFpvbnVtCGBvbnVtCGZvbnVtCGxvbnVtCHJvbnVtCHhvbnVtCH5vcmRuCIRvcmRuCIpvcmRuCJBvcmRuCJZvcmRuCJxvcmRuCKJvcmRuCKhvcmRuCK5vcmRuCLRvcmRuCLpwbnVtCMBwbnVtCMZwbnVtCMxwbnVtCNJwbnVtCNhwbnVtCN5wbnVtCORwbnVtCOpwbnVtCPBwbnVtCPZzYWx0CPxzYWx0CRZzYWx0CTBzYWx0CUpzYWx0CWRzYWx0CX5zYWx0CZhzYWx0CbJzYWx0CcxzYWx0CeZzaW5mCgBzaW5mCgZzaW5mCgxzaW5mChJzaW5mChhzaW5mCh5zaW5mCiRzaW5mCipzaW5mCjBzaW5mCjZzbWNwCjxzbWNwCkpzbWNwClhzbWNwCmZzbWNwCnRzbWNwCoJzbWNwCpBzbWNwCp5zbWNwCqxzbWNwCrpzczAxCshzczAxCtJzczAxCtxzczAxCuZzczAxCvBzczAxCvpzczAxCwRzczAxCw5zczAxCxhzczAxCyJzczAyCyxzczAyCzRzczAyCzxzczAyC0RzczAyC0xzczAyC1RzczAyC1xzczAyC2RzczAyC2xzczAyC3RzczAzC3xzczAzC4RzczAzC4xzczAzC5RzczAzC5xzczAzC6RzczAzC6xzczAzC7RzczAzC7xzczAzC8RzczA0C8xzczA0C9ZzczA0C+BzczA0C+pzczA0C/RzczA0C/5zczA0DAhzczA0DBJzczA0DBxzczA0DCZzczA1DDBzczA1DDZzczA1DDxzczA1DEJzczA1DEhzczA1DE5zczA1DFRzczA1DFpzczA1DGBzczA1DGZzdWJzDGxzdWJzDHJzdWJzDHhzdWJzDH5zdWJzDIRzdWJzDIpzdWJzDJBzdWJzDJZzdWJzDJxzdWJzDKJzdXBzDKhzdXBzDLRzdXBzDMBzdXBzDMxzdXBzDNhzdXBzDORzdXBzDPBzdXBzDPxzdXBzDQhzdXBzDRR6ZXJvDSB6ZXJvDSZ6ZXJvDSx6ZXJvDTJ6ZXJvDTh6ZXJvDT56ZXJvDUR6ZXJvDUp6ZXJvDVB6ZXJvDVYAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAMAEQASABMAAAADABEAEgATAAAAAwARABIAEwAAAAMAEQASABMAAAADABEAEgATAAAAAwARABIAEwAAAAMAEQASABMAAAADABEAEgATAAAAAwARABIAEwAAAAMAEQASABMAAAABACMAAAABACMAAAABACMAAAABACMAAAABACMAAAABACMAAAABACMAAAABACMAAAABACMAAAABACMAAAAHAAgACQAKAAsADAANAA4AAAAHAAgACQAKAAsADAANAA4AAAAHAAgACQAKAAsADAANAA4AAAAHAAgACQAKAAsADAANAA4AAAAHAAgACQAKAAsADAANAA4AAAAHAAgACQAKAAsADAANAA4AAAAHAAgACQAKAAsADAANAA4AAAAHAAgACQAKAAsADAANAA4AAAAHAAgACQAKAAsADAANAA4AAAAHAAgACQAKAAsADAANAA4AAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAADABYAGAAZAAAAAwAWABgAGQAAAAMAFgAYABkAAAADABYAGAAZAAAAAwAWABgAGQAAAAMAFgAYABkAAAADABYAGAAZAAAAAwAWABgAGQAAAAMAFgAYABkAAAADABYAGAAZAAAAAQAvAAAAAQAvAAAAAQAvAAAAAQAvAAAAAQAvAAAAAQAvAAAAAQAvAAAAAQAvAAAAAQAvAAAAAQAvAAAAAQAFAAAAAgAFAAYAAAABAAQAAAABAAIAAAABAAIAAAABAAMAAAABAAMAAAABAAIAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABABoAAAABABoAAAABABoAAAABABoAAAABABoAAAABABoAAAABABoAAAABABoAAAABABoAAAABABoAAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAALAAMAJAAlACcAKAApACoAKwAsAC0ALgAAAAsAAwAkACUAJwAoACkAKgArACwALQAuAAAACwADACQAJQAnACgAKQAqACsALAAtAC4AAAALAAMAJAAlACcAKAApACoAKwAsAC0ALgAAAAsAAwAkACUAJwAoACkAKgArACwALQAuAAAACwADACQAJQAnACgAKQAqACsALAAtAC4AAAALAAMAJAAlACcAKAApACoAKwAsAC0ALgAAAAsAAwAkACUAJwAoACkAKgArACwALQAuAAAACwADACQAJQAnACgAKQAqACsALAAtAC4AAAALAAMAJAAlACcAKAApACoAKwAsAC0ALgAAAAEAHgAAAAEAHgAAAAEAHgAAAAEAHgAAAAEAHgAAAAEAHgAAAAEAHgAAAAEAHgAAAAEAHgAAAAEAHgAAAAUADwAQABIAFAAVAAAABQAPABAAEgAUABUAAAAFAA8AEAASABQAFQAAAAUADwAQABIAFAAVAAAABQAPABAAEgAUABUAAAAFAA8AEAASABQAFQAAAAUADwAQABIAFAAVAAAABQAPABAAEgAUABUAAAAFAA8AEAASABQAFQAAAAUADwAQABIAFAAVG4YAAwAkACUAJht8AAMAJAAlACYbcgADACQAJQAmG2gAAwAkACUAJhteAAMAJAAlACYbVAADACQAJQAmG0oAAwAkACUAJhtAAAMAJAAlACYbNgADACQAJQAmGywAAwAkACUAJhtOAAIAJwAoG0YAAgAnACgbPgACACcAKBs2AAIAJwAoGy4AAgAnACgbJgACACcAKBseAAIAJwAoGxYAAgAnACgbDgACACcAKBsGAAIAJwAoG0AAAgApACobOAACACkAKhswAAIAKQAqGygAAgApACobIAACACkAKhsYAAIAKQAqGxAAAgApACobCAACACkAKhsAAAIAKQAqGvgAAgApACobFAADACsALAAtGwoAAwArACwALRsAAAMAKwAsAC0a9gADACsALAAtGuwAAwArACwALRriAAMAKwAsAC0a2AADACsALAAtGs4AAwArACwALRrEAAMAKwAsAC0augADACsALAAtGaQAAQAhGZ4AAQAhGZgAAQAhGZIAAQAhGYwAAQAhGYYAAQAhGYAAAQAhGXoAAQAhGXQAAQAhGW4AAQAhAAAAAQAeAAAAAQAeAAAAAQAeAAAAAQAeAAAAAQAeAAAAAQAeAAAAAQAeAAAAAQAeAAAAAQAeAAAAAQAeAAAABAAaABsAHAAdAAAABAAaABsAHAAdAAAABAAaABsAHAAdAAAABAAaABsAHAAdAAAABAAaABsAHAAdAAAABAAaABsAHAAdAAAABAAaABsAHAAdAAAABAAaABsAHAAdAAAABAAaABsAHAAdAAAABAAaABsAHAAdAAAAAQAiAAAAAQAiAAAAAQAiAAAAAQAiAAAAAQAiAAAAAQAiAAAAAQAiAAAAAQAiAAAAAQAiAAAAAQAiADIAZgBuAHYAfgCGAI4AlgCeAKYAsgC8AMQAzADUAN4A8AD4AQABCAEQARgBIAEoATABOAFAAUwBVAFcAWQBbAF0AXwBhAGMAZQBnAGkAawBtAG8AcQBzAHUAdwB5AHsAfQB/AIEAAEAAAABGdYAAwAAAAEfLAABAAAAAQGWAAEAAAABAZQAAQAAAAEBkgABAAAAAQGYAAEAAAABAZYAAgAAAAEBlAAGAAAAAwHiAfQCBgAGAAAAAgIMAiAABAAAAAECKAAEAAAAAQMqAAQAAAABA/AABgAAAAIOcA6CAAYAAAAGDooOnA6uDsAO0g7kAAEAAAABDuQAAQAAAAEPKgABAAAAARAaAAEAAAABE2gAAQAAAAETZgABAAAAAROMAAEAAAABFUQAAQAAAAEV2gABAAAAARX0AAEAAAABFg4ABgAAAAMWDBYeFjAAAQAAAAEWOAABAAAAARZwAAEAAAABFm4AAQAAAAEWiAABAAAAARaOAAEAAAABFqgAAQAAAAEWzgABAAAAARb4AAEAAAABFvYAAQAAAAEW9AABAAAAARdaAAEAAAABF24AAQAAAAEXbAABAAAAARduAAEAAAABF54AAQAAAAEXoAABAAAAAReyAAEAAAABF7QAAQAAAAEXzAACAAAAARfQAAEAAAABGCYABAAAAAEYJAAEAAAAASKiAAEAAAABIqwAASMKBJwAASMKAR4AAiMKAAQHIQckB0MHRQABIwgAAQABIwoAWQABIwoACgAaACAAJgAsADIAOAA+AEQASgBQAAIABgclAAIABgcpAAIAEAclAAIAEAcpAAIAIAclAAIAIAcpAAIAKgclAAIAKgcpAAIACgczAAIBRwczAAMAAAABIswAASLYAAEAAAAHAAMAAAABIswAASLYAAEAAAAHAAMAAAABIswAASLGAAEAAAAHAAMAAAACIlgiwgABIrQAAQAAADAAAwAAAAEitAABIqAAAQAAADEAASKoAAUAEAA6AGQApgDYAAUADAASABgAHgAkB3YAAgcfB3QAAgciB3oAAgcnB4QAAgctB3gAAgc1AAUADAASABgAHgAkB34AAgcfB3wAAgciB4IAAgcnB4AAAgc1B4IAAgdlAAgAEgAYAB4AJAAqADAANgA8B2wAAgcfB24AAgchB2kAAgciB2sAAgckB28AAgcnB3AAAgcpB3IAAgc7B28AAgdlAAYADgAUABoAIAAmACwHiQACBx8HiQACByEHiAACByIHiAACByQHigACBycHigACB2UABgAOABQAGgAgACYALAeMAAIHHweMAAIHIQeLAAIHIgeLAAIHJAeNAAIHJweNAAIHZQABIawAEAAmADAAOgBEAE4AWABiAGwAdgCAAJIAnACmALAAugDEAAEABABLAAIHVgABAAQAagACB1YAAQAEAHMAAgcnAAEABACDAAIHVgABAAQAtQACB1YAAQAEANsAAgdWAAEABAENAAIHVgABAAQBGAACBzsAAQAEASwAAgdWAAIABgAMATUAAgcnATIAAgdUAAEABAFEAAIHVgABAAQBTgACBzsAAQAEAXoAAgdWAAEABAGKAAIHOwABAAQBoQACB1YAAQAEAjEAAgdUAAEhAgAWADIBRAGGAogC8gM0Az4DiASKBWoFrAZ8BwYHSAdaB+QItAj2CTgJegnUCi4AHgA+AEYATgBWAF4AZgBuAHYAfgCGAI4AlgCeAKYArgC2AL4AxADKANAA1gDcAOIA6ADuAPQA+gEAAQYBDALOAAMDbgdDAs0AAwNuB0UC0gADA24HiALQAAMDbgeJAtQAAwNuB4oC0QADA24HiwLPAAMDbgeMAtMAAwNuB40CzgADB2cHQwLNAAMHZwdFAtIAAwdnB4gC0AAD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AAIHiwMlAAIHjAMpAAIHjQAXADAAOABAAEgAUABYAGAAaABwAHgAgACIAI4AlACaAKAApgCsALIAuAC+AMQAygNXAAMHZwcfA1gAAwdnByIDVgADB2cHQwNVAAMHZwdFA18AAwdnB2UDXAADB2cHiANaAAMHZweJA14AAwdnB4oDWwADB2cHiwNZAAMHZweMA10AAwdnB40DMwACBx8DNAACByIDMgACB0MDMQACB0UDOwACB2UDVAACB2cDOAACB4gDNgACB4kDOgACB4oDNwACB4sDNQACB4wDOQACB40ACAASABgAHgAkACoAMAA2ADwCzgACB0MCzQACB0UC0gACB4gC0AACB4kC1AACB4oC0QACB4sCzwACB4wC0wACB40ACAASABgAHgAkACoAMAA2ADwC1wACB0MC1gACB0UC2wACB4gC2QACB4kC3QACB4oC2gACB4sC2AACB4wC3AACB40ACAASABgAHgAkACoAMAA2ADwC4AACB0MC3wACB0UC5AACB4gC4gACB4kC5gACB4oC4wACB4sC4QACB4wC5QACB40ACwAYAB4AJAAqADAANgA8AEIASABOAFQDPwACBx8DQAACByIDPgACB0MDPQACB0UDRwACB2UDRAACB4gDQgACB4kDRgACB4oDQwACB4sDQQACB4wDRQACB40ACwAYAB4AJAAqADAANgA8AEIASABOAFQDSwACBx8DTAACByIDSgACB0MDSQACB0UDUwACB2UDUAACB4gDTgACB4kDUgACB4oDTwACB4sDTQACB4wDUQACB40ACwAYAB4AJAAqADAANgA8AEIASABOAFQDVwACBx8DWAACByIDVgACB0MDVQACB0UDXwACB2UDXAACB4gDWgACB4kDXgACB4oDWwACB4sDWQACB4wDXQACB40AAwABFqoAARcgAAAAAQAAADEAAwABF0oAARcOAAAAAQAAADEAAwAAAAEXdAABF3QAAQAAADEAAwAAAAEXaAABF2gAAQAAADEAAwAAAAEXXAABF1wAAQAAADEAAwABF1AAARc+AAAAAQAAADEAAwABF0YAARcyAAAAAQAAADEAAwABFzoAARcmAAAAAQAAADEAAhcuACQFnwWgBaEFogWjBaQFpQWmBacFqAWpBaoFqwWsBa0FrgWvBbAFsQWyBbMFtAW1BbYFsAWfBaMFpQWnBbcFrQWyBbgFtgW3BbgAAhbwAHkFnwWfBZ8FnwWfBZ8FnwWfBZ8FnwWfBZ8FnwWjBaMFowWjBaMFowWjBaMFpQWlBaUFpQWlBaUFpQWlBaUFpQWlBacFpwWnBacFpwWnBacFpwWnBacFpwWnBacFtwW3BbcFrQWtBa0FrQWtBa0FrQWtBa8FrwWyBbIFsgWyBbIFsgWyBbIFsgWyBbIFsgWyBbgFuAW4BbYFtgW2BbYFtgW2BbYFtgW2BbYFtgW5BbkFuQW5BbkFuQW5BbkFuQW5BbkFuQW6BboFugW6BboFugW6BboFugW6BboFugW7BbsFuwW7BbsFuwW7BbsFuwW7BbsFuwACFgIBqATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wUABQEFAgUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPBRAFEQUSBRMFFAUVBRYFFwUYBRkFGgUbBRwFHQUeBR8FIAUhBSIFIwUkBSUFJgUnBSgFKQUqBSsFLAUtBS4FLwUwBTEFMgUzBTQFNQU2BTcFOAU5BToFOwU8BT0FPgU/BUAFQQVCBUMFRAVFBUYFRwVIBUkFSgVLBUwFTQVOBU8FWQVaBVAFUQVSBVMFVAVVBVYFVwVYBVsFXQVcBV4FXwVgBWEFYgVjBWQFZQVmBWcFaAVqBWsFbAVtBW4FbwVwBXEFcgVzBXQFdQV2BXcFeAV5BXoFewV8BX0FfgV/BYAFgQWCBYMFhAWFBYYFhwWIBYkFigWLBYwFjQWOBY8FkAWRBZIFkwWUBZUFlgWXBZgFmQWaBZsFnAWdBZ8FoAWhBaIFowWkBaUFpgWnBagFqQWqBasFrAWtBa4FrwWwBbEFsgWzBbQFtQW2BZ8FowWlBacFtwWtBbIFuAW2BZ8FnwWfBZ8FnwWfBZ8FnwWfBZ8FnwWfBaMFowWjBaMFowWjBaMFowWlBaUFpQWlBaUFpQWlBaUFpQWlBacFpwWnBacFpwWnBacFpwWnBacFpwWnBa0FrQWtBa0FrQWtBa0FrQWvBbIFsgWyBbIFsgWyBbIFsgW2BbYFtgW2BbYFtgW2BbYFtgW2BbkFuQW5BbkFuQW5BbkFuQW5BboFugW6BboFugW6BboFugW6BbsFuwW7BbsFuwW7BbsFuwW7BbwFvQW+Bb8FwAXBBcIFwwXEBcUFxgXHBcgFyQXKBcsFzAXNBc4FzwXQBdEF0gXTBdQF1QXWBdcF2AXZBdoF2wXcBd0F3gXfBeAF4QXiBeMF5QXmBecF6AXpBeoF6wXsBe0F7gXvBfAF8QXyBfMF9AX1BfYF9wX4BfkF+gX7BfwF/QX+Bf8GAAYBBgIGAwYEBgUGBgYHAAES/gHKAAITAgAUBggGEwYUBhUEfQYXBhgGGQYaBhsGHAYdBh4GHwYgBiEGIgYjBiQGJQACEvYA3QTBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wUABQEFAgUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPBRAFEQUSBRMFFAUVBRYFFwUYBRoFGwUcBR0FHgUfBSAFIQUiBSMFJQUmBScFKAUoBSkFKgUrBSwFLQUuBS8FMQUwBTIFMwU0BTUFNgU3BTgFOQU6BTsFPAU9BT4FPwVABUEFQgVDBUQFRQVGBUcFSAVJBUoFSwVMBU0FTgVPBVkFWgVQBVEFUgVTBVQFVQVWBVcFWAVbBV4FXQVcBV8FYAVhBWIFYwVkBWUFZgVnBWgFagVrBWwFbQVuBW8FcAVxBXIFcwV0BXUFdgV3BXgFeQV6BXsFfAV9BX4FfwWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBZAFkQWSBZMFlAWVBZYFlwWYBZkFmgWcBZ0FmwUZBSQAAhF8AEwFvAW9Bb4FvwXABcEFwgXDBcQFxQXGBccFyAXJBcoFywXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXhBeIF4wXlBeYF5wXoBekF6gXrBewF7QXuBe8F8AXxBfIF8wX0BfUF9gX3BfgF+QX6BfsF/AX+Bf0F/wYABgEGAgYDBgQGBQYGBgcFvQACERgADgZQBlEGUgZTBlQGVQZWBlcGWAZZBlwGXQZaBlsAAhD2AA4GQgZDBkQGRQZGBkcGSAZJBkoGSwZOBk8GTAZNAAEQ6gIhAAMAARDqAAEQ9AAAAAEAAAAxAAMAARDqAAEQ+gAAAAEAAAAxAAMAAhD8EPIAARDoAAAAAQAAADEAAhDwAB0GewZ8Bn0GfgZ/BoAGgQaCBoMGhAaFBoYGhwaIBokGigaLBowGjQaOBo8GkAaRBpIGkwaUBpoGmwacAAEQxgZfAAIQUAAOBiYGJwYoBikGKgYrBiwGLQYuBi8GMgYzBjAGMQACEKgABAagBqEGogajAAIQIAAOBjQGNQY2BjcGOAY5BjoGOwY8Bj0GQAZBBj4GPwACEIQAFARLBEwETQROBE8EUARRBFIEUwRUBGEEYgRjBGQEZQRmBGcEaARpBGoAAhBmABQEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwRkBGUEZgRnBGgEaQRqAAABAAABEEQACwABED4ACgACEEAAMgNnBD8EQARBBEIEQwREBEUERgRHBEgESwRMBE0ETgRPBFAEUQRSBFMEVAS+ByAHIwcmBygHKgcvBzIHNAc2BzgHOgc8Bz8HVQdXB2oHbQdxB3MHdQd3B3kHewd9B38HgQeDB4UAAAEBAAIQOgALAjUCNgI3AjgCOQI6AjsCPAI9Bp8CPgABEDgABwABEDj+AwAAAQIAAhA0ABkCFQIWAhcCGAIZAhoCGwIcAh0CHgIfAiACIQIiAiMCJAIlAiYCJwIoAikCKgIrBl8GnQABEBgAGAAAAQMAAhAUAAoCLAItAi4CLwIwAjECMgIzAjQGngABEBAAEwAAAQQAAhAMAA0CBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICEwACD/wAAwIHAhMCDQABD/oACwAcACIAKAAuADQAOgBAAEYATABSAFgAAgNrAgcAAgN+AgcAAgN/AgcAAgOAAgcAAgNrAgcAAgOCAgcAAgODAgcAAgOEAgcAAgOFAgcAAgOGAgcAAgOHAgcAAQ+sAAEAAQ+uAAEACAADAAgAEAAWAgYAAwAhAC8CAgACACECBQACAC8AAg+QAqwE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wUABQEFAgUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPBRAFEQUSBRMFFAUVBRYFFwUYBRkFGgUbBRwFHQUqBSsFLAUtBS4FLwUwBTEFMgUzBTQFNQU2BTcFOAU5BToFOwU8BT0FPgU/BUAFQQVCBUMFRAVFBUYFRwVIBUkFSgVLBUwFTQVOBU8FWQVaBVAFUQVSBVMFVAVVBVYFVwVYBVsFXQVcBV4FXwVgBWEFYgVjBWQFZQVmBWcFaAVqBWsFbAVtBW4FbwVwBXEFcgVzBXQFdQV2BXcFeAV5BXoFewV8BX0FfgV/BYAFgQWCBYMFhAWFBYYFhwWIBYkFigWLBYwFjQWOBY8FkAWRBZIFkwWUBZUFlgWXBZgFmQWaBZsFnQTxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4FAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAUaBRsFHAUdBR4FHwUgBSEFIgUjBSUFJgUnBSgFKAUpBSoFKwUsBS0FNgU3BTgFOQU6BTsFPAU9BT4FPwVABUEFQgVDBUQFRQVGBUcFSAVJBUoFSwVMBU0FTgVPBVkFWgVQBVEFUgVTBVQFVQVWBVcFWAVbBV4FXQVcBV8FYAVhBWIFYwVkBWUFZgVnBWgFagVrBWwFbQVuBW8FcAVxBXIFcwV0BXUFdgV3BXgFeQV6BXsFfAV9BX4FfwWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBZAFkQWSBZMFlAWVBZYFlwWYBZkFmgWcBZ0FGQWfBaAFoQWiBaMFpAWlBaYFqAWpBaoFqwWsBa0FrgWvBbAFsQWyBbMFtAW1BbYFnwWjBaUFpwW3Ba0FsgW4BbYCeQJ6AnsFnwWfBZ8FnwWfBZ8FnwWfBZ8FnwWfBZ8FowWjBaMFowWjBaMFowWjBaUFpQWlBaUFpQWlBaUFpQWlBaUFpwWnBacFpwWnBacFpwWnBacFpwWtBa0FrQWtBa0FrQWtBa0FrwWyBbIFsgWyBbIFsgWyBbIFtgW2BbYFtgW2BbYFtgW2BbYFtgW5BbkFuQW5BbkFuQW5BbkFuQW6BboFugW6BboFugW6BboFugW7BbsFuwW7BbsFuwW7BbsFuwNnBbwFvQW+Bb8FwAXBBcIFwwXEBcUFxgXHBcgFyQXKBcsFzAXNBc4FzwXQBdEF0gXTBdQF1QXWBdcF2AXZBdoF2wXcBd0F3gXfBeAF4QXiBeMF5QXmBecF6AXpBeoF6wXsBe0F7gXvBfAF8QXyBfMF9AX1BfYF9wX4BfkF+gX7BfwF/QX+Bf8GAAYBBgIGAwYEBgUGBgYHBbwFvgW/BcAFwQXCBcMFxAXFBcYFxwXIBckFygXLBcwFzQXOBc8F0AXRBdIF0wXUBdUF1gXXBdgF2QXaBdsF3AXdBd4F3wXgBeEF4gXjBeUF5gXnBegF6QXqBesF7AXtBe4F7wXwBfEF8gXzBfQF9QX2BfcF+AX5BfoF+wX8Bf4F/wYABgEGAgYDBgQGBQYGBgcFvQYIBEoEYgRjBGQEZQRmBGcEaARpBGoEVgRMBE0ETgRPBFAEUQRSBFMEVAagBhMGFAYVBH0GFwYYBhkGGgYbBhwGIgYjBiQGJQS+BSQGXwadBp4GnwcmBygHKgcwBzIHNAc2BzgHOgc8Bz8HQwdFB1UHVwdqB20HcQdzB3UHdwd5B3sHfQd/B4EHgweFAj4AAQwcAI8BJAEqATABNgE8AUIBSAFOAVQBXAFiAWgBbgF0AXoBgAGGAYwBkgGYAZ4BpAGqAbABtgG8AcIBygHQAdYB3AHiAegB8AH2Af4CBAIKAhICGAIeAiQCKgIwAjYCPAJCAkgCTgJUAloCYAJmAmwCcgJ4An4ChAKKApAClgKcAqICqAKuArQCugLAAsYCzALSAtgC3gLkAuoC8AL2AvwDAgMIAw4DFAMaAyADJgMsAzIDOAM+A0QDSgNQA1YDXANiA2gDbgN0A3oDgAOGA4wDkgOYA54DpAOqA7ADtgO8A8IDyAPcA+wD/AQMBBwELAQ8BEwEXARsBHQEegSABIYEjASSBJgEngSkBKoEsAS0BL4EyATOBNQE2gTmBPIE+AT+AAIEwQZhAAIEwgZiAAIEwwZjAAIExAZkAAIExQZlAAIExgZmAAIExwZnAAIEyAZoAAMEyQZpAgcAAgTKBmoAAgTLBmsAAgTMBmwAAgTNBm0AAgTOBm4AAgTPBm8AAgTQBnAAAgTRBnEAAgTSBnIAAgTTBnMAAgTUBnQAAgTVBnUAAgTWBnYAAgTXBncAAgTYBngAAgTZBnkAAgTaBnoAAwTBBnsCFQACBMIGfAACBMMGfQACBMQGfgACBMUGfwACBMYGgAADBMcGgQIsAAIEyAaCAAMEwATJBoMAAgTKBoQAAgTLBoUAAwTMBoYCNQACBM0GhwACBM4GiAACBM8GiQACBNAGigACBNEGiwACBNIGjAACBNMGjQACBNQGjgACBNUGjwACBNYGkAACBNcGkQACBNgGkgACBNkGkwACBNoGlAACBR4CCAACBR8CCQACBSACCgACBSECCwACBSICDAACBSMCDQACBSQCDgACBSUCDwACBSYCEAACBScCEQACBSgCEgACBSkCEwACAhQFnAACBNsCFgACBNwCFwACBN0CGAACBN4CGQACBN8CGgACBOACGwACBOECHAACBOICHQACBOMCHgACBOQCHwACBOUCIAACBOYCIQACBOcCIgACBOgCIwACBOkCJAACBOoCJQACBOsCJgACBOwCJwACBO0CKAACBO4CKQACBO8CKgACBPACKwACBP8GmgACBQAGmwACBRECLQACBRICLgACBRMCLwACBRQCMAACBRUCMQACBRYCMgACBRcCMwACBRgCNAACBS4CNgACBS8CNwACBTECOAACBTACOQACBTICOgACBTMCOwACBTQCPAACBTUCPQACBZsGnAACBacCBwACBacCEwACBacCDQACBDwFvQACBf0CNQAJBgkGUAZCBiYGNARLBFcESgRJAAcGCgZRBkMGJwY1BEwEWAAHBgsGUgZEBigGNgRNBFkABwYMBlMGRQYpBjcETgRaAAcGDQZUBkYGKgY4BE8EWwAHBg4GVQZHBisGOQRQBFwABwYPBlYGSAYsBjoEUQRdAAcGEAZXBkkGLQY7BFIEXgAHBhEGWAZKBi4GPARTBF8ABwYSBlkGSwYvBj0EVARgAAMEYQRWBFUAAgRhBD8AAgRiBEAAAgRjBEEAAgRkBEIAAgRlBEMAAgRmBEQAAgRnBEUAAgRoBEYAAgRpBEcAAgRqBEgAAQRLAAQGXAZOBjIGQAAEBl0GTwYzBkEAAgYdBqEAAgYeBqIAAgYfBqMABQYgBloGTAYwBj4ABQYhBlsGTQYxBj8AAgchByAAAgckByMAAgcuBy8AAQB4AAEACAABAAQBRQACB1YAAgeOADAHkAFFA7QEDgXkBkIGQwZEBkUGRgZHBkgGSQZKBksGTAZNBk4GTwcgByMHJgcoByoHLwcyBzQHNgc4BzoHPAc/B1UHVwdqB20HcQdzB3UHdwd5B3sHfQd/B4EHgweFB5EAAQABACQAAQABAPYAAQAEBx8HIgdC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ByIAjQctBy0AjgABADAAAQFEA7MEDQXjBlAGUQZSBlMGVAZVBlYGVwZYBlkGWgZbBlwGXQcfByIHJQcnBykHLQcxBzMHNQc3BzkHOwc+B1QHVgdpB2wHcAdyB3QHdgd4B3oHfAd+B4AHggeEB44AAAABAAAACgDkA1IABERGTFQAGmN5cmwALGdyZWsAUmxhdG4AZAAEAAAAAP//AAQAAAAKABQAHgAKAAFTUkIgABgAAP//AAQAAQALABUAHwAA//8ABAACAAwAFgAgAAQAAAAA//8ABAADAA0AFwAhACIABUFaRSAAMENSVCAAPk5TTSAATFNLUyAAWlRSSyAAaAAA//8ABAAEAA4AGAAiAAD//wAEAAUADwAZACMAAP//AAQABgAQABoAJAAA//8ABAAHABEAGwAlAAD//wAEAAgAEgAcACYAAP//AAQACQATAB0AJwAoa2VybgDya2VybgD4a2VybgD+a2VybgEEa2VybgEKa2VybgEQa2VybgEWa2VybgEca2VybgEia2VybgEobWFyawEubWFyawFEbWFyawFabWFyawFwbWFyawGGbWFyawGcbWFyawGybWFyawHIbWFyawHebWFyawH0bWttawIKbWttawIQbWttawIWbWttawIcbWttawIibWttawIobWttawIubWttawI0bWttawI6bWttawJAc2l6ZQJGc2l6ZQJKc2l6ZQJOc2l6ZQJSc2l6ZQJWc2l6ZQJac2l6ZQJec2l6ZQJic2l6ZQJmc2l6ZQJqAAAAAQAKAAAAAQAKAAAAAQAKAAAAAQAKAAAAAQAKAAAAAQAKAAAAAQAKAAAAAQAKAAAAAQAKAAAAAQAKAAAACQAAAAEAAgADAAQABQAGAAcACAAAAAkAAAABAAIAAwAEAAUABgAHAAgAAAAJAAAAAQACAAMABAAFAAYABwAIAAAACQAAAAEAAgADAAQABQAGAAcACAAAAAkAAAABAAIAAwAEAAUABgAHAAgAAAAJAAAAAQACAAMABAAFAAYABwAIAAAACQAAAAEAAgADAAQABQAGAAcACAAAAAkAAAABAAIAAwAEAAUABgAHAAgAAAAJAAAAAQACAAMABAAFAAYABwAIAAAACQAAAAEAAgADAAQABQAGAAcACAAAAAEACQAAAAEACQAAAAEACQAAAAEACQAAAAEACQAAAAEACQAAAAEACQAAAAEACQAAAAEACQAAAAEACQCoAAAApAAAAKAAAACcAAAAmAAAAJQAAACQAAAAjAAAAIgAAACEAAAACwAYACAAKAAwADgAQABIAFAAWABgAGgABAAAAAEAcgAEAAAAAQQmAAQAAAABBzAABAAAAAEHSgAEAAAAAQe2AAQAAAABCyYABAAAAAELQAAEAAAAAQuKAAQAAAABC+4ABgEAAAEMXAACAAAACQ08JFolXCV2JjA+FGcohta8VgBkAAAAAAAAAAAAAcikyQgAAQAMAM4AMAAAAcoAAAHKAAABygAAAcoAAAHKAAABygAAAcoAAAHKAAABygAAAcoAAAHKAAABygAAAcoAAAHKAAABygAAAcoAAAHKAAABygAAAcoAAAHKAAABygAAAcoAAAHKAAABygAAAcoAAAHKAAABygAAAcoAAAHKAAABygAAAcoAAAHKAAABygAAAcoAAAHKAAABygAAAcoAAAHKAAABygAAAcoAAAHKAAABygAAAcoAAAHKAAABygAAAcoAAAHKAAABygCDAQ4BFAEaASABJgEsATIBOAE+AUQBFAE4AUoBUAEaAVABVgFcAWIBaAFuAXQBegGAAYYBXAEOAYwBJgGSAZIBGgGYARoBGgGeAaQBFAFQAaoBpAGwAbYBvAHCAcgBzgHUAdoB4AEaAeYB7AHsAXQBbgHyAUoBSgFKAVABUAG2ARoB+AH+AgQB/gFcAWIBaAIKAhACFgF0AXoBhgIcAVwBXAIiAcICKAHCAi4CNAFWAdoCOgGSAkAB7AJGAkwCQAJSAQ4CWAEmAl4CZAJqARoBhgJwAYYCdgJ8AoICiAEaARoBdAF0ARoCjgKUApoCoAKmAqwCsgK4Ar4CxALKAtAC1gLcAuIC6AABAAACBgABARkCBgABAIwC2gABARYCBgABAZgC2gABAQ4CBgABAOMC5QABAQ8CBgABAIkC2gABAIoC0gABAI0C0gABAbcCBgABATQCBgABASQCBgABAPYCBgABAOwCBgABAKcCkgABAR0CBgABAQcCBgABAYUCBgABAQECBgABAQsCBgABAZsCBgABAIoCBgABAaoCBgABARQB9gABARoCBgABAIwCBgABAS4CBgABAR4CBgABAQQCBgABASsCBgABAQYB9gABAP8CBgABAPUCBgABAQUCBgABAOgCBgABAKACBgABASwCBgABAMYCBgABAaUCBgABAMcCBgABALUCBgABATgCBgABARcCBgABARsCBgABAOcCBgABAMwCDQABAQwB9AABAS0CBgABAIoC2gABATACBgABARQCBgABAQICBgABAXQCBgABAPsCBgABAPMCBgABAX0CBgABASkCBgABAScCBgABASMCBgABAXwCBgABANMCBgABAaICBgABARwCBgABAPgCNAABASICNAABAQ0CNAABAQACNAABATcCNAABAJcCNAABASsCNAABAVcCNAABATgCNAABATUCNAABASwCNAABAPUCNAABAOcCNAABARYC3gABARYCzAABASECBgABxlbGmAABAAwAigAfAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUABoANgA3gDkAOoA8ADwAPYA/AECAQgBDgEUARoBIAEmASwBJgEyATgBPgFEAT4BSgFQAVYA2AFcAWIA8AECAWgBbgDkASYBRAFEAXQBegGAAYYBjAGSAZIA2AGYAPABngGkAaoBJgGwAbYBvAHCAcgBzgHUASYBVgFWASYB2gHgAeYB7AHyAfgB/gIEAgoCEAIWAhwCIgIoAi4CNAI6AhYCQAJGAkwB2gJSAlgCXgJYAdoCZAHyAgoCOgIuAkYCTAJMAXoB5gJqAfICcAJ2AnwCggABAAACogABARsCogABASwCogABAVcCogABAT4CogABASECogABAW8CogABAVACogABAJcCogABAWcCogABAT8CogABAJoCogABAX0CogABAU4CogABAVYCogABATwCogABATYCogABASMCogABARYCogABAUwCogABAZcCogABARwCogABAQYCogABAR4CogABAhkCtgABAV4CogABAhECogABAVwCogABAXICogABAT8CBgABAI8CNAABAQwCBgABAMYCogABASgCogABAbECogABAVYCqgABAVMCqgABAR0CogABAUcCogABATQCogABAbICogABAQcCogABAd8CogABAToCogABAPgCNAABASICNAABATMCNwABASgCNAABAQ0CNAABAQ4CNAABAUACNAABATcCNAABAJcCNAABAT0CNAABASsCNAABAJsCNAABAVcCNAABATgCNAABATUCNAABASwCNAABATMCNAABAQ8CNAABAPUCNAABAS8CNAABAWcCNAABAQACNAABAOcCNAABAcICNAABARICJgABAlsCqgABATcCJgABATECJgABAPwCJgABxFrEYAABAAwAEgABAAAACgABAAoAAQAAAgYAAQHXAgYAAcRExEwAAQAMABYAAgAAACYAAAAmAA0AIgAoAC4ANAA6AEAARgBMAFIAUgBSAEYAWAABAAAAAAABAV4AAAABARgAAAABARYAAAABARIAAAABAOgAAAABAO0AAAABATMAAAABAP4AAAABAPQAAAABASEAAAABw/bEGAABAAwAagAXAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAkAEoAS4BNAE6AUABRgFMAVIBWAFeAWQBagFwAXYBfAGCAYgBjgGUAWQBmgGgAaYBrAGyAbgBvgGmAcQBygHQAdYBvgHcAeIBQAHoAe4B9AGUAfoCAAHcAgYCDAISAbgCGAIeAiQCKgF8AWQCMAI2AdwBlAI8Ab4CQgG+Ab4BxAGsAkgCTgJUAloCBgFqAmACZgG4AhIBvgJsAnIB7gHuAngCfgJ+An4B3AKEAooCkAG4AhgBuAIGAmwCSAKWApwB3AKiAloB3AKoAq4CtAK6AsACxgFGAswC0gFYAtgC3gGsAuQCogLqAYIC8ALGAioCEgL2AvwDAgIGAnICogIqAhICrgK0AsYCcgLSAVgC3gLkAqIC6gGCAioCBgK6AsYDCAABAAD/6gABARv/6gABATv/6gABAV7/6gABATn/6gABASf/6gABAJ//6gABAWr/6gABAVD/6gABAJf/6gABAQ7/6gABAUz/6gABASL/6gABAX//6gABAVj/6gABAVb/6gABAKH/6gABAUf/6gABARj/6gABARb/6gABARP/6gABAZn/6gABARL/6gABAQj/6gABARr/6gABAQf/6gABASX/6gABATj/6gABAQ3/6gABAKT/6gABAPn/GwABAIr/6gABAE//FQABAIn/6gABAbf/6gABASP/6gABAIL/JgABAa7/JgABAOj/6gABAOv/6gABAS//6gABAYX/6gABAQH/6gABAOP/DwABAPX/6gABAWX/6gABAZj/6gABASz/6gABAR3/6gABAS3/6gABARX/6gABAP3/6gABAP7/6gABASP/KgABAUH/6gABAMb/6gABAPz/6gABAbT/6gABAEn/6gABASD/6gABARf/6gABAR7/6gABAQz/6gABAb//JgABATT/6gABAXT/6gABAPj/6gABASv/6gABATP/6gABASj/6gABAQ//6gABAUL/6gABATf/6gABAOL/6gABAT3/6gABAVf/6gABATb/6gABATH/6gABAPb/6gABAWf/6gABAQb/6gABASH/6gABwbLAUgABAAwAEgABAAAACgABAAoAAQAAAPgAAQEhAPgAAcGWwZwAAQAMABIAAQAAABYABwAWABwAIgAoAC4ANAA6AAEAAAHwAAEB5AKCAAECIQKWAAEBcwHwAAEBrwH6AAEBuQH8AAEB5wIaAAEBlwHwAAHBXMFiAAEADAASAAEAAAAeAAsAHgAkACoAMAA2ACoAPABCAEgATgBUAAEAAAAAAAEBqQAAAAEBjQAAAAEAswAAAAEBSgAAAAEBxwAAAAEBYgAAAAEBAwAAAAEA/QAAAAEBmAAAAAEBIQAAAAHBEMEWAAEADAASAAEAAAAiAA0AIgAoAC4ANAA6AEAAQABGAEwALgBSAFgAXgABAAAAAAABAd8AAAABAYoAAAABAIMAAAABAVYAAAABAUwAAAABALIAAAABAZQAAAABAU4AAAABATUAAAABAS8AAAABATMAAAABvHLAvgABAAwAzgAwAAAAygAAAMoAAADKAAAAygAAAMoAAADKAAAAygAAAMoAAADKAAAAygAAAMoAAADKAAAAygAAAMoAAADKAAAAygAAAMoAAADKAAAAygAAAMoAAADKAAAAygAAAMoAAADKAAAAygAAAMoAAADKAAAAygAAAMoAAADKAAAAygAAAMoAAADKAAAAygAAAMoAAADKAAAAygAAAMoAAADKAAAAygAAAMoAAADKAAAAygAAAMoAAADKAAAAygAAAMoAAADKAAMADgAUABQAAQAAAgYAAQAAAuIAAQAAAtAAAb/gAAQAAACPASgBOgFkAW4BdAF6AYABhgGMAZICSATmBrQH9ghACEYJ0Ata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AAD/9v/4//sAAP/4/+4AAAAAAAD/5v/2/+7/7AAAAAAAAAAA//b/+P/7AAKoPAAEAACseK0MABkAegAAAAz/5v/v/7D/2/+9/9n/xAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/8D/sP+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/u/+T/2v/u/8j/t//q/+z/2v/I/7f/4v/Y/+7/5P/x/+z/5P/s/8j/3f/2/9z/3f/k/9z/7P/KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+YAAAAA/+oAAAAAAAAAAP/qAAAAAAAAAAD/9gAAAAD/9AAAAAAAAAAA/+oAAAAA//r/7v/2/+7/7P/6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/i/+b/7gAAAAAAAAAAAAD/oQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+s/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/1ABA/70ABP+9/8D/8QAY//QAQP+9//H/7P/U//b/8QAE/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8wAGAAAAAAAAP+6AAAAAAAAABgAAAAAAAD/zAAA/+YAAP+6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5P/YAAD/9gAA/+QAAAAAAAAAAAAAAAAAAP/2AAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAA/+4AAAAAAAAAAAAAAAAAAP/sAAAAAAAMAAD/7v/X/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/k/+b/9v/X/+b/2P/k/+L/5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//QAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7gAA//H/8QAAAAAAAAAAAAAAAAAAAAAAAP/mAAAAAAAAAAAAAAAAAAAAAAAA//QAAP/0AAAAAP/u/9j/5QAA/9wAAP+8AAD/vP+oAAAAAAAAAAD/vAAAAAD/3AAAAAAAAP+o//b/7AAA/9j/7AAAAAD/5f/s/+T/5P/s/9z/5P/m//T/5P/s/9z/3P/u//T/yP/a/+D/5P/k/+z/3P/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/+7/7v/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/qAAt/6AAAP+g/4IAAAAAAAAALf+g/8oAAP+oAAD/ygAA/4IAAAAAAAAAAAAAAAAAAAAAAAD/p//EAAD/uwAAAAAAAP+nAAD/uwAAAAAAAAAAAAAAAP+n/8QAAP+7AAD/3QAAAAD/3QAA/8v/3f+r/6v/y/+n/93/qwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT/7v/s/9T/7v/s/+z/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAD/7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAP/sAAAAAP/U/9gAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/o//T/7AAAAAAABQAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6AAA//QAAP/U/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s//oABf/U//oAAAAE/+z/+gAAAAAAAAAAAAAAAP/oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6P/0/+wACgAAABgAFgAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+gAAP/0AAD/wP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAABj/wAAAAAoAFv/sAAAAAAAAAAAAAAAAAAD/6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/97/9P/sAAoAAAAWABIAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/eAAD/9AAA/6z/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAW/6wAAAAKABL/7AAAAAAAAAAAAAAAAAAA/94AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAA//YAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAP/wAAAAAP/w//v/5P/w//b/9v/kAAD/8P/2AAAAB/+wAB8AB/+w/+7/+//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8sAAAAAAAAAAAAAAAAAAAAA//YAAAAA//AAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/+YAAAAA/+4AAAAA/+cAAP/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/w//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nAAAAAAAAAAAAAP/wAAD/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8P/wAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/+wAAAAA//gAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//MAAAAAAAD/+AAAAAAAAAAAAAAAAAAAAAAAAP/sAAD/+AAAAAAAAAAAAAAAAP/YAAAAAAAA//AAAP/kAAAAAAAAAAAAAAAAAAAAAAAA/60AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/kAAAAAP/4AAAAAAAA/+cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/4AAAAAP/uAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAA//gAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAD/5gAAAAAAAAAAAAAAAAAAAAAAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/7AAAAAD/+AAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+7/+AAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/4AAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAA/+QAApCOAAQAAJymoSQASwBGAAD/7v/k/+b/+P/k/+D/5v/UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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/8wAAAAAAAAAAP/Q/9n/8P/sAAAAAAAAAAAAAAAAAAAAAAAA/+0AAAAAAAAAAP/m/6gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//gAAAAAAAAAAAAA/+b/7gAAAAAAAP/m/7n/tP/c/8sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAD/7v/uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/3AAAAAD/7v/SAAD/6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/tAAAAAAAAAAAAAAAA//j/+AAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAP/uAAAAAAAAAAD/7gAAAC4ABAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/3AAAAAP/6//gAAAAAAAAAAP/2AAD/7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/7v/4AAAAAAAA/+oAEgAAAAAACgAMAAT/+wAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAP/0//UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAFAAYACAADAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+4AAP/uAAAAAAAA/+b/5gAAAAAAAP/nAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAEAAQABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAD/3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+AABAAEAAQAAAAEAAAAAP/kAAAAAAAAAAAAAAAAAAAAAAAAAAD/+gAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAA/+7/7P/u/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/w//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/4AAAAAP/uAAD/9v/4AAj/9v/uAAD/9gAA/+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAD/9gAAAAoAAAAAAAAAAP/kAAAAAAAAAAD/7P/sAAAAAAAAAAD/+AAAAAAACgAA/+4AAP/uAAD/4gAAAAAAAAAA//j/+P/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/q/+T/9AAAAAAAAAAAAAD/6AAAAAAAAP/wAAD/7AAAAAAAAAAA//YAAAAAAAD/9v/aAAAAAAAA/+sAAP/u/+oAAAAA/9wAAP/m//T/7v/s//b/9gAQ/+b/9v/u/+7/5P/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+gAAAAD/3f/sAAD/+AAAAAAAAP/4/+wAAAAA//oAAAAAAAAAAP/uAAAAAAAAAAAAAAAAAAAAAAAA/+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/u/+7/5v/kAAz/8QAAAAD/7P/s//MAAAAAAAD/8P/YAAAAAAAAAAAAAP/T/+7/8f/mAAAAAP/w//b/9gAAAAAAAAAAAAD/3QAA//AAAAAAAAAAAP/4AAD/8AAA/9wAAP/u/+7/+gA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+7/7P/s//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/4//YAAAAA/+cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5v/iAAD/9gAAAAAAAP+3AAAAAAAAAAAAAAAAAAAAAP/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//b/5P/2AAAAAAAAAAAAAP++AAAAAAAAAAD/tf/cAAAAAAAAAAAAAP/d/7wAAP/k/90AAP/F/7cAAAAAAAAAAAAAAAD/5wAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+f/8P/w/9//7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/4//gAAAAA//EAAP/uAAD/9v/4AAD/+AAA/+7/9gAAAAAAAP/4AAAAAAAA//j/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/4AAAAAAAAAAAAAP/4AAAAAAAA//gAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/0//k/+T/5P/kAAoAAAAAAAD/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/cAAAAAAAAAAAAAAAAAAAAAAAA/+4AAAAAAAAAAAAA//YAAP/0//YAAAAAAAD/9v/0AAAAAAAAAAAAAAAUAAD/9v/2/8sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/w/9j/3//2AAAAAAAAAAAAAAAAAAAAAAAAAAD/3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+P/2AAAAAP/fAAAAAAAA//D/+QAAAAAAAP/wAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8T/4gAAAAAAAAAA/+wAAAAA/48ABAAAAAAAAAAAAAAAAAAAAAD/6gAAAAD/8AAUAAAAAAAAAAAAAP/MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8wAAAAA/+wAAAAAAAAAAAAAAAD/xP/q//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/5f/l/+3/4P+sAAAAAAAAAAAAAAAAAAD/7P9aAAD/2AAAAAAAAAAA/+b/zQAAAAD/4AAAAAAAAAAAAAAAAP/q/5UAAP+y//D/1v+p//T/2P+9/83/7gAA/6n/4/+PAAD/wP/R/8QATAAkAAD/4AAAAAAAAAAA/9P/5v/oAAAAAAAAAAAAAAAAAAAAAP/4//j/9v/s//sAAAAAAAAAAAAAAAAAAAAAABAAEP/cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7gAAAAAAAP/4AAAAAAAAAAAAAAAA//gAAP/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8P/d/93/3f/wAAAAAAAAAAAAAP/LAAAAAAAEAAT/3P/cAAAAAAAAAAAAAAAAAAAAAAAA/+7/4AAAAAD/7AAA//D/+AAAAAD/1QAA/+QAAP/wAAAAAP/4AAD/5P/4/6sAAP/c/+cAAAAAAAAAAP/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/5//j/8AAA/+4AAP/4AAAAFAAUAAD/7AAA//j/8AAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAD/5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAA/+f/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/m/9z/3P/L//YAFP/uAAAAAAAA/+b/7v/6AAAAAP/Q/8gAAAAAAAAAAAAA/9z/7v/7/+X/5v/w/9D/3f/YAAAAAAAAAAAAAP/mAAD/8AAAAAAAAAAA//gAAP/w//j/zAAA//b/+P/2ACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5v/d/93/0//wAAAAAAAAAAAAAAAAAAAAAAAQABD/rP/uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAAAAAD/yAAA//gAAP/4AAAAAP/4AAD/8P/2AAAAAAAA/+4AAP/2AAAAAP/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//D/3//f//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/4//YAAAAA/98AAAAAAAD/8P/5AAAAAAAA//AAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/qAAD/9gAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAP/uAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAA/+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+AAA//gAAAAA//gAAAAA//oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/4AAAAAAAAAAAAAP/w/+AAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAP/4AAAAAAAAAAAAAAAAAAAAAAAA/7AAAAAAAAD/yP/oAAAAAAAAAAAAAP/TAAD/9AAAAAD/7v/s//z/6AAAAAAAAP/4AAD/3f/L/9IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9r/5AAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/3wAAAAAAAAAA/+YAAAAA/98AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+eAAD/9AAAAAAAAAAA/+7/9AAAAAAAAAAAAAAAAAAAAAAAAAAA/+oAAP+8/9z/7v/qAAD/7P/iAAD/9gAA/+r/9v/YAAAAAP/s/9YAKAAMAAAAAP/cAAAAAAAA//YAAAAAAAD/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4P/kAAAAAP/sAAAAAP/gAAD/mgAAAAAAAAAA//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/gAAAAAAAAAAAAAP/2AAAAAP/kAAAAAAAAAAD/7gAAAAAAAAAA/9YAAAAAAAAACP/yAAQAAAAA/3wAAAAAAAAAAAAAAAD/5AAAAAAAAAAA//YAAAAAAAAAAAAAAAD/3QAA/77/yP/N/+sAAP/k//QAAAAAAAD/6wAA/+gAAP/sAAD/zgAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAP/Y/+YAAAAq/84AAAAA/+b/7f/t/+YAAAAAAAAAAAAAAAD/xQAAAAAAAP/2/9wAAAAAAAAAAAAA//gAAAAAAAAAAP/I/+D//P/x//n/3P/2AAAAAAAA/+cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/uAAAAAP/qAAD/7P/tAAD/3P/sAAD/7AAA/+f/9P/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAP/4AAAAAAAAAAAAAP/2AAAAAP/sAAAAAAAEAAD/7gAAAAAAAAAA//oAAAAAAAAAAP/kAAT/+AAAAAAAAAAAAAAAAAAAAAD/5gAAAAAABAAA/+wAAAAAAAD/6AAAAAAAAAAA/+T/3f/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/gAAAAAAAA//QAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8P/w//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAD/3AAAAAAAAP/2//gAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6P/5//wAAP/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAAAAAAAP/c/+T/5P/M/9gAAAAAAAAAAAAA/+AAAAAAAAAAAP/s/8QAAAAAAAAAAAAA/8L/4gAA/9b/5AAA/+z//AAAAAD/5AAAAAAAAAAA/+z/9gAA//T/9gAA//gAAP/0//b/6AAAAAAAAAAAABQAAP/y//IAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/o/9D/nP+//+T/tAAAAAD/2gAAAAAAAAAA//j/9P/mAAAAAAAAAAAAAAAAAAAAAAAAAAD/5P+yAAAAAAAAAAD/7v/w//gAAP/w//D/3wAA//D/5/+w/9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7j/1AAAAAAAAP/n//gAAAAA//j/9v/u/+7/3P/c/+f/3P/w/+z/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/+z/5P/k/+f/5//kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5AAAAAAAAAAAAAD/9v/s/+wAAAAAAAD/+P/4AAD/+//4AAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT/+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+T/7P/iAAD/5//0AA7/9gAAAAAAAAAEAAz/9v/6/+wAAAAAAAD/9gAAAAAAAAAAAAD/9v/NAAAAAAAAAAD/+AAAAAAAAAAAAAAAAAAPAAAAAP/c//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/4AAAAAAAAAAD/9gAAAAD/7gAA//j/3QAAAAAAAAASAAAAAP/uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/7AAA//j/7P/0AAD/9P/mAAD/1v/e/+wAAP/0/+4AAP/wAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAA//D/4gAAAAAAAAAAAAAAAAAAAAAAAAAMAAAADAAA//j/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/4AAD/sP/s/+z/6AAAAAAAAP/0AAD/9AAAAAD/xAAAAAAAAP/IAAAAAAAAAAAAAAAA/+wAAAAA/+7/5wAAAAD/+AAA/+7/5//4/9MAAAAAAAAAAP/I/+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//z/6AAAAAAAAP/4//gAAAAAAAD/5AAAAAD/t//4//b/v//qAAD/2gAAAAAAAP/sAAAAAP/w//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+AAAP/lAAD/5f/kAAD/l//s/+wAAP+aAAAAAAAAAAD/+AAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//D/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//AAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8gAAAAAAAAAA/9YAAP/NAAD/zQAAABL/iAAIAAAAAP98AAAAAAAAAAAAAAAA/94AAAAA/93/vf/2AAAAAAAA/8T/vf/u/+QAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAD/7AAAAAD/cv/nAAD/zAAAAAAAAP/o/+wAAP/2AAAAAP/OAAD/6//OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/u//b/7P/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7gAAAAAAAAAA//b/9gAAAAAAAAAAAAAAAAAAAAQAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAD/+wAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAP/e/+4AAAAAAAAAAAAAAAD/5AAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5AAA/9gAAAAAAAAAAP/0/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//cAAAAAAAAAAAAAAAAAAP/uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAP/c/+z/7AAAAAAAAAAAAAAAAAAAAAD/3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/4/9z/9P/YAAAAAAAAAAn/yAAAAAAAAAAEAAAAAP/s/9gAAAAAAAD/uAAAAAAAAAAAAAD/2P/sAAAAAAAAAAAAAP/QAAAAAAAA//j/7gAA/9v/7v/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAD/9gAAAAD/9gAAAAAAAP/c/+4AAP/kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+cAAAAAAAAAAAAAAAA/9oAAAAA/90AAP/uAAD/7gAA/8QAAP/uAAD/9gAAAAD/9gAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAB8AAP/e//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/l/+gAAAAAAAAAAAAAAAD/3gAA/+QAAP/uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AABAAA/8QAAP+4/9P/uP/i//v/XgAA//wAAP+PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAP/qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAA/+wAAP/MAAD/zAAAAAD/8AAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+0AAP/xAAAAAAAA/6z/5f+VAAD/lQAAAAD/TAAAAAD/7P9aAAD/2AAAAAAAAAAA/6z/0wAA/6n/of/J/8D/1P/N/5j/of/i/+b/5QAA/+D/5f/5/9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAP+hAAD/2wAAAAD/0f/dABD/SAAA/9j/2AAA/9EAAP+P/8AAAP/WAAAAAP/E/8D/qQAAAAAAAAAA/9P/0//oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/t/+T/6P/iAAAAAP/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAD/7AAAAAAAAAAA//b/7gAAACEAAAAAAAD/+wAAAAAAAAAA//YAAAAA//b/8QAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/m//AAAAAAAAAAAP/2AAAAAAAAAAAAAAAA/+wAAP/u/+QAAP/4AAAAAAAAAAD/5gAA//AAAP/wAAAAAAAAABD/7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+AAA//r/3AAA/+YAAAAAAAAAAP/s/+4AAAAAAAD/7AAAAAD/+gAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAP/uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7gAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/5gAAAAAAAAAA//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+b/7P/kAAD/8P/2AAz/yAAAAAAAAP/x//oAFP/s/9wAAAAAAAD/2AAAAAAAAAAA//b/0v/uAAAAAAAAAAAABP/TAAAAAP/2AAD/5v/x/+b/5v/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//D/9gAAAAAAAAAAAAAAAAAAAAAAAP/uAAD/8QAA//D/9gAA/+wAAP/c/+4AAP/uAAAAAP/6//D/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/m//b/5P/c//D/9v/oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+AAAAAAAAAAA//UAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAD/+gAAAAD/+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/eAAAAAP/4//gAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAK//EAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+AAAAAD/9gAA/+4AAAAAAAAAAP/4//QAAAAAAAAAAAAAAAD/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA//YAAAAA/+z/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+QAAP/yAAAAAAAAAAr/7AAAAAAAAAAAAAD/9v/0/+gAAAAAAAAAAAAAAAAAAAAAAAD/8v/2AAAAAAAA/+4AAP/cAAAAAP/TAAD/9gAAAAD/9v/8//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/yAAAAAAAAAAD/5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAK//b/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAAWAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP/IAAAAAAAAAAAAAAAA//QAFAAA//QAAAAAAAAADgAA//QAAAAMAAAAFgAAAAAADgAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAGAAAAEcAAP/2AAQABAAAAAAAAAAUABIAAAAAAAAAAAAAAAAAAP/2//QAAAAAAAD/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAP/0AAD/9AAMACz/tAAoACEAAP/EACwAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAP/uAAD/7gAAACj/+AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAKAAPAA8AOAAA/+4AAP/oAAD/6AAAAAD/sAAPAAD/9P+wAAAAAAAAAAAAAAAA//T/9gAM/+j/6P/2/+wAAAAA/9j/6P/2AA4AAAAAAAD/9gAh//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAHAAAAAAAAP/kAAD/7gAUAAAAAAAAAD//nAAsAAAAAAAs/+wALP/o/9wAAAAAAAAALAAAAAD/7QAAAAAAAAAA/+z/7AAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAP/cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT/4AAEAAAAAP/kAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAA//oAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+YAAP/cAAD/5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/5gAAACEAAP/4AAD/+wAAAAAAAAAAAAD/8AAAAAD/7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/f//AAAP/4AAAAAP/4//YAAAAAAAAAAAAA/+wAAP/k/+4AAAAAAAAAAAAAAAD/5gAA//AAAP/nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/7AAA//YAAAAA//sAAAAA//QAAAAE//v/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/uAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAP/iAAAAAAAAAAD/6AAAAAAAAAAAAAAAAP/x/+gAAAAAAAD/5AAAAAAAAAAAAAD/5P/0ABQAGQAEAAAAD//qABQAIQAAAAD/5gAA//b/5v/0AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/uAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAA//AAAP/c/+YAAAAAAAAABAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+b/xf/Y/+D/3P/5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAA//UAAAAAAAAAAP/7AAD/5AAAAAAAAP/m//j/+AAAAAD/+AAA/+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//z/8f/cAAAAAP/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAD/9AAAAAAAAP/u//b/6v/q/+wAAP/c/+wAAP/sAAD/5//0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//j/3AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAD/5P/sAAAAAP/o//oAAAAAAAAAAAAAAAP/5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8gAA//r/8AAA//D/9P/u/+YAAAAEAAAAAP/c/+4AAAAAAAAAAAAA/+wADAAAAAAAAP/2AAAAAP/mAAD/7AAAAAAAAAAAAAD/3P/4//gAAAAAAAD/7gAAAAD/ygAAAAD/y//2AAAAAAAAAAAAAAAAAAAAAP/2AAAAAP/0AAAAAAAAAAAAAAAAAAAAAP/6/+QAAAAAAAD/9v/u/8r/7AAAAAAAAAAAAAAAAAAA/8AAAP+4/+z/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6AAAAAAAAP/sAAD/7AAAAAAAAP/uAAD/0gAAAAD/5gAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9H/sAAA/7cAAP/2//j/9gAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/93/tAAAAAD/xgAAAAAAAAAA/+7/7v/G/+gAAAAA/9z/9P/dAAAAAAAAAAAAAAAAAAAAAAAA/+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7QAAAAAAAAAAAAAAAAAAAAA/93/7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/y/+z/mP/I/9z/0QAAAAD/5AAAAAAAAAAAAAD/7P/k//QAAAAAAAAAAAAAAAAAAAAAAAD/9v/RAAAACAAA//b/9gAAAAAABv/2//b/+AAAAAD/+P/U//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9H/vQAAAAAAAP/4AAAAAAAA//j/5AAA//b/9P/T/+7/5P/uAAD/0wAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/uAAD/7AAAAAAAAP/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/93/twAAAAD/tQAA//gAAAAA//D/+P/E/+AAAAAA/9z/3P/dAAAAAAAAAAAAAAAAAAAAAAAA//gAAAAAAAAAAAAAAAAAAP/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7cAAAAAAAAAAAAAAAAAAAAA/9//9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/u/+j/tP/I//b/tAAAAAD/3QAAAAAAAAAAAAAAAP/nAAAAAAAAAAAAAAAAAAAAAAAAAAD/5v/CAAAAAAAAAAAAAAAAAAAAAAAAAAD/5wAAAAD/7v/UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8T/tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/mAAAAAAAAAAD/5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/4AAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/EAAAAAAAAAAAAAAAA/+wAAAAA//AAAAAAAAD/8AAA//AAAP/u//gAAAAAAAAAAAAA/+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/n/+cAAP/2AAAAAAAAAAD/2AAAAAAAAAAA//gAAAAA//gAAAAAAAAAAAAAAAD/+P/8//gAAP/nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+7/7v/a//j/2v/u//H/nP/2AAAAAP+0//EAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+4AAAAAAAAAAAAAAAAAAP/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//H/4gAAAAAAAAAAAAAAAAAAAAAAAP/uAAD/7gAA//oAAAAA//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+4AAP/sAAQADAAA/9z/5P+8AAD/vAAAAAD/e//s/+wAAP+gAAD/5gAAAAAAAAAA/+T/7P/u/8T/xP/S/9D/5v/k/7D/vP/u/9z/9AAA//j/9AAA/9oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAP/I/9z/7gAAAAD/3P/uABT/iP/s//j/5AAA/8v/7P/Y/9wAAP/u//YABP/Y/9z/2AAAAAAAAAAA/+L/4v/kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+QAAAAA/+QAAP/RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAP/2AAD/7gAAAAAAAAAAAAD/9gAAAAD/+AAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7gAAAAD/6gAAAAAAAP/4//gAAP/u/+oACP/2AAAAAP/2AAD/7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/z//b/5P/iAAD/7P/iAAr/9AAAAAAAAAAAAAr/9wAAAAAAAAAAAAD/7AAAAAAAAAAAAAD/9v/yAAAABgAAAAAAAAAAAAAABv/2//j/7gAKAAD/7v/y/+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+4AAAAAAAAAAP/2AAAAAAAAAAD/9gAAAAD/7QAAAAD/7AAAAAAAAAAAAAAAAP/uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/93/twAAAAD/0AAAAAAAAAAAAAD/7P/Y/+gAAAAA//T/9P/dAAAAAAAAAAAAAAAAAAAAAAAA/+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8gAAAAAAAAAAAAAAAAAAAAA//j/5AAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/vf/I/8v/1AAAAAD/5AAAAAAAAAAAAAD/7P/k/+wAAAAAAAAAAAAAAAAAAAAAAAD/9v/UAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAD/+P/E/+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+X/xAAAAAAAAP/4AAAAAAAA//j/9gAAAAD/7P/2//j/5gAAAAD/7AAAAAAAAP/uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhPMAAQAADgOOKIACwCQAAAAFAAUABT/8ABQ/+wABP/sAAQAUP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAoACgAAAAEAAAAAAAAAAAABAAA//YAGAAh/9z/9v/c/+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAoACj/9AAkAAD/7P/AAAAAJAAA//YAGAAo/5D/9v+Q/1gAFP/L/8j/t//I/8T/zP+0//b/6v/B/8n/nP/s/9z/1P/2ABT/yP+e//b/6v/B/8n/nP+6ABT/9v/q/8H/yf+c/+z/5f/E/8z/tP/d/97/2v/s/7r/g/9v/4D/9v/u/+L/4v/c/9L/0v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2//EADAAA/+z/3P/Y/9wAAP/sAAD/9v/x/7QAAP+0AAAAAAAA//b/7AAA//AAAP/sAAAAAP/q//H/yAAA/+7/1AAAAAAAAP/YAAAAAP/q//H/yAAAAAAAAAAA/+r/8f/IAAAAAP/wAAD/7AAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+b/5P/u/9z/7v/2/+T/3f/s/+T/7v/u/9z/8P/4/9z/3P/s/+b/7v/c/+z/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/3P/c//AAAAAA//YAAAAA/8r/9v/KAAAAAAAAAAD/7gAA//gAAP/mAAAAAP/u/+7/2P/4AAD/1AAAAAAAAP/sAAAAAP/u/+7/2P/uAAAAAAAA/+7/7v/YAAAAAP/4AAD/5gAAAAD/5v/4/+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+P/s/+4AAP/s/+wAAAAA/+wAAP/s/+4AAP/4/+gAAAAAAAD/7P/uAAAAAP/w//b/7v/2//D/8P/u//D/7v/u//D/7v/K/+7/7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAA/+L/ywAA/+YAAP/iAAAAAP/8/7cAAP+3AAAAAAAAAAD/2AAA//AAAP/sAAAAAP/o/+D/yP/wAAD/xAAAAAAAAAAAAAAAAP/o/+D/yP/uAAAAAAAA/+j/4P/IAAAAAP/wAAD/7AAAAAD/9v/w/+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/5v/k/+4AAP/u/9z/7v/s/+4AAP/k/+4AAAAAAAAAAP/0/+L/5P/u//QAAP/oAAAAAAAAAAAAAAAAAAAAAP/s/+j/7AAAAAAAAP/s/+D/7P/g/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6P/T/8T/7AAA/6P/+//s//gAAP+jAAD/2P/E//sAAP/7AAD/xAAAAAAAAP/sAAAAAAAE/+j/7AAAAAAAAAAAAAD/8P/o/8T/7AAA/+j/7AAAAAAAAAAA/8T/6P/sAAAAAAAAAAAAAAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+4AAAAA//AAAP/kAAAAAAAA//AAAAAA//D/xQAAAAAAAAAA/+4AAP/wAAAAAAAAAAD/3wAAAC8ALwAAACwAAAAAAAAAAAAAAAAAAP/4AAD/+AAA//j/3v/F//YAG//F//z/6P/E/+j/7P/s/+gALP/s/73/3v/F/+7/6P/2/4T/vf/t/9T/7v+EAAAAAAAAAAD/4P/T/8T/7AAA/5MAFAAAAAAAAP+TABD/0P/EAAAAEAAAAAAAAAAAAAAAAP/oAAAAAAAA/+EAAAAAAAAAAAAAAAAAEP/hAAD/6AAA/+EAAAAAAAAAAAAAAAD/4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAP/kAAAAAAAAAAAAAAAA//D/yAAAAAAAAAAAAAAAAP/wAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAD/0f+v/90ALP+vAAAAAAAAAAAAAAAAAAAAAAAA/73/0f+v//T/5f/d/2j/vf/tAAD/7gAA//z//P/qAAD/2AAA/7AAAAAA/48AAAAAAAAAAP+PAAD/yP+gAAAAAAAAAAAAAAAAAAAAAP/oAAAAAAAA//EAAAAAAAAAAAAAAAAAAP/xAAD/6AAA//EAAAAAAAAAAAAAAAD/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAA//YAAP/oAAAAAAAAAAAAAAAA//b/twAAAAAAAAAA//YAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+3/+wAAP+3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+3AAAAAP/s/3sAAP/hAAD/3AAAAAAAAAAAAAEAMAcfByEHIgckByUHJwcpBysHLQcuBzEHMwc1BzcHOQc7Bz4HQAdCB0MHRAdFB1MHZAdlB2kHawdsB24HbwdwB3IHdAd2B3gHegd8B34HgAeCB4QHhgeIB4kHigeLB4wHjQABAIMAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1AQ0BDgEsAUUBRwFyAXMBdAF6AaEBogG6AbsBvAG+Ab8BwgHFAcYBxwHIAckBygHLAcwBzQHOAc8B0QHTAdgB3gHfAeAB4QHiAeMB5AHlAecB6AHpAeoB7gHxAfIB8wH0AfUB9gH3AfgB+QH6AfsCFQIhAisCLAI1AmACZAJmAmgCbgJwAnMCdwNhA2MD4gPlA+cD6APsA+4D9AP5A/wD/QQBBAMEBAQFBAoEGgQqBCsEOQWfBaAFowWkBaUFpwWoBaoFqwWtBa8FsQWyBw4HGAceAAEAHwcgByMHJgcoByoHLAcvBzAHMgc0BzYHOAc6BzwHPwdBB2YHagdtB3EHcwd1B3cHeQd7B30HfweBB4MHhQeHAAEAaAACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsASwBMAGoAgwCtAK4ArwC1ANsA3AD1APYB0AHdAewCBwISA4gDiwONA44DkgOUA5oDnwOiA6MDpwOpA6oDqwPAA9AD0QPfBMEEwgTDBMQExQTGBMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATVBNYE1wTYBNkE2gTwBPEFDwUoBVIFWAVwBYEFggWcBbQFvwXBBcIFxAXGBc8AAQABB0gAAQABBx4AAQACB1QHVQABAA0ABAAUABUAHgAuAC8EwwTTBNQFcAWxBbQHHgACAAUHRgdHAAAHSgdSAAIHWAdeAAsHYAdjABIHZwdnABYAAgAtAAIAEQAAABMANQAQAK8ArwAzANwA3AA0APUA9QA1AQ4BDgA2AUcBRwA3AXQBdAA4AaIBogA5AboBugA6Ab4BwAA7AcQByAA+AcoBzABDAc8B0QBGAdMB1ABJAdgB2ABLAd0B3wBMAeUB5QBPAecB6gBQAewB7ABUAfMB+ABVAgcCBwBbAhUCFQBcAiECIQBdAiwCLABeAjUCNQBfAmACYABgAmQCZABhAmYCZgBiAncCdwBjBMEE0ABkBNIE2gB0BVIFUgB9BXAFcAB+BYIFggB/BZ8FoACABaMFpQCCBacFqACFBaoFqwCHBa0FrQCJBa8FrwCKBbEFsgCLBbQFtACNBcEFwQCOBx4HHgCPAAEAAQdfAAEAAQdJAAEABwAQABYAKgAwBM8E1QceAAEAAQdWAAEACwAcACAAJAAqADABRwG+AcUByAIVBx4AAQABB1cAAQANAAIABgAKABAAFgHYAgcEwQTFBMkEzwTVBVIAAQADByUHMQczAAEAjwAHABcAMwF0AXUBdgF3AXgBeQG+AcIBxQHRAdMB3QHnAeoB7AH1AfYB9wH4AfkCQQJEAkgCUAJRAlICVAJVAl0CXgJlAm0CdQJ4AroCuwK8Ar0CvgK/AsACwQMKAwsDDAMNAw4DEgNgA4sDjAOfA6IDpQOvA70DwQPCA8MDzgPTA+AD4QPmA/sD/AP/BA4EGwQcBB4EIgQoBCoEKwQsBC0ESwRMBE0ETgRPBFAEUQRSBFMEVARhBGIEYwRkBGUEZgRnBGgEaQRqBIYEiASXBJkEmwSdBKwErgSwBNEFcAW9Bb4FvwXABcMF0QXSBdUF3wXvBfAF8QXzBfYF+AX6BfsGCQYKBgsGDAYNBg4GDwYQBhEGEgYdBqYGpwaoBqoAAQALAdgB7ANrA34DfwOAA4EDggODA4QDhQABAAEEPAABAAUDlQOWA+8D8AX8AAEAGQHdAfUB9gH3AfgCbwPQA9QEKgQrBFIEaAR7BH0EkgSdBJ8F+AYQBhIGFgYXBhkGGgYdAAIAIAACAB4AAAAgACMAHQAmARgAIQEcAToBFAFHAUcBMwFJAU4BNAFQAVMBOgFVAbgBPgG6AbsBogG+AcIBpAHFAcYBqQHIAcgBqwHMAcwBrAHPAdEBrQHTAdYBsAHeAeEBtAHjAeQBuAHmAecBugHqAesBvAHtAe4BvgHxAfEBwAH0AfQBwQH5AfoBwgICAgIBxAIFAjQBxQI3AjcB9QTBBMgB9gTKBRwB/gUqBS4CUQUwBZkCVgWbBZ4CwAeVB5UCxAACAAYCPwJuAAACcANiADADZANkASMDbgNuASQFnwW7ASUG6QbqAUIAAgAYA4gDjgAAA5EDlAAHA5cDswALA7UDuQAoA7wDxAAtA8cDyAA2A8sDywA4A84DzwA5A9ID0wA7A9UD1gA9A9kD6AA/A+sD7gBPA/EECwBTBBAEEwBuBBYEHgByBCEEIgB7BCUEJQB9BCgEKQB+BCwELwCABDMEOwCEBbwF4wCNBeUF9wC1BfoF+wDIBf0GBwDKAAIACwR1BHoAAAR8BHwABgR+BI0ABwSQBJEAFwSXBJcAGQSZBJkAGgSbBJsAGwSnBKwAHASuBK4AIgSwBLAAIwcIBwsAJAACAAoB7AHsAAEDawNrAAkDfgN+AAUDfwN/AAIDgAOAAAoDgQOBAAgDggOCAAcDgwODAAQDhAOEAAYDhQOFAAMAAgAkAAQABAAEAAgACAAEABAAEAAEABIAEgAEAB4AIAADACEAIQABACIAIgACACoAKgADACwALAADAC8ALwAFADEAMQAGADIAMgAHADQANAAIAFEAVQAEAGwAdAAEAJwAtQAEARMBLQADAS4BNQACAWEBegADAYoBkAAFAagBqwAHAawBswAIAcIBxAADAcYBxgADAc4B0AADAdEB0QAIAeQB5gADAfEB8QAFAgICAgABAgUCBgABAgcCEwAKAhUCNAADAj4CPgABBNkE2QAJBYwFkwAJB5QHlQABAAIAAAACAAQCYgJiAAICbAJsAAMCcgJyAAQCdQJ1AAEAAgAEA5YDlgABA+8D7wADA/AD8AAEBfwF/AACAAIAJgPiA+IADgPjA+MAAQPmA+YAAwPnA+cABgPxA/EABAP0A/QABgP3A/cABgP4A/gABwP5A/kACAP6A/oABgP9A/0AAgQABAAABwQDBAMAEAQFBAUACgQGBAcABgQKBAoABgQLBAsADwQQBBAABAQXBBcACAQZBBkACQQaBBoABgQbBBsABQQlBCUABwQpBCkABgQqBCsABQQtBC0AAgQzBDQADgQ1BDUABgQ4BDkABgQ6BDsACAXOBc4ADAXTBdMACwXWBdYADAXeBd4ADAXoBegADAXtBe0ADQX1BfUADAX7BfsACwACABgB9QH1ABYB9gH2ABcB9wH3ABgB+AH4AAQCbwJvAAoD0APQAAID1APUAAEEKgQqABQEKwQrABUEUgRSABEEaARoABAEewR7AAYEfQR9AAsEkgSSAAkEnQSdABMEnwSfAAUF+AX4AAMGEAYQABIGEgYSAAgGFgYWAAwGFwYXAA8GGQYZAA0GGgYaAA4GHQYdAAcAAgE/AAIAAgBcAAQABABtAAgACABtAAsACwBzABAAEABtABIAEgBtABQAFABdABUAFQA7ABYAFgA8ABcAFwA+ABgAGABAABkAGQBfABoAGgBCABsAGwBgABwAHABqAB4AIABsACEAIQBrACIAIgA4ACQAJAByACUAJQA6ACoAKgBsACwALABsAC8ALwB1ADAAMAB2ADEAMQA9ADIAMgA/ADMAMwBeADQANABBADUANQB5ADYASwBcAE8ATwA3AFEAVQBtAFkAWQA3AGwAdABtAHgAeAA5AIUAhQBzAJwAtQBtAL0AwwBdAMUAygA7AMsA4QA8AOIA5QBAAOYA7QBCAO4A8gBgAPMA8wA3APUA9QB0APgBEABqARMBLQBsAS4BNQA4ATsBRgByAUgBSAA6AWEBegBsAYoBkAB1AZEBpwB2AagBqwA/AawBswBBAbQBuAB5AbwBvAA6Ab0BvQByAb4BvgB2AcIBxABsAcYBxgBsAc0BzQA6Ac4B0ABsAdEB0QBBAdMB0wB2Ad4B3wB2AeEB4QA6AeQB5gBsAe8B8AA6AfEB8QB1AfQB9AB2AfkB+gB5AgICAgBrAgUCBgBrAhUCNABsAj4CPgBrAj8CPwBTAkICQgBWAkQCRABbAkYCRgBpAkkCSQBTAkwCTABaAk0CTQBpAlACUABZAlECUQA1AlICUgA2AlQCVABVAlUCVQBYAlcCVwBxAl4CXgA2AmACYABhAmICYgBiAmoCagBXAmwCbABjAm4CbgBkAnECcQBkAnICcgBlAnQCdABkAnUCdQBUAncCeABkAnsCewBkAnwCfABhAoECgQBkAoQChABkAocCkABxApECkgBTAsACwQA2AswCzABTAs0C1ABxAucC8wBhAxcDHgBkAzEDOwBkAzwDRwBhA1QDXwBkA2EDYgBkA4gDiABMA4wDjAAUA44DjgBRA5EDkQAmA5cDlwAZA5oDmgBoA50DnQBoA54DngAzA58DnwAeA6ADoAAWA6EDoQBPA6MDowARA6YDpgAzA6kDqQAmA6sDqwAjA64DrgAzA7ADsABoA7EDsQBNA7UDtQBwA7YDtgAZA7gDuAAzA70DvQAeA78DvwBQA8ADwABoA8EDwQAxA8QDxABRA8cDxwAmA8sDywAzA88DzwBoA9ID0gBPA9MD0wARA9YD1gBRA9kD2QBMA94D3wBoA+AD4QAeA+ID4gBmA+MD4wAOA+QD5QAaA+YD5gASA+cD5wBnA+gD6AAnA+sD6wAkA+wD7gAaA/ED8QAXA/ID8wAaA/QD9ABnA/UD9QAaA/cD9wBnA/gD+AAcA/kD+QA0A/oD+gBnA/sD+wBOA/wD/AAaA/0D/QAPA/4D/wAaBAAEAAAcBAEEAgAaBAMEAwAVBAQEBAAaBAUEBQAhBAYEBwBnBAkECQAaBAoECgBnBAwEDQBvBA8EDwAyBBAEEAAXBBEEEQAaBBMEEwAaBBYEFgAaBBcEFwA0BBgEGAAaBBkEGQAfBBoEGgBnBBsEGwAwBBwEHAAaBB4EHgAnBCEEIQAkBCIEIgAaBCUEJQAcBCgEKAAaBCkEKQBnBCoEKwAwBCwELABOBC0ELQAPBC8ELwAnBDMENABmBDUENQBnBDcENwAaBDgEOQBnBDoEOwA0BHUEdgAJBHkEeQAJBHwEfAAKBH4EfwANBIAEgAALBIEEgQAMBIIEggALBIMEgwAMBIQEhQAJBIYEhgB4BIcEhwApBIgEiAB4BIkEiQApBIoEjQB3BJAEkQB3BKgEqAAKBKoEqwAKBMAEwAByBMEEwQABBMMEwwACBMcExwACBMoEygAuBM8EzwACBNEE0QACBNME0wADBNQE1AAEBNUE1QAFBNYE1gAGBNcE1wAHBNgE2ABLBNkE2QAIBNoE2gAvBNsE8AABBPYE+gACBREFGQACBSoFKgAuBUEFWgACBWIFaQADBWsFcAAEBXEFhwAFBYgFiwAHBYwFkwAIBZQFmAAvBZ8FnwBSBaQFpABKBaYFpgBuBakFqQBSBa0FrQBuBbEFsQBIBbIFsgBJBbQFtABHBbgFuABJBbkFuQBSBbwFvAAqBb0FvwAbBcAFwAATBcEFwQAbBcIFwgAoBcMFwwAlBcQFxgAbBccFxwAYBcgFyQAbBcoFygAsBcsFzAAbBc0FzQAsBc4FzgAdBc8FzwAtBdAF0AArBdEF0QBEBdIF0gAbBdMF0wAQBdQF1QAbBdYF1gAdBdcF2AAbBdkF2QAlBdoF2gAbBdsF2wAiBdwF3QAbBd4F3gAdBd8F3wAbBeAF4AAsBeEF4QBDBeIF4wAbBeUF5QBGBeYF5gAYBecF5wAbBegF6AAdBekF6gAbBesF6wAtBewF7AAbBe0F7QAgBe4F7gAsBe8F7wBFBfAF8AAbBfIF8gAoBfMF8wAlBfQF9AAbBfUF9QAdBfYF9gAbBfcF9wAsBfoF+gBEBfsF+wAQBfwF/QAbBf4F/gAoBf8F/wAqBgEGAQAbBgMGAwAbBgQGBQAsBgYGBwAtBukG6QBWBwgHCAALBwkHCgAMBwsHCwALB5QHlQBrAAIAvwACAAIAAgADAAMABAAEAAQABwAFAAUAKQAGAAYACgAHAAcADQAIAAgAEwAJAAkAFgAKAAoAGAALAAsAGgAMAAwAHQANAA0AIgAOAA8AFgAQABAAKQARABEAKwASABIAKQATABMALgAUABQAMQAVABUANQAWABYAOwAXABcAPgAYABgAQQAZABkARAAaABoARwAbABsASgAdAB0AJwAeAB4ABQAgACAACAAhACEACwAiACIAEQAjACMAIwAmACYAGwAnACcAIAAoACkAIwAqACsAJwAsACwAOQAtAC0ALAAuAC4ALwAvAC8AMwAwADAAOQAxADEAPAAyADIAPwAzADMAQgA0ADQARQA1ADUASAA2AEsAAgBMAE4ACgBPAFAABABRAFUABwBWAFkAKQBaAGsACgBsAHQAEwB1AHcAFgB4AHgAFAB5AIQAGACFAIUAGgCGAIgAHQCJAIkAIgCKAIoAHwCLAJAAIgCRAJsAFgCcAK0AKQCuAK4ACgCvALQAJgC1ALUAKQC2ALwALgC9AMMAMQDEAMQAEADFAMoANQDLANsAOwDcAOEAOADiAOUAQQDmAO0ARwDuAPIASgDzAPMAKQD0APQAMgD1APYAKQD3APcAGAEOARAACAERARIAJwETARcABQEYARgAHgEcAS0ACAEuATUAEQE2AToAIwFHAUcAOQFJAUwAGwFNAU0AIAFOAU4AHgFQ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Ak4CTgArAk8CTwAgAlACUAAoAlECUQAuAlICUgAyAlMCUwAcAlQCVAAIAlUCVQAeAlYCVgAaAlcCVwACAlgCWAAOAlkCWwArAlwCXAAjAl0CXgAyAl8CXwAaAmECYQADAmICYgAQAmMCYwAJAmQCZAAMAmUCZQA2AmYCZgAPAmcCZwAvAmgCaAATAmkCaQAUAmoCagAXAmsCawATAmwCbAAYAm0CbQAzAm4CbgAhAnACcAAhAnECcQAmAnICcgAsAnMCcwAwAnQCdAAhAnUCdQAGAnYCdgAwAncCdwAhAngCeAAlAnkCeQADAnoCegAvAnsCewAhAn0CfQAMAn4CfgAPAn8CgAATAoECgQAhAoICgwAwAoQChAAhAoUChQATAoYChgAwAocCkgACApMCmgAOApsCsAArArECuAAjArkCuQAgAroCwQAyAsICywAaAswC5gATAvQC+wAMAvwDBgAPAwcDFgATAxcDIAAhAyEDMAAwAzEDOwAhA0gDUwAPA1QDXwAhA2ADYAAUA2EDYQAhA2IDYgApA2QDZAAkA24DbgATBZ8FnwABBaAFoAAEBaEFoQARBaIFogAKBaMFowANBaQFpAA3BaUFpQAqBaYFpgAiBacFpwAqBagFqAAVBakFqQABBaoFqwAqBawFrAA0Ba0FrQAiBa4FrgAqBa8FrwAfBbAFsAAnBbEFsQAtBbIFsgAxBbMFswAbBbQFtAAHBbUFtQAdBbYFtgAZBbcFtwAqBbgFuAAxBbkFuwAqBukG6QALBuoG6gAaAAIAkgI/Aj8ANAJCAkIAJAJEAkQAJgJGAkYAGgJJAkkANAJMAkwAQgJNAk0AGgJQAlAAQQJRAlEACwJSAlIAGwJTAlMAFwJUAlQAFgJVAlUAGAJWAlYAPgJXAlcARAJeAl4AGwJgAmAAJwJhAmEAKAJiAmIAAgJjAmMAKQJkAmQAKgJlAmUAOAJmAmYAKwJnAmcABQJoAmgALAJpAmkAKwJqAmoAJQJrAmsAPQJsAmwAAwJtAm0ANwJuAm4ALgJvAm8AIQJwAnAAIgJxAnEALgJyAnIABAJzAnMALwJ0AnQALgJ1AnUAAQJ2AnYALwJ3AngALgJ5AnoABQJ7AnsALgJ8AnwAJwJ9An0AKgJ+An4AKwJ/An8ALAKAAoAANQKBAoEALgKCAoMALwKEAoQALgKFAoUANQKGAoYALwKHApAARAKRApIANALAAsEAGwLMAswANALNAtQARALeAt4APgLnAvMAJwL0AvsAKgL8AwYAKwMHAwgALAMJAwkANQMKAwoALAMLAxYANQMXAx4ALgMfAyAAIgMhAzAALwMxAzsALgM8A0cAJwNIA1MAKwNUA18ALgNgA2AAKwNhA2IALgNjA2MAPQNkA2QAOQNlA2UALQNuA24ALAR1BHYADwR3BHgADgR5BHkADwR6BHoAMQR8BHwAHAR+BH8AHgSABIAAHQSBBIEAEASCBIIAHQSDBIMAEASEBIUADwSGBIYAMgSHBIcAMwSIBIgAMgSJBIkAMwSKBI0AMASQBJEAMASSBJIAEQSYBJgAPASaBJoAPAScBJwAPASdBJ0ARQSfBJ8AIAShBKEAHwSnBKcAMQSoBKgAHASpBKkAMQSqBKsAHAStBK0APASvBK8APASxBLEAPAS4BLgANgWfBZ8ABgWgBaEAPwWiBaIAOgWjBaMAPwWkBaQADQWlBaUAPwWmBaYAGQWnBagAPwWpBakABgWqBasAPwWsBawAQAWtBa0AGQWuBa8APwWwBbAAQwWxBbEACgWyBbIADAWzBbMACAW0BbQABwW1BbUACQW2BbYAOwW3BbcAPwW4BbgADAW5BbkABgW6BboAPwW7BbsAOwYVBhUAEgYXBhcAFQYZBhkAEwYaBhoAFAYdBh0AIwYhBiEARgbpBukAJAbqBuoAPgcIBwgAHQcJBwoAEAcLBwsAHQACAK0DiAOIAAIDiQOKADkDiwOLABMDjAOMADADjQONABkDjgOOACEDkQORADkDkgOTACoDlAOUACEDlwOZACoDmgOaACQDmwObACoDnAOcAA0DnQOdABADngOeAC0DnwOfADYDoAOgAAsDoQOhABYDogOiADADowOkACoDpQOlADADpgOmACcDpwOnACoDqAOoACcDqQOqACQDqwOrACoDrAOtABkDrgOuAAYDrwOvABMDsAOwABADsQOxAAkDsgOzACoDtQO1AB4DtgO3ACcDuAO4ADMDuQO5ACEDvAO8ACoDvQO9ADYDvgO+ACoDvwO/ADsDwAPAACQDwQPBABwDwgPDABMDxAPEACEDxwPHADkDyAPIACEDywPLACEDzgPOADADzwPPABAD0gPSABYD0wPTADAD1QPVACoD1gPWACED2QPZAAID2gPbABkD3APcACQD3QPdACoD3gPfACQD4APhADYD4wPjAAMD5APkADcD5QPlABED5gPmAC4D5wPnABcD6APoAB8D6wPrADcD7APtACgD7gPuAB8D8QPzACgD9AP0ACID9QP1ACgD9gP2ACID9wP3AA4D+AP4ACsD+QP5ADQD+gP6ACID+wP7ABQD/AP8AC4D/QP+ACgD/wP/AC4EAAQAACUEAQQBACgEAgQCACUEAwQEACIEBQQFACgEBgQHABcECAQIAAQECQQJABEECgQKAA4ECwQLAAcEEAQRACUEEgQSADEEEwQTAB8EFgQWACgEFwQXADQEGAQYACgEGQQZACUEGgQaACIEGwQbABoEHAQdABEEHgQeAB8EIQQhADcEIgQiAB8EJQQlAB8EKAQoAC4EKQQpAA4ELAQsABQELQQtAC4ELgQuADEELwQvAB8ENAQ1ABcENgQ2ACIENwQ3ACgEOAQ5ACIEOgQ7ADQFvAW8AAEFvQW+ADgFvwW/ABIFwAXAAC8FwQXBABgFwgXCACAFwwXDADgFxAXFACkFxgXGACAFxwXJACkFygXKACMFywXLACkFzAXMAAwFzQXNAA8FzgXOACwFzwXPADUF0AXQAAoF0QXRABUF0gXSAC8F0wXUACkF1QXVAC8F1gXWACYF1wXXACkF2AXYACYF2QXaACMF2wXbACkF3AXdABgF3gXeAAUF3wXfABIF4AXgAA8F4QXhAAgF4gXjACkF5QXlAB0F5gXnACYF6AXoADIF6QXpACAF6gXqACkF6wXrADUF7AXsACkF7QXtADoF7gXuACMF7wXvABsF8AXxABIF8gXyACAF8wXzADgF9AX1ACAF9gX2AC8F9wX3AA8F+gX6ABUF+wX7AC8F/QX9ACkF/gX+ACAF/wX/AAEGAAYBABgGAgYCACMGAwYDACkGBAYFACMGBgYHADUAAgEeAAIAAgBpAAQABAAvAAgACAAvAAsACwBrABAAEAAvABIAEgAvABUAFQAyABYAFgA0ABcAFwA3ABkAGQA6ABoAGgA8ABsAGwBsACEAIQAtACQAJABwAC8ALwAxADEAMQA1ADQANAA7ADYASwBpAFEAVQAvAGwAdAAvAIUAhQBrAJwAtQAvAMUAygAyAMsA4QA0AOYA7QA8AO4A8gBsATsBRgBwAYoBkAAxAawBswA7Ab0BvQBwAdEB0QA7AfEB8QAxAgICAgAtAgUCBgAtAgcCEwBqAj4CPgAtA2UDZQBiA4gDiABYA4kDiwBvA4wDjAAeA40DjQBvA44DjgBPA5EDkQBOA5IDlABvA5cDlwAkA5gDmQBvA5oDmgApA5sDnABvA50DnQApA54DngADA58DnwBMA6ADoAAiA6EDoQAmA6IDogBvA6MDowAcA6QDpQBvA6YDpgADA6cDqABvA6kDqQBOA6oDqgBvA6sDqwBNA6wDrQBvA64DrgADA68DrwBvA7ADsAApA7EDsQBVA7IDswBvA7UDtQBLA7YDtgAkA7cDtwBvA7gDuAADA7kDuQBvA7wDvABvA70DvQBMA74DvgBvA78DvwArA8ADwAApA8EDwQABA8IDwgBvA8QDxABPA8cDxwBOA8gDyABvA8sDywADA84DzgBvA88DzwApA9AD0ABRA9ID0gAmA9MD0wAcA9QD1QBvA9YD1gBPA9kD2QBYA9oD2gBuA9sD2wBvA90D3QBvA94D3wApA+AD4QBMA+ID4gAaA+MD4wBJA+QD5QBgA+YD5gAdA+cD5wBaA+gD6ABEA+kD6QBFA+sD6wAsA+wD7gBgA/ED8QAjA/ID8wBgA/QD9ABaA/UD9QBgA/YD9gBfA/cD9wBaA/gD+AACA/kD+QAqA/oD+gBaA/sD+wAlA/wD/ABgA/0D/QAbA/4D/wBgBAAEAAACBAEEAgBgBAMEAwAhBAQEBABgBAUEBQBDBAYEBwBaBAgECABKBAkECQBgBAoECgBaBAsECwAfBAwEDQBnBA8EDwBGBBAEEAAjBBEEEQBgBBIEEgBKBBMEEwBgBBYEFgBgBBcEFwAqBBgEGABgBBkEGQAEBBoEGgBaBBsEGwAnBBwEHABgBB0EHQBeBB4EHgBEBCEEIQAsBCIEIgBgBCUEJQACBCgEKABgBCkEKQBaBCoEKwAnBCwELAAlBC0ELQAbBC8ELwBEBDMENAAaBDUENQBaBDYENgBcBDcENwBgBDgEOQBaBDoEOwAqBHUEdgATBHcEeAASBHkEeQATBHoEegBjBHwEfAAFBH4EfwA/BIAEgAA+BIEEgQAGBIIEggA+BIMEgwAGBIQEhQATBIYEhgBTBIcEhwBQBIgEiABTBIkEiQBQBIoEjQBSBJAEkQBSBJIEkgAVBJgEmABXBJoEmgBXBJwEnABXBJ0EnQBbBJ8EnwBABKEEoQAHBKcEpwBjBKgEqAAFBKkEqQBjBKoEqwAFBK0ErQBXBK8ErwBXBLEEsQBXBLgEuABBBLkEuQBCBMAEwABwBMEEwQBkBMMEwwAuBMcExwAuBMkEyQBxBMoEygBlBM8EzwAuBNEE0QAuBNME0wAwBNQE1ABmBNUE1QAzBNYE1gA2BNcE1wA4BNgE2AA5BNoE2gA9BNsE8ABkBPYE+gAuBREFGQAuBR4FKQBxBSoFKgBlBUEFWgAuBWIFaQAwBWsFcABmBXEFhwAzBYgFiwA4BZQFmAA9BbwFvAAIBb0FvwBhBcAFwAAKBcEFwQBhBcIFwgBWBcMFwwBIBcQFxgBhBccFxwAMBcgFyQBhBcoFygAoBcsFzABhBc0FzQAoBc4FzgAQBc8FzwBHBdAF0AALBdEF0QANBdIF0gBhBdMF0wAJBdQF1QBhBdYF1gAQBdcF2ABhBdkF2QBIBdoF2gBhBdsF2wBZBdwF3QBhBd4F3gAQBd8F3wBhBeAF4AAoBeEF4QAgBeIF4wBhBeUF5QAPBeYF5gAMBecF5wBhBegF6AAQBekF6gBhBesF6wBHBewF7ABhBe0F7QARBe4F7gAoBe8F7wAOBfAF8ABhBfIF8gBWBfMF8wBIBfQF9ABhBfUF9QAQBfYF9gBhBfcF9wAoBfgF+AAUBfoF+gANBfsF+wAJBfwF/QBhBf4F/gBWBf8F/wAIBgAGAABtBgEGAQBhBgMGAwBhBgQGBQAoBgYGBwBHBhUGFQAWBhcGFwAZBhkGGQAXBhoGGgAYBh0GHQBUBh8GHwBdBiEGIQBoBwgHCAA+BwkHCgAGBwsHCwA+B5QHlQAtAAIAGAR1BHYAAgR3BHgAAQR5BHkAAgR6BHoABAR8BHwABwR+BH8ACgSABIAACASBBIEACQSCBIIACASDBIMACQSEBIUAAgSGBIYABQSHBIcABgSIBIgABQSJBIkABgSKBI0AAwSQBJEAAwSnBKcABASoBKkABwSqBKoABASrBKsABwcIBwgACAcJBwoACQcLBwsACAACAUUAAgACAIMACwALAAsAFAAUAFoAFQAVADIAFgAWADQAFwAXADcAGAAYADoAGQAZAFwAGgAaABEAGwAbAF0AHAAcAIIAHgAgAC4AIQAhAIQAIgAiAIUAJQAlAAoAKAApAI4AKgAqAC4AKwArAI4ALAAsAC4ALQAtAI4ALgAuAIYALwAvADAAMQAxADUAMgAyADgAMwAzAFsANAA0ADsANQA1AI8ANgBLAIMATABOAIEAhQCFAAsAvQDDAFoAxQDKADIAywDhADQA4gDlADoA5gDtABEA7gDyAF0A+AEQAIIBEQERABABEwEtAC4BLgE1AIUBOgE6ABABRwFHAI4BSAFIAAoBTAFMAI4BVQFfAI4BYQF6AC4BewGBAI4BggGIAIYBigGQADABqAGrADgBrAGzADsBtAG4AI8BuwG7AI4BvAG8AAoBvwG/AI4BwgHEAC4BxgHGAC4BxwHHAI4BzQHNAAoBzgHQAC4B0QHRADsB1gHWAI4B3QHdAI4B4AHgAI4B4QHhAAoB4gHjAI4B5AHmAC4B6gHqAI4B7AHsAI4B7gHuAIYB7wHwAAoB8QHxADAB9QH1AF4B+QH6AI8CAgICAIQCBQIGAIQCFQI0AC4CPgI+AIQCPwI/AHcCQgJCAFUCRAJEAFkCSQJJAHcCTAJMAFgCUAJQAFcCUQJRACsCUgJSAA8CUwJTACUCVAJUAFQCVQJVACYCVgJWAFYCVwJXAHYCWAJaAGYCXAJcAGQCXQJdAH8CXgJeAA8CXwJfAGMCYAJgACMCYQJhAHgCYgJiAGACYwJjAHkCZAJkAHsCZQJlAIACagJqAGECbAJsAGICbgJuACcCbwJvAG0CcAJwAH4CcQJxACcCcgJyACkCdAJ0ACcCdQJ1AFMCdwJ4ACcCewJ7ACcCfAJ8ACMCfQJ9AHsCgQKBACcChAKEACcChwKQAHYCkQKSAHcCkwKWAGYCmwKeAGYCpQKoAGYCsQK0AGQCuQK5AGYCugK8AH8CwALBAA8CwgLFAGMCzALMAHcCzQLUAHYC1gLXAGYC3gLeAFYC3wLgAGMC5wLzACMC9AL7AHsDFwMeACcDHwMgAH4DMQM7ACcDPANHACMDVANfACcDYQNiACcDiAOIAHQDjAOMAAMDjgOOAAkDkQORAFADlwOXAA4DngOeAB8DnwOfAAcDoAOgABcDoQOhAEsDowOjABYDpgOmAB8DqQOpAFADqwOrAE4DrgOuAB8DsQOxAEgDtQO1AAYDtgO2AA4DuAO4AB8DvQO9AAcDvwO/ACIDwQPBABoDxAPEAAkDxwPHAFADywPLAB8D0APQAGsD0gPSAEsD0wPTABYD1gPWAAkD2QPZAHQD2gPaAIgD3APcAIkD4APhAAcD4gPiAHMD5APlAI0D5gPmAAED5wPnABsD6APoAFED6wPrAE8D7APuAI0D8QPxAA0D8gPzAI0D9AP0ABsD9QP1AI0D9wP3ABsD+AP4AB0D+QP5ACAD+gP6ABsD+wP7AEoD/AP8AI0D/QP9ABQD/gP/AI0EAAQAAB0EAQQCAI0EAwQDAEkEBAQEAI0EBQQFAE0EBgQHABsECAQIAAwECQQJAI0ECgQKABsECwQLAHUEDwQPAAUEEAQQAA0EEQQRAI0EEgQSAAwEEwQTAI0EFgQWAI0EFwQXACAEGAQYAI0EGQQZAAgEGgQaABsEGwQbABgEHAQcAI0EHQQdAIsEHgQeAFEEIQQhAE8EIgQiAI0EJQQlAB0EKAQoAI0EKQQpABsEKgQrABgELAQsAEoELQQtABQELwQvAFEEMwQ0AHMENQQ1ABsENwQ3AI0EOAQ5ABsEOgQ7ACAETARMAEMEUgRSAEYEYgRiAEIEaARoAEUEagRqAEEEdQR2AIcEeQR5AIcEewR7AIoEfQR9AIwEfgR/AD8EgASAAD0EgQSBAD4EggSCAD0EgwSDAD4EhASFAIcEoQShABIEwQTBAC0EwwTDAC8ExwTHAC8EygTKAHEEzwTPAC8E0QTRAC8E0wTTAGkE1ATUADEE1QTVADME1gTWADYE1wTXADkE2ATYAHIE2QTZADwE2gTaAGoE2wTwAC0E9gT6AC8FEQUZAC8FKgUqAHEFQQVaAC8FYgVpAGkFawVwADEFcQWHADMFiAWLADkFjAWTADwFlAWYAGoFnwWfACQFogWiAHoFpAWkAGgFpgWmACgFqQWpACQFrAWsAGcFrQWtACgFsAWwAGUFsQWxACoFsgWyACwFswWzAH0FtAW0AHAFtgW2AHwFuAW4ACwFuQW5ACQFuwW7AHwFvAW8ABMFwAXAAAIFwgXCAFIFygXKABwFzQXNABwFzgXOAB4FzwXPAEwF0AXQAAQF0QXRAG4F0wXTABUF1gXWAB4F3gXeAB4F4AXgABwF4QXhAF8F5QXlAG8F6AXoAB4F6wXrAEwF7QXtACEF7gXuABwF7wXvABkF8gXyAFIF9QX1AB4F9wX3ABwF+AX4AGwF+gX6AG4F+wX7ABUF/gX+AFIF/wX/ABMGBAYFABwGBgYHAEwGCgYKAEQGDQYNAEAGDwYPAEcG6Qbp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') format('opentype');
  1559. font-weight: bold;
  1560. }
  1561. @font-face {
  1562. font-family: "Source Sans Pro";
  1563. src: url('data:font/opentype;base64,T1RUTwAOAIAAAwBgQkFTRWUeXb0AAR4MAAAARkNGRiCHx2IrAAAYjAAAvLlEU0lHbeuKKAABHlQAABkYR0RFRispKakAAOKsAAABZkdQT1NLn3wyAADxgAAALIxHU1VCLWPnEQAA5BQAAA1sT1MvMlrilGwAAAFQAAAAYGNtYXCWjy2NAAAN7AAACn5oZWFkBqyJTgAAAOwAAAA2aGhlYQgdCQAAAAEkAAAAJGhtdHinemi2AADVSAAADWRtYXhwA1lQAAAAAUgAAAAGbmFtZc8sdNEAAAGwAAAMPHBvc3T/rQAyAAAYbAAAACAAAQAAAAETM5iGcU1fDzz1AAMD6AAAAADSChlHAAAAANIKGUf/Lf7kBFIDyQACAAMAAgAAAAAAAAABAAAD2P7vAAAEeP8t/ocEUgPoAML/0QAAAAAAAAAAAAADWQAAUAADWQAAAAMB1QGQAAUAAAKKAlj/8QBLAooCWABEAV4AMgEjAAACCwUDAwQDCQIEIAAABwAAAAEAAAAAAAAAAEFEQk8AAQAg/v8C7v8GAAAD2AERIAABkwAAAAAB5gKUAAAAIAADAAAAJAG2AAEAAAAAAAAAcAAAAAEAAAAAAAEADwBwAAEAAAAAAAIABgB/AAEAAAAAAAMAIQCFAAEAAAAAAAQAFgCmAAEAAAAAAAUAOAC8AAEAAAAAAAYAEAD0AAEAAAAAAAcAYAEEAAEAAAAAAAgAGgFkAAEAAAAAAAkADAF+AAEAAAAAAAsAGQGKAAEAAAAAAA0BkAGjAAEAAAAAAA4AGgMzAAEAAAAAAQAADANNAAEAAAAAAQEACgNZAAEAAAAAAQIACwNjAAEAAAAAAQMACwNuAAEAAAAAAQQACQN5AAMAAQQJAAAA4AOCAAMAAQQJAAEAHgRiAAMAAQQJAAIADASAAAMAAQQJAAMAQgSMAAMAAQQJAAQALATOAAMAAQQJAAUAcAT6AAMAAQQJAAYAIAVqAAMAAQQJAAcAwAWKAAMAAQQJAAgANAZKAAMAAQQJAAkAGAZ+AAMAAQQJAAsAMgaWAAMAAQQJAA0DIAbIAAMAAQQJAA4ANAnoAAMAAQQJAQAAGAocAAMAAQQJAQEAFAo0AAMAAQQJAQIAFgpIAAMAAQQJAQMAFgpeAAMAAQQJAQQAEgp0Q29weXJpZ2h0IDIwMTAsIDIwMTIsIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQgKGh0dHA6Ly93d3cuYWRvYmUuY29tLyksIHdpdGggUmVzZXJ2ZWQgRm9udCBOYW1lINRTb3VyY2XVLlNvdXJjZSBTYW5zIFByb0l0YWxpYzEuMDc1O0FEQk87U291cmNlU2Fuc1Byby1JdDtBRE9CRVNvdXJjZSBTYW5zIFBybyBJdGFsaWNWZXJzaW9uIDEuMDc1O1BTIDIuMDtob3Rjb252IDEuMC44NjttYWtlb3RmLmxpYjIuNS42MzQwNlNvdXJjZVNhbnNQcm8tSXRTb3VyY2UgaXMgYSB0cmFkZW1hcmsgb2YgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQgaW4gdGhlIFVuaXRlZCBTdGF0ZXMgYW5kL29yIG90aGVyIGNvdW50cmllcy5BZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZFBhdWwgRC4gSHVudGh0dHA6Ly93d3cuYWRvYmUuY29tL3R5cGVUaGlzIEZvbnQgU29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIFNJTCBPcGVuIEZvbnQgTGljZW5zZSwgVmVyc2lvbiAxLjEuIFRoaXMgbGljZW5zZSBpcyBhdmFpbGFibGUgd2l0aCBhIEZBUSBhdDogaHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkwuIFRoaXMgRm9udCBTb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiDUQVMgSVPVIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBTSUwgT3BlbiBGb250IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSwgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIGdvdmVybmluZyB5b3VyIHVzZSBvZiB0aGlzIEZvbnQgU29mdHdhcmUuaHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkxTbGFzaGVkIHplcm9TdHJhaWdodCBsQWx0ZXJuYXRlIGFBbHRlcm5hdGUgZ1NlcmlmZWQgSQBDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADAALAAgADIAMAAxADIALAAgADIAMAAxADQAIABBAGQAbwBiAGUAIABTAHkAcwB0AGUAbQBzACAASQBuAGMAbwByAHAAbwByAGEAdABlAGQAIAAoAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAGQAbwBiAGUALgBjAG8AbQAvACkALAAgAHcAaQB0AGgAIABSAGUAcwBlAHIAdgBlAGQAIABGAG8AbgB0ACAATgBhAG0AZQAgIBgAUwBvAHUAcgBjAGUgGQAuAFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvAEkAdABhAGwAaQBjADEALgAwADcANQA7AEEARABCAE8AOwBTAG8AdQByAGMAZQBTAGEAbgBzAFAAcgBvAC0ASQB0ADsAQQBEAE8AQgBFAFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvACAASQB0AGEAbABpAGMAVgBlAHIAcwBpAG8AbgAgADEALgAwADcANQA7AFAAUwAgADIALgAwADsAaABvAHQAYwBvAG4AdgAgADEALgAwAC4AOAA2ADsAbQBhAGsAZQBvAHQAZgAuAGwAaQBiADIALgA1AC4ANgAzADQAMAA2AFMAbwB1AHIAYwBlAFMAYQBuAHMAUAByAG8ALQBJAHQAUwBvAHUAcgBjAGUAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABBAGQAbwBiAGUAIABTAHkAcwB0AGUAbQBzACAASQBuAGMAbwByAHAAbwByAGEAdABlAGQAIABpAG4AIAB0AGgAZQAgAFUAbgBpAHQAZQBkACAAUwB0AGEAdABlAHMAIABhAG4AZAAvAG8AcgAgAG8AdABoAGUAcgAgAGMAbwB1AG4AdAByAGkAZQBzAC4AQQBkAG8AYgBlACAAUwB5AHMAdABlAG0AcwAgAEkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkAFAAYQB1AGwAIABEAC4AIABIAHUAbgB0AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAGQAbwBiAGUALgBjAG8AbQAvAHQAeQBwAGUAVABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABpAHMAIABsAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAFMASQBMACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMQAuADEALgAgAFQAaABpAHMAIABsAGkAYwBlAG4AcwBlACAAaQBzACAAYQB2AGEAaQBsAGEAYgBsAGUAIAB3AGkAdABoACAAYQAgAEYAQQBRACAAYQB0ADoAIABoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwALgAgAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAZABpAHMAdAByAGkAYgB1AHQAZQBkACAAbwBuACAAYQBuACAgGABBAFMAIABJAFMgGQAgAEIAQQBTAEkAUwAsACAAVwBJAFQASABPAFUAVAAgAFcAQQBSAFIAQQBOAFQASQBFAFMAIABPAFIAIABDAE8ATgBEAEkAVABJAE8ATgBTACAATwBGACAAQQBOAFkAIABLAEkATgBEACwAIABlAGkAdABoAGUAcgAgAGUAeABwAHIAZQBzAHMAIABvAHIAIABpAG0AcABsAGkAZQBkAC4AIABTAGUAZQAgAHQAaABlACAAUwBJAEwAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUAIABmAG8AcgAgAHQAaABlACAAcwBwAGUAYwBpAGYAaQBjACAAbABhAG4AZwB1AGEAZwBlACwAIABwAGUAcgBtAGkAcwBzAGkAbwBuAHMAIABhAG4AZAAgAGwAaQBtAGkAdABhAHQAaQBvAG4AcwAgAGcAbwB2AGUAcgBuAGkAbgBnACAAeQBvAHUAcgAgAHUAcwBlACAAbwBmACAAdABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUALgBoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAUwBsAGEAcwBoAGUAZAAgAHoAZQByAG8AUwB0AHIAYQBpAGcAaAB0ACAAbABBAGwAdABlAHIAbgBhAHQAZQAgAGEAQQBsAHQAZQByAG4AYQB0AGUAIABnAFMAZQByAGkAZgBlAGQAIABJAAAAAwAAAAMAAAIUAAEAAAAAABwAAwABAAACFAAGAfgAAAAJAPcAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB/gIDAi0CiwKeAdACAgIXAhgCIQKpAfoCDgH5Ah0B0QHSAdMB1AHVAdYB1wHYAdkB2gH7AfwCrwKuArACAAIrAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwIZAh8CGgK0AhYC4AAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUCGwIeAhwCtgAAADoAPQBNAFcAigCTAL4A5QDkAOYA6ADnAOsA+wEFAQQBBgEIASEBIAEiASQBOgFBAUABQgFEAUMBbQFsAW4BcAIiAokCjwKMAiQCFQIlAWUCKAImAikC4QLqArUATACeAroCswKxArICjQK7ArwCwQLCArkCvQJmAmgAAAD6AU8CAQH/ArgCvgKQArcCvwIMAg0B/QMyADYAOQCSAJ8BUAIQAhECBgIHAgQCBQKsAtkBigDYApsCjgIKAgsDVwNYAiMCFAIIAgkCnwA4AFgANwBaAFYAcwB0AHYAcgCQAJEAAACPALsAvAC6ASsC4gLpAusC7ALvAu0C8ALuAvEC4wAECGoAAAEEAQAABwAEAC8AQABgAH4AvwDRAN8A8QExAUkBZQF+AYABjwGSAaEBsAHcAecB6wIbAjcCQwJRAlkCYQKwArMCuQK8Ar8CzALdAuMDBAMMAw8DEwMbAyQDKAMuAzEDwB1DHUkdTR1QHVIdWB1bHZwdoB27HgceDx4XHiEeJR4rHjseSR5THmMebx6FHo8ekx6XHp4e+SAHIBUgGiAeICIgJiAwIDMgOiBEIHEgeSB/IIkgjiCUIKEgpCCnIKwgsiC1ILohEyEXISAhIiEmIS4hVCFeIZMiAiIGIg8iEiIVIhoiHiIrIkgiYCJlIx8loCWzJbclvSXBJcYlyiYRJmonEydSLiX7Av7///8AAAAgADAAQQBhAKAAwADSAOAA8gE0AUwBaAGAAY8BkgGgAa8BzQHmAeoCGAI3AkMCUQJZAmECsAKyArcCuwK+AsYC2ALhAwADBgMPAxIDGwMjAyYDLgMxA8AdQx1HHU0dTx1SHVYdWx2cHaAdux4GHgweFh4gHiQeKh40HkIeUh5aHmwegB6OHpIelx6eHqAgByASIBggHCAgICYgLyAyIDkgRCBwIHQgfSCAII0glCChIKQgpiCrILEgtSC5IRMhFyEgISIhJiEuIVMhWyGQIgIiBiIPIhEiFSIZIh4iKyJIImAiZCMcJaAlsiW2JbwlwCXGJckmECZqJxMnUi4i+wD+////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbn/VAD+AAAAAAAAAAAAAAAA/14A8/9F/z7/N//AAAAAAAAhACAAHAAAAAAAAAAA//v/+v/z/+wAAP/o/+b++eUmAADlIgAA5SUAAOUj5M/kzuTH5TgAAOUsAAAAAAAAAAAAAOTyAAAAAAAAAAAAAOLU4hYAAOMsAAAAAAAAAADh1wAA4qjh0eJXAADhvgAA4bzhueHx4fDh7uHtAADh5eHj4eDhsOEQ4QrhB+Ga4ZbhUOFK4TXguuC54LMAAOCHAADgnOCS4G/gVeBN4CrdKd0b3RndFd0T3QQAANzF3G7bxNt61SgAAAAAAAEBBAEiAUIBgAG6AfgCGgI0AlYC1AL+AzAAAAAAAAADVgNYA1oDeAN6A3wAAAAAAAAAAAAAAAADdgN4AAAAAAAAA3YDgAOEA4wAAAAAAAAAAAOQAAAAAAAAAAADjAAAA44AAAOOAAAAAAAAAAAAAAOIAAADjAOOA5ADkgOgAAADrAO+A8QDzgPQAAAAAAPOAAAEfgSEBIgEjAAABI4AAAAAAAAEigAABIoAAAAAAAAAAAAAAAAEggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARmAAAEZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQAAAAAAAAAAAAAARIBEwAAAABAf4CAwItAosCngHQAgICFwIYAiECqQH6Ag4B+QIdAdEB0gHTAdQB1QHWAdcB2AHZAdoB+wH8Aq8CrgKwAgACKwACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsCGQIfAhoCtAIWAuAAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1AhsCHgIcArYDMgH/Ao8CjAKKAo0CIAIkAuoCJgJmAgwCuAIPAigC6wKJArMCMAIxAuECuwIlAhQC8AIvAmgCDQKgAqECogIBADYANwA4ADkAOgA9AEwATQBWAFcAWABaAHIAcwB0AHYA4QCKAI8AkACRAJIAkwKrAJ4AugC7ALwAvgDWAOIBZQDkAOUA5gDnAOgA6wD6APsBBAEFAQYBCAEgASEBIgEkAZMBOgFAAUEBQgFDAUQCrAFPAWwBbQFuAXABiAGUAYoAOwDpADwA6gBLAPkATgD8AE8A/QBRAP8AUAD+AFIBAABVAQMAWwEJAFwBCgBdAQsAZgEUAFkBBwBnARUAaAEWAGkBFwBqARgAbgEcAHEBHwB1ASMAdwElAzcDOgB8ASkAeAErAH0BLAB+AS0BLgB/AS8AgQEyAIABMACCATEAhgE2AIgBOACLATsAiQE5AT8AlAFFAzgDOwCVAUYAnwFQAKcBWACpAVkAqAFaAK0BXgCuAV8AsAFhAK8BYAC2AWcAtQFmAL0BbwC/AXEAwAFyAMEBcwDCAXQAygF8ANMBhQDXAYkA2ADdAY8A3wGRAN4BkACgAVEAywF9AD4A7AB5ASYAlgFHAMMBdQDEAXYAxQF3AMYBeADHAXkAawEZAKYBVwCxAWIAtwFoAnICegJ/AoEDUgLsAu8C7QLxAukC7gJ0AnsCgALyAvQC9gL4AvoC/AL+AwADAgMEAwYDCAMRAxIDFAJqAmwCbQJzAnUCeAJ8An0AUwEBAFQBAgBsARoAbwEdAHABHgNAA0EAgwEzAIQBNACFATUAhwE3AIwBPACNAT0AjgE+AKoBWwCrAVwArAFdALIBYwCzAWQAuAFpALkBagDRAYMA0gGEANQBhgDZAYsA4AGSAD8A7QBAAO4AQQDvAEIA8ABDAPEARADyAEUA8wBGAPQARwD1AEgA9gBJAPcASgD4AF4BDABfAQ0AYAEOAGEBDwBiARAAYwERAGQBEgBlARMAegEnAHsBKACXAUgAmAFJAJkBSgCaAUsAmwFMAJwBTQCdAU4AoQFSAKIBUwCjAVQApAFVAKUBVgDIAXoAyQF7AMwBfgDNAX8AzgGAAM8BgQDQAYIA1QGHANoBjADbAY0A3AGOAhICEAIRAhMCBAIFAggCBgIHAgkCIgIjAhUDVQKfAi4CcQI4AjkCdgKVAo4CwQKqAq0CvgLLAtkBmQNXA1gDVgAAAAMAAP/1AAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAABAAQCAAEBARFTb3VyY2VTYW5zUHJvLUl0AAEBASn6jAD6jQH6jgwA+o8DgAwC+2f7sPrm+l0FHCubDxwuAxHNHQAAqgUSAnUCAAEACAAOABUAHAAjACoAMQA4AD8ARgBNAFQAWwBiAGkAcAB2AIEAhwCRAJcAngClAKsAsQC4AL4AyADPANYA3QDkAOsA8gD5AQABBwESARgBIgEpAS8BNgFBAUwBUwFaAV4BZAFrAXUBfAGDAYoBkQGcAaMBqQGvAbYBugHBAcgBzwHWAdwB4gHpAfAB9wH+AgUCEgIZAiACJwIuAjUCPAJDAkoCTwJWAl0CZAJrAnICeQJ/AoUCjAKTApoCoQKnArICuQLAAscCzgLVAtsC4gLpAvAC9wL9AwQDCgMPAxwDIwMqAzEDOAM/A0YDTQNUA1kDYANnA24DdQN8A4IDiAOTA5wDogOtA7QDuwPCA8kDzwPZA+AD5wPuA/QD+wQCBAkEEAQXBB4EJQQsBDMEOgRBBEgETwRWBFwEZwRtBHcEfQSEBIsEkQSXBJ4EpASuBLUEvATDBMoE0QTYBN8E5gTtBPgE/gUIBQ8FFQUcBScFMgU5BUAFRAVKBVEFWAVfBWYFbQV2BYEFiAWUBZoFoAWkBasFsgW5BcAFxwXNBdMF2gXhBegF7wX6BgEGDgYVBhwGIwYqBjEGOAY/BkYGSwZSBlkGYAZnBm4GdQZ7BoIGiAaPBpYGnQajBq4GtQa8BsMGygbQBtcG3gblBuwG8wb5BwAHBgcLBxgHHwcmBy0HNAc7B0IHSQdQB1UHXAdjB2oHcQd4B34HhAePB5gHngepB7AHtwe+B8UHywfVB9wH4wfqB/EH+Af7B/4IAQgJCBEIHggmCDEIOghGCE8IWAhhCGoIbQh1CH0IigiSCJ0IpgiuCLUIvgjHCNAI2QjiCOsI9Aj9CQYJDwkYCSEJKgkzCTYJQwlLCVcJYAloCXEJfgmBCYkJkQmXCaAJqQmyCbsJwwnHCdAJ2AngCeoJ8wn8CgQKDgoYCiEKKgoyCjoKRApNClYKXgpoCnIKewqECowKlAqeCqcKsAq4CsIKzArVCtwK4wrqCvEK+AsBCwkLEQsbCyQLLQs1Cz8LSQtSC2ALbwt6C4QLjQuVC50LpwuwC7kLwQvLC9UL3gvsC/sMBgwQDBkMIQwpDDMMPAxFDE0MVwxhDGoMeAyHDJIMnAylDK0MtQy/DMgM0QzZDOMM7Qz2DQQNEw0eDSgNNQ07DUENRw1NDVMNWQ1fDWUNaw1xDXcNfQ2DDYkNjw2VDZsNoQ2nDa0Nsw25Db8NxQ3LDdEN3A3nDfMN+Q3/DgUOCQ4QDhQOGw4hDiUOLA4zDjoOQQ5IDk8OWQ5gDmkOdQ59DogOig6SDpkOpA6sDrMOug7BDsoO0Q7YDuEO6A7vDvYO/w8GDw0PFA8bDyIPKQ8wDzcPPg9FD0wPUw9aD2EPaA9vD3YPfQ+ED4sPkg+ZD6APpw+uD7UPvA/DD8oP1Q/cD+cP7g/5EAAQCxASEB0QJBAvEDYQQRBIEFMQWhBlEGwQdxB+EIkQkBCbEKIQrRC0ELsQwhDJENAQ1xDeEOkQ8BD7EQIRCREUESMRLhE9EUgRVxFiEXERfBGLEZYRpRGwEb8RyhHZEeQR8xH+Eg0SGBInEjISQRJKElMSWhJhEmsSdxJ+EoUSjBKTEpoSoRKsErsSwhLJEtAS1xLeEuUS7BLzEvoTARMIEw8TFhMdEyQTKxMxEzgTPxNHE04TWRNoE28TdhN5E9kUSRRYQW1hY3JvbkFicmV2ZXVuaTAxQ0R1bmkxRUEwdW5pMUVBMnVuaTFFQTR1bmkxRUE2dW5pMUVBOHVuaTFFQUF1bmkxRUFDdW5pMUVBRXVuaTFFQjB1bmkxRUIydW5pMUVCNHVuaTFFQjZBb2dvbmVrQ2FjdXRlQ2NpcmN1bWZsZXhDY2Fyb25DZG90YWNjZW50RGNhcm9udW5pMUUwQ3VuaTFFMEVEY3JvYXRFY2Fyb25FbWFjcm9uRWJyZXZlRWRvdGFjY2VudHVuaTFFQjh1bmkxRUJBdW5pMUVCQ3VuaTFFQkV1bmkxRUMwdW5pMUVDMnVuaTFFQzR1bmkxRUM2RW9nb25la0djaXJjdW1mbGV4R2JyZXZlR2RvdGFjY2VudHVuaTAxMjJHY2Fyb251bmkxRTIwdW5pMDA0NzAzMDNIY2lyY3VtZmxleHVuaTFFMjR1bmkxRTJBSGJhckl0aWxkZUltYWNyb25JZG90YWNjZW50dW5pMDFDRnVuaTFFQzh1bmkxRUNBSW9nb25la0pjaXJjdW1mbGV4dW5pMDEzNkxhY3V0ZUxjYXJvbnVuaTAxM0JMZG90dW5pMUUzNnVuaTFFMzh1bmkxRTNBdW5pMUU0Mk5hY3V0ZU5jYXJvbnVuaTAxNDV1bmkxRTQ0dW5pMUU0NnVuaTFFNDhPbWFjcm9uT2h1bmdhcnVtbGF1dHVuaTAxRDF1bmkxRUNDdW5pMUVDRXVuaTFFRDB1bmkxRUQydW5pMUVENHVuaTFFRDZ1bmkxRUQ4T2hvcm51bmkxRURBdW5pMUVEQ3VuaTFFREV1bmkxRUUwdW5pMUVFMnVuaTAxRUFSYWN1dGVSY2Fyb251bmkwMTU2dW5pMUU1QXVuaTFFNUN1bmkxRTVFU2FjdXRlU2NpcmN1bWZsZXh1bmkwMTVFdW5pMDIxOHVuaTFFNjB1bmkxRTYydW5pMUU5RVRjYXJvbnVuaTAxNjJ1bmkwMjFBdW5pMUU2Q3VuaTFFNkVVdGlsZGVVbWFjcm9uVWJyZXZlVXJpbmdVaHVuZ2FydW1sYXV0dW5pMDFEM3VuaTAxRDV1bmkwMUQ3dW5pMDFEOXVuaTAxREJ1bmkxRUU0dW5pMUVFNlVvZ29uZWtVaG9ybnVuaTFFRTh1bmkxRUVBdW5pMUVFQ3VuaTFFRUV1bmkxRUYwV2dyYXZlV2FjdXRlV2NpcmN1bWZsZXhXZGllcmVzaXNZZ3JhdmVZY2lyY3VtZmxleHVuaTFFOEV1bmkxRUY0dW5pMUVGNnVuaTFFRjhaYWN1dGVaZG90YWNjZW50dW5pMUU5MnVuaTAxOEZhbWFjcm9uYWJyZXZldW5pMDFDRXVuaTFFQTF1bmkxRUEzdW5pMUVBNXVuaTFFQTd1bmkxRUE5dW5pMUVBQnVuaTFFQUR1bmkxRUFGdW5pMUVCMXVuaTFFQjN1bmkxRUI1dW5pMUVCN2FvZ29uZWtjYWN1dGVjY2lyY3VtZmxleGNjYXJvbmNkb3RhY2NlbnRkY2Fyb251bmkxRTBEdW5pMUUwRmRjcm9hdGVjYXJvbmVtYWNyb25lYnJldmVlZG90YWNjZW50dW5pMUVCOXVuaTFFQkJ1bmkxRUJEdW5pMUVCRnVuaTFFQzF1bmkxRUMzdW5pMUVDNXVuaTFFQzdlb2dvbmVrZ2NpcmN1bWZsZXhnYnJldmVnZG90YWNjZW50dW5pMDEyM2djYXJvbnVuaTFFMjF1bmkwMDY3MDMwM2hjaXJjdW1mbGV4dW5pMUUyNXVuaTFFMkJoYmFyaXRpbGRlaW1hY3JvbnVuaTAxRDB1bmkxRUM5dW5pMUVDQmlvZ29uZWtpb2dvbmVrLmRqY2lyY3VtZmxleHVuaTAxMzdrZ3JlZW5sYW5kaWNsYWN1dGVsY2Fyb25sZG90dW5pMDEzQ3VuaTFFMzd1bmkxRTM5dW5pMUUzQnVuaTFFNDNuYWN1dGVuY2Fyb251bmkwMTQ2dW5pMUU0NXVuaTFFNDd1bmkxRTQ5bmFwb3N0cm9waGVvbWFjcm9ub2h1bmdhcnVtbGF1dHVuaTAxRDJ1bmkxRUNEdW5pMUVDRnVuaTFFRDF1bmkxRUQzdW5pMUVENXVuaTFFRDd1bmkxRUQ5b2hvcm51bmkxRURCdW5pMUVERHVuaTFFREZ1bmkxRUUxdW5pMUVFM3VuaTAxRUJyYWN1dGV1bmkwMTU3cmNhcm9udW5pMUU1QnVuaTFFNUR1bmkxRTVGc2FjdXRlc2NpcmN1bWZsZXh1bmkwMTVGdW5pMDIxOXVuaTFFNjF1bmkxRTYzdGNhcm9udW5pMDE2M3VuaTAyMUJ1bmkxRTZEdW5pMUU2RnVuaTFFOTd1dGlsZGV1bWFjcm9udWJyZXZldXJpbmd1aHVuZ2FydW1sYXV0dW5pMDFENHVuaTAxRDZ1bmkwMUQ4dW5pMDFEQXVuaTAxREN1bmkxRUU1dW5pMUVFN3VvZ29uZWt1aG9ybnVuaTFFRTl1bmkxRUVCdW5pMUVFRHVuaTFFRUZ1bmkxRUYxd2dyYXZld2FjdXRld2NpcmN1bWZsZXh3ZGllcmVzaXN5Z3JhdmV5Y2lyY3VtZmxleHVuaTFFOEZ1bmkxRUY1dW5pMUVGN3VuaTFFRjl6YWN1dGV6ZG90YWNjZW50dW5pMUU5M3VuaTAyMzd1bmkwMjUxdW5pMDI1OXVuaTAyNjFmX2ZmX3RJLmFJZ3JhdmUuYUlhY3V0ZS5hSWNpcmN1bWZsZXguYUl0aWxkZS5hSWRpZXJlc2lzLmFJbWFjcm9uLmFJZG90YWNjZW50LmF1bmkwMUNGLmF1bmkxRUM4LmF1bmkxRUNBLmFJb2dvbmVrLmFhLmFhZ3JhdmUuYWFhY3V0ZS5hYWNpcmN1bWZsZXguYWF0aWxkZS5hYWRpZXJlc2lzLmFhbWFjcm9uLmFhYnJldmUuYWFyaW5nLmF1bmkwMUNFLmF1bmkxRUExLmF1bmkxRUEzLmF1bmkxRUE1LmF1bmkxRUE3LmF1bmkxRUE5LmF1bmkxRUFCLmF1bmkxRUFELmF1bmkxRUFGLmF1bmkxRUIxLmF1bmkxRUIzLmF1bmkxRUI1LmF1bmkxRUI3LmFhb2dvbmVrLmFnLmFnY2lyY3VtZmxleC5hZ2JyZXZlLmFnZG90YWNjZW50LmF1bmkwMTIzLmFnY2Fyb24uYXVuaTFFMjEuYXVuaTAwNjcwMzAzLmFsLmFsYWN1dGUuYWxjYXJvbi5hbGRvdC5hdW5pMDEzQy5hdW5pMUUzNy5hdW5pMUUzOS5hdW5pMUUzQi5hbHNsYXNoLmFmbC5hemVyby5wbnVtb25lLnBudW10d28ucG51bXRocmVlLnBudW1mb3VyLnBudW1maXZlLnBudW1zaXgucG51bXNldmVuLnBudW1laWdodC5wbnVtbmluZS5wbnVtemVyby50bnVtb25lLnRudW10d28udG51bXRocmVlLnRudW1mb3VyLnRudW1maXZlLnRudW1zaXgudG51bXNldmVuLnRudW1laWdodC50bnVtbmluZS50bnVtemVyby5vbnVtb25lLm9udW10d28ub251bXRocmVlLm9udW1mb3VyLm9udW1maXZlLm9udW1zaXgub251bXNldmVuLm9udW1laWdodC5vbnVtbmluZS5vbnVtdW5pMDBBRHVuaTIwMTV1bmkyMTE3dW5pMjEyMGF0LmNhc2V6ZXJvLnN1cHNvbmUuc3Vwc3R3by5zdXBzdGhyZWUuc3Vwc2ZvdXIuc3Vwc2ZpdmUuc3Vwc3NpeC5zdXBzc2V2ZW4uc3Vwc2VpZ2h0LnN1cHNuaW5lLnN1cHNwYXJlbmxlZnQuc3Vwc3BhcmVucmlnaHQuc3Vwc3BlcmlvZC5zdXBzY29tbWEuc3Vwc3plcm8uc3Vic29uZS5zdWJzdHdvLnN1YnN0aHJlZS5zdWJzZm91ci5zdWJzZml2ZS5zdWJzc2l4LnN1YnNzZXZlbi5zdWJzZWlnaHQuc3Vic25pbmUuc3Vic3BhcmVubGVmdC5zdWJzcGFyZW5yaWdodC5zdWJzcGVyaW9kLnN1YnNjb21tYS5zdWJzemVyby5kbm9tb25lLmRub210d28uZG5vbXRocmVlLmRub21mb3VyLmRub21maXZlLmRub21zaXguZG5vbXNldmVuLmRub21laWdodC5kbm9tbmluZS5kbm9tcGFyZW5sZWZ0LmRub21wYXJlbnJpZ2h0LmRub21wZXJpb2QuZG5vbWNvbW1hLmRub216ZXJvLm51bXJvbmUubnVtcnR3by5udW1ydGhyZWUubnVtcmZvdXIubnVtcmZpdmUubnVtcnNpeC5udW1yc2V2ZW4ubnVtcmVpZ2h0Lm51bXJuaW5lLm51bXJwYXJlbmxlZnQubnVtcnBhcmVucmlnaHQubnVtcnBlcmlvZC5udW1yY29tbWEubnVtcm9yZGZlbWluaW5lLmFhLnN1cHNiLnN1cHNjLnN1cHNkLnN1cHNlLnN1cHNmLnN1cHNnLnN1cHNoLnN1cHNpLnN1cHNqLnN1cHNrLnN1cHNsLnN1cHNtLnN1cHNuLnN1cHNvLnN1cHNwLnN1cHNxLnN1cHNyLnN1cHNzLnN1cHN0LnN1cHN1LnN1cHN2LnN1cHN3LnN1cHN4LnN1cHN5LnN1cHN6LnN1cHNlZ3JhdmUuc3Vwc2VhY3V0ZS5zdXBzdW5pMDI1OS5zdXBzYS5zdXBhZy5zdXBhbC5zdXBhRXVyb3VuaTAxOTJsaXJhdW5pMjBBNnBlc2V0YWRvbmd1bmkyMEIxdW5pMjBCMnVuaTIwQjV1bmkyMEI5dW5pMjBCQXVuaTIyMTVzbGFzaC5mcmFjdW5pMjIxOWxlc3NlcXVhbGdyZWF0ZXJlcXVhbG5vdGVxdWFsYXBwcm94ZXF1YWxwaWluZmluaXR5dW5pMDBCNXBhcnRpYWxkaWZmaW50ZWdyYWxyYWRpY2FsdW5pMjIwNnVuaTIxMjZzdW1tYXRpb25wcm9kdWN0dW5pMjExM2VzdGltYXRlZHVuaTIxOTBhcnJvd3VwdW5pMjE5MmFycm93ZG93bnVuaTI1QTB1bmkyNUM2dW5pMjVDOXVuaTI3NTJ0cmlhZ3VwdW5pMjVCM3VuaTI1QjZ1bmkyNUI3dHJpYWdkbnVuaTI1QkR1bmkyNUMwdW5pMjVDMXVuaTI2MTB1bmkyNjExdW5pMjcxM3VuaTI2NkFsb3plbmdldW5pMjAzMnVuaTIwMzN1bmkwMkJCdW5pMDJCQ3VuaTAyQkV1bmkwMkJGdW5pMDJDOHVuaTAyQzl1bmkwMkNBdW5pMDJDQnVuaTAyQ0N1bmkwMzAwdW5pMDMwMC5jYXB1bmkwMzAxdW5pMDMwMS5jYXB1bmkwMzAydW5pMDMwMi5jYXB1bmkwMzAzdW5pMDMwMy5jYXB1bmkwMzA0dW5pMDMwNC5jYXB1bmkwMzA2dW5pMDMwNi5jYXB1bmkwMzA3dW5pMDMwNy5jYXB1bmkwMzA4dW5pMDMwOC5jYXB1bmkwMzA5dW5pMDMwOS5jYXB1bmkwMzBBdW5pMDMwQS5jYXB1bmkwMzBCdW5pMDMwQi5jYXB1bmkwMzBDdW5pMDMwQy5jYXB1bmkwMzBGdW5pMDMwRi5jYXB1bmkwMzEydW5pMDMxM3VuaTAzMUJ1bmkwMzIzdW5pMDMyNHVuaTAzMjZ1bmkwMzI3dW5pMDMyNy5jYXB1bmkwMzI4dW5pMDMyOC5jYXB1bmkwMzJFdW5pMDMzMXVuaTAzMDgwMzA0dW5pMDMwODAzMDQuY2FwdW5pMDMwODAzMDF1bmkwMzA4MDMwMS5jYXB1bmkwMzA4MDMwQ3VuaTAzMDgwMzBDLmNhcHVuaTAzMDgwMzAwdW5pMDMwODAzMDAuY2FwdW5pMDMwMjAzMDF1bmkwMzAyMDMwMS5jYXB1bmkwMzAyMDMwMHVuaTAzMDIwMzAwLmNhcHVuaTAzMDIwMzA5dW5pMDMwMjAzMDkuY2FwdW5pMDMwMjAzMDN1bmkwMzAyMDMwMy5jYXB1bmkwMzA2MDMwMXVuaTAzMDYwMzAxLmNhcHVuaTAzMDYwMzAwdW5pMDMwNjAzMDAuY2FwdW5pMDMwNjAzMDl1bmkwMzA2MDMwOS5jYXB1bmkwMzA2MDMwM3VuaTAzMDYwMzAzLmNhcHVuaTAzMEMuYXVuaTAzMjYuYXVuaTAwQTB1bmkyMDA3c3BhY2UuZnJhY25ic3BhY2UuZnJhY3VuaTAyNDN1bmkwMTJDdW5pMDE0RXVuaTAxODB1bmkwMTJEdW5pMDE0RnVuaTAzMDIwMzA2dW5pMDMwMjAzMDYuY2FwdW5pMUUwNnVuaTFFMDd1bmkxRTM0dW5pMUUzNXVuaTFFMTZ1bmkxRTE3dW5pMUU1MnVuaTFFNTN1bmkyMzFDdW5pMjMxRHVuaTIzMUV1bmkyMzFGdW5pMkUyMnVuaTJFMjN1bmkyRTI0dW5pMkUyNXplcm8uMHplcm8uMHN6ZXJvLjBwemVyby4wcHN1bmkwMkI5dW5pMDMwNDAzMDF1bmkwMzA0MDMwMS5jYXB1bmkyMDJGdW5pRkVGRjIu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Af7/ywMj/98CJgA5AiYAOQImADkCJgA5AiYAOQJQACMCUAAjAlAAIwJiAC8B9wAjAfcAIwH3ACMB9wAjAfcAIwH3ACMB9wAjAfcAIwH3ACMB9wAjAfcAIwH3ACMB9wAjAfcAIwH3ACMB9wAjAfcAIwJMADkCTAA5AkwAOQJMADkCTAA5AkwAOQJMADkCbgAjAm4AIwJuACMCgwAsAPwAIwD8ACMA/AAjAPwAIwD8ACMA/AAjAPwAIwD8ACMA/AAjAPz//wD8/9kByP/+Ai8AIwHOACMBzgAjAc4AIwHOACMBzgAjAc4AIwHOACMBzv/3AsEAIwJrACMCawAjAmsAIwJrACMCawAjAmsAIwJrACMCeQA8AnkAPAJ5ADwCeQA8AnkAPAJ5ADwCeQA8AnkAPAJ5ADwCeQA8AnkAPAJ5ADwCeQA8AnkAPAJ5ADwCef/9AzAAPAJ5ADwCeQA8AnkAPAJ5ADwCeQA8AnkAPAJ5ADwCKwAjAisAIwIrACMCKwAjAisAIwIrACMB+gAMAfoADAH6AAwB+gAMAfoADAH6AAwB+gAMAnkAIwH+AF0B/gBCAf4AUAH+AF0B/gAyAmgATwJoAE8CaABPAmgATwJoAE8CaABPAmgATwJoAE8CaABPAmgATwJoAE8CaABPAmgATwJoAE8CaABPAmgATwJoAE8CdQBPAnUATwJ1AE8CdQBPAnUATwJ1AE8C9ABfAvQAXwL0AF8C9ABfAc0AUwHNAFMBzQBTAc0AUwHNAFMBzQBTAc0AUwHNAFMCAP//AgD//wIA//8CAP//AmIALwIyACMCfAA/AhkAJwIZACcCGQAnAhkAJwIZACcCGQAnAhkAJwIZACcCGQAnAhkAJwIZACcCGQAnAhkAJwIZACcCGQAnAhkAJwIZACcCGQAnAhkAJwIZACcCGQAnAhkAJwL5ACABswAlAbMAJQGzACUBswAlAbMAJQIeACcCFwAnAhcAJwIXACcB4QAlAeEAJQHhACUB4QAlAeEAJQHhACUB4QAlAeEAJQHhACUB4QAlAeEAJQHhACUB4QAlAeEAJQHhACUB4QAlAeEAJQIT//4CE//+AhP//gIT//4CE//+AhP//gIT//4CBwAfAgcAHwIHAB8CBwAfAO0AHwDtAB8A7QAfAO0AFQDtAB8A7QAfAO0AHwDtAB8A7f/5AO3/1gDt/9YA7QAfAO7/hAHcAB8B3AAfAPgALADyACwBSwAsAPj/yAD4//YA+P/2APj/qgD8ABkDHwAfAg0AHwINAB8CDQAfAg0AHwINAB8CDQAfAg0AHwLjAG8CAwAnAgMAJwIDACcCAwAnAgMAJwIDACcCAwAnAgMAJwIDACcCAwAnAgMAJwIDACcCAwAnAgMAJwIDACcCAwAAAywAJwIFACcCBQAnAgUAJwIFACcCBQAnAgUAJwIDACcBVgAfAVb/ywFWAB8BVv/5AVb/+QFW/60Bkv/8AZL//AGS//wBkv/8AZL//AGS//wBkv/8AisAHwFFADwBRQAoAUUAIgFFADwBRQAEAUUAPAIQADgCEAA4AhAAOAIQADgCEAA4AhAAOAIQADgCEAA4AhAAOAIQADgCEAA4AhAAOAIQADgCEAA4AhAAOAIQADgCEAA4Ah8AOAIfADgCHwA4Ah8AOAIfADgCHwA4AsMARgLDAEYCwwBGAsMARgHA/8IBwP/CAcD/wgHA/8IBwP/CAcD/wgHA/8IBwP/CAZr/9gGa//YBmv/2AZr/9gIMACsCF//2AO7/hAIZACcB3gAcAhP//gIoACsCMQArAUT/+QFE//kBRP/5AUT/+QFE//kBRP/5AUT/+QFE//kBRP/5AUT/+QFE//kBRP/5AewAIAHsACAB7AAgAewAIAHsACAB7AAgAewAIAHsACAB7AAgAewAIAHsACAB7AAgAewAIAHsACAB7AAgAewAIAHsACAB7AAgAewAIAHsACAB7AAgAewAIAHsACAB3f/xAd3/8QHd//EB3f/xAd3/8QHd//EB3f/xAd3/8QDuAB8A7gAfAPIAHwFLAB8A7v/HAO7/9QDu//UA7v+pAPYAGQIIACsCRgAPAeAAKgHgABoB4P/2AeD/9wHgAAgB4P/8AeAAMwHgAGsB4AAjAeAAEgH4ACoBVABfAdP/9gHN/+8B5QATAc3/9gHgADMByABhAeAAIwHgABIB4AAmAeAAGgHg//YB4P/qAeD/9wHg/+wB4AAzAeAAXQHgACMB4AADAeAAJgFWAEwBzv/2AeD/6gHg//cB4P/sAeAAMwHIAFAB4AAjAeAAAwDyABcA8v/hAPIAFwDy/+EDvwBTARoAKwEaABUBmQBeAZn//ADyAIABlwCAAPIAbgDyAG8BlwBuAZcAbwDy//cBl//3APwAKAD8ABcBnAAoAZwAFwErACMBKwAjAc8AIwMBACMB4AAjAwEAIwDyAE8BJwApAeP/3AEjAEEBJf/UASQACAEl/88BIgAgASX/zAFU/7gA5wBfAVQAWADnAF8BkwB9AbMAZQGzABIB3QAPAhcASQKZACQCmQAkAZYASQJjAEwCWQArAy4ALQMiAGIB3wAYAWUAXAFkAKkBYQBOAV8ATQFiAFYBXwBNAWEAZQFhAI8BYQBaAWEAUwDjAHQA4gA1AKoASgCqACoBZf/tAWQAOgFh/98BX//eAWL/5wFf/94BYf/2AWEAIAFh/+sBYf/kAOMABQDi/8YAqv/bAKr/uwFlAA8BZABcAWEAAQFfAAABYgAJAV8AAAFhABgBYQBCAWEADQFhAAYA4wAnAOL/6ACq//0Aqv/dAWUAQQFkAI4BYQAzAV8AMgFiADsBXwAyAWEASgFhAHQBYQA/AWEAOADjAFkA4gAaAKoALwCqAA8BYgBVAU0AKwFcADsBYgBVAWgAOAEkADsBbQA8AUMAOwDCAD4BYgAiAWEAOACjADgApP/OAUUAOAClAEICGAA4AWMAOAFcADsBZgAcAWQAPADgADgBDwAcAN4ARwFjAEcBMwBKAd8AUAEnAAUBM//4ARcAGAFDADsBQwA7AUAANgFNADoBRAAWAKQAOAE5AGUB4AALAeAAEQHgAAQB4AAcAeAAFAHgAE4B4P/QAeAAPgHgAAQB4AAJAeAAHgHgACAB4AAeAeAAMAHgAD4B4ABGAeAAKABU/y0AVP8tAFT/LQMXAD0EeAA9AuwAdwMEAGMC/AAuAwoAYwMbADMDBQBlAxMAKwMTAC4DAgBfAeAAMAHgADAB4ABBAeAAMAD0AE8B4AAwAeAALgHgADAB4AAuAeAAMAHgADAB3wBTAeAAMAHgAC0B4AAtAeAAMAIuADcC8AAgAg7/9gIHABcBQf/mAhkAPQI1/+0Ckv/5AeUAIAKGAGEBigAHAyAAQgJRABQCUQAeAlEAFAJRAB4DfwA/A38AKwN/ADMDfwA/A38ARQN/AEUDfwA/A38APwN/AEUDfwBFA38AKwN/ACsC/QBGAv4ARgIe//IB4AAhAfMARgDyAHABmABwAPIAbgDyAG8AlwBiAKMAXQIFAOkCBQENAgUAtAIFAMIAbABaAQYASQDVAG0A1QBJAGz/tQIFAKcCBQDLAgUAzwIFAMkCBQDv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ABYAEgASABYAFAAUAA8AFQAVAAUAFgAWAAYAFwAXAAgAGAAYAAoAGQAZABEAGgAaAAwAGwAbABIAHAAcABQAHgAgABQAIQAhABUAIgAiABQAJQAlAAQAKgAqABQALAAsABQALwAvABkAMAAwABoAMQAxAAcAMgAyAAkAMwAzABAANAA0AAsANgA/AA4AQQBCAA4ARABHAA4ASQBLAA4ATQBRABYAVQBVAAEAZwBtABYAcQBxAAMAfQB9ABcAjwCXABYAmQCaABYAnACiABYApACmABYArQCzAA8AtQC5AAUAugDIAAYAygDNAAYAzwDQAAYA0QDUAAoA1QDaAAwA3ADcAAwA3QDgABIA4QDhAAEA4wDjABgA5ADtABQA7wDwABQA8gD1ABQA9wD5ABQA+gD6ABMA+wEMABQBDgEQABQBEgEbABQBLAEsAAQBQAFIABQBSgFLABQBTQFTABQBVQFXABQBZgFrABkBbAF6ABoBfAF/ABoBgQGCABoBgwGGAAkBhwGMAAsBjgGOAAsBlQGVAAQBmAGYABQBmQGaABUBpwGxABMBswG0ABMBtgG5ABMBuwG9ABMBvgHFAAIBzwHPABUCBQIFAA0CBwIHAA0C3QLdAA0DNgM2AAEDOAM4ABYDOwM7ABQDQwNDABQDRANEABYDRQNFABQDVwNYABUAAgCTAAIAAgACAAMAAwADAAQABAAGAAUABQAcAAcABwAKAAgACAAQAAsACwATAAwADAAVAA0ADQAYABAAEAAcABEAEQAfABIAEgAcABMAEwAlABQAFAAnABUAFQAqABYAFgAtABcAFwAvABgAGAAxABkAGQAzABoAGgA1ABsAGwA3ABwAHAABAB0AHQAbAB4AHgAFACAAIAAIACEAIQAJACIAIgABACMAIwASACYAJgAUACgAKQASACoAKwAbACwALAABAC0ALQAkAC4ALgAmAC8ALwApADAAMAABADEAMQAuADIAMgAwADMAMwAyADQANAA0ADUANQA2ADYAPwACAEEAQgACAEQARwACAEkASwACAE0AUQAGAFIAVQAcAGcAbQAQAHEAcQARAH0AfQATAH4AfgAVAH8AfwAYAIAAgAAXAIEAhgAYAI8AlwAcAJkAmgAcAJwAngAcAKAAogAaAKQApQAaAKYApgAcAKcArAAlAK0AswAnALQAtAAMALUAuQAqALoAyAAtAMoAygAtAMsAzQAsAM8A0AAsANEA1AAxANUA2gA1ANwA3AA1AN0A4AA3AOEA4QAcAOIA4gAoAOMA4wAcAOQA7QABAO8A8AABAPIA9QABAPcA+QABAPoA+gAIAPsA/wAFAQABAAAWAQQBDAAIAQ4BEAAIARIBFAAIARUBGwABARwBHwASASsBKwABAS0BLgAUATABMAAWATcBPwASAUABSAAbAUoBSwAbAU0BTwAbAVABUAAIAVEBUwAZAVUBVgAZAVcBVwAbAVgBXQAkAV4BZAAmAWUBZQALAWYBawApAWwBegABAXwBfAABAX0BfwArAYEBggArAYMBhgAwAYcBjAA0AY4BjgA0AY8BkgA2AZQBlAAbAZcBlwAbAZgBmAABAZkBmQAJAZoBmgApAb4BxQAPAcgByAAWAfkB+gAeAfsB/AAEAf0B/QAeAgICAwAgAgQCBAAiAgUCBQAjAgYCBgAiAgcCBwAjAggCCQAhAgoCCgANAgsCCwAOAgwCDAANAg0CDQAOAg4CEwAHAhcCFwAdAhkCGQAdAhsCGwAdAtwC3AAiAt0C3QAjAzYDNgADAzgDOAAcAzkDOQAbAzsDOwAbAz4DPgADAz8DPwAbA0ADQAAVA0EDQQAUA0MDQwAIA0QDRAAcA0UDRQAbAAIAeQACAAIAJgAEAAQACAAIAAgACAALAAsAGgAQABAACAASABIACAAUABQACwAVABUAAgAWABYADgAXABcAAwAYABgAEQAZABkAEgAaABoABAAbABsAFAAcABwAHQAeACAAHQAhACEABgAiACIAHQAlACUABwAoACkAIQAqACoAHQArACsAIQAsACwAHQAtAC0AIQAuAC4AJwAvAC8ADAAwADAADQAxADEADwAyADIAEAAzADMAGwA0ADQAEwA1ADUAKAA2AD8AJgBBAEIAJgBEAEcAJgBJAEsAJgBNAFEACABnAG0ACAB9AH0AGgCPAJcACACZAJoACACcAKIACACkAKYACACtALMACwC1ALkAAgC6AMgADgDKAM0ADgDPANAADgDRANQAEQDVANoABADcANwABADdAOAAFADkAO0AHQDvAPAAHQDyAPUAHQD3APkAHQD6APoAHAD7AQwAHQEOARAAHQESARsAHQErASsAIQEsASwABwEuAS4AIQE3AT4AIQFAAUgAHQFKAUsAHQFN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') format('opentype');
  1564. font-style: italic;
  1565. }
  1566. @font-face {
  1567. font-family: "Source Sans Pro";
  1568. src: url('data:font/opentype;base64,T1RUTwAOAIAAAwBgQkFTRWUeXb0AASCoAAAARkNGRiC6MiQJAAAYxAAAv0JEU0lHURHnxQABIPAAABkYR0RFRispKakAAOVsAAABZkdQT1OypPvsAAD0QAAALGZHU1VCLWPnEQAA5tQAAA1sT1MvMlwUlrEAAAFQAAAAYGNtYXCWjy2NAAAOJAAACn5oZWFkBuaJYwAAAOwAAAA2aGhlYQhWCRQAAAEkAAAAJGhtdHj6NE55AADYCAAADWRtYXhwA1lQAAAAAUgAAAAGbmFtZYYYC3sAAAGwAAAMcnBvc3T/rQAyAAAYpAAAACAAAQAAAAETM4jEIbRfDzz1AAMD6AAAAADSChlFAAAAANIKGUX/Kf7XBI8D7wADAAMAAgAAAAAAAAABAAAD2P7vAAAEsv8p/mIEjwPoAML/0AAAAAAAAAAAAAADWQAAUAADWQAAAAMB8AK8AAUAAAKKAlj/8QBLAooCWABEAV4AMgEpAAACCwcDAwQDCQIEIAAABwAAAAEAAAAAAAAAAEFEQk8AIQAg/v8C7v8GAAAD2AERIAABkwAAAAAB8AKUAAAAIAADAAAAJAG2AAEAAAAAAAAAcAAAAAEAAAAAAAEADwBwAAEAAAAAAAIACwB/AAEAAAAAAAMAJQCKAAEAAAAAAAQAGwCvAAEAAAAAAAUAOADKAAEAAAAAAAYAFAECAAEAAAAAAAcAYAEWAAEAAAAAAAgAGgF2AAEAAAAAAAkADAGQAAEAAAAAAAsAGQGcAAEAAAAAAA0BkAG1AAEAAAAAAA4AGgNFAAEAAAAAAQAADANfAAEAAAAAAQEACgNrAAEAAAAAAQIACwN1AAEAAAAAAQMACwOAAAEAAAAAAQQACQOLAAMAAQQJAAAA4AOUAAMAAQQJAAEAHgR0AAMAAQQJAAIAFgSSAAMAAQQJAAMASgSoAAMAAQQJAAQANgTyAAMAAQQJAAUAcAUoAAMAAQQJAAYAKAWYAAMAAQQJAAcAwAXAAAMAAQQJAAgANAaAAAMAAQQJAAkAGAa0AAMAAQQJAAsAMgbMAAMAAQQJAA0DIAb+AAMAAQQJAA4ANAoeAAMAAQQJAQAAGApSAAMAAQQJAQEAFApqAAMAAQQJAQIAFgp+AAMAAQQJAQMAFgqUAAMAAQQJAQQAEgqqQ29weXJpZ2h0IDIwMTAsIDIwMTIsIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQgKGh0dHA6Ly93d3cuYWRvYmUuY29tLyksIHdpdGggUmVzZXJ2ZWQgRm9udCBOYW1lINRTb3VyY2XVLlNvdXJjZSBTYW5zIFByb0JvbGQgSXRhbGljMS4wNzU7QURCTztTb3VyY2VTYW5zUHJvLUJvbGRJdDtBRE9CRVNvdXJjZSBTYW5zIFBybyBCb2xkIEl0YWxpY1ZlcnNpb24gMS4wNzU7UFMgMi4wO2hvdGNvbnYgMS4wLjg2O21ha2VvdGYubGliMi41LjYzNDA2U291cmNlU2Fuc1Byby1Cb2xkSXRTb3VyY2UgaXMgYSB0cmFkZW1hcmsgb2YgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQgaW4gdGhlIFVuaXRlZCBTdGF0ZXMgYW5kL29yIG90aGVyIGNvdW50cmllcy5BZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZFBhdWwgRC4gSHVudGh0dHA6Ly93d3cuYWRvYmUuY29tL3R5cGVUaGlzIEZvbnQgU29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIFNJTCBPcGVuIEZvbnQgTGljZW5zZSwgVmVyc2lvbiAxLjEuIFRoaXMgbGljZW5zZSBpcyBhdmFpbGFibGUgd2l0aCBhIEZBUSBhdDogaHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkwuIFRoaXMgRm9udCBTb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiDUQVMgSVPVIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBTSUwgT3BlbiBGb250IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSwgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIGdvdmVybmluZyB5b3VyIHVzZSBvZiB0aGlzIEZvbnQgU29mdHdhcmUuaHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkxTbGFzaGVkIHplcm9TdHJhaWdodCBsQWx0ZXJuYXRlIGFBbHRlcm5hdGUgZ1NlcmlmZWQgSQBDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADAALAAgADIAMAAxADIALAAgADIAMAAxADQAIABBAGQAbwBiAGUAIABTAHkAcwB0AGUAbQBzACAASQBuAGMAbwByAHAAbwByAGEAdABlAGQAIAAoAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAGQAbwBiAGUALgBjAG8AbQAvACkALAAgAHcAaQB0AGgAIABSAGUAcwBlAHIAdgBlAGQAIABGAG8AbgB0ACAATgBhAG0AZQAgIBgAUwBvAHUAcgBjAGUgGQAuAFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvAEIAbwBsAGQAIABJAHQAYQBsAGkAYwAxAC4AMAA3ADUAOwBBAEQAQgBPADsAUwBvAHUAcgBjAGUAUwBhAG4AcwBQAHIAbwAtAEIAbwBsAGQASQB0ADsAQQBEAE8AQgBFAFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvACAAQgBvAGwAZAAgAEkAdABhAGwAaQBjAFYAZQByAHMAaQBvAG4AIAAxAC4AMAA3ADUAOwBQAFMAIAAyAC4AMAA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADgANgA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADYAMwA0ADAANgBTAG8AdQByAGMAZQBTAGEAbgBzAFAAcgBvAC0AQgBvAGwAZABJAHQAUwBvAHUAcgBjAGUAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABBAGQAbwBiAGUAIABTAHkAcwB0AGUAbQBzACAASQBuAGMAbwByAHAAbwByAGEAdABlAGQAIABpAG4AIAB0AGgAZQAgAFUAbgBpAHQAZQBkACAAUwB0AGEAdABlAHMAIABhAG4AZAAvAG8AcgAgAG8AdABoAGUAcgAgAGMAbwB1AG4AdAByAGkAZQBzAC4AQQBkAG8AYgBlACAAUwB5AHMAdABlAG0AcwAgAEkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkAFAAYQB1AGwAIABEAC4AIABIAHUAbgB0AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAGQAbwBiAGUALgBjAG8AbQAvAHQAeQBwAGUAVABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABpAHMAIABsAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAFMASQBMACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMQAuADEALgAgAFQAaABpAHMAIABsAGkAYwBlAG4AcwBlACAAaQBzACAAYQB2AGEAaQBsAGEAYgBsAGUAIAB3AGkAdABoACAAYQAgAEYAQQBRACAAYQB0ADoAIABoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwALgAgAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAZABpAHMAdAByAGkAYgB1AHQAZQBkACAAbwBuACAAYQBuACAgGABBAFMAIABJAFMgGQAgAEIAQQBTAEkAUwAsACAAVwBJAFQASABPAFUAVAAgAFcAQQBSAFIAQQBOAFQASQBFAFMAIABPAFIAIABDAE8ATgBEAEkAVABJAE8ATgBTACAATwBGACAAQQBOAFkAIABLAEkATgBEACwAIABlAGkAdABoAGUAcgAgAGUAeABwAHIAZQBzAHMAIABvAHIAIABpAG0AcABsAGkAZQBkAC4AIABTAGUAZQAgAHQAaABlACAAUwBJAEwAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUAIABmAG8AcgAgAHQAaABlACAAcwBwAGUAYwBpAGYAaQBjACAAbABhAG4AZwB1AGEAZwBlACwAIABwAGUAcgBtAGkAcwBzAGkAbwBuAHMAIABhAG4AZAAgAGwAaQBtAGkAdABhAHQAaQBvAG4AcwAgAGcAbwB2AGUAcgBuAGkAbgBnACAAeQBvAHUAcgAgAHUAcwBlACAAbwBmACAAdABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUALgBoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAUwBsAGEAcwBoAGUAZAAgAHoAZQByAG8AUwB0AHIAYQBpAGcAaAB0ACAAbABBAGwAdABlAHIAbgBhAHQAZQAgAGEAQQBsAHQAZQByAG4AYQB0AGUAIABn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Af8CjwKMAooCjQIgAiQC6gImAmYCDAK4Ag8CKALrAokCswIwAjEC4QK7AiUCFALwAi8CaAINAqACoQKiAgEANgA3ADgAOQA6AD0ATABNAFYAVwBYAFoAcgBzAHQAdgDhAIoAjwCQAJEAkgCTAqsAngC6ALsAvAC+ANYA4gFlAOQA5QDmAOcA6ADrAPoA+wEEAQUBBgEIASABIQEiASQBkwE6AUABQQFCAUMBRAKsAU8BbAFtAW4BcAGIAZQBigA7AOkAPADqAEsA+QBOAPwATwD9AFEA/wBQAP4AUgEAAFUBAwBbAQkAXAEKAF0BCwBmARQAWQEHAGcBFQBoARYAaQEXAGoBGABuARwAcQEfAHUBIwB3ASUDNwM6AHwBKQB4ASsAfQEsAH4BLQEuAH8BLwCBATIAgAEwAIIBMQCGATYAiAE4AIsBOwCJATkBPwCUAUUDOAM7AJUBRgCfAVAApwFYAKkBWQCoAVoArQFeAK4BXwCwAWEArwFgALYBZwC1AWYAvQFvAL8BcQDAAXIAwQFzAMIBdADKAXwA0wGFANcBiQDYAN0BjwDfAZEA3gGQAKABUQDLAX0APgDsAHkBJgCWAUcAwwF1AMQBdgDFAXcAxgF4AMcBeQBrARkApgFXALEBYgC3AWgCcgJ6An8CgQNSAuwC7wLtAvEC6QLuAnQCewKAAvIC9AL2AvgC+gL8Av4DAAMCAwQDBgMIAxEDEgMUAmoCbAJtAnMCdQJ4AnwCfQBTAQEAVAECAGwBGgBvAR0AcAEeA0ADQQCDATMAhAE0AIUBNQCHATcAjAE8AI0BPQCOAT4AqgFbAKsBXACsAV0AsgFjALMBZAC4AWkAuQFqANEBgwDSAYQA1AGGANkBiwDgAZIAPwDtAEAA7gBBAO8AQgDwAEMA8QBEAPIARQDzAEYA9ABHAPUASAD2AEkA9wBKAPgAXgEMAF8BDQBgAQ4AYQEPAGIBEABjAREAZAESAGUBEwB6AScAewEoAJcBSACYAUkAmQFKAJoBSwCbAUwAnAFNAJ0BTgChAVIAogFTAKMBVACkAVUApQFWAMgBegDJAXsAzAF+AM0BfwDOAYAAzwGBANABggDVAYcA2gGMANsBjQDcAY4CEgIQAhECEwIEAgUCCAIGAgcCCQIiAiMCFQNVAp8CLgJxAjgCOQJ2ApUCjgLBAqoCrQK+AssC2QGZA1cDWANWAAAAAwAA//UAAP+1ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAEABAIAAQEBFVNvdXJjZVNhbnNQcm8tQm9sZEl0AAEBASr6jAD6jQH6jgwA+o8DgAwC+2v7vRwEj/qDBRws4A8cL0gR0R0AAKx4EgJ1AgABAAgADgAVABwAIwAqADEAOAA/AEYATQBUAFsAYgBpAHAAdgCBAIcAkQCXAJ4ApQCrALEAuAC+AMgAzwDWAN0A5ADrAPIA+QEAAQcBEgEYASIBKQEvATYBQQFMAVMBWgFeAWQBawF1AXwBgwGKAZEBnAGjAakBrwG2AboBwQHIAc8B1gHcAeIB6QHwAfcB/gIFAhICGQIgAicCLgI1AjwCQwJKAk8CVgJdAmQCawJyAnkCfwKFAowCkwKaAqECpwKyArkCwALHAs4C1QLbAuIC6QLwAvcC/QMEAwoDDwMcAyMDKgMxAzgDPwNGA00DVANZA2ADZwNuA3UDfAOCA4gDkwOcA6IDrQO0A7sDwgPJA88D2QPgA+cD7gP0A/sEAgQJBBAEFwQeBCUELAQzBDoEQQRIBE8EVgRcBGcEbQR3BH0EhASLBJEElwSeBKQErgS1BLwEwwTKBNEE2ATfBOYE7QT4BP4FCAUPBRUFHAUnBTIFOQVABUQFSgVRBVgFXwVmBW0FdgWBBYgFlAWaBaAFpAWrBbIFuQXABccFzQXTBdoF4QXoBe8F+gYBBg4GFQYcBiMGKgYxBjgGPwZGBksGUgZZBmAGZwZuBnUGewaCBogGjwaWBp0GowauBrUGvAbDBsoG0AbXBt4G5QbsBvMG+QcABwYHCwcYBx8HJgctBzQHOwdCB0kHUAdVB1wHYwdqB3EHeAd+B4QHjweYB54HqQewB7cHvgfFB8sH1QfcB+MH6gfxB/gH+wf+CAEICQgRCB4IJggxCDoIRghPCFgIYQhqCG0IdQh9CIoIkgidCKYIrgi1CL4IxwjQCNkI4gjrCPQI/QkGCQ8JGAkhCSoJMwk2CUMJSwlXCWAJaAlxCX4JgQmJCZEJlwmgCakJsgm7CcMJxwnQCdgJ4AnqCfMJ/AoECg4KGAohCioKMgo6CkQKTQpWCl4KaApyCnsKhAqMCpQKngqnCrAKuArCCswK1QrcCuMK6grxCvgLAQsJCxELGwskCy0LNQs/C0kLUgtgC28LeguEC40LlQudC6cLsAu5C8ELywvVC94L7Av7DAYMEAwZDCEMKQwzDDwMRQxNDFcMYQxqDHgMhwySDJwMpQytDLUMvwzIDNEM2QzjDO0M9g0EDRMNHg0oDTUNOw1BDUcNTQ1TDVkNXw1lDWsNcQ13DX0Ngw2JDY8NlQ2bDaENpw2tDbMNuQ2/DcUNyw3RDdwN5w3zDfkN/w4FDgkOEA4UDhsOIQ4lDiwOMw46DkEOSA5PDlkOYA5pDnUOfQ6IDooOkg6ZDqQOrA6zDroOwQ7KDtEO2A7hDugO7w72Dv8PBg8NDxQPGw8iDykPMA83Dz4PRQ9MD1MPWg9hD2gPbw92D30PhA+LD5IPmQ+gD6cPrg+1D7wPww/KD9UP3A/nD+4P+RAAEAsQEhAdECQQLxA2EEEQSBBTEFoQZRBsEHcQfhCJEJAQmxCiEK0QtBC7EMIQyRDQENcQ3hDpEPAQ+xECEQkRFBEjES4RPRFIEVcRYhFxEXwRixGWEaURsBG/EcoR2RHkEfMR/hINEhgSJxIyEkESShJTEloSYRJrEncSfhKFEowSkxKaEqESrBK7EsISyRLQEtcS3hLlEuwS8xL6EwETCBMPExYTHRMkEysTMRM4Ez8TRxNOE1kTaBNvE3YTeRPZFEkUWEFtYWNyb25BYnJldmV1bmkwMUNEdW5pMUVBMHVuaTFFQTJ1bmkxRUE0dW5pMUVBNnVuaTFFQTh1bmkxRUFBdW5pMUVBQ3VuaTFFQUV1bmkxRUIwdW5pMUVCMnVuaTFFQjR1bmkxRUI2QW9nb25la0NhY3V0ZUNjaXJjdW1mbGV4Q2Nhcm9uQ2RvdGFjY2VudERjYXJvbnVuaTFFMEN1bmkxRTBFRGNyb2F0RWNhcm9uRW1hY3JvbkVicmV2ZUVkb3RhY2NlbnR1bmkxRUI4dW5pMUVCQXVuaTFFQkN1bmkxRUJFdW5pMUVDMHVuaTFFQzJ1bmkxRUM0dW5pMUVDNkVvZ29uZWtHY2lyY3VtZmxleEdicmV2ZUdkb3RhY2NlbnR1bmkwMTIyR2Nhcm9udW5pMUUyMHVuaTAwNDcwMzAzSGNpcmN1bWZsZXh1bmkxRTI0dW5pMUUyQUhiYXJJdGlsZGVJbWFjcm9uSWRvdGFjY2VudHVuaTAxQ0Z1bmkxRUM4dW5pMUVDQUlvZ29uZWtKY2lyY3VtZmxleHVuaTAxMzZMYWN1dGVMY2Fyb251bmkwMTNCTGRvdHVuaTFFMzZ1bmkxRTM4dW5pMUUzQXVuaTFFNDJOYWN1dGVOY2Fyb251bmkwMTQ1dW5pMUU0NHVuaTFFNDZ1bmkxRTQ4T21hY3Jvbk9odW5nYXJ1bWxhdXR1bmkwMUQxdW5pMUVDQ3VuaTFFQ0V1bmkxRUQwdW5pMUVEMnVuaTFFRDR1bmkxRUQ2dW5pMUVEOE9ob3JudW5pMUVEQXVuaTFFREN1bmkxRURFdW5pMUVFMHVuaTFFRTJ1bmkwMUVBUmFjdXRlUmNhcm9udW5pMDE1NnVuaTFFNUF1bmkxRTVDdW5pMUU1RVNhY3V0ZVNjaXJjdW1mbGV4dW5pMDE1RXVuaTAyMTh1bmkxRTYwdW5pMUU2MnVuaTFFOUVUY2Fyb251bmkwMTYydW5pMDIxQXVuaTFFNkN1bmkxRTZFVXRpbGRlVW1hY3JvblVicmV2ZVVyaW5nVWh1bmdhcnVtbGF1dHVuaTAxRDN1bmkwMUQ1dW5pMDFEN3VuaTAxRDl1bmkwMURCdW5pMUVFNHVuaTFFRTZVb2dvbmVrVWhvcm51bmkxRUU4dW5pMUVFQXVuaTFFRUN1bmkxRUVFdW5pMUVGMFdncmF2ZVdhY3V0ZVdjaXJjdW1mbGV4V2RpZXJlc2lzWWdyYXZlWWNpcmN1bWZsZXh1bmkxRThFdW5pMUVGNHVuaTFFRjZ1bmkxRUY4WmFjdXRlWmRvdGFjY2VudHVuaTFFOTJ1bmkwMThGYW1hY3JvbmFicmV2ZXVuaTAxQ0V1bmkxRUExdW5pMUVBM3VuaTFFQTV1bmkxRUE3dW5pMUVBOXVuaTFFQUJ1bmkxRUFEdW5pMUVBRnVuaTFFQjF1bmkxRUIzdW5pMUVCNXVuaTFFQjdhb2dvbmVrY2FjdXRlY2NpcmN1bWZsZXhjY2Fyb25jZG90YWNjZW50ZGNhcm9udW5pMUUwRHVuaTFFMEZkY3JvYXRlY2Fyb25lbWFjcm9uZWJyZXZlZWRvdGFjY2VudHVuaTFFQjl1bmkxRUJCdW5pMUVCRHVuaTFFQkZ1bmkxRUMxdW5pMUVDM3VuaTFFQzV1bmkxRUM3ZW9nb25la2djaXJjdW1mbGV4Z2JyZXZlZ2RvdGFjY2VudHVuaTAxMjNnY2Fyb251bmkxRTIxdW5pMDA2NzAzMDNoY2lyY3VtZmxleHVuaTFFMjV1bmkxRTJCaGJhcml0aWxkZWltYWNyb251bmkwMUQwdW5pMUVDOXVuaTFFQ0Jpb2dvbmVraW9nb25lay5kamNpcmN1bWZsZXh1bmkwMTM3a2dyZWVubGFuZGljbGFjdXRlbGNhcm9ubGRvdHVuaTAxM0N1bmkxRTM3dW5pMUUzOXVuaTFFM0J1bmkxRTQzbmFjdXRlbmNhcm9udW5pMDE0NnVuaTFFNDV1bmkxRTQ3dW5pMUU0OW5hcG9zdHJvcGhlb21hY3Jvbm9odW5nYXJ1bWxhdXR1bmkwMUQydW5pMUVDRHVuaTFFQ0Z1bmkxRUQxdW5pMUVEM3VuaTFFRDV1bmkxRUQ3dW5pMUVEOW9ob3JudW5pMUVEQnVuaTFFRER1bmkxRURGdW5pMUVFMXVuaTFFRTN1bmkwMUVCcmFjdXRldW5pMDE1N3JjYXJvbnVuaTFFNUJ1bmkxRTVEdW5pMUU1RnNhY3V0ZXNjaXJjdW1mbGV4dW5pMDE1RnVuaTAyMTl1bmkxRTYxdW5pMUU2M3RjYXJvbnVuaTAxNjN1bmkwMjFCdW5pMUU2RHVuaTFFNkZ1bmkxRTk3dXRpbGRldW1hY3JvbnVicmV2ZXVyaW5ndWh1bmdhcnVtbGF1dHVuaTAxRDR1bmkwMUQ2dW5pMDFEOHVuaTAxREF1bmkwMURDdW5pMUVFNXVuaTFFRTd1b2dvbmVrdWhvcm51bmkxRUU5dW5pMUVFQnVuaTFFRUR1bmkxRUVGdW5pMUVGMXdncmF2ZXdhY3V0ZXdjaXJjdW1mbGV4d2RpZXJlc2lzeWdyYXZleWNpcmN1bWZsZXh1bmkxRThGdW5pMUVGNXVuaTFFRjd1bmkxRUY5emFjdXRlemRvdGFjY2VudHVuaTFFOTN1bmkwMjM3dW5pMDI1MXVuaTAyNTl1bmkwMjYxZl9mZl90SS5hSWdyYXZlLmFJYWN1dGUuYUljaXJjdW1mbGV4LmFJdGlsZGUuYUlkaWVyZXNpcy5hSW1hY3Jvbi5hSWRvdGFjY2VudC5hdW5pMDFDRi5hdW5pMUVDOC5hdW5pMUVDQS5hSW9nb25lay5hYS5hYWdyYXZlLmFhYWN1dGUuYWFjaXJjdW1mbGV4LmFhdGlsZGUuYWFkaWVyZXNpcy5hYW1hY3Jvbi5hYWJyZXZlLmFhcmluZy5hdW5pMDFDRS5hdW5pMUVBMS5hdW5pMUVBMy5hdW5pMUVBNS5hdW5pMUVBNy5hdW5pMUVBOS5hdW5pMUVBQi5hdW5pMUVBRC5hdW5pMUVBRi5hdW5pMUVCMS5hdW5pMUVCMy5hdW5pMUVCNS5hdW5pMUVCNy5hYW9nb25lay5hZy5hZ2NpcmN1bWZsZXguYWdicmV2ZS5hZ2RvdGFjY2VudC5hdW5pMDEyMy5hZ2Nhcm9uLmF1bmkxRTIxLmF1bmkwMDY3MDMwMy5hbC5hbGFjdXRlLmFsY2Fyb24uYWxkb3QuYXVuaTAxM0MuYXVuaTFFMzcuYXVuaTFFMzkuYXVuaTFFM0IuYWxzbGFzaC5hZmwuYXplcm8ucG51bW9uZS5wbnVtdHdvLnBudW10aHJlZS5wbnVtZm91ci5wbnVtZml2ZS5wbnVtc2l4LnBudW1zZXZlbi5wbnVtZWlnaHQucG51bW5pbmUucG51bXplcm8udG51bW9uZS50bnVtdHdvLnRudW10aHJlZS50bnVtZm91ci50bnVtZml2ZS50bnVtc2l4LnRudW1zZXZlbi50bnVtZWlnaHQudG51bW5pbmUudG51bXplcm8ub251bW9uZS5vbnVtdHdvLm9udW10aHJlZS5vbnVtZm91ci5vbnVtZml2ZS5vbnVtc2l4Lm9udW1zZXZlbi5vbnVtZWlnaHQub251bW5pbmUub251bXVuaTAwQUR1bmkyMDE1dW5pMjExN3VuaTIxMjBhdC5jYXNlemVyby5zdXBzb25lLnN1cHN0d28uc3Vwc3RocmVlLnN1cHNmb3VyLnN1cHNmaXZlLnN1cHNzaXguc3Vwc3NldmVuLnN1cHNlaWdodC5zdXBzbmluZS5zdXBzcGFyZW5sZWZ0LnN1cHNwYXJlbnJpZ2h0LnN1cHNwZXJpb2Quc3Vwc2NvbW1hLnN1cHN6ZXJvLnN1YnNvbmUuc3Vic3R3by5zdWJzdGhyZWUuc3Vic2ZvdXIuc3Vic2ZpdmUuc3Vic3NpeC5zdWJzc2V2ZW4uc3Vic2VpZ2h0LnN1YnNuaW5lLnN1YnNwYXJlbmxlZnQuc3Vic3BhcmVucmlnaHQuc3Vic3BlcmlvZC5zdWJzY29tbWEuc3Vic3plcm8uZG5vbW9uZS5kbm9tdHdvLmRub210aHJlZS5kbm9tZm91ci5kbm9tZml2ZS5kbm9tc2l4LmRub21zZXZlbi5kbm9tZWlnaHQuZG5vbW5pbmUuZG5vbXBhcmVubGVmdC5kbm9tcGFyZW5yaWdodC5kbm9tcGVyaW9kLmRub21jb21tYS5kbm9temVyby5udW1yb25lLm51bXJ0d28ubnVtcnRocmVlLm51bXJmb3VyLm51bXJmaXZlLm51bXJzaXgubnVtcnNldmVuLm51bXJlaWdodC5udW1ybmluZS5udW1ycGFyZW5sZWZ0Lm51bXJwYXJlbnJpZ2h0Lm51bXJwZXJpb2QubnVtcmNvbW1hLm51bXJvcmRmZW1pbmluZS5hYS5zdXBzYi5zdXBzYy5zdXBzZC5zdXBzZS5zdXBzZi5zdXBzZy5zdXBzaC5zdXBzaS5zdXBzai5zdXBzay5zdXBzbC5zdXBzbS5zdXBzbi5zdXBzby5zdXBzcC5zdXBzcS5zdXBzci5zdXBzcy5zdXBzdC5zdXBzdS5zdXBzdi5zdXBzdy5zdXBzeC5zdXBzeS5zdXBzei5zdXBzZWdyYXZlLnN1cHNlYWN1dGUuc3Vwc3VuaTAyNTkuc3Vwc2Euc3VwYWcuc3VwYWwuc3VwYUV1cm91bmkwMTkybGlyYXVuaTIwQTZwZXNldGFkb25ndW5pMjBCMXVuaTIwQjJ1bmkyMEI1dW5pMjBCOXVuaTIwQkF1bmkyMjE1c2xhc2guZnJhY3VuaTIyMTlsZXNzZXF1YWxncmVhdGVyZXF1YWxub3RlcXVhbGFwcHJveGVxdWFscGlpbmZpbml0eXVuaTAwQjVwYXJ0aWFsZGlmZmludGVncmFscmFkaWNhbHVuaTIyMDZ1bmkyMTI2c3VtbWF0aW9ucHJvZHVjdHVuaTIxMTNlc3RpbWF0ZWR1bmkyMTkwYXJyb3d1cHVuaTIxOTJhcnJvd2Rvd251bmkyNUEwdW5pMjVDNnVuaTI1Qzl1bmkyNzUydHJpYWd1cHVuaTI1QjN1bmkyNUI2dW5pMjVCN3RyaWFnZG51bmkyNUJEdW5pMjVDMHVuaTI1QzF1bmkyNjEwdW5pMjYxMXVuaTI3MTN1bmkyNjZBbG96ZW5nZXVuaTIwMzJ1bmkyMDMzdW5pMDJCQnVuaTAyQkN1bmkwMkJFdW5pMDJCRnVuaTAyQzh1bmkwMkM5dW5pMDJDQXVuaTAyQ0J1bmkwMkNDdW5pMDMwMHVuaTAzMDAuY2FwdW5pMDMwMXVuaTAzMDEuY2FwdW5pMDMwMnVuaTAzMDIuY2FwdW5pMDMwM3VuaTAzMDMuY2FwdW5pMDMwNHVuaTAzMDQuY2FwdW5pMDMwNnVuaTAzMDYuY2FwdW5pMDMwN3VuaTAzMDcuY2FwdW5pMDMwOHVuaTAzMDguY2FwdW5pMDMwOXVuaTAzMDkuY2FwdW5pMDMwQXVuaTAzMEEuY2FwdW5pMDMwQnVuaTAzMEIuY2FwdW5pMDMwQ3VuaTAzMEMuY2FwdW5pMDMwRnVuaTAzMEYuY2FwdW5pMDMxMnVuaTAzMTN1bmkwMzFCdW5pMDMyM3VuaTAzMjR1bmkwMzI2dW5pMDMyN3VuaTAzMjcuY2FwdW5pMDMyOHVuaTAzMjguY2FwdW5pMDMyRXVuaTAzMzF1bmkwMzA4MDMwNHVuaTAzMDgwMzA0LmNhcHVuaTAzMDgwMzAxdW5pMDMwODAzMDEuY2FwdW5pMDMwODAzMEN1bmkwMzA4MDMwQy5jYXB1bmkwMzA4MDMwMHVuaTAzMDgwMzAwLmNhcHVuaTAzMDIwMzAxdW5pMDMwMjAzMDEuY2FwdW5pMDMwMjAzMDB1bmkwMzAyMDMwMC5jYXB1bmkwMzAyMDMwOXVuaTAzMDIwMzA5LmNhcHVuaTAzMDIwMzAzdW5pMDMwMjAzMDMuY2FwdW5pMDMwNjAzMDF1bmkwMzA2MDMwMS5jYXB1bmkwMzA2MDMwMHVuaTAzMDYwMzAwLmNhcHVuaTAzMDYwMzA5dW5pMDMwNjAzMDkuY2FwdW5pMDMwNjAzMDN1bmkwMzA2MDMwMy5jYXB1bmkwMzBDLmF1bmkwMzI2LmF1bmkwMEEwdW5pMjAwN3NwYWNlLmZyYWNuYnNwYWNlLmZyYWN1bmkwMjQzdW5pMDEyQ3VuaTAxNEV1bmkwMTgwdW5pMDEyRHVuaTAxNEZ1bmkwMzAyMDMwNnVuaTAzMDIwMzA2LmNhcHVuaTFFMDZ1bmkxRTA3dW5pMUUzNHVuaTFFMzV1bmkxRTE2dW5pMUUxN3VuaTFFNTJ1bmkxRTUzdW5pMjMxQ3VuaTIzMUR1bmkyMzFFdW5pMjMxRnVuaTJFMjJ1bmkyRTIzdW5pMkUyNHVuaTJFMjV6ZXJvLjB6ZXJvLjBzemVy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ASb/3QHr//gCXAAcAfQAHAH0ABwB9AAcAfQAHAH0ABwB9AAcAfQAHAH0/+4C5AAcAoMAHAKDABwCgwAcAoMAHAKDABwCgwAcAoMAHAKUADkClAA5ApQAOQKUADkClAA5ApQAOQKUADkClAA5ApQAOQKUADkClAA5ApQAOQKUADkClAA5ApQAOQKU//YDQQA5ApQAOQKUADkClAA5ApQAOQKUADkClAA5ApQAOQJUABwCVAAcAlQAHAJUABwCVAAcAlQAHAIRAAUCEQAFAhEABQIRAAUCEQAFAhEABQIRAAUCnwAcAhQAVAIUAEsCFABMAhQAVAIUACYCgwBLAoMASwKDAEsCgwBLAoMASwKDAEsCgwBLAoMASwKDAEsCgwBLAoMASwKDAEsCgwBLAoMASwKDAEsCgwBLAoMASwKaAEsCmgBLApoASwKaAEsCmgBLApoASwMaAE0DGgBNAxoATQMaAE0B/QBQAf0AUAH9AFAB/QBQAf0AUAH9AFAB/QBQAf0AUAIN//sCDf/7Ag3/+wIN//sCegAmAlMAHAKcAEECKAAfAigAHwIoAB8CKAAfAigAHwIoAB8CKAAfAigAHwIoAB8CKAAfAigAHwIoAB8CKAAfAigAHwIoAB8CKAAfAigAHwIoAB8CKAAfAigAHwIoAB8CKAAfAvIAFgG7AB0BuwAdAbsAHQG7AB0BuwAdAjkAHwIiAB8CIgAfAiYAHwHwAB0B8AAdAfAAHQHwAB0B8AAdAfAAHQHwAB0B8AAdAfAAHQHwAB0B8AAdAfAAHQHwAB0B8AAdAfAAHQHwAB0B8AAdAiL/9AIi//QCIv/0AiL/9AIi//QCIv/0AiL/9AIiAA4CIgAOAiIADgIiAA4BCQAOAQkADgEJAA4BCQAKAQkADgEJAA4BCQAOAQkADgEJ/+sBCf/ZAQn/2QEJAA4BC/99Ag0ADgINAA4BEwAlARkAJQGlACUBE//JARP/6AET/+gBE/+jAR0AAQM7AA4CKAAOAigADgIoAA4CKAAOAigADgIoAA4CKAAOAzYAawIVAB4CFQAeAhUAHgIVAB4CFQAeAhUAHgIVAB4CFQAeAhUAHgIVAB4CFQAeAhUAHgIVAB4CFQAeAhUAHgIVAAADHgAeAhoAHgIaAB4CGgAeAhoAHgIaAB4CGgAeAhUAHgGAAA4BgP/LAYAADgGA/+oBgP/qAYD/pQGo//gBqP/4Aaj/+AGo//gBqP/4Aaj/+AGo//gCYQAOAW8ALwFvACcBbwAlAW8ALwFv//8BbwAvAiEAJwIhACcCIQAnAiEAJwIhACcCIQAnAiEAJwIhACcCIQAnAiEAJwIhACcCIQAnAiEAJwIhACcCIQAnAiEAJwIhACcCNwAnAjcAJwI3ACcCNwAnAjcAJwI3ACcC7ABIAuwASALsAEgC7ABIAfP/3QHz/90B8//dAfP/3QHz/90B8//dAfP/3QHz/90Bu//2Abv/9gG7//YBu//2AhkAIgIp/+kBC/99AigAHwHsABYCIv/0AnEAJAKKACQBbv/6AW7/+gFu//oBbv/6AW7/+gFu//oBbv/6AW7/+gFu//oBbv/6AW7/+gFu//oCAgAWAgIAFgICABYCAgAWAgIAFgICABYCAgAWAgIAFgICABYCAgAWAgIAFgICABYCAgAWAgIAFgICABYCAgAWAgIAFgICABYCAgAWAgIAFgICABYCAgAWAgIAFgH2/+YB9v/mAfb/5gH2/+YB9v/lAfb/5gH2/+YB9v/mAQkADgEJAA4BGQAOAaUADgEJ/8gBCf/nAQn/5wEJ/6IBHAABAlAAJAJ5AA4B/QAmAf0AEwH9//MB/f/wAf0ACAH9//kB/QAyAf0AYwH9ACUB/QALAh4AJgF6AEYB6//zAen/6wILABEB6f/wAf0AMgHgAFcB/QAlAf0ACwH9ACAB/QATAf3/8wH9/+YB/f/+Af3/5gH9ADIB/QBSAf0AJQH9//wB/QAgAXcAPgHf//MB/f/mAf3//gH9/+YB/QAyAeAARgH9ACUB/f/8ASMAGAEj/+UBIwAYASP/5QPQAEYBSwAtAUsAEQG8AFoBvP//ASMAeQH+AHkBIwBhASMAawH+AGEB/gBrASMAAQH+AAEBEAAoARAAGwHNACgBzQAbAUAAIQFAACEB0AAiAwMAIgH9ACIDAwAiASMATAFKACcB4f/RAUkAOAFL/98BSv/9AUv/4wFIABoBS//aAUn/uwD/AFgBSQBVAP8AWAG2AGUB6ABRAegACwH5AAECYABFAqAAHgKgAB4BvABRAowASAKCACIDYgArA0IAVwH6ABIBeQBQAXgAnQFsAD8BaABCAWwAPwFoAEIBaQBWAWwAgQFqAEsBagBEAP8AawD9ACkAxwBDAMcAIQF5/+UBeAAy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MDQBznNzMDQB1HNzMDUB2nNzMDUB4HN1YnMB5nN1YnMB7HN1cHMB8nN1cHMB+nplcm8CAnplcm8CCAAAAAIAAAABAAAAAgAAAAEAAAABABMAAAABABMAAAAFAAMABAAFAAYABwAAAAUAAwAEAAUABgAHAAAAAQAJAAAAAQAJAAAAAwAIAAoACwAAAAMACAAKAAsAAAABABgAAAABABgAAAABAAgAAAABAAgAAAABABAAAAABABAAAAABAAwAAAABAAwAAAABAA8AAAABAA8AAAAEABQAFQAWABcAAAAEABQAFQAWABcAAAABAA4AAAABAA4ElgABABQEkAABABQEqAABABUEogABABUE2AABABYE0gABABYE6AABABcE4gABABcESAABABEEQgABABEAAAABAA4AAAABAA4AAAACAAwADQAAAAIADAANAAAAAQASAAAAAQASABsAOABAAEgAUABaAGQAbAB0AHwAhACMAJQAoACoALAAuADAAMgA0ADYAOAA6ADwAPgBAAEIARAAAQAAAAEErAADAAAAAQWqAAIAAAABANAABgAAAAIBDgEgAAYAAAACASgBPAAEAAAAAQFEAAQAAAABAbYABgAAAAECfAABAAAAAQKGAAEAAAABAqAAAQAAAAECugAGAAAAAwK4AsoC3AABAAAAAQLkAAEAAAABAxwAAQAAAAEDNgABAAAAAQNQAAEAAAABA04AAQAAAAEDUAABAAAAAQNSAAEAAAABA1QAAQAAAAEDVgABAAAAAQNsAAEAAAABA6AAAQAAAAEDtAAEAAAAAQPKAAQAAAABBdAAAQAAAAEF2gABBjIACAAWABwAIgAoAC4ANAA6AEAAAgAGAvYAAgAGAvoAAgAQAvYAAgAQAvoAAgAgAvYAAgAgAvoAAgAqAvYAAgAqAvoAAwAAAAEGAAABBgwAAQAAAAIAAwAAAAEGAAABBgwAAQAAAAIAAwAAAAIGAAYGAAEF+gABAAAAGQADAAAAAQX4AAEF5gABAAAAGgABBewAAwAMADYAWAAFAAwAEgAYAB4AJAMiAAIC8gMgAAIC9AMmAAIC+AM8AAIC/AMkAAIDAgAEAAoAEAAWABwDKgACAvIDKAACAvQDLgACAvgDLAACAwIABAAKABAAFgAcAx4AAgLyAxoAAgL0AxgAAgL6AxwAAgMIAAEFfAAQACYAMAA6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APIA8gCqAPgA1ACqAM4AzgBuAP4BBAEEAQoAmAABAHACBgABAGkCBgABAEYCBgABAUoCBgABAOkC2gABAUACBgABAgIC2gABAUEC5AABAUICBgABAOUC2gABAOkC0gABAOoC2gABAe8CBgABAWYCBgABAUsCBgABAWgCBgABAVgCBgABARgCBgABARYCBgABAPcCkwABAUgCBgABATsCBgABAbACBgABATYCBwABASkCBgABASICBgABAMACBgABAbwB9gABAL8CBgABATYCBgABASMCBgABHl4elgABAAwAdgAaAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAC6AAAAugAAALoAAAC6AAAAwAAAAMAAAAC6AAAAwAAAAMYAJwBiAGgAbgB0AHoAgACGAIwAkgCYAJ4ApACqALAAtgC8ALYAvADCAMgAngDOANQA2gDgAOYAYgDsAHoAkgDyAPgA/gC2AJ4AngEEAQoBCgABAIcCqgABAIgCqgABAHoCqgABAXYCqgABAWICqgABAboCqgABAZMCqgABAXkCqgABAXgCqgABAbUCqgABAZ4CqgABAPACqgABAbgCqgABAaYCqgABAP8CqgABAcACqgABAaoCqgABAa0CqgABAYoCqgABAXQCsQABAWkCqgABAXsCqgABAesCqgABAXcCqgABAVsCqgABAW4CqgABAkYCtgABAbICqgABAkQCqgABAaICqgABAdwCqgABARQCqgABHVAdWAABAAwAFgACAAAAGAAAABgABgAUABoAIAAmACwAMgABAAAAAAABASIAAAABAPgAAAABAN8AAAABAM4AAAABAKkAAAABALUAAAABHRodKAABAAwAIgAFAAAAlAAAAJQAAACUAAAAlAAAAJQAPgCEAIoAkACWAJwAogCoAJYArgC0ALoAwADGAMwA0gDYAN4A5ADqAPAA9gD8AN4BAgEIAQ4BFAEaASABJgEsATIBOAE+AUQBSgFQAVYBIAFcAWIBaAFuAXQBegGAAYYBjAGSAZgBngGkAaoBsAE+AVwBgAEUAbYBJgG8AVAAAf/6/+IAAQDt/+oAAQEK/+oAAQEc/+oAAQEe/+oAAQD3/+oAAQBm/+oAAQE8/+oAAQBm/+kAAQCh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AAYAzwDQAAYA0QDUAAoA1QDaAAwA3ADcAAwA3QDgABIA4QDhAAEA4wDjABgA5ADtABQA7wDwABQA8gD1ABQA9wD5ABQA+gD6ABMA+wEMABQBDgEQABQBEgEbABQBLAEsAAQBQAFIABQBSgFLABQBTQFTABQBVQFXABQBZgFrABkBbAF6ABoBfAF/ABoBgQGCABoBgwGGAAkBhwGMAAsBjgGOAAsBlQGVAAQBmAGYABQBmQGaABUBpwGxABMBswG0ABMBtgG5ABMBuwG9ABMBvgHFAAIBzwHPABUCBQIFAA0CBwIHAA0C3QLdAA0DNgM2AAEDOAM4ABYDOwM7ABQDQwNDABQDRANEABYDRQNFABQDVwNYABUAAgCTAAIAAgACAAMAAwADAAQABAAGAAUABQAcAAcABwAKAAgACAAQAAsACwATAAwADAAVAA0ADQAYABAAEAAcABEAEQAfABIAEgAcABMAEwAlABQAFAAnABUAFQAqABYAFgAtABcAFwAvABgAGAAxABkAGQAzABoAGgA1ABsAGwA3ABwAHAABAB0AHQAbAB4AHgAFACAAIAAIACEAIQAJACIAIgABACMAIwASACYAJgAUACgAKQASACoAKwAbACwALAABAC0ALQAkAC4ALgAmAC8ALwApADAAMAABADEAMQAuADIAMgAwADMAMwAyADQANAA0ADUANQA2ADYAPwACAEEAQgACAEQARwACAEkASwACAE0AUQAGAFIAVQAcAGcAbQAQAHEAcQARAH0AfQATAH4AfgAVAH8AfwAYAIAAgAAXAIEAhgAYAI8AlwAcAJkAmgAcAJwAngAcAKAAogAaAKQApQAaAKYApgAcAKcArAAlAK0AswAnALQAtAAMALUAuQAqALoAyAAtAMoAygAtAMsAzQAsAM8A0AAsANEA1AAxANUA2gA1ANwA3AA1AN0A4AA3AOEA4QAcAOIA4gAoAOMA4wAcAOQA7QABAO8A8AABAPIA9QABAPcA+QABAPoA+gAIAPsA/wAFAQABAAAWAQQBDAAIAQ4BEAAIARIBFAAIARUBGwABARwBHwASASsBKwABAS0BLgAUATABMAAWATcBPwASAUABSAAbAUoBSwAbAU0BTwAbAVABUAAIAVEBUwAZAVUBVgAZAVcBVwAbAVgBXQAkAV4BZAAmAWUBZQALAWYBawApAWwBegABAXwBfAABAX0BfwArAYEBggArAYMBhgAwAYcBjAA0AY4BjgA0AY8BkgA2AZQBlAAbAZcBlwAbAZgBmAABAZkBmQAJAZoBmgApAb4BxQAPAcgByAAWAfkB+gAeAfsB/AAEAf0B/QAeAgICAwAgAgQCBAAiAgUCBQAjAgYCBgAiAgcCBwAjAggCCQAhAgoCCgANAgsCCwAOAgwCDAANAg0CDQAOAg4CEwAHAhcCFwAdAhkCGQAdAhsCGwAdAtwC3AAiAt0C3QAjAzYDNgADAzgDOAAcAzkDOQAbAzsDOwAbAz4DPgADAz8DPwAbA0ADQAAVA0EDQQAUA0MDQwAIA0QDRAAcA0UDRQAbAAIAeQACAAIAJQAEAAQACAAIAAgACAALAAsAGQAQABAACAASABIACAAUABQACwAVABUAAgAWABYADgAXABcAAwAYABgAEQAZABkAIAAaABoABAAbABsAEwAcABwAHAAeACAAHAAhACEABgAiACIAHAAlACUABwAoACkAJgAqACoAHAArACsAJgAsACwAHAAtAC0AJgAuAC4AJwAvAC8ADAAwADAADQAxADEADwAyADIAEAAzADMAGgA0ADQAEgA1ADUAKAA2AD8AJQBBAEIAJQBEAEcAJQBJAEsAJQBNAFEACABnAG0ACAB9AH0AGQCPAJcACACZAJoACACcAKIACACkAKYACACtALMACwC1ALkAAgC6AMgADgDKAM0ADgDPANAADgDRANQAEQDVANoABADcANwABADdAOAAEwDkAO0AHADvAPAAHADyAPUAHAD3APkAHAD6APoAGwD7AQwAHAEOARAAHAESARsAHAErASsAJgEsASwABwEuAS4AJgE3AT4AJgFAAUgAHAFKAUsAHAFNAVMAHAFVAVcAHAFYAV0AJgFeAWQAJwFmAWsADAFsAXoADQF8AX8ADQGBAYIADQGDAYYAEAGHAYwAEgGOAY4AEgGPAZIAKAGVAZUABwGYAZgAHAGZAZoABgGnAbEAGwGzAbQAGwG2AbkAGwG7Ab0AGwG+AcUAHgHPAc8ABgH5AfoAIgH7AfwAKwH9Af0AIgH+Af4AIwH/Af8AKQIAAgAAFgIBAgEAKgICAgMACQIEAgQACgIFAgUAAQIGAgYACgIHAgcAAQIKAgoAHwILAgsALAIMAgwAHwINAg0ALAIOAhMAHQIUAhQAFQIYAhgAIQIaAhoAIQIcAhwAIQIdAh0AJAIfAh8AFAIhAiEABQIoAigAFwIpAikAGALcAtwACgLdAt0AAQM4AzgACAM7AzsAHANDA0MAHANEA0QACANFA0UAHANXA1gABgAAAAEAAAAIAAAABAAOAAJpZGVvcm9tbgAEREZMVAAaY3lybAAaZ3JlawAabGF0bgAaAAYAAAAAAAEAAgAIAAwAAf9WAAEAAAAAAAAAAQABAAEAAAABAAAZAQAAABQAAAAAAAAY+TCCGPUGCSqGSIb3DQEHAqCCGOYwghjiAgEBMQswCQYFKw4DAhoFADBhBgorBgEEAYI3AgEEoFMwUTAsBgorBgEEAYI3AgEcoh6AHAA8ADwAPABPAGIAcwBvAGwAZQB0AGUAPgA+AD4wITAJBgUrDgMCGgUABBRdrUDGgqxi4GNqDdzKQEDhhUMhZKCCE64wggPuMIIDV6ADAgECAhB+k+v7fMZOWepLmnfUBvw7MA0GCSqGSIb3DQEBBQUAMIGLMQswCQYDVQQGEwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRQwEgYDVQQHEwtEdXJiYW52aWxsZTEPMA0GA1UEChMGVGhhd3RlMR0wGwYDVQQLExRUaGF3dGUgQ2VydGlmaWNhdGlvbjEfMB0GA1UEAxMWVGhhd3RlIFRpbWVzdGFtcGluZyBDQTAeFw0xMjEyMjEwMDAwMDBaFw0yMDEyMzAyMzU5NTlaMF4xCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEwMC4GA1UEAxMnU3ltYW50ZWMgVGltZSBTdGFtcGluZyBTZXJ2aWNlcyBDQSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsayzSVRLlxwSCtgleZEiVypv3LgmxENza8K/LlBa+xTCdo5DASVDtKHiRfTot3vDdMwi17SUAAL3Te2/tLdEJGvNX0U70UTOQxJzF4KLabQry5kerHIbJk1xH7Ex3ftRYQJTpqr1SSwFeEWlL4nO55nn/oziVz89xpLcSvh7M+R5CvvwdYhBnP/FA1GZqtdsn5Nph2Upg4XCYBTEyMk7FNrAgfAfDXTekiKryvf7dHwn5vdKG3+nw54trorqpuaqJxZ9YfeYcRG84lChS+Vd+uUOpyyfqmUg09iW6Mh8pU5IRP8Z4kQHkgvXaISAXWp4ZEXNYEZ+VMETfMV58cnBcQIDAQABo4H6MIH3MB0GA1UdDgQWBBRfmvVuXMzMdJrU3X3vP9vsTIAu3TAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnRoYXd0ZS5jb20wEgYDVR0TAQH/BAgwBgEB/wIBADA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLnRoYXd0ZS5jb20vVGhhd3RlVGltZXN0YW1waW5nQ0EuY3JsMBMGA1UdJQQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIBBjAoBgNVHREEITAfpB0wGzEZMBcGA1UEAxMQVGltZVN0YW1wLTIwNDgtMTANBgkqhkiG9w0BAQUFAAOBgQADCZuPee9/WTCq72i1+uMJHbtPggZdN1+mUp8WjeockglEbvVt61h8MOj5aY0jcwsSb0eprjkR+Cqxm7Aaw47rWZYArc4MTbLQMaYIXCp6/OJ6HVdMqGUY6XlAYiWWbsfHN2qDIQiOQerd2Vc/HXdJhyoWBl6mOGoiEqNRGYN+tjCCBKMwggOLoAMCAQICEA7P9DjI/r81bgTYapgbGlAwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1hbnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0gRzIwHhcNMTIxMDE4MDAwMDAwWhcNMjAxMjI5MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xNDAyBgNVBAMTK1N5bWFudGVjIFRpbWUgU3RhbXBpbmcgU2VydmljZXMgU2lnbmVyIC0gRzQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCiYws5RLi7I6dESbsO/6HwYQpTk7CY260sD0rFbv+GPFNVDxXOBD8r/amWltm+YXkLW8lMhnbl4ENLIpXuwitDwZ/YaLSOQE/uhTi5EcUj8mRY8BUyb05Xoa6IpALXKh7NS+HdY9UXiTJbsF6ZWqidKFAOF+6W22E7RVEdzxJWC5JH/Kuu9mY9R6xwcueS51/NELnEg2SUGb0lgOHo0iKl0LoCeqF3k1tlw+4XdLxBhircCEyMkoyRLZ53RB9o1qh0d9sOWzKLVoszvdljyEmdOsXF6jML0vGjG/SLvtmzV4s73gSneiKyJK4ux3DFvk6DJgj7C72pT5kI4RAocqrNAgMBAAGjggFXMIIBUzAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIHgDBzBggrBgEFBQcBAQRnMGUwKgYIKwYBBQUHMAGGHmh0dHA6Ly90cy1vY3NwLndzLnN5bWFudGVjLmNvbTA3BggrBgEFBQcwAoYraHR0cDovL3RzLWFpYS53cy5zeW1hbnRlYy5jb20vdHNzLWNhLWcyLmNlcjA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vdHMtY3JsLndzLnN5bWFudGVjLmNvbS90c3MtY2EtZzIuY3JsMCgGA1UdEQQhMB+kHTAbMRkwFwYDVQQDExBUaW1lU3RhbXAtMjA0OC0yMB0GA1UdDgQWBBRGxmmjDkoUHtVM2lJjFz9eNrwN5jAfBgNVHSMEGDAWgBRfmvVuXMzMdJrU3X3vP9vsTIAu3TANBgkqhkiG9w0BAQUFAAOCAQEAeDu0kSoATPCPYjA3eKOEJwdvGLLeJdyg1JQDqoZOJZ+aQAMc3c7jecshaAbatjK0bb/0LCZjM+RJZG0N5sNnDvcFpDVsfIkWxumy37Lp3SDGcQ/NlXTctlzevTcfQ3jmeLXNKAQgo6rxS8SIKZEOgNER/N1cdm5PXg5FRkFuDbDqOJqxOtoJcRD8HHm0gHusafT9nLYMFivxf1sJPZtb4hbKE4FtAC44DagpjyzhsvRaqQGvFZwsL0kb2yK7w/54lFHDhrGCiF3wPbRRoXkzKy57udwgCRNx62oZW8/opTBXLIlJP7nPf8m/PiJoY1OavWl0rMUdPH+S4MO8HNgEdTCCBWowggRSoAMCAQICEGxZ76nhAOEO4wa6j+ApJVkwDQYJKoZIhvcNAQEFBQAwgcoxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDIwMDYgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc1MB4XDTEyMDYwNzAwMDAwMFoXDTIyMDYwNjIzNTk1OVowgYwxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazE9MDsGA1UEAxM0U3ltYW50ZWMgQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIENvZGUgU2lnbmluZyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAItDr6HEqE3N0O7HNsCginlzKNh35cBUxzX3u+0bn+pXcNNVGycZqcvgAQWuBfKt5wYd0QaorYe5GIQvHh0JYtPdDfUXtDBvXlJ2FoxWe8WQOoJ9ta1Y5gDnGAU27TAgofDsw2L0mRAalPbwV2jJcja9fJCoFhYgpUkBUTKglvOKMDirhqEVo/IcIFdQS7hk0rFs5uQ8tgghxEtAlhezy2fbhkHZW/6YHUQkOuhpoRoka7NIFPP0DoPFTTH7va+uITxi6+ra2J3X7JEes8NEHlQdgpvtWRPuMHDjbJThLAfTj4zqYclcq0uYKoe52j43gwowurVEmP3vvaqANbFcrfcCAwEAAaOCAYYwggGCMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AudmVyaXNpZ24uY29tMBIGA1UdEwEB/wQIMAYBAf8CAQAwZQYDVR0gBF4wXDBaBgRVHSAAMFIwJgYIKwYBBQUHAgEWGmh0dHA6Ly93d3cuc3ltYXV0aC5jb20vY3BzMCgGCCsGAQUFBwICMBwaGmh0dHA6Ly93d3cuc3ltYXV0aC5jb20vcnBhMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDAzAOBgNVHQ8BAf8EBAMCAQYwKgYDVR0RBCMwIaQfMB0xGzAZBgNVBAMTElZlcmlTaWduTVBLSS0yLTIxNDAdBgNVHQ4EFgQUo47PGUI9MeGrIYmEbcvZeaKyslowHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJKoZIhvcNAQEFBQADggEBAGrzHbxfTd4D+UlJHa09dhyWuhtD5vSGAkJ1eMcMwuWdxDRPDqnpSrS+QYSH6vSHtEzbEEk7998VkLqE+LdH61tlUPOjSnEQFnsc4fXW7b9QVm/4mbOpUbZGrsaX4OebDBU+uyh7MaMA8y6Lh0gSiYLvCV9JDJCeyPaWo3uadRPIR/A+P28LUClsK3hMMPzkYAwTQNY4dakHeWT9yjzk70iTC+AKSP8HazsCg9Fm1bnhmPQOn2nELlUuAZZ9foQMgHZ1Nsv9RmH0acwanWQrugRu6RFS2hKZoVqwg8S8R4CmJ00AejYDPL5hmGPLnwXugIXu3ZWS9+5Q1GPcj6Qkeb8wggWjMIIEi6ADAgECAhBfTrG4q1uuSLFjInknoaV0MA0GCSqGSIb3DQEBBQUAMIGMMQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxPTA7BgNVBAMTNFN5bWFudGVjIENsYXNzIDMgRXh0ZW5kZWQgVmFsaWRhdGlvbiBDb2RlIFNpZ25pbmcgQ0EwHhcNMTUwNTE0MDAwMDAwWhcNMTcwNTA3MjM1OTU5WjCB9DETMBEGCysGAQQBgjc8AgEDEwJVUzEZMBcGCysGAQQBgjc8AgECFAhEZWxhd2FyZTEdMBsGA1UEDxMUUHJpdmF0ZSBPcmdhbml6YXRpb24xEDAOBgNVBAUTBzI3NDgxMjkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMREwDwYDVQQHDAhTYW4gSm9zZTEjMCEGA1UECgwaQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQxEjAQBgNVBAsMCVR5cGUgRm9udDEjMCEGA1UEAxQaQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDr6ehR7zmGDAz/02QY4G+dA0Thm49eht554ZYdvoET90MiSAch8oqZhV4GWPEIqsD0BC2GbAobBKjq7dbELezUB8rXxbI0C46EwA/8GnC84R4mqcUPe9TdA7iKYj59J2dmnDeInl3b1Jr/m5sOqOVsj7q02JDzPmbHOOgUMvc2+TPZvPLYjdTfwE7OHPN3g4kqSgkA0oESanH52oXh07PamcwKeUZ4Ikh/xu+FUyPkP/9HjabYP7QUMN/di5znMEs90usOVNAR6vifE/a7fZq98d5/uX6TLjxU4T4s7GUqax5C3uMEstP11Hkw9uO3Q7sQSokyabWGXkUD92jwPRNpAgMBAAGjggGVMIIBkTAuBgNVHREEJzAloCMGCCsGAQUFBwgDoBcwFQwTVVMtRGVsYXdhcmUtMjc0ODEyOTAJBgNVHRMEAjAAMGYGA1UdIARfMF0wWwYLYIZIAYb4RQEHFwYwTDAjBggrBgEFBQcCARYXaHR0cHM6Ly9kLnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIwGQwXaHR0cHM6Ly9kLnN5bWNiLmNvbS9ycGEwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwMwDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBQx89tS35YsIC/xCAbITOVp7jcgdjArBgNVHR8EJDAiMCCgHqAchhpodHRwOi8vc2Muc3ltY2IuY29tL3NjLmNybDBXBggrBgEFBQcBAQRLMEkwHwYIKwYBBQUHMAGGE2h0dHA6Ly9zYy5zeW1jZC5jb20wJgYIKwYBBQUHMAKGGmh0dHA6Ly9zYy5zeW1jYi5jb20vc2MuY3J0MB8GA1UdIwQYMBaAFKOOzxlCPTHhqyGJhG3L2XmisrJaMA0GCSqGSIb3DQEBBQUAA4IBAQAIKomeOBdL7TancseJFl8R4prtGFqkiFdzeg5oiw9+mff2/daFIbSXNHn59UtsZR+oRR7QO/Vi+mfcfufEbaIJ8d0YlW4s2sDtOr/ifNS2xtZP/QaOCc3/1EUyBEy0MLzNNuJeMqwL4BGkZWk6VbzHqxf2h9cuuE4fFuPnZNhaKaPBeB+UV2BRqa57KpYSoAhBz1qBGJXj3f+mdz4noRdTt9xGWTWQ3HYzmrG/Yit0yRAK6vCcAx6O1mw86he3hvHInF6vwqOi1EF/55uwITABKeJZ6Im67xddghGzSFc5E2Q+nzKQxn8jqgtzP5yvjoCFGHr0n9zgf4xGsvOiM2hIMYIEuTCCBLUCAQEwgaEwgYwxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazE9MDsGA1UEAxM0U3ltYW50ZWMgQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIENvZGUgU2lnbmluZyBDQQIQX06xuKtbrkixYyJ5J6GldDAJBgUrDgMCGgUAoIHeMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBSVEQ4fSsH/dNENbcqHjYl/iOEVWDB+BgorBgEEAYI3AgEMMXAwbqBsgGoAUwBvAHUAcgBjAGUAIABTAGEAbgBzACAAUAByAG8AIABmAGEAbQBpAGwAeQAgAHcAaQB0AGgAIABHAHIAZQBlAGsAIABhAG4AZAAgAEMAeQByAGkAbABsAGkAYwAgAFIAbwBtAGEAbgBzMA0GCSqGSIb3DQEBAQUABIIBAOEnRtNMZVALTBaIl423ges25LsnDNdfLPtqLTG53Y80W4/hUkKnFg41ks1+2NGNprZFtXnG7Y/LZ8vRR20fTHtvb1J/cdF/Fewsq8sIb2R8NKE5MAIIh3kGZz3pNUZqBOAvHyp2xjCcm0FoOw7W6FsUFirIRpoWAQ/i3wM2s/IHaS7+n4urOukV3MxoIoqiBya2OV2JA34nUQWmmz6yQ0i64JSIyEYOgzbdblZV56s6fg0SV0iSN6QJ9MIN67duDFY4bxwF6g1lCnCAKCj91nZKrmn3POv8gavhKILGsbe4IN3Fqf8056SORyeOhdWwOz0t8CpMpY+XjVetLxr3FDyhggILMIICBwYJKoZIhvcNAQkGMYIB+DCCAfQCAQEwcjBeMQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xMDAuBgNVBAMTJ1N5bWFudGVjIFRpbWUgU3RhbXBpbmcgU2VydmljZXMgQ0EgLSBHMgIQDs/0OMj+vzVuBNhqmBsaUDAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTUwOTE0MTcxODA3WjAjBgkqhkiG9w0BCQQxFgQUpFwUqay9JyqbRTeBiCcp/5Th2hswDQYJKoZIhvcNAQEBBQAEggEAVIf6LN5mapwDAPDFnPoZ6YDcFsRvGy4zhdBP3SCd8CbU371VFJOBz7ZYxU1VrgvSxXiGMThvIhutQJrePtk2hUFFWpDtIEPmTxQulx8+CvI5VjTfD9o0HWmf69J0l6/FNmFcwH75l2N7vT/ovkiBGYJainUQX2yWE+HxH4i7JANAIoa2SSs2HQD23UHvtZmmnjIPTuUeNiQ3+vzeWaA6l//asWm0SpxzgDywsmaTTOFc3GjQln3dBCw+NapsQpsPYLJT4FjzlaPB+8imXFevv82u6jUdHDNWMD1lqE4ta84P9ABHKfxld8y3cVKGSxqQ2xTzktsxhVfP7AwoZ0uWiQAAAA==') format('opentype');
  1569. font-weight: bold;
  1570. font-style: italic;
  1571. }
  1572. </style>
  1573. <style media='screen' type='text/css'>
  1574. /* line 1, ../sass/images.scss */
  1575. #mainPage.mobile .contentImage {
  1576. height: 10ex;
  1577. }
  1578. /* line 5, ../sass/images.scss */
  1579. .contentImage {
  1580. background-size: contain;
  1581. background-repeat: no-repeat;
  1582. background-position: center center;
  1583. height: 25ex;
  1584. }
  1585. /* line 10, ../sass/images.scss */
  1586. .contentImage:hover {
  1587. cursor: pointer;
  1588. }
  1589. /* line 13, ../sass/images.scss */
  1590. .contentImage:hover:active {
  1591. opacity: 0.7;
  1592. }
  1593. /* line 19, ../sass/images.scss */
  1594. #imageViewer {
  1595. display: none;
  1596. background-size: contain;
  1597. background-repeat: no-repeat;
  1598. background-position: center center;
  1599. height: 100%;
  1600. width: 100%;
  1601. position: fixed;
  1602. z-index: 1000000;
  1603. top: 0px;
  1604. left: 0px;
  1605. margin: 0px;
  1606. background-color: rgba(0, 0, 0, 0.8);
  1607. }
  1608. /* line 33, ../sass/images.scss */
  1609. #imageViewer:hover {
  1610. cursor: pointer;
  1611. }
  1612. /* line 38, ../sass/images.scss */
  1613. .image001 {
  1614. background-image: url("https://i.imgur.com/EvUe1bv.png");
  1615. }
  1616. /* line 39, ../sass/images.scss */
  1617. .image001.contentImage {
  1618. height: 3em;
  1619. }
  1620. /* line 47, ../sass/images.scss */
  1621. .introLogo {
  1622. background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8IS0tIENyZWF0ZWQgd2l0aCBJbmtzY2FwZSAoaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvKSAtLT4NCg0KPHN2Zw0KICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIg0KICAgeG1sbnM6Y2M9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zIyINCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyINCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayINCiAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCINCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIg0KICAgd2lkdGg9IjEyMDAiDQogICBoZWlnaHQ9IjUwMCINCiAgIHZpZXdCb3g9IjAgMCAzMTcuNDk5OTkgMTMyLjI5MTY3Ig0KICAgdmVyc2lvbj0iMS4xIg0KICAgaWQ9InN2ZzM3MjEiDQogICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9IkM6XFVzZXJzXFJlZGRvXGJpdG1hcC5wbmciDQogICBpbmtzY2FwZTpleHBvcnQteGRwaT0iOTYiDQogICBpbmtzY2FwZTpleHBvcnQteWRwaT0iOTYiDQogICBpbmtzY2FwZTp2ZXJzaW9uPSIwLjkyLjMgKDI0MDU1NDYsIDIwMTgtMDMtMTEpIg0KICAgc29kaXBvZGk6ZG9jbmFtZT0iSW50cm9Mb2dvLnN2ZyI+DQogIDxkZWZzDQogICAgIGlkPSJkZWZzMzcxNSIgLz4NCiAgPHNvZGlwb2RpOm5hbWVkdmlldw0KICAgICBpZD0iYmFzZSINCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIg0KICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiINCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIg0KICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIg0KICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIg0KICAgICBpbmtzY2FwZTp6b29tPSIwLjciDQogICAgIGlua3NjYXBlOmN4PSI1NjYuMjU5NDYiDQogICAgIGlua3NjYXBlOmN5PSIyMTYuMDMwMTkiDQogICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJtbSINCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXI3Ig0KICAgICBzaG93Z3JpZD0iZmFsc2UiDQogICAgIHVuaXRzPSJweCINCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxMzY2Ig0KICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI3MDUiDQogICAgIGlua3NjYXBlOndpbmRvdy14PSItOCINCiAgICAgaW5rc2NhcGU6d2luZG93LXk9Ii04Ig0KICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIg0KICAgICBzaG93Z3VpZGVzPSJ0cnVlIg0KICAgICBpbmtzY2FwZTpndWlkZS1iYm94PSJ0cnVlIj4NCiAgICA8c29kaXBvZGk6Z3VpZGUNCiAgICAgICBwb3NpdGlvbj0iMjUwLjk3NjE5LDEwOS4yMzUxMiINCiAgICAgICBvcmllbnRhdGlvbj0iMSwwIg0KICAgICAgIGlkPSJndWlkZTM4MDciDQogICAgICAgaW5rc2NhcGU6bG9ja2VkPSJmYWxzZSIgLz4NCiAgICA8c29kaXBvZGk6Z3VpZGUNCiAgICAgICBwb3NpdGlvbj0iMjY1LjMzOTI4LDEzLjIyOTE2NyINCiAgICAgICBvcmllbnRhdGlvbj0iMCwxIg0KICAgICAgIGlkPSJndWlkZTM4MTkiDQogICAgICAgaW5rc2NhcGU6bG9ja2VkPSJmYWxzZSIgLz4NCiAgPC9zb2RpcG9kaTpuYW1lZHZpZXc+DQogIDxtZXRhZGF0YQ0KICAgICBpZD0ibWV0YWRhdGEzNzE4Ij4NCiAgICA8cmRmOlJERj4NCiAgICAgIDxjYzpXb3JrDQogICAgICAgICByZGY6YWJvdXQ9IiI+DQogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0Pg0KICAgICAgICA8ZGM6dHlwZQ0KICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPg0KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4NCiAgICAgIDwvY2M6V29yaz4NCiAgICA8L3JkZjpSREY+DQogIDwvbWV0YWRhdGE+DQogIDxnDQogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiDQogICAgIGlkPSJsYXllcjQiDQogICAgIGlua3NjYXBlOmxhYmVsPSJUb3dlciINCiAgICAgc3R5bGU9ImRpc3BsYXk6bm9uZSINCiAgICAgc29kaXBvZGk6aW5zZW5zaXRpdmU9InRydWUiPg0KICAgIDxpbWFnZQ0KICAgICAgIHk9IjAuNzU4MzMzODYiDQogICAgICAgeD0iMjMwIg0KICAgICAgIGlkPSJpbWFnZTM3ODgiDQogICAgICAgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFLQUFBQUhBQ0FJQUFBQ3FMdlNVQUFBQUEzTkNTVlFJQ0FqYjRVL2dBQUFDbTBsRVFWUjQNCm5PM2JNVTVpVVJpRzRXRkNRWWtKUkZkQVI4ME9vS1REcGRqYXNoVTdLZ0k3b0taakJSQklzTFREeG1weVRnd1o3amg4ZVo3eU4zS1ANCnZ2bUxFNzJ0eStYeTYzOXlQQjZMODhWaVVaeS92YjBWNTV2TjVxcm5qa2FqNG53Mm14WG4wK20wT08vMysxYzl0Mm0vZi9vQU5FdmcNCmNBS0hFemljd09FRURpZHd1RmJUOStDUGo0L2kvUFgxdFRpZnorY05ucVo1THk4dnhYbnQ1KzEwT2cyZXhnYkhFemljd09FRURpZHcNCk9JSERDUnp1WnZmZy9YNWZuQStIdytMOGREcmQ1TG4zb3RmckZlZmI3Ylk0ZjNwNnVzbHpiWEE0Z2NNSkhFN2djQUtIRXppY3dPR3UNCnZnZS92NzhYNXc4UEQ3YzREMS9PNTNOeDN1MTJyL29jR3h4TzRIQUNoeE00bk1EaEJBNG5jTGoydGQvdy9QemN4RG40USszM3ZGcXQNCnJ2b2NHeHhPNEhBQ2h4TTRuTURoQkE0bmNManEzNFBYNjNWeFBwbE1tandQMzZqZGc4ZmpjWEZ1ZzhNSkhFN2djQUtIRXppY3dPRUUNCkRsZTlCOWZlVHowY0RrMmVoMjg4UGo0VzU3WDNzMjF3T0lIRENSeE80SEFDaHhNNG5NRGhXcnZkcnZpRndXRHdqNC9DMzZoMXRNSGgNCkJBNG5jRGlCd3drY1R1QndBb2RyMS83L21mdFM2MmlEd3drY1R1QndBb2NUT0p6QTRRUU8xMTR1bHo5OUJtNmcxdEVHaHhNNG5NRGgNCkJBNG5jRGlCd3drY3JsVjczOVI3d1BlbDF0RUdoeE00bk1EaEJBNG5jRGlCd3drTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUENCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR3NVJOcS9WaEw3dmN6S3dBQUFBQkpSVTVFcmtKZ2dnPT0NCiINCiAgICAgICBzdHlsZT0iaW1hZ2UtcmVuZGVyaW5nOm9wdGltaXplU3BlZWQiDQogICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSINCiAgICAgICBoZWlnaHQ9IjExOC41MzMzMyINCiAgICAgICB3aWR0aD0iNDIuMzMzMzMyIiAvPg0KICA8L2c+DQogIDxnDQogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiDQogICAgIGlkPSJsYXllcjUiDQogICAgIGlua3NjYXBlOmxhYmVsPSJUcmVlcyINCiAgICAgc3R5bGU9ImRpc3BsYXk6bm9uZSINCiAgICAgc29kaXBvZGk6aW5zZW5zaXRpdmU9InRydWUiPg0KICAgIDxpbWFnZQ0KICAgICAgIHk9IjYwLjAyNTAwMiINCiAgICAgICB4PSIxODciDQogICAgICAgaWQ9ImltYWdlMzgwMCINCiAgICAgICB4bGluazpocmVmPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQWVBQUFBRGdDQUlBQUFCVXdTSjJBQUFBQTNOQ1NWUUlDQWpiNFUvZ0FBQUZhRWxFUVZSNA0Kbk8zY1QramZjeHpBY2R0K0IrWFB4TElkVUZNT1NEUlJsTFVEcGFiczRFK2hGZ2xIdVhBek55NXlSS0lkT0hBaGliTERXdUdBWmNrYw0KbEJVTzIwSVd5b1U1T05qaC9TMXIzei9QNzlmamNYeDk2OWZyMisvemZ2WStmUHF1TzNueTVGbkw3T2RmZnhyTzkzKzViemgvNzlOMw0KaHZPUER4OFl6bytmT0RhY1g3eHg4M0IrODFYYmgvT2ROOXc1bk8rNDV0YmgvTUx6TGhyT1lSYWNvNmIxaTE0QWdER0JCb2dTYUlBbw0KZ1FhSUVtaUFLSUVHaUJKb2dLaDF0ZmVnai8xeWREamY4L3BUdy9rYisvZk9jcDJGdVcvSDd1Rjh6LzNQRHVlYkw5Z3l5M1ZZTXM3Ug0KUDViOUhMbEJBMFFKTkVDVVFBTkVDVFJBbEVBRFJBazBRSlJBQTBRdDdEM290ejk1YXpqZi9mdzljOTVrTmV4OTRzM2hmTmROZDg5NQ0KRStiSk9acXUyamx5Z3dhSUVtaUFLSUVHaUJKb2dDaUJCb2dTYUlBb2dRYUltdmw3MEMrOC9keHcvdlNFMzZWbHVwNlo4THUzais5Ng0KY3M2YmNDYWNvOFZhMURseWd3YUlFbWlBS0lFR2lCSm9nQ2lCQm9nU2FJQW9nUWFJbXRwNzBLOTkrTkp3L3ZqTGowM2w3ek5kTHp6eQ0KNG5EKzRHMlB6bmtUVHVVY0xaZFpueU0zYUlBb2dRYUlFbWlBS0lFR2lCSm9nQ2lCQm9nU2FJQ28wMzRQK3RDM0I0Zno3VTllUDQxOQ0KV0xBRHozMCtuRjk3K2JZNWI3TGFuS1BWTnExejVBWU5FQ1hRQUZFQ0RSQWwwQUJSQWcwUUpkQUFVUUlORURYeFBlZy8vL3B6T04vNg0KMEtiaC9NVHZ2MHh0S1JabjR6a1hET2RIWHYxeE9OK3dmc01zMTFsNnp0SC8wN1RPa1JzMFFKUkFBMFFKTkVDVVFBTkVDVFJBbEVBRA0KUkFrMFFOVGFwQS9lLyt6ZDRkeDdtcXR0MHY5MzB2Tnd4NDI3WnJuTzBuT08vcCttZFk3Y29BR2lCQm9nU3FBQm9nUWFJRXFnQWFJRQ0KR2lCS29BR2lKdjRlOUJVUGJ4bk9qNTg0TnN0OWlMcDQ0K2JoL0p0WGpzNTVrK1hpSEhHcTB6MUhidEFBVVFJTkVDWFFBRkVDRFJBbA0KMEFCUkFnMFFKZEFBVVdzLy9QamQ4QVB2YVhLcVNjL0RwT2Zua2syWHpYS2RIT2VJLytKMHo1RWJORUNVUUFORUNUUkFsRUFEUkFrMA0KUUpSQUEwUUpORURVMmtlSER5eDZCNWJZcE9mbjN1MFB6SG1UeFhLT09CT1RuaDgzYUlBb2dRYUlFbWlBS0lFR2lCSm9nQ2lCQm9nUw0KYUlDb3RmMWY3bHYwRGl5eFNjL1BQYmZjUDV3Zk9uSndPSC92MDNlRzgzMWZmRENjZi8zOVYvOWh1MzlkZWVuVncvbXQxOTArbk8rOA0KNGM3aC9OcXQyNFp6NTRnek1lbjVjWU1HaUJKb2dDaUJCb2dTYUlBb2dRYUlFbWlBS0lFR2lGcDMvbDJMWG9GVmRNN1o1dzdudi8veA0KMjV3M21hNVYvVjQwdVVFRFJBazBRSlJBQTBRSk5FQ1VRQU5FQ1RSQWxFQURSSzB0ZWdGVzA2cStGN3lxMzRzbU4yaUFLSUVHaUJKbw0KZ0NpQkJvZ1NhSUFvZ1FhSUVtaUFLSUVHaUJKb2dDaUJCb2dTYUlBb2dRYUlFbWlBS0lFR2lCSm9nQ2lCQm9nU2FJQW9nUWFJRW1pQQ0KS0lFR2lCSm9nQ2lCQm9nU2FJQW9nUWFJRW1pQUtJRUdpQkpvZ0NpQkJvZ1NhSUFvZ1FhSUVtaUFLSUVHaUJKb2dDaUJCb2dTYUlBbw0KZ1FhSUVtaUFLSUVHaUJKb2dDaUJCb2dTYUlBb2dRYUlFbWlBS0lFR2lCSm9nQ2lCQm9nU2FJQW9nUWFJRW1pQUtJRUdpQkpvZ0NpQg0KQm9nU2FJQW9nUWFJRW1pQUtJRUdpQkpvZ0NpQkJvZ1NhSUFvZ1FhSUVtaUFLSUVHaUJKb2dDaUJCb2dTYUlBb2dRYUlFbWlBS0lFRw0KaUJKb2dDaUJCb2dTYUlBb2dRYUlFbWlBS0lFR2lCSm9nQ2lCQm9nU2FJQW9nUWFJRW1pQUtJRUdpQkpvZ0NpQkJvZ1NhSUFvZ1FhSQ0KRW1pQUtJRUdpQkpvZ0NpQkJvZ1NhSUFvZ1FhSUVtaUFLSUVHaUJKb2dDaUJCb2dTYUlBb2dRYUlFbWlBS0lFR2lCSm9nQ2lCQm9nUw0KYUlBb2dRYUlFbWlBS0lFR2lCSm9nQ2lCQm9nU2FJQW9nUWFJRW1pQUtJRUdpQkpvZ0NpQkJvZ1NhSUFvZ1FhSUVtaUFLSUVHaUJKbw0KZ0NpQkJvZ1NhSUNvdndGeHVQQlhEMjlCeUFBQUFBQkpSVTVFcmtKZ2dnPT0NCiINCiAgICAgICBzdHlsZT0iaW1hZ2UtcmVuZGVyaW5nOm9wdGltaXplU3BlZWQiDQogICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSINCiAgICAgICBoZWlnaHQ9IjU5LjI2NjY2NiINCiAgICAgICB3aWR0aD0iMTI3IiAvPg0KICA8L2c+DQogIDxnDQogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiDQogICAgIGlkPSJsYXllcjYiDQogICAgIGlua3NjYXBlOmxhYmVsPSJUb3dlciBWZWN0b3IiDQogICAgIHN0eWxlPSJkaXNwbGF5OmlubGluZSI+DQogICAgPHBhdGgNCiAgICAgICBzdHlsZT0iZmlsbDojMWExYTFhO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjE4MzQyODkxcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MSINCiAgICAgICBkPSJtIDIzNy40OTIyNiw4NC45ODYyNzYgYyAwLDAgLTguMDUxNCwtNDUuOTAyMTY0IC04LjRlLTQsLTY2LjU4NjM0MSAyLjYwMDkyLC02LjY4Mjk2MSA3LjM3MjEyLC0xNS44MjI2MzY1IDE0LjU0MzI5LC0xNS44NTM0OTg1IDcuMTY4NzksLTAuMDMwODUgMTIuMDM4ODUsOS4wNTU2MzM1IDE0LjY3NDMsMTUuNzIyNDc4NSA4LjE3NTY4LDIwLjY4MTg0NyAwLjEzMjA1LDY2LjcxNzM2MSAwLjEzMjA1LDY2LjcxNzM2MSB6Ig0KICAgICAgIGlkPSJwYXRoMzgxMCINCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2FhYWNjIiAvPg0KICA8L2c+DQogIDxnDQogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiDQogICAgIGlkPSJsYXllcjciDQogICAgIGlua3NjYXBlOmxhYmVsPSJUcmVlcyBWZWN0b3IiDQogICAgIHN0eWxlPSJkaXNwbGF5OmlubGluZSI+DQogICAgPHBhdGgNCiAgICAgICBzdHlsZT0iZmlsbDojMDA4MDAwO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjE4MzQyODkxcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MSINCiAgICAgICBkPSJtIDI1Mi4wMzQ1Myw4NS44ODU3NCAtNDQuMzUzMDgsMC4xNTg4NyBjIC0wLjAyMSwtNy43ODMxNyAtMy4yMjk5NiwtMTYuMjM5NzggLTAuMDYyOSwtMjMuMzQ5NTI1IDMuNDU2MiwtNy43NTg5NSA5Ljg0OTksLTE3LjU2MTk2NiAxOC4zNDI4OSwtMTcuNjg3Nzg4IDguMDU5MzQsLTAuMTE5Mzk4IDExLjM1NTE0LDExLjQ0MjQ3MiAxNy4wMzI2OSwxNy4xNjM3MDcgMC42NTUxLDAuNTI0MDgxIDEuMTMwNjYsMS42NTY5MjIgMS45NjUzMSwxLjU3MjI0NyAyLjQ4NzMzLC0wLjI1MjMzOSA0LjU3NTAyLC0yLjQ4OTM5MiA3LjA3NTExLC0yLjQ4OTM5MiAyLjE3MzYxLDAgMy44NjAxNiwyLjMxNzQyMyA2LjAyNjk1LDIuNDg5MzkyIDAuOTU4OCwwLjA3NjA5IDEuNDg0OTEsLTEuMjIyODYxIDIuMjI3MzYsLTEuODM0MjkyIDUuNjc3NTYsLTUuNjMzODg2IDkuMDM2MjIsLTE3LjA4MDY4OCAxNy4wMzI2OCwtMTYuOTAxNjYyIDguNDI5MTUsMC4xODg3MTIgMTQuNjMwNDgsOS45OTQ4NzMgMTguMDgwODUsMTcuNjg3Nzg4IDMuMTg1NDgsNy4xMDIyODUgMC4yMTY2NSwxNS41NjYzNTUgMC4zMjQ5OCwyMy4zNDk1MjUgeiINCiAgICAgICBpZD0icGF0aDM4MjEiDQogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjc3Njc3NzY3NzY2MiIC8+DQogIDwvZz4NCiAgPGcNCiAgICAgaW5rc2NhcGU6bGFiZWw9Ik9iZWxpc2siDQogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiDQogICAgIGlkPSJsYXllcjEiDQogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTE2NC43MDgzMikiDQogICAgIHN0eWxlPSJkaXNwbGF5Om5vbmUiDQogICAgIHNvZGlwb2RpOmluc2Vuc2l0aXZlPSJ0cnVlIj4NCiAgICA8Zw0KICAgICAgIGFyaWEtbGFiZWw9Ik9iZWxpc2siDQogICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXNpemU6OTIuMjU1NjMwNDlweDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7ZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoyLjMwNjM5MDc2Ig0KICAgICAgIGlkPSJ0ZXh0MzcyOSI+DQogICAgICA8cGF0aA0KICAgICAgICAgZD0ibSA0OS42MzU3NzIsMjIyLjk1ODk2IHEgNy41Njc4NDUsMCAxMy4zNzg4NjksMi45NzMwOCA1LjgxMTAyMywyLjk3MzA4IDEwLjE4MDU1Miw5LjI3OTYyIDQuMzY5NTMsNi4zMDY1NCA0LjM2OTUzLDE1LjEzNTY5IDAsOS41OTQ5NSAtNS40NTA2NSwxNy41NjgyMSAtNS40MDU2MDQsNy45MjgyMiAtMTIuNjU4MTIxLDExLjYyMjA1IC03LjIwNzQ3MiwzLjY0ODc4IC0xNS4xMzU2OSwzLjY0ODc4IC0xMS4zNTE3NjcsMCAtMTkuMjc5OTg1LC03Ljc5MzA4IC03LjkyODIxOCwtNy44MzgxMiAtNy45MjgyMTgsLTE5LjQxNTEyIDAsLTEzLjM3ODg3IDkuOTEwMjczLC0yMy4xOTkwNSA5LjkxMDI3MiwtOS44MjAxOCAyMi42MTM0NCwtOS44MjAxOCB6IG0gLTUuNjMwODM3LDQuMTg5MzQgcSAtOC4zMzM2MzgsMCAtMTMuODI5MzM1LDUuODU2MDcgLTUuNDUwNjUsNS44MTEwMyAtNS40NTA2NSwxNS40MDU5NyAwLDE0LjA5OTYyIDguMTk4NDk5LDIyLjQzMzI2IDguMjQzNTQ1LDguMzMzNjMgMTguMDE4Njc3LDguMzMzNjMgNy43OTMwNzksMCAxMy4zNzg4NjksLTUuODU2MDcgNS42MzA4MzYsLTUuODU2MDcgNS42MzA4MzYsLTE1LjA0NTU5IDAsLTguNjAzOTIgLTMuNzM4ODc1LC0xNi4xMjY3MiAtMy43Mzg4NzYsLTcuNTY3ODQgLTEwLjE4MDU1MywtMTEuMjYxNjcgLTYuNDQxNjc3LC0zLjczODg4IC0xMi4wMjc0NjgsLTMuNzM4ODggeiINCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtZmFtaWx5OidGb290bGlnaHQgTVQgTGlnaHQnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J0Zvb3RsaWdodCBNVCBMaWdodCwgJztmaWxsOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjIuMzA2MzkwNzYiDQogICAgICAgICBpZD0icGF0aDQ2MjgiDQogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPg0KICAgICAgPHBhdGgNCiAgICAgICAgIGQ9Im0gOTUuODUzNjg0LDIxOC4zMTkxNSB2IDEuODQ2OTEgcSAtMS4yNjEzMDgsMC43MjA3NSAtMS4yNjEzMDgsMi4zODc0OCB2IDMwLjg1Njk4IHEgOC40Njg3NzQsLTkuNzMwMDggMTEuOTM3Mzc0LC0xMS44NDcyOCAzLjQ2ODYsLTIuMTYyMjQgNy4wNzIzMywtMi4xNjIyNCA1Ljc2NTk4LDAgOS4xODk1Myw0LjU5NDc3IDMuNDY4NTksNC41NDk3MSAzLjQ2ODU5LDExLjYyMjA0IDAsNS45NDYxNyAtMi41MjI2MSwxMS41NzcgLTIuNTIyNjIsNS41ODU3OSAtNi41MzE3Nyw5LjE4OTUzIC00LjAwOTE2LDMuNTU4NjkgLTcuNTY3ODUsNC41NDk3MSAtMy41NTg2OSwwLjk0NTk5IC04LjgyOTE1LDAuOTQ1OTkgaCAtNC4xNDQyOTYgcSAtNC43Mjk5MDMsMCAtNi4yNjE0OSwwLjYzMDY1IC0xLjQ4NjU0MSwwLjY3NTcgLTIuMjUyMzM1LDIuMjA3MjkgSCA4NS4xMzI1NyBxIDEuMTcxMjE0LC0yLjExNzIgMS44NDY5MTUsLTUuNTQwNzUgMC43MjA3NDcsLTMuNDIzNTUgMC43MjA3NDcsLTUuMTM1MzIgdiAtNDQuMzcwOTkgcSAwLC0zLjk2NDExIC0zLjAxODEyOSwtMy45NjQxMSAtMS4zOTY0NDcsMCAtMy44Mjg5NjksMS4wMzYwNyB2IC0yLjIwNzI5IHogbSAtMS4yNjEzMDgsNTYuNTMzNiBxIDUuNDk1Njk0LDMuMzc4NSAxMS43MTIxNDQsMy4zNzg1IDQuNTA0NjcsMCA3LjQzMjcsLTIuMzQyNDIgMi45NzMwOCwtMi4zODc0OCA0LjM2OTUzLC02LjQ0MTY4IDEuMzk2NDUsLTQuMDU0MiAxLjM5NjQ1LC05LjIzNDU3IDAsLTYuNzExOTYgLTIuNjEyNzEsLTEwLjcyMTEyIC0yLjYxMjcxLC00LjAwOTE1IC03LjIwNzQ3LC00LjAwOTE1IC01LjkwMTEyLDAgLTEwLjgxMTIwOCw2Ljc1NyAtNC44NjUwNDMsNi43NTcgLTQuODY1MDQzLDE2LjEyNjcyIDAsMi44ODI5OSAwLjU4NTYwNyw2LjQ4NjcyIHoiDQogICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHJldGNoOm5vcm1hbDtmb250LWZhbWlseTonRm9vdGxpZ2h0IE1UIExpZ2h0JzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidGb290bGlnaHQgTVQgTGlnaHQsICc7ZmlsbDojZmZmZmZmO3N0cm9rZS13aWR0aDoyLjMwNjM5MDc2Ig0KICAgICAgICAgaWQ9InBhdGg0NjMwIg0KICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4NCiAgICAgIDxwYXRoDQogICAgICAgICBkPSJtIDE2Ni40ODY5LDI3MC41NzMzMiBxIC0xMC4wNDU0MSwxMi42MTMwNyAtMTkuNTk1MzEsMTIuNjEzMDcgLTYuNzExOTYsMCAtMTEuODQ3MjgsLTUuODExMDIgLTUuMTM1MzMsLTUuODU2MDcgLTUuMTM1MzMsLTEzLjg3NDM5IDAsLTkuMjM0NTcgNi4wODEzMSwtMTYuNjIyMjMgNi4xMjYzNSwtNy40MzI3IDE0LjQxNDk0LC03LjQzMjcgNi42NjY5MSwwIDEwLjU4NTk3LDQuNzI5OSAzLjkxOTA2LDQuNzI5OSA0LjE0NDMsMTEuNTMxOTYgaCAtMjkuMDU1MTIgcSAtMC4wOTAxLDEuNzU2ODIgLTAuMDkwMSwyLjU2NzY2IDAsNy45NzMyNiA0LjIzNDM5LDEzLjMzMzgyIDQuMjM0MzksNS4zMTU1MSAxMC40NTA4Myw1LjMxNTUxIDcuNzQ4MDMsMCAxNS44MTEzOSwtOS4zMjQ2NyB6IG0gLTguNzM5MDYsLTE3LjExNzc1IHEgLTAuNTQwNTYsLTUuMzE1NTEgLTMuMzc4NSwtOC4yNDM1NCAtMi44Mzc5NCwtMi45MjgwNCAtNi43MTE5NiwtMi45MjgwNCAtNC4wNTQyLDAgLTcuMjUyNTIsMy4xOTgzMiAtMy4xOTgzMSwzLjE1MzI2IC0zLjkxOTA2LDcuOTczMjYgeiINCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtZmFtaWx5OidGb290bGlnaHQgTVQgTGlnaHQnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J0Zvb3RsaWdodCBNVCBMaWdodCwgJztmaWxsOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjIuMzA2MzkwNzYiDQogICAgICAgICBpZD0icGF0aDQ2MzIiDQogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPg0KICAgICAgPHBhdGgNCiAgICAgICAgIGQ9Im0gMTg2LjY2NzgxLDIxOS45NDA4MyBxIC0xLjkzNzAxLDAuOTQ1OTggLTEuOTM3MDEsMy4yODg0MSB2IDQ5LjQ2MTI3IHEgMCwzLjk2NDExIDEuNjIxNjgsNS40NTA2NSAxLjY2NjczLDEuNDg2NTQgNS4yNzA0NywxLjU3NjYzIHYgMi4xNjIyNSBoIC0yMC42NzY0MyB2IC0yLjE2MjI1IHEgMy42OTM4MiwtMC4wOTAxIDUuMzE1NTEsLTEuNjIxNjggMS42MjE2OCwtMS41MzE1OCAxLjYyMTY4LC01LjQwNTYgViAyMjkuODUxMSBxIDAsLTQuMTQ0MjkgLTMuNDIzNTUsLTQuMTQ0MjkgLTEuNDQxNSwwIC0zLjUxMzY0LDAuNzIwNzQgdiAtMi4xNjIyNCBsIDE1LjcyMTI5LC02LjE3MTM5IHoiDQogICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHJldGNoOm5vcm1hbDtmb250LWZhbWlseTonRm9vdGxpZ2h0IE1UIExpZ2h0JzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidGb290bGlnaHQgTVQgTGlnaHQsICc7ZmlsbDojZmZmZmZmO3N0cm9rZS13aWR0aDoyLjMwNjM5MDc2Ig0KICAgICAgICAgaWQ9InBhdGg0NjM0Ig0KICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4NCiAgICAgIDxwYXRoDQogICAgICAgICBkPSJtIDIwNi4yMTgwOSwyMjAuNjE2NTMgcSAxLjkzNzAxLDAgMy4xNTMyNywxLjMwNjM1IDEuMjYxMzEsMS4yNjEzMSAxLjI2MTMxLDMuMDE4MTMgMCwxLjc1NjgyIC0xLjI2MTMxLDMuMDE4MTMgLTEuMjYxMzEsMS4yNjEzMSAtMy4wNjMxOCwxLjI2MTMxIC0xLjc1NjgyLDAgLTMuMDE4MTMsLTEuMjE2MjYgLTEuMjYxMywtMS4yNjEzMSAtMS4yNjEzLC0zLjA2MzE4IDAsLTEuODkxOTYgMS4zMDYzNSwtMy4xMDgyMiAxLjMwNjM2LC0xLjIxNjI2IDIuODgyOTksLTEuMjE2MjYgeiBtIC0xMC4yMjU2LDU5LjEwMTI2IHEgMy40Njg2LC0wLjA5MDEgNS4xODAzNywtMS40ODY1NCAxLjcxMTc3LC0xLjQ0MTQ5IDEuNzExNzcsLTUuNTQwNzQgdiAtMjQuNjQwNTQgcSAwLC0yLjgzNzk0IC0zLjI0MzM2LC0yLjgzNzk0IC0xLjE3MTIxLDAgLTIuNTY3NjYsMC41ODU2IC0wLjcyMDc1LDAuMzE1MzMgLTEuMDgxMTIsMC40MDU0MiB2IC0yLjI5NzM4IGwgMTEuNTMxOTUsLTQuNTQ5NzEgaCAyLjIwNzI5IHYgMzMuMzM0NTUgcSAwLDQuMDA5MTYgMS42NjY3Myw1LjQ5NTcgMS42NjY3MywxLjQ0MTQ5IDUuMjI1NDIsMS41MzE1OCB2IDIuMTYyMjUgaCAtMjAuNjMxMzkgeiINCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtZmFtaWx5OidGb290bGlnaHQgTVQgTGlnaHQnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J0Zvb3RsaWdodCBNVCBMaWdodCwgJztmaWxsOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjIuMzA2MzkwNzYiDQogICAgICAgICBpZD0icGF0aDQ2MzYiDQogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPg0KICAgICAgPHBhdGgNCiAgICAgICAgIGQ9Im0gMjI1LjEzNzcsMjY4LjAwNTY1IHEgMC4zNjAzNyw1Ljg1NjA3IDMuMzMzNDUsOS4wOTk0NCAzLjAxODEzLDMuMjQzMzYgNy4yMDc0OCwzLjI0MzM2IDMuNDY4NTksMCA1LjY3NTg4LC0yLjExNzIgMi4yMDcyOSwtMi4xMTcxOSAyLjIwNzI5LC01LjM2MDU1IDAsLTIuODgyOTkgLTEuNjY2NzMsLTQuODY1MDUgLTEuNzExNzgsLTEuOTM3IC02LjcxMTk2LC01LjA5MDI3IC0zLjU1ODY5LC0yLjI1MjM0IC02LjQ4NjcyLC00LjE4OTM1IC0yLjkyODA0LC0xLjk4MjA1IC00LjA1NDIxLC00LjAwOTE1IC0xLjE3MTIxLC0yLjAyNzEgLTEuMTcxMjEsLTQuMTQ0MyAwLC00LjM2OTUzIDQuMDA5MTYsLTcuNzkzMDggNC4wNTQyLC0zLjQyMzU0IDEwLjcyMTExLC0zLjQyMzU0IDQuMDk5MjUsMCA4LjgyOTE1LDEuODAxODYgdiAxMS44MDIyNCBoIC0zLjI0MzM2IHEgLTAuMDQ1LC01LjAwMDE5IC0yLjc5Mjg5LC04LjAxODMxIC0yLjc0Nzg1LC0zLjAxODEzIC02LjMwNjU0LC0zLjAxODEzIC0yLjUyMjYyLDAgLTMuOTY0MTEsMS42MjE2OCAtMS4zOTY0NSwxLjU3NjYzIC0xLjM5NjQ1LDMuNzM4ODcgMCwyLjQzMjUzIDEuNjIxNjgsNC4xODkzNSAxLjU3NjY0LDEuODAxODYgNi4zNTE1OSw0Ljc3NDk1IDguMTk4NDksNS4xODAzNyAxMC4yNzA2NCw3LjI5NzU2IDIuMDcyMTUsMi4xNjIyNCAyLjA3MjE1LDUuNzIwOTMgMCw1LjYzMDg0IC01LjAwMDE4LDkuNzc1MTMgLTQuOTU1MTQsNC4xNDQzIC0xMS40NDE4Niw0LjE0NDMgLTQuODIsMCAtMTEuMTI2NTQsLTIuNzAyOCB2IC0xMi40Nzc5NCB6Ig0KICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1mYW1pbHk6J0Zvb3RsaWdodCBNVCBMaWdodCc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonRm9vdGxpZ2h0IE1UIExpZ2h0LCAnO2ZpbGw6I2ZmZmZmZjtzdHJva2Utd2lkdGg6Mi4zMDYzOTA3NiINCiAgICAgICAgIGlkPSJwYXRoNDYzOCINCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+DQogICAgICA8cGF0aA0KICAgICAgICAgZD0ibSAyNjguMDY3MiwyNTkuODUyMiB2IDEyLjgzODMxIGwgLTAuMDQ1LDEuMDM2MDcgcSAwLDUuODU2MDcgNi45MzcxOSw1Ljk5MTIxIHYgMi4xNjIyNSBoIC0yMC41ODYzNCB2IC0yLjE2MjI1IHEgMy41MTM2NCwtMC4wOTAxIDUuMTgwMzcsLTEuNDg2NTQgMS42NjY3MiwtMS40NDE0OSAxLjY2NjcyLC01LjU0MDc0IFYgMjMwLjUyNjggcSAwLC00LjgxOTk5IC0zLjI0MzM2LC00LjgxOTk5IC0xLjMwNjM1LDAgLTMuNjAzNzMsMC43MjA3NCB2IC0yLjE2MjI0IGwgMTUuNDk2MDYsLTYuMTcxMzkgdiAxLjg0NjkxIHEgLTEuODAxODcsMC41ODU2MSAtMS44MDE4NywyLjcwMjggdiAzNy4yMDg1NyBsIDcuODgzMTcsLTYuNTMxNzcgMC40MDU0MiwtMC40NTA0NyAyLjAyNzExLC0xLjgwMTg2IHEgMy4zNzg1LC0yLjk3MzA5IDMuMzc4NSwtNS40OTU3IDAsLTIuNzkyOSAtNS40MDU2MSwtMi44ODI5OSB2IC0yLjA3MjE1IGggMjEuMTI2OSB2IDIuMDcyMTUgcSAtNS42MzA4MywwLjA5MDEgLTEzLjczOTI0LDYuODkyMTUgbCAtOS4xNDQ0OCw3LjU2Nzg0IDguODc0MiwxMS4yNjE2NyBxIDguODI5MTUsMTEuMjYxNjggMTUuODU2NDQsMTEuMzA2NzIgdiAyLjE2MjI1IGggLTEzLjg3NDM4IHoiDQogICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHJldGNoOm5vcm1hbDtmb250LWZhbWlseTonRm9vdGxpZ2h0IE1UIExpZ2h0JzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidGb290bGlnaHQgTVQgTGlnaHQsICc7ZmlsbDojZmZmZmZmO3N0cm9rZS13aWR0aDoyLjMwNjM5MDc2Ig0KICAgICAgICAgaWQ9InBhdGg0NjQwIg0KICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4NCiAgICA8L2c+DQogIDwvZz4NCiAgPGcNCiAgICAgc3R5bGU9ImRpc3BsYXk6bm9uZSINCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtMTY0LjcwODMyKSINCiAgICAgaWQ9ImczNzU1Ig0KICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIg0KICAgICBpbmtzY2FwZTpsYWJlbD0iT2JlbGlzayBjb3B5IDEiDQogICAgIHNvZGlwb2RpOmluc2Vuc2l0aXZlPSJ0cnVlIj4NCiAgICA8Zw0KICAgICAgIGFyaWEtbGFiZWw9Ik9iZWxpc2siDQogICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXNpemU6OTIuMjU1NjMwNDlweDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7ZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoyLjMwNjM5MDc2Ig0KICAgICAgIGlkPSJ0ZXh0Mzc1MyI+DQogICAgICA8cGF0aA0KICAgICAgICAgZD0ibSA1MC42OTQxMDUsMjI0LjAxNzMxIHEgNy41Njc4NDQsMCAxMy4zNzg4NjgsMi45NzMwOCA1LjgxMTAyNCwyLjk3MzA4IDEwLjE4MDU1Myw5LjI3OTYyIDQuMzY5NTI5LDYuMzA2NTQgNC4zNjk1MjksMTUuMTM1NjkgMCw5LjU5NDk0IC01LjQ1MDY1LDE3LjU2ODIxIC01LjQwNTYwMyw3LjkyODIyIC0xMi42NTgxMjEsMTEuNjIyMDUgLTcuMjA3NDcxLDMuNjQ4NzggLTE1LjEzNTY4OSwzLjY0ODc4IC0xMS4zNTE3NjcsMCAtMTkuMjc5OTg2LC03Ljc5MzA4IC03LjkyODIxOCwtNy44MzgxMiAtNy45MjgyMTgsLTE5LjQxNTEyIDAsLTEzLjM3ODg3IDkuOTEwMjczLC0yMy4xOTkwNSA5LjkxMDI3MywtOS44MjAxOCAyMi42MTM0NDEsLTkuODIwMTggeiBtIC01LjYzMDgzNyw0LjE4OTM0IHEgLTguMzMzNjM5LDAgLTEzLjgyOTMzNSw1Ljg1NjA3IC01LjQ1MDY1LDUuODExMDIgLTUuNDUwNjUsMTUuNDA1OTcgMCwxNC4wOTk2MiA4LjE5ODQ5OCwyMi40MzMyNSA4LjI0MzU0NSw4LjMzMzY0IDE4LjAxODY3OCw4LjMzMzY0IDcuNzkzMDc4LDAgMTMuMzc4ODY4LC01Ljg1NjA3IDUuNjMwODM3LC01Ljg1NjA3IDUuNjMwODM3LC0xNS4wNDU1OSAwLC04LjYwMzkyIC0zLjczODg3NiwtMTYuMTI2NzIgLTMuNzM4ODc1LC03LjU2Nzg0IC0xMC4xODA1NTMsLTExLjI2MTY3IC02LjQ0MTY3NywtMy43Mzg4OCAtMTIuMDI3NDY3LC0zLjczODg4IHoiDQogICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHJldGNoOm5vcm1hbDtmb250LWZhbWlseTonRm9vdGxpZ2h0IE1UIExpZ2h0JzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidGb290bGlnaHQgTVQgTGlnaHQsICc7ZmlsbDojZmZmZmZmO3N0cm9rZS13aWR0aDoyLjMwNjM5MDc2Ig0KICAgICAgICAgaWQ9InBhdGg0NjQzIg0KICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4NCiAgICAgIDxwYXRoDQogICAgICAgICBkPSJtIDk2LjkxMjAxNiwyMTkuMzc3NSB2IDEuODQ2OTEgcSAtMS4yNjEzMDcsMC43MjA3NSAtMS4yNjEzMDcsMi4zODc0OCB2IDMwLjg1Njk4IHEgOC40Njg3ODEsLTkuNzMwMDggMTEuOTM3MzcxLC0xMS44NDcyOCAzLjQ2ODYsLTIuMTYyMjQgNy4wNzIzMywtMi4xNjIyNCA1Ljc2NTk4LDAgOS4xODk1Myw0LjU5NDc2IDMuNDY4NTksNC41NDk3MiAzLjQ2ODU5LDExLjYyMjA1IDAsNS45NDYxNyAtMi41MjI2MSwxMS41NzcgLTIuNTIyNjEsNS41ODU3OSAtNi41MzE3Nyw5LjE4OTUzIC00LjAwOTE2LDMuNTU4NjkgLTcuNTY3ODUsNC41NDk3MSAtMy41NTg2OCwwLjk0NTk5IC04LjgyOTE1LDAuOTQ1OTkgaCAtNC4xNDQyOTMgcSAtNC43Mjk5MDMsMCAtNi4yNjE0OTEsMC42MzA2NSAtMS40ODY1NDEsMC42NzU3IC0yLjI1MjMzNSwyLjIwNzI5IGggLTMuMDE4MTI4IHEgMS4xNzEyMTQsLTIuMTE3MiAxLjg0NjkxNCwtNS41NDA3NSAwLjcyMDc0NywtMy40MjM1NSAwLjcyMDc0NywtNS4xMzUzMiB2IC00NC4zNzA5OSBxIDAsLTMuOTY0MTEgLTMuMDE4MTI4LC0zLjk2NDExIC0xLjM5NjQ0OCwwIC0zLjgyODk2OSwxLjAzNjA3IHYgLTIuMjA3MjkgeiBtIC0xLjI2MTMwNyw1Ni41MzM2IHEgNS40OTU3MDEsMy4zNzg1IDExLjcxMjE0MSwzLjM3ODUgNC41MDQ2NywwIDcuNDMyNywtMi4zNDI0MyAyLjk3MzA5LC0yLjM4NzQ3IDQuMzY5NTMsLTYuNDQxNjcgMS4zOTY0NSwtNC4wNTQyMSAxLjM5NjQ1LC05LjIzNDU4IDAsLTYuNzExOTUgLTIuNjEyNzEsLTEwLjcyMTExIC0yLjYxMjcxLC00LjAwOTE1IC03LjIwNzQ3LC00LjAwOTE1IC01LjkwMTEyLDAgLTEwLjgxMTIwNSw2Ljc1NyAtNC44NjUwNDMsNi43NTcgLTQuODY1MDQzLDE2LjEyNjcyIDAsMi44ODI5OSAwLjU4NTYwNyw2LjQ4NjcyIHoiDQogICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHJldGNoOm5vcm1hbDtmb250LWZhbWlseTonRm9vdGxpZ2h0IE1UIExpZ2h0JzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidGb290bGlnaHQgTVQgTGlnaHQsICc7ZmlsbDojZmZmZmZmO3N0cm9rZS13aWR0aDoyLjMwNjM5MDc2Ig0KICAgICAgICAgaWQ9InBhdGg0NjQ1Ig0KICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4NCiAgICAgIDxwYXRoDQogICAgICAgICBkPSJtIDE2Ny41NDUyMywyNzEuNjMxNjYgcSAtMTAuMDQ1NDEsMTIuNjEzMDggLTE5LjU5NTMxLDEyLjYxMzA4IC02LjcxMTk2LDAgLTExLjg0NzI4LC01LjgxMTAyIC01LjEzNTMyLC01Ljg1NjA3IC01LjEzNTMyLC0xMy44NzQzOSAwLC05LjIzNDU3IDYuMDgxMywtMTYuNjIyMjMgNi4xMjYzNSwtNy40MzI3IDE0LjQxNDk0LC03LjQzMjcgNi42NjY5MSwwIDEwLjU4NTk3LDQuNzI5OSAzLjkxOTA3LDQuNzI5OSA0LjE0NDMsMTEuNTMxOTYgaCAtMjkuMDU1MTIgcSAtMC4wOTAxLDEuNzU2ODIgLTAuMDkwMSwyLjU2NzY2IDAsNy45NzMyNiA0LjIzNDM5LDEzLjMzMzgyIDQuMjM0MzksNS4zMTU1MSAxMC40NTA4Myw1LjMxNTUxIDcuNzQ4MDMsMCAxNS44MTEzOSwtOS4zMjQ2NyB6IG0gLTguNzM5MDYsLTE3LjExNzc0IHEgLTAuNTQwNTYsLTUuMzE1NTEgLTMuMzc4NSwtOC4yNDM1NCAtMi44Mzc5NCwtMi45MjgwNCAtNi43MTE5NiwtMi45MjgwNCAtNC4wNTQyLDAgLTcuMjUyNTEsMy4xOTgzMiAtMy4xOTgzMiwzLjE1MzI2IC0zLjkxOTA3LDcuOTczMjYgeiINCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtZmFtaWx5OidGb290bGlnaHQgTVQgTGlnaHQnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J0Zvb3RsaWdodCBNVCBMaWdodCwgJztmaWxsOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjIuMzA2MzkwNzYiDQogICAgICAgICBpZD0icGF0aDQ2NDciDQogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPg0KICAgICAgPHBhdGgNCiAgICAgICAgIGQ9Im0gMTg3LjcyNjE0LDIyMC45OTkxOCBxIC0xLjkzNywwLjk0NTk4IC0xLjkzNywzLjI4ODQxIHYgNDkuNDYxMjcgcSAwLDMuOTY0MTEgMS42MjE2OCw1LjQ1MDY1IDEuNjY2NzIsMS40ODY1NCA1LjI3MDQ2LDEuNTc2NjMgdiAyLjE2MjI1IGggLTIwLjY3NjQzIHYgLTIuMTYyMjUgcSAzLjY5MzgzLC0wLjA5MDEgNS4zMTU1MSwtMS42MjE2OCAxLjYyMTY4LC0xLjUzMTU4IDEuNjIxNjgsLTUuNDA1NiB2IC00Mi44Mzk0MSBxIDAsLTQuMTQ0MjkgLTMuNDIzNTUsLTQuMTQ0MjkgLTEuNDQxNDksMCAtMy41MTM2NCwwLjcyMDc0IHYgLTIuMTYyMjQgbCAxNS43MjEyOSwtNi4xNzEzOSB6Ig0KICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1mYW1pbHk6J0Zvb3RsaWdodCBNVCBMaWdodCc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonRm9vdGxpZ2h0IE1UIExpZ2h0LCAnO2ZpbGw6I2ZmZmZmZjtzdHJva2Utd2lkdGg6Mi4zMDYzOTA3NiINCiAgICAgICAgIGlkPSJwYXRoNDY0OSINCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+DQogICAgICA8cGF0aA0KICAgICAgICAgZD0ibSAyMDcuMjc2NDIsMjIxLjY3NDg4IHEgMS45MzcwMSwwIDMuMTUzMjcsMS4zMDYzNSAxLjI2MTMxLDEuMjYxMzEgMS4yNjEzMSwzLjAxODEzIDAsMS43NTY4MiAtMS4yNjEzMSwzLjAxODEzIC0xLjI2MTMxLDEuMjYxMzEgLTMuMDYzMTcsMS4yNjEzMSAtMS43NTY4MywwIC0zLjAxODEzLC0xLjIxNjI2IC0xLjI2MTMxLC0xLjI2MTMxIC0xLjI2MTMxLC0zLjA2MzE4IDAsLTEuODkxOTYgMS4zMDYzNSwtMy4xMDgyMiAxLjMwNjM2LC0xLjIxNjI2IDIuODgyOTksLTEuMjE2MjYgeiBtIC0xMC4yMjU2LDU5LjEwMTI2IHEgMy40Njg2LC0wLjA5MDEgNS4xODAzNywtMS40ODY1NCAxLjcxMTc4LC0xLjQ0MTQ5IDEuNzExNzgsLTUuNTQwNzQgdiAtMjQuNjQwNTQgcSAwLC0yLjgzNzk0IC0zLjI0MzM3LC0yLjgzNzk0IC0xLjE3MTIxLDAgLTIuNTY3NjYsMC41ODU2IC0wLjcyMDc0LDAuMzE1MzMgLTEuMDgxMTIsMC40MDU0MiB2IC0yLjI5NzM4IGwgMTEuNTMxOTYsLTQuNTQ5NzEgaCAyLjIwNzI4IHYgMzMuMzM0NTUgcSAwLDQuMDA5MTYgMS42NjY3Myw1LjQ5NTcgMS42NjY3MywxLjQ0MTQ5IDUuMjI1NDIsMS41MzE1OCB2IDIuMTYyMjUgaCAtMjAuNjMxMzkgeiINCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtZmFtaWx5OidGb290bGlnaHQgTVQgTGlnaHQnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J0Zvb3RsaWdodCBNVCBMaWdodCwgJztmaWxsOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjIuMzA2MzkwNzYiDQogICAgICAgICBpZD0icGF0aDQ2NTEiDQogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPg0KICAgICAgPHBhdGgNCiAgICAgICAgIGQ9Im0gMjI2LjE5NjAzLDI2OS4wNjQgcSAwLjM2MDM3LDUuODU2MDcgMy4zMzM0Niw5LjA5OTQ0IDMuMDE4MTIsMy4yNDMzNiA3LjIwNzQ3LDMuMjQzMzYgMy40Njg1OSwwIDUuNjc1ODgsLTIuMTE3MiAyLjIwNzI5LC0yLjExNzE5IDIuMjA3MjksLTUuMzYwNTUgMCwtMi44ODI5OSAtMS42NjY3MywtNC44NjUwNSAtMS43MTE3NywtMS45MzcgLTYuNzExOTYsLTUuMDkwMjcgLTMuNTU4NjgsLTIuMjUyMzQgLTYuNDg2NzIsLTQuMTg5MzUgLTIuOTI4MDQsLTEuOTgyMDUgLTQuMDU0MiwtNC4wMDkxNSAtMS4xNzEyMiwtMi4wMjcxIC0xLjE3MTIyLC00LjE0NDMgMCwtNC4zNjk1MyA0LjAwOTE2LC03Ljc5MzA4IDQuMDU0MiwtMy40MjM1NCAxMC43MjExMSwtMy40MjM1NCA0LjA5OTI1LDAgOC44MjkxNSwxLjgwMTg2IHYgMTEuODAyMjQgaCAtMy4yNDMzNiBxIC0wLjA0NSwtNS4wMDAxOSAtMi43OTI4OSwtOC4wMTgzMSAtMi43NDc4NSwtMy4wMTgxMyAtNi4zMDY1NCwtMy4wMTgxMyAtMi41MjI2MSwwIC0zLjk2NDExLDEuNjIxNjggLTEuMzk2NDUsMS41NzY2MyAtMS4zOTY0NSwzLjczODg3IDAsMi40MzI1MyAxLjYyMTY4LDQuMTg5MzUgMS41NzY2NCwxLjgwMTg2IDYuMzUxNTksNC43NzQ5NSA4LjE5ODUsNS4xODAzNyAxMC4yNzA2NCw3LjI5NzU2IDIuMDcyMTUsMi4xNjIyNCAyLjA3MjE1LDUuNzIwOTMgMCw1LjYzMDg0IC01LjAwMDE4LDkuNzc1MTMgLTQuOTU1MTQsNC4xNDQzIC0xMS40NDE4Niw0LjE0NDMgLTQuODIsMCAtMTEuMTI2NTMsLTIuNzAyOCBWIDI2OS4wNjQgWiINCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtZmFtaWx5OidGb290bGlnaHQgTVQgTGlnaHQnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J0Zvb3RsaWdodCBNVCBMaWdodCwgJztmaWxsOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjIuMzA2MzkwNzYiDQogICAgICAgICBpZD0icGF0aDQ2NTMiDQogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPg0KICAgICAgPHBhdGgNCiAgICAgICAgIGQ9Im0gMjY5LjEyNTUzLDI2MC45MTA1NSB2IDEyLjgzODMxIGwgLTAuMDQ1LDEuMDM2MDcgcSAwLDUuODU2MDcgNi45MzcxOSw1Ljk5MTIxIHYgMi4xNjIyNSBoIC0yMC41ODYzNCB2IC0yLjE2MjI1IHEgMy41MTM2NCwtMC4wOTAxIDUuMTgwMzcsLTEuNDg2NTQgMS42NjY3MywtMS40NDE0OSAxLjY2NjczLC01LjU0MDc0IHYgLTQyLjE2MzcxIHEgMCwtNC44MTk5OSAtMy4yNDMzNywtNC44MTk5OSAtMS4zMDYzNSwwIC0zLjYwMzczLDAuNzIwNzQgdiAtMi4xNjIyNCBsIDE1LjQ5NjA2LC02LjE3MTM5IHYgMS44NDY5MSBxIC0xLjgwMTg3LDAuNTg1NjEgLTEuODAxODcsMi43MDI4IHYgMzcuMjA4NTcgbCA3Ljg4MzE4LC02LjUzMTc3IDAuNDA1NDIsLTAuNDUwNDcgMi4wMjcxLC0xLjgwMTg2IHEgMy4zNzg1LC0yLjk3MzA5IDMuMzc4NSwtNS40OTU3IDAsLTIuNzkyOSAtNS40MDU2LC0yLjg4Mjk5IHYgLTIuMDcyMTUgaCAyMS4xMjY5IHYgMi4wNzIxNSBxIC01LjYzMDg0LDAuMDkwMSAtMTMuNzM5MjUsNi44OTIxNCBsIC05LjE0NDQ3LDcuNTY3ODUgOC44NzQxOSwxMS4yNjE2NyBxIDguODI5MTYsMTEuMjYxNjggMTUuODU2NDQsMTEuMzA2NzIgdiAyLjE2MjI1IEggMjg2LjUxMzYgWiINCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtZmFtaWx5OidGb290bGlnaHQgTVQgTGlnaHQnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J0Zvb3RsaWdodCBNVCBMaWdodCwgJztmaWxsOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjIuMzA2MzkwNzYiDQogICAgICAgICBpZD0icGF0aDQ2NTUiDQogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPg0KICAgIDwvZz4NCiAgPC9nPg0KICA8Zw0KICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmUiDQogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTE2NC43MDgzMikiDQogICAgIGlkPSJnMzc0OSINCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciINCiAgICAgaW5rc2NhcGU6bGFiZWw9Ik9iZWxpc2sgY29weSINCiAgICAgc29kaXBvZGk6aW5zZW5zaXRpdmU9InRydWUiPg0KICAgIDxnDQogICAgICAgYXJpYS1sYWJlbD0iT2JlbGlzayINCiAgICAgICBzdHlsZT0iZm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc2l6ZTo5Mi4yNTU2MzA0OXB4O2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjIuMzA2MzkwNzYiDQogICAgICAgaWQ9InRleHQzNzQ3Ij4NCiAgICAgIDxwYXRoDQogICAgICAgICBkPSJtIDUwLjE2NDkzOCwyMjMuNDg4MTMgcSA3LjU2Nzg0NSwwIDEzLjM3ODg2OSwyLjk3MzA5IDUuODExMDIzLDIuOTczMDggMTAuMTgwNTUzLDkuMjc5NjEgNC4zNjk1MjksNi4zMDY1NCA0LjM2OTUyOSwxNS4xMzU2OSAwLDkuNTk0OTUgLTUuNDUwNjUsMTcuNTY4MjEgLTUuNDA1NjAzLDcuOTI4MjIgLTEyLjY1ODEyMSwxMS42MjIwNSAtNy4yMDc0NzEsMy42NDg3OCAtMTUuMTM1NjksMy42NDg3OCAtMTEuMzUxNzY3LDAgLTE5LjI3OTk4NSwtNy43OTMwNyAtNy45MjgyMTgsLTcuODM4MTMgLTcuOTI4MjE4LC0xOS40MTUxMyAwLC0xMy4zNzg4NyA5LjkxMDI3MywtMjMuMTk5MDUgOS45MTAyNzMsLTkuODIwMTggMjIuNjEzNDQsLTkuODIwMTggeiBtIC01LjYzMDgzNiw0LjE4OTM1IHEgLTguMzMzNjM5LDAgLTEzLjgyOTMzNiw1Ljg1NjA3IC01LjQ1MDY1LDUuODExMDIgLTUuNDUwNjUsMTUuNDA1OTcgMCwxNC4wOTk2MSA4LjE5ODQ5OSwyMi40MzMyNSA4LjI0MzU0NSw4LjMzMzY0IDE4LjAxODY3OCw4LjMzMzY0IDcuNzkzMDc4LDAgMTMuMzc4ODY4LC01Ljg1NjA3IDUuNjMwODM3LC01Ljg1NjA3IDUuNjMwODM3LC0xNS4wNDU2IDAsLTguNjAzOTIgLTMuNzM4ODc2LC0xNi4xMjY3MSAtMy43Mzg4NzYsLTcuNTY3ODUgLTEwLjE4MDU1MywtMTEuMjYxNjggLTYuNDQxNjc3LC0zLjczODg3IC0xMi4wMjc0NjcsLTMuNzM4ODcgeiINCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0OjMwMDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtZmFtaWx5OidGb290bGlnaHQgTVQgTGlnaHQnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J0Zvb3RsaWdodCBNVCBMaWdodCwgIExpZ2h0JztzdHJva2Utd2lkdGg6Mi4zMDYzOTA3NiINCiAgICAgICAgIGlkPSJwYXRoNDY1OCINCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+DQogICAgICA8cGF0aA0KICAgICAgICAgZD0ibSA5Ni4zODI4NSwyMTguODQ4MzIgdiAxLjg0NjkyIHEgLTEuMjYxMzA4LDAuNzIwNzUgLTEuMjYxMzA4LDIuMzg3NDcgdiAzMC44NTY5OSBxIDguNDY4Nzc4LC05LjczMDA5IDExLjkzNzM3OCwtMTEuODQ3MjggMy40Njg1OSwtMi4xNjIyNCA3LjA3MjMzLC0yLjE2MjI0IDUuNzY1OTcsMCA5LjE4OTUyLDQuNTk0NzYgMy40Njg2LDQuNTQ5NzIgMy40Njg2LDExLjYyMjA1IDAsNS45NDYxNiAtMi41MjI2MiwxMS41NzcgLTIuNTIyNjEsNS41ODU3OSAtNi41MzE3Nyw5LjE4OTUyIC00LjAwOTE1LDMuNTU4NjkgLTcuNTY3ODQsNC41NDk3MiAtMy41NTg2OSwwLjk0NTk4IC04LjgyOTE1LDAuOTQ1OTggaCAtNC4xNDQzIHEgLTQuNzI5OTAzLDAgLTYuMjYxNDksMC42MzA2NSAtMS40ODY1NDEsMC42NzU3IC0yLjI1MjMzNSwyLjIwNzI5IGggLTMuMDE4MTI5IHEgMS4xNzEyMTUsLTIuMTE3MTkgMS44NDY5MTUsLTUuNTQwNzQgMC43MjA3NDcsLTMuNDIzNTUgMC43MjA3NDcsLTUuMTM1MzIgdiAtNDQuMzcxIHEgMCwtMy45NjQxMSAtMy4wMTgxMjgsLTMuOTY0MTEgLTEuMzk2NDQ4LDAgLTMuODI4OTcsMS4wMzYwOCB2IC0yLjIwNzI5IHogbSAtMS4yNjEzMDgsNTYuNTMzNjEgcSA1LjQ5NTY5OCwzLjM3ODUgMTEuNzEyMTM4LDMuMzc4NSA0LjUwNDY3LDAgNy40MzI3MSwtMi4zNDI0MyAyLjk3MzA4LC0yLjM4NzQ3IDQuMzY5NTMsLTYuNDQxNjggMS4zOTY0NCwtNC4wNTQyIDEuMzk2NDQsLTkuMjM0NTcgMCwtNi43MTE5NiAtMi42MTI3LC0xMC43MjExMSAtMi42MTI3MSwtNC4wMDkxNiAtNy4yMDc0NywtNC4wMDkxNiAtNS45MDExMiwwIC0xMC44MTEyMTIsNi43NTcwMSAtNC44NjUwNDMsNi43NTcgLTQuODY1MDQzLDE2LjEyNjcxIDAsMi44ODI5OSAwLjU4NTYwNyw2LjQ4NjczIHoiDQogICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDozMDA7Zm9udC1zdHJldGNoOm5vcm1hbDtmb250LWZhbWlseTonRm9vdGxpZ2h0IE1UIExpZ2h0JzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidGb290bGlnaHQgTVQgTGlnaHQsICBMaWdodCc7c3Ryb2tlLXdpZHRoOjIuMzA2MzkwNzYiDQogICAgICAgICBpZD0icGF0aDQ2NjAiDQogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPg0KICAgICAgPHBhdGgNCiAgICAgICAgIGQ9Im0gMTY3LjAxNjA3LDI3MS4xMDI0OSBxIC0xMC4wNDU0MiwxMi42MTMwNyAtMTkuNTk1MzIsMTIuNjEzMDcgLTYuNzExOTUsMCAtMTEuODQ3MjgsLTUuODExMDIgLTUuMTM1MzIsLTUuODU2MDcgLTUuMTM1MzIsLTEzLjg3NDM4IDAsLTkuMjM0NTcgNi4wODEzLC0xNi42MjIyMyA2LjEyNjM1LC03LjQzMjcxIDE0LjQxNDk1LC03LjQzMjcxIDYuNjY2OTEsMCAxMC41ODU5Nyw0LjcyOTkxIDMuOTE5MDYsNC43Mjk5IDQuMTQ0MjksMTEuNTMxOTUgaCAtMjkuMDU1MTEgcSAtMC4wOTAxLDEuNzU2ODIgLTAuMDkwMSwyLjU2NzY2IDAsNy45NzMyNyA0LjIzNDM5LDEzLjMzMzgyIDQuMjM0MzksNS4zMTU1MSAxMC40NTA4NCw1LjMxNTUxIDcuNzQ4MDMsMCAxNS44MTEzOSwtOS4zMjQ2NiB6IG0gLTguNzM5MDYsLTE3LjExNzc0IHEgLTAuNTQwNTYsLTUuMzE1NTEgLTMuMzc4NTEsLTguMjQzNTUgLTIuODM3OTQsLTIuOTI4MDMgLTYuNzExOTUsLTIuOTI4MDMgLTQuMDU0MjEsMCAtNy4yNTI1MiwzLjE5ODMxIC0zLjE5ODMyLDMuMTUzMjcgLTMuOTE5MDYsNy45NzMyNyB6Ig0KICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6MzAwO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1mYW1pbHk6J0Zvb3RsaWdodCBNVCBMaWdodCc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonRm9vdGxpZ2h0IE1UIExpZ2h0LCAgTGlnaHQnO3N0cm9rZS13aWR0aDoyLjMwNjM5MDc2Ig0KICAgICAgICAgaWQ9InBhdGg0NjYyIg0KICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4NCiAgICAgIDxwYXRoDQogICAgICAgICBkPSJtIDE4Ny4xOTY5OCwyMjAuNDcwMDEgcSAtMS45MzcwMSwwLjk0NTk4IC0xLjkzNzAxLDMuMjg4NCB2IDQ5LjQ2MTI3IHEgMCwzLjk2NDExIDEuNjIxNjgsNS40NTA2NSAxLjY2NjczLDEuNDg2NTUgNS4yNzA0NiwxLjU3NjY0IHYgMi4xNjIyNCBoIC0yMC42NzY0MyB2IC0yLjE2MjI0IHEgMy42OTM4MywtMC4wOTAxIDUuMzE1NTEsLTEuNjIxNjggMS42MjE2OCwtMS41MzE1OSAxLjYyMTY4LC01LjQwNTYxIHYgLTQyLjgzOTQgcSAwLC00LjE0NDMgLTMuNDIzNTUsLTQuMTQ0MyAtMS40NDE0OSwwIC0zLjUxMzY0LDAuNzIwNzUgdiAtMi4xNjIyNCBsIDE1LjcyMTMsLTYuMTcxNCB6Ig0KICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6MzAwO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1mYW1pbHk6J0Zvb3RsaWdodCBNVCBMaWdodCc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonRm9vdGxpZ2h0IE1UIExpZ2h0LCAgTGlnaHQnO3N0cm9rZS13aWR0aDoyLjMwNjM5MDc2Ig0KICAgICAgICAgaWQ9InBhdGg0NjY0Ig0KICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4NCiAgICAgIDxwYXRoDQogICAgICAgICBkPSJtIDIwNi43NDcyNiwyMjEuMTQ1NzEgcSAxLjkzNywwIDMuMTUzMjYsMS4zMDYzNSAxLjI2MTMxLDEuMjYxMzEgMS4yNjEzMSwzLjAxODEzIDAsMS43NTY4MiAtMS4yNjEzMSwzLjAxODEzIC0xLjI2MTMsMS4yNjEzIC0zLjA2MzE3LDEuMjYxMyAtMS43NTY4MiwwIC0zLjAxODEzLC0xLjIxNjI2IC0xLjI2MTMxLC0xLjI2MTMgLTEuMjYxMzEsLTMuMDYzMTcgMCwtMS44OTE5NiAxLjMwNjM2LC0zLjEwODIyIDEuMzA2MzUsLTEuMjE2MjYgMi44ODI5OSwtMS4yMTYyNiB6IG0gLTEwLjIyNTYsNTkuMTAxMjYgcSAzLjQ2ODU5LC0wLjA5MDEgNS4xODAzNywtMS40ODY1NCAxLjcxMTc3LC0xLjQ0MTUgMS43MTE3NywtNS41NDA3NSB2IC0yNC42NDA1NCBxIDAsLTIuODM3OTQgLTMuMjQzMzYsLTIuODM3OTQgLTEuMTcxMjIsMCAtMi41Njc2NiwwLjU4NTYxIC0wLjcyMDc1LDAuMzE1MzIgLTEuMDgxMTIsMC40MDU0MiB2IC0yLjI5NzM4IGwgMTEuNTMxOTUsLTQuNTQ5NzIgaCAyLjIwNzI5IHYgMzMuMzM0NTUgcSAwLDQuMDA5MTYgMS42NjY3Myw1LjQ5NTcgMS42NjY3MiwxLjQ0MTUgNS4yMjU0MSwxLjUzMTU5IHYgMi4xNjIyNCBoIC0yMC42MzEzOCB6Ig0KICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6MzAwO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1mYW1pbHk6J0Zvb3RsaWdodCBNVCBMaWdodCc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonRm9vdGxpZ2h0IE1UIExpZ2h0LCAgTGlnaHQnO3N0cm9rZS13aWR0aDoyLjMwNjM5MDc2Ig0KICAgICAgICAgaWQ9InBhdGg0NjY2Ig0KICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4NCiAgICAgIDxwYXRoDQogICAgICAgICBkPSJtIDIyNS42NjY4NiwyNjguNTM0ODMgcSAwLjM2MDM4LDUuODU2MDcgMy4zMzM0Niw5LjA5OTQzIDMuMDE4MTMsMy4yNDMzNiA3LjIwNzQ3LDMuMjQzMzYgMy40Njg2LDAgNS42NzU4OCwtMi4xMTcxOSAyLjIwNzI5LC0yLjExNzIgMi4yMDcyOSwtNS4zNjA1NiAwLC0yLjg4Mjk5IC0xLjY2NjcyLC00Ljg2NTA0IC0xLjcxMTc4LC0xLjkzNzAxIC02LjcxMTk2LC01LjA5MDI4IC0zLjU1ODY5LC0yLjI1MjMzIC02LjQ4NjczLC00LjE4OTM0IC0yLjkyODAzLC0xLjk4MjA2IC00LjA1NDIsLTQuMDA5MTYgLTEuMTcxMjEsLTIuMDI3MSAtMS4xNzEyMSwtNC4xNDQyOSAwLC00LjM2OTUzIDQuMDA5MTUsLTcuNzkzMDggNC4wNTQyMSwtMy40MjM1NSAxMC43MjExMiwtMy40MjM1NSA0LjA5OTI1LDAgOC44MjkxNSwxLjgwMTg3IHYgMTEuODAyMjMgaCAtMy4yNDMzNiBxIC0wLjA0NTEsLTUuMDAwMTggLTIuNzkyOSwtOC4wMTgzMSAtMi43NDc4NSwtMy4wMTgxMyAtNi4zMDY1NCwtMy4wMTgxMyAtMi41MjI2MSwwIC0zLjk2NDExLDEuNjIxNjggLTEuMzk2NDQsMS41NzY2NCAtMS4zOTY0NCwzLjczODg4IDAsMi40MzI1MiAxLjYyMTY4LDQuMTg5MzQgMS41NzY2MywxLjgwMTg3IDYuMzUxNTgsNC43NzQ5NSA4LjE5ODUsNS4xODAzNyAxMC4yNzA2NSw3LjI5NzU3IDIuMDcyMTUsMi4xNjIyNCAyLjA3MjE1LDUuNzIwOTMgMCw1LjYzMDgzIC01LjAwMDE5LDkuNzc1MTMgLTQuOTU1MTMsNC4xNDQyOSAtMTEuNDQxODYsNC4xNDQyOSAtNC44MTk5OSwwIC0xMS4xMjY1MywtMi43MDI4IHYgLTEyLjQ3NzkzIHoiDQogICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDozMDA7Zm9udC1zdHJldGNoOm5vcm1hbDtmb250LWZhbWlseTonRm9vdGxpZ2h0IE1UIExpZ2h0JzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidGb290bGlnaHQgTVQgTGlnaHQsICBMaWdodCc7c3Ryb2tlLXdpZHRoOjIuMzA2MzkwNzYiDQogICAgICAgICBpZD0icGF0aDQ2NjgiDQogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPg0KICAgICAgPHBhdGgNCiAgICAgICAgIGQ9Im0gMjY4LjU5NjM3LDI2MC4zODEzOCB2IDEyLjgzODMgbCAtMC4wNDUxLDEuMDM2MDggcSAwLDUuODU2MDcgNi45MzcxOSw1Ljk5MTIxIHYgMi4xNjIyNCBoIC0yMC41ODYzNCB2IC0yLjE2MjI0IHEgMy41MTM2NSwtMC4wOTAxIDUuMTgwMzcsLTEuNDg2NTQgMS42NjY3MywtMS40NDE1IDEuNjY2NzMsLTUuNTQwNzUgdiAtNDIuMTYzNyBxIDAsLTQuODIgLTMuMjQzMzYsLTQuODIgLTEuMzA2MzYsMCAtMy42MDM3NCwwLjcyMDc1IHYgLTIuMTYyMjQgbCAxNS40OTYwNywtNi4xNzE0IHYgMS44NDY5MiBxIC0xLjgwMTg3LDAuNTg1NiAtMS44MDE4NywyLjcwMjggdiAzNy4yMDg1NyBsIDcuODgzMTcsLTYuNTMxNzcgMC40MDU0MiwtMC40NTA0NyAyLjAyNzEsLTEuODAxODcgcSAzLjM3ODUsLTIuOTczMDggMy4zNzg1LC01LjQ5NTcgMCwtMi43OTI4OSAtNS40MDU2LC0yLjg4Mjk4IHYgLTIuMDcyMTUgaCAyMS4xMjY5IHYgMi4wNzIxNSBxIC01LjYzMDg0LDAuMDkwMSAtMTMuNzM5MjQsNi44OTIxNCBsIC05LjE0NDQ4LDcuNTY3ODQgOC44NzQyLDExLjI2MTY4IHEgOC44MjkxNSwxMS4yNjE2NyAxNS44NTY0MywxMS4zMDY3MiB2IDIuMTYyMjQgaCAtMTMuODc0MzggeiINCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0OjMwMDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtZmFtaWx5OidGb290bGlnaHQgTVQgTGlnaHQnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J0Zvb3RsaWdodCBNVCBMaWdodCwgIExpZ2h0JztzdHJva2Utd2lkdGg6Mi4zMDYzOTA3NiINCiAgICAgICAgIGlkPSJwYXRoNDY3MCINCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+DQogICAgPC9nPg0KICA8L2c+DQogIDxnDQogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiDQogICAgIGlkPSJsYXllcjIiDQogICAgIGlua3NjYXBlOmxhYmVsPSJUaGUiDQogICAgIHN0eWxlPSJkaXNwbGF5OmlubGluZSINCiAgICAgc29kaXBvZGk6aW5zZW5zaXRpdmU9InRydWUiPg0KICAgIDxnDQogICAgICAgYXJpYS1sYWJlbD0iVGhlIg0KICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zaXplOjI3LjM2NzkyMTgzcHg7bGluZS1oZWlnaHQ6MS4yNTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC42ODQxOTgwMiINCiAgICAgICBpZD0idGV4dDM3MjUiPg0KICAgICAgPHBhdGgNCiAgICAgICAgIGQ9Im0gMTEuODMwOTUzLDM1Ljg2NzM4NCBoIDAuNTg3OTgzIHEgMC4xNzM3MjIsMC42MDEzNDYgMC41MjExNjYsMC42MDEzNDYgaCAxMS42Nzk0NzUgcSAwLjQ1NDM1LDAgMC40NTQzNSwtMC42MDEzNDYgaCAwLjY0MTQzNSB2IDUuMDc4MDMzIGggLTAuOTQ4NzkgcSAtMC4wNDAwOSwtMy44MzUyNTEgLTQuMDYyNDI2LC0zLjgzNTI1MSBoIC0wLjcyMTYxNSB2IDEzLjY4Mzk2MSBxIDAsMi4wNzEzMDIgMi4wMzEyMTMsMi4xMjQ3NTUgdiAwLjY0MTQzNiBoIC02LjUzNDYyNiB2IC0wLjY0MTQzNiBxIDEuMjAyNjkyLC0wLjAxMzM2IDEuNjE2OTUzLC0wLjQ1NDM1IDAuNDE0MjYsLTAuNDU0MzUgMC40MTQyNiwtMS42NzA0MDUgViAzNy4xMTAxNjYgaCAtMC45MjIwNjQgcSAtMy43MDE2MTgsMCAtMy44MjE4ODcsMy44MzUyNTEgaCAtMC45MzU0MjcgeiINCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zdHJldGNoOm5vcm1hbDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtZmFtaWx5OidGb290bGlnaHQgTVQgTGlnaHQnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J0Zvb3RsaWdodCBNVCBMaWdodCwgQm9sZCc7c3Ryb2tlLXdpZHRoOjAuNjg0MTk4MDIiDQogICAgICAgICBpZD0icGF0aDQ2NzMiDQogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPg0KICAgICAgPHBhdGgNCiAgICAgICAgIGQ9Im0gMzEuNzk1NjM4LDM0LjYzNzk2NiB2IDAuNTc0NjE5IHEgLTAuNTQ3ODkzLDAuMjEzODEyIC0wLjU0Nzg5MywwLjk2MjE1NCB2IDkuMTkzOTExIHEgMS41NjM1LC0yLjIxODI5OCAyLjk2NjY0LC0zLjMyNzQ0OCAxLjQwMzE0MSwtMS4xMDkxNDkgMi42NDU5MjIsLTEuMTA5MTQ5IDEuMDI4OTcsMCAxLjYwMzU5LDAuNzM0OTc5IDAuNTc0NjE5LDAuNzQ4MzQxIDAuNTc0NjE5LDIuMTkxNTcyIHYgNi45NzU2MTIgcSAwLDEuMTQ5MjM5IDAuNDU0MzUsMS42MDM1OSAwLjQ2NzcxNCwwLjQ1NDM1IDEuNTkwMjI2LDAuNDgxMDc2IHYgMC42NDE0MzYgSCAzNi40MTkzMiB2IC0wLjY0MTQzNiBxIDAuNTg3OTgzLC0wLjAyNjczIDAuNTg3OTgzLC0wLjcyMTYxNSB2IC03Ljk3Nzg1NiBxIDAsLTAuODY4NjExIC0wLjM2MDgwOCwtMS4yOTYyMzQgLTAuMzQ3NDQ0LC0wLjQ0MDk4OCAtMS4wNTU2OTYsLTAuNDQwOTg4IC0xLjY1NzA0MiwwIC0zLjA4NjkwOSwyLjQzMjExMSAtMS40MTY1MDQsMi40MTg3NDcgLTEuNDE2NTA0LDUuMzA1MjA3IDAsMi42OTkzNzUgMS42NDM2NzksMi42OTkzNzUgaCAwLjUzNDUzIHYgMC42NDE0MzYgaCAtNi4wNjY5MTIgdiAtMC42NDE0MzYgcSAxLjAyODk2OSwtMC4wMjY3MyAxLjUyMzQwOSwtMC40NTQzNSAwLjQ5NDQ0LC0wLjQyNzYyNCAwLjQ5NDQ0LC0xLjYzMDMxNiBWIDM3LjY0NDY5NSBxIDAsLTAuNzg4NDMxIC0wLjg4MTk3NCwtMC43ODg0MzEgLTAuNDk0NDQsMCAtMS4xMzU4NzUsMC4yNTM5MDIgViAzNi40Njg3MyBaIg0KICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXN0cmV0Y2g6bm9ybWFsO2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1mYW1pbHk6J0Zvb3RsaWdodCBNVCBMaWdodCc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonRm9vdGxpZ2h0IE1UIExpZ2h0LCBCb2xkJztzdHJva2Utd2lkdGg6MC42ODQxOTgwMiINCiAgICAgICAgIGlkPSJwYXRoNDY3NSINCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+DQogICAgICA8cGF0aA0KICAgICAgICAgZD0ibSA1My4xMjMzNzQsNTAuMjA2MTQ0IHEgLTIuOTgwMDAzLDMuNzQxNzA4IC01LjgxMzAxMSwzLjc0MTcwOCAtMS45OTExMjMsMCAtMy41MTQ1MzMsLTEuNzIzODU4IC0xLjUyMzQxLC0xLjczNzIyMiAtMS41MjM0MSwtNC4xMTU4NzkgMCwtMi43Mzk0NjUgMS44MDQwMzgsLTQuOTMxMDM3IDEuODE3NDAxLC0yLjIwNDkzNSA0LjI3NjIzOCwtMi4yMDQ5MzUgMS45Nzc3NiwwIDMuMTQwMzYyLDEuNDAzMTQxIDEuMTYyNjAyLDEuNDAzMTQgMS4yMjk0MTksMy40MjA5OSBoIC04LjYxOTI5MiBxIC0wLjAyNjczLDAuNTIxMTY2IC0wLjAyNjczLDAuNzYxNzA1IDAsMi4zNjUyOTQgMS4yNTYxNDUsMy45NTU1MiAxLjI1NjE0NSwxLjU3Njg2MiAzLjEwMDI3MywxLjU3Njg2MiAyLjI5ODQ3NywwIDQuNjkwNDk4LC0yLjc2NjE5MSB6IG0gLTIuNTkyNDY5LC01LjA3ODAzMiBxIC0wLjE2MDM1OSwtMS41NzY4NjMgLTEuMDAyMjQ0LC0yLjQ0NTQ3NCAtMC44NDE4ODQsLTAuODY4NjExIC0xLjk5MTEyMywtMC44Njg2MTEgLTEuMjAyNjkyLDAgLTIuMTUxNDgyLDAuOTQ4NzkxIC0wLjk0ODc5LDAuOTM1NDI3IC0xLjE2MjYwMiwyLjM2NTI5NCB6Ig0KICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXN0cmV0Y2g6bm9ybWFsO2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1mYW1pbHk6J0Zvb3RsaWdodCBNVCBMaWdodCc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonRm9vdGxpZ2h0IE1UIExpZ2h0LCBCb2xkJztzdHJva2Utd2lkdGg6MC42ODQxOTgwMiINCiAgICAgICAgIGlkPSJwYXRoNDY3NyINCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+DQogICAgPC9nPg0KICA8L2c+DQo8L3N2Zz4NCg==');
  1623. }
  1624. </style>
  1625. </body>
  1626. </html>